[tbb] 58/64: Imported Upstream version 4.3~20150611

Graham Inggs ginggs at moszumanska.debian.org
Mon Jul 3 12:28:07 UTC 2017


This is an automated email from the git hooks/post-receive script.

ginggs pushed a commit to branch master
in repository tbb.

commit 58fea1df60d765a694f5bfbb8cc690f02949148d
Author: Graham Inggs <ginggs at debian.org>
Date:   Mon Jul 3 14:14:09 2017 +0200

    Imported Upstream version 4.3~20150611
---
 CHANGES                                            |  326 ++-
 Makefile                                           |   38 +-
 build/AIX.gcc.inc                                  |   40 +-
 build/AIX.inc                                      |   40 +-
 build/FreeBSD.clang.inc                            |  116 +
 build/FreeBSD.gcc.inc                              |   43 +-
 build/FreeBSD.inc                                  |   40 +-
 build/Makefile.rml                                 |   42 +-
 build/Makefile.tbb                                 |   38 +-
 build/Makefile.tbbmalloc                           |  104 +-
 build/Makefile.tbbproxy                            |   38 +-
 build/Makefile.test                                |  181 +-
 build/SunOS.gcc.inc                                |   42 +-
 build/SunOS.inc                                    |   40 +-
 build/SunOS.suncc.inc                              |   40 +-
 build/android.gcc.inc                              |   49 +-
 build/android.inc                                  |   45 +-
 build/android.linux.inc                            |   38 +-
 build/android.linux.launcher.sh                    |   42 +-
 build/android.macos.inc                            |   38 +-
 build/android.windows.inc                          |   38 +-
 build/big_iron.inc                                 |   57 +-
 build/common.inc                                   |   38 +-
 build/common_rules.inc                             |   46 +-
 build/detect.js                                    |   41 +-
 build/generate_tbbvars.bat                         |   38 +-
 build/generate_tbbvars.sh                          |   38 +-
 build/index.html                                   |    2 +-
 build/linux.clang.inc                              |   45 +-
 build/linux.gcc.inc                                |   57 +-
 build/linux.icc.inc                                |   38 +-
 build/linux.inc                                    |   40 +-
 build/linux.pathcc.inc                             |   98 +
 build/linux.xl.inc                                 |   38 +-
 build/macos.clang.inc                              |   64 +-
 build/macos.gcc.inc                                |   44 +-
 build/macos.icc.inc                                |   55 +-
 build/macos.inc                                    |   48 +-
 build/mic.icc.inc                                  |   43 +-
 build/mic.linux.inc                                |   38 +-
 build/mic.linux.launcher.sh                        |   73 +-
 build/mic.offload.inc                              |   80 +-
 build/test_launcher.bat                            |   38 +-
 build/test_launcher.sh                             |   59 +-
 build/version_info_aix.sh                          |   40 +-
 build/version_info_android.sh                      |   45 +-
 build/version_info_linux.sh                        |   40 +-
 build/version_info_macos.sh                        |   41 +-
 build/version_info_sunos.sh                        |   38 +-
 build/version_info_windows.js                      |   38 +-
 build/vs2008/index.html                            |   30 -
 build/vs2008/makefile.sln                          |   84 -
 build/vs2008/tbb.vcproj                            |  594 ------
 build/vs2008/tbbmalloc.vcproj                      | 1332 ------------
 build/vs2008/tbbmalloc_proxy.vcproj                |  214 --
 build/vs2008/version_string.ver                    |    1 -
 build/vs2010/index.html                            |    2 +-
 build/vs2010/tbb.vcxproj                           | 1423 ++++++-------
 build/vs2010/tbbmalloc.vcxproj                     | 1168 +++++-----
 build/vs2010/tbbmalloc_proxy.vcxproj               |  842 ++++----
 build/windows.cl.inc                               |   38 +-
 build/windows.gcc.inc                              |   51 +-
 build/windows.icl.inc                              |   38 +-
 build/windows.inc                                  |   38 +-
 build/xbox360.cl.inc                               |   38 +-
 build/xbox360.inc                                  |   38 +-
 doc/Release_Notes.txt                              |  146 +-
 doc/help/NavScript.js                              |   58 -
 doc/help/Resources/NavScript.js                    |   61 -
 doc/help/Resources/ssgid_scripts.js                |   19 -
 doc/help/delta.gif                                 |  Bin 117 -> 0 bytes
 doc/help/deltaend.gif                              |  Bin 116 -> 0 bytes
 doc/help/hh_goto.htm                               |   39 -
 doc/help/hh_index.htm                              |  531 -----
 doc/help/hh_search.htm                             |  135 --
 doc/help/hh_toc.htm                                | 1640 ---------------
 doc/help/index.htm                                 |   43 -
 doc/help/intel_css_styles.css                      | 1020 ---------
 doc/help/main/Benefits.htm                         |  164 --
 doc/help/main/Resources/back.GIF                   |  Bin 1096 -> 0 bytes
 doc/help/main/Resources/forward.GIF                |  Bin 1111 -> 0 bytes
 doc/help/main/Resources/hpc_header.jpg             |  Bin 27752 -> 0 bytes
 doc/help/main/Resources/sync.GIF                   |  Bin 1109 -> 0 bytes
 doc/help/main/help_support.htm                     |  161 --
 doc/help/main/introducing.htm                      |  107 -
 doc/help/main/legal_information.htm                |  107 -
 doc/help/main/notation.htm                         |  397 ----
 doc/help/main/title.htm                            |   51 -
 doc/help/reference/Resources/06000005.png          |  Bin 9420 -> 0 bytes
 doc/help/reference/Resources/06000007.png          |  Bin 3931 -> 0 bytes
 doc/help/reference/Resources/06000008.png          |  Bin 1379 -> 0 bytes
 doc/help/reference/Resources/06000009.png          |  Bin 4077 -> 0 bytes
 doc/help/reference/Resources/0600000A.png          |  Bin 5450 -> 0 bytes
 doc/help/reference/Resources/0600000B.png          |  Bin 5710 -> 0 bytes
 doc/help/reference/Resources/0600000C.png          |  Bin 6693 -> 0 bytes
 doc/help/reference/Resources/0600000D.png          |  Bin 5722 -> 0 bytes
 doc/help/reference/Resources/0600000E.png          |  Bin 7031 -> 0 bytes
 doc/help/reference/Resources/0600000F.png          |  Bin 38820 -> 0 bytes
 doc/help/reference/Resources/08000006.png          |  Bin 4058 -> 0 bytes
 doc/help/reference/Resources/dep_graph.jpg         |  Bin 17464 -> 0 bytes
 doc/help/reference/Resources/flow-graph.jpg        |  Bin 17179 -> 0 bytes
 doc/help/reference/Resources/hpc_header.jpg        |  Bin 27752 -> 0 bytes
 .../reference/Resources/message_flow_graph.jpg     |  Bin 17289 -> 0 bytes
 doc/help/reference/Resources/non_consq_rng.jpg     |  Bin 22182 -> 0 bytes
 doc/help/reference/Resources/parll_red.jpg         |  Bin 21964 -> 0 bytes
 doc/help/reference/Resources/parll_scan.jpg        |  Bin 126730 -> 0 bytes
 .../reference/Resources/reference-latest-19.jpg    |  Bin 12005 -> 0 bytes
 doc/help/reference/algorithms.htm                  |  106 -
 .../parallel_deterministic_reduce_func.htm         |  190 --
 doc/help/reference/algorithms/parallel_do_func.htm |  244 ---
 .../parallel_do_func/parallel_do_feeder_cls.htm    |  126 --
 .../algorithms/parallel_for_each_func.htm          |   66 -
 .../reference/algorithms/parallel_for_func.htm     |  296 ---
 .../reference/algorithms/parallel_invoke_func.htm  |  107 -
 .../algorithms/parallel_pipeline_func.htm          |  139 --
 .../parallel_pipeline_func/filter_t_cls.htm        |  269 ---
 .../parallel_pipeline_func/flow_control_cls.htm    |   73 -
 .../reference/algorithms/parallel_reduce_func.htm  |  428 ----
 .../reference/algorithms/parallel_scan_func.htm    |  329 ---
 .../pre_scan_tag_and_final_scan_tag_clses.htm      |  121 --
 .../reference/algorithms/parallel_sort_func.htm    |  171 --
 doc/help/reference/algorithms/partitioners.htm     |  186 --
 .../partitioners/affinity_partitioner.htm          |  224 --
 .../partitioners/auto_partitioner_cls.htm          |  156 --
 .../partitioners/simple_partitioner_cls.htm        |  149 --
 doc/help/reference/algorithms/pipeline_cls.htm     |  274 ---
 .../algorithms/pipeline_cls/filter_cls.htm         |  287 ---
 .../pipeline_cls/thread_bound_filter_cls.htm       |  339 ---
 doc/help/reference/algorithms/range_concept.htm    |  267 ---
 .../range_concept/blocked_range2d_cls.htm          |  365 ----
 .../range_concept/blocked_range3d_cls.htm          |  103 -
 .../algorithms/range_concept/blocked_range_cls.htm |  520 -----
 .../blocked_range_cls/blocked_range.htm            |   57 -
 .../blocked_range_cls/blocked_range_1.htm          |   66 -
 .../reference/algorithms/splittable_concept.htm    |  180 --
 .../algorithms/splittable_concept/split_cls.htm    |   72 -
 doc/help/reference/appendices.htm                  |   56 -
 .../appendices/community_preview_features.htm      |   76 -
 .../community_preview_features/aggregator_cls.htm  |   66 -
 .../aggregator_cls/basic_interface.htm             |  153 --
 .../aggregator_cls/expert_interface.htm            |  275 ---
 .../concurrent_lru_cache_cls.htm                   |  226 --
 .../concurrent_lru_cache_cls/handle_object_cls.htm |  215 --
 .../enabling_a_community_preview_feature.htm       |   55 -
 .../flow_graph/or_node_cls.htm                     |  382 ----
 .../flow_graph_features.htm                        |   49 -
 .../community_preview_features/run_time_loader.htm |  133 --
 .../run_time_loader/runtime_loader_cls.htm         |  198 --
 .../runtime_loader_cls/error_code_load.htm         |  120 --
 .../scalable_memory_pools.htm                      |  181 --
 .../scalable_memory_pools/fixed_pool_cls.htm       |  144 --
 .../memory_pool_allocator_cls.htm                  |  197 --
 .../scalable_memory_pools/memory_pool_cls.htm      |  157 --
 .../community_preview_features/serial_subset.htm   |   52 -
 .../serial_subset/tbb_serial_parallel_for.htm      |  102 -
 .../community_preview_features/task_arena_cls.htm  |  416 ----
 .../task_scheduler_observer_ext_cls.htm            |  213 --
 .../what_is_a_community_preview_feature.htm        |   93 -
 .../appendices/compatibility_features.htm          |   77 -
 .../compatibility_features/debugging_macros.htm    |  131 --
 .../interface_for_cls_task.htm                     |  120 --
 .../interface_for_concurrent_vector.htm            |  189 --
 ...nterface_for_constructing_a_pipeline_filter.htm |  108 -
 .../compatibility_features/parallel_while_cls.htm  |  350 ---
 .../task_enqueuing_flow_graph.htm                  |   63 -
 .../tbb_deprecated_concurrent_queue_cls.htm        |  254 ---
 .../compatibility_features/tbb_thread_cls.htm      |  172 --
 doc/help/reference/appendices/known_issues.htm     |   49 -
 .../appendices/known_issues/windows_os.htm         |   43 -
 .../reference/appendices/ppl_compatibility.htm     |  228 --
 doc/help/reference/containers_overview.htm         |   76 -
 .../concurrent_bounded_queue_cls.htm               |  343 ---
 .../concurrent_hash_map_cls.htm                    |  385 ----
 .../concurrent_hash_map_cls/capacity_map_cls.htm   |  133 --
 .../concurrent_hash_map_cls/concurrent_access.htm  |  413 ----
 .../concurrent_operations.htm                      |  474 -----
 .../concurrent_hash_map_cls/global_funcs.htm       |  114 -
 .../iterators_hash_map_cls.htm                     |  192 --
 .../parallel_iteration_container.htm               |  121 --
 .../tbb_hash_compare_cls.htm                       |  105 -
 .../whole_table_operations.htm                     |  300 ---
 .../concurrent_priority_queue_cls.htm              |  573 -----
 .../containers_overview/concurrent_queue_cls.htm   |  572 -----
 .../concurrent_unordered_map_cls.htm               |  472 -----
 .../bucket_interface_map_cls.htm                   |  238 ---
 .../construct_destroy_copy_map_cls.htm             |  399 ----
 .../container_iterators_map_cls.htm                |  173 --
 .../hash_policy_map_cls.htm                        |  123 --
 .../lookup_map_cls.htm                             |  234 ---
 .../modifiers_map_cls.htm                          |  279 ---
 .../observers_map_cls.htm                          |   91 -
 .../parallel_iteration_map_cls.htm                 |  105 -
 .../size_and_capacity_map_cls.htm                  |  122 --
 .../concurrent_unordered_set_cls.htm               |  430 ----
 .../bucket_interface_set_cls.htm                   |  238 ---
 .../construct_destroy_copy_set_cls.htm             |  406 ----
 .../container_iterators_set_cls.htm                |  169 --
 .../hash_policy_set_cls.htm                        |  119 --
 .../lookup_set_cls.htm                             |  137 --
 .../modifiers_set_cls.htm                          |  281 ---
 .../observers_set_cls.htm                          |   85 -
 .../parallel_iteration_set_cls.htm                 |  105 -
 .../size_and_capacity_set_cls.htm                  |  117 --
 .../containers_overview/concurrent_vector.htm      |  417 ----
 .../concurrent_vector/access.htm                   |  193 --
 .../concurrent_vector/capacity_vector.htm          |  122 --
 .../concurrent_vector/concurrent_growth.htm        |  160 --
 .../construction_copy_and_assignment.htm           |  257 ---
 .../concurrent_vector/iterators_vector.htm         |  185 --
 .../concurrent_vector/parallel_iteration.htm       |  107 -
 .../concurrent_vector/whole_vector_operations.htm  |  173 --
 .../container_range_concept.htm                    |  248 ---
 doc/help/reference/environment.htm                 |   60 -
 .../environment/enabling_debugging_features.htm    |  300 ---
 doc/help/reference/environment/feature_macros.htm  |  216 --
 .../reference/environment/version_information.htm  |  355 ----
 doc/help/reference/exceptions.htm                  |   84 -
 .../reference/exceptions/captured_exception.htm    |  127 --
 .../reference/exceptions/movable_exception.htm     |  161 --
 .../reference/exceptions/specific_exceptions.htm   |  214 --
 doc/help/reference/exceptions/tbb_exception.htm    |   80 -
 doc/help/reference/flow_graph.htm                  |  138 --
 doc/help/reference/flow_graph/body_objects.htm     |   73 -
 .../reference/flow_graph/broadcast_node_cls.htm    |  320 ---
 doc/help/reference/flow_graph/buffer_node_cls.htm  |  362 ----
 doc/help/reference/flow_graph/continue_msg_cls.htm |   61 -
 .../reference/flow_graph/continue_node_cls.htm     |  563 -----
 .../reference/flow_graph/continue_receiver_cls.htm |  257 ---
 doc/help/reference/flow_graph/copy_body_func.htm   |   77 -
 .../flow_graph/dependency_flow_graph_example.htm   |  161 --
 doc/help/reference/flow_graph/flow_tuple.htm       |  113 -
 doc/help/reference/flow_graph/func_node_cls.htm    |  671 ------
 doc/help/reference/flow_graph/graph_cls.htm        |  382 ----
 doc/help/reference/flow_graph/graph_node_cls.htm   |   65 -
 doc/help/reference/flow_graph/input_port_func.htm  |   69 -
 doc/help/reference/flow_graph/join_node_cls.htm    |  545 -----
 doc/help/reference/flow_graph/limiter_node_cls.htm |  431 ----
 doc/help/reference/flow_graph/make_edge_func.htm   |   49 -
 .../flow_graph/message_flow_graph_example.htm      |  157 --
 .../flow_graph/message_passing_protocol.htm        |   64 -
 .../reference/flow_graph/multifunc_node_cls.htm    |  576 -----
 .../reference/flow_graph/overwrite_node_cls.htm    |  391 ----
 .../reference/flow_graph/primary_components.htm    |   98 -
 .../flow_graph/priority_queue_node_cls.htm         |  386 ----
 doc/help/reference/flow_graph/queue_node_cls.htm   |  374 ----
 doc/help/reference/flow_graph/receiver_cls.htm     |  173 --
 doc/help/reference/flow_graph/remove_edge_func.htm |   49 -
 doc/help/reference/flow_graph/sender_cls.htm       |  225 --
 .../reference/flow_graph/sequencer_node_cls.htm    |  501 -----
 doc/help/reference/flow_graph/source_node_cls.htm  |  477 -----
 doc/help/reference/flow_graph/split_node_cls.htm   |  292 ---
 .../reference/flow_graph/write_once_node_cls.htm   |  358 ----
 doc/help/reference/general_conventions.htm         |   65 -
 .../reference/general_conventions/identifiers.htm  |   56 -
 .../reference/general_conventions/namespaces.htm   |  287 ---
 .../reference/general_conventions/terminology.htm  |  170 --
 .../general_conventions/thread_safety.htm          |   57 -
 doc/help/reference/introducing.htm                 |  124 --
 doc/help/reference/memory_allocation.htm           |   63 -
 .../memory_allocation/aligned_space_cls.htm        |  155 --
 .../memory_allocation/allocator_concept.htm        |  232 --
 .../cache_aligned_allocator_cls.htm                |  231 --
 .../memory_allocation/scalable_allocator_cls.htm   |   82 -
 .../c_interface_to_scalable_allocator.htm          |  436 ----
 .../memory_allocation/tbb_allocator_cls.htm        |   56 -
 .../reference/memory_allocation/zero_allocator.htm |   93 -
 doc/help/reference/reference.htm                   |   56 -
 doc/help/reference/synchronization.htm             |   55 -
 doc/help/reference/synchronization/atomic_cls.htm  |  458 ----
 .../synchronization/c_11_synchronization.htm       |  150 --
 doc/help/reference/synchronization/mutexes.htm     |   82 -
 .../mutexes/hardware_transactional_locking.htm     |  102 -
 .../synchronization/mutexes/mutex_cls.htm          |   67 -
 .../synchronization/mutexes/mutex_concept.htm      |  905 --------
 .../synchronization/mutexes/null_mutex_cls.htm     |   58 -
 .../synchronization/mutexes/null_rw_mutex_cls.htm  |   61 -
 .../synchronization/mutexes/queuing_mutex_cls.htm  |   64 -
 .../mutexes/queuing_rw_mutex_cls.htm               |   59 -
 .../mutexes/readerwritermutex_concept.htm          |  518 -----
 .../mutexes/recursive_mutex_cls.htm                |   59 -
 .../mutexes/speculative_spin_mutex_cls.htm         |  138 --
 .../mutexes/speculative_spin_rw_mutex_cls.htm      |  146 --
 .../synchronization/mutexes/spin_mutex_cls.htm     |   62 -
 .../synchronization/mutexes/spin_rw_mutex_cls.htm  |   58 -
 .../ppl_compatibility/critical_section.htm         |   69 -
 .../ppl_compatibility/reader_writer_lock_cls.htm   |  286 ---
 .../synchronization/ppl_compatibility_synch.htm    |   51 -
 doc/help/reference/task_groups.htm                 |  183 --
 .../is_current_task_group_canceling_func.htm       |   43 -
 doc/help/reference/task_groups/make_task_func.htm  |   54 -
 .../task_groups/structured_task_group_cls.htm      |  102 -
 doc/help/reference/task_groups/task_group_cls.htm  |  111 -
 .../task_group_cls/task_group_cls_members.htm      |  208 --
 .../task_groups/task_group_status_enum.htm         |   50 -
 doc/help/reference/task_groups/task_handle_cls.htm |   64 -
 doc/help/reference/task_scheduler.htm              |  182 --
 doc/help/reference/task_scheduler/affinity.htm     |  168 --
 doc/help/reference/task_scheduler/cancellation.htm |  108 -
 .../catalog_of_recommended_task_patterns.htm       |  194 --
 .../reference/task_scheduler/empty_task_cls.htm    |   57 -
 .../task_scheduler/explicit_task_destruction.htm   |   87 -
 doc/help/reference/task_scheduler/priorities.htm   |  203 --
 .../reference/task_scheduler/recycling_tasks.htm   |  220 --
 .../task_scheduler/scheduling_algorithm.htm        |  149 --
 .../reference/task_scheduler/synchronization.htm   |  467 ----
 .../reference/task_scheduler/task_allocation.htm   |  248 ---
 doc/help/reference/task_scheduler/task_cls.htm     |  326 ---
 .../task_scheduler/task_cls/task_derivation.htm    |   88 -
 doc/help/reference/task_scheduler/task_context.htm |  174 --
 .../reference/task_scheduler/task_debugging.htm    |  202 --
 .../task_scheduler/task_group_context.htm          |  300 ---
 .../task_group_context/task_group_context.htm      |   47 -
 .../reference/task_scheduler/task_list_cls.htm     |  203 --
 .../task_scheduler/task_scheduler_init_cls.htm     |  201 --
 .../task_scheduler_init.htm                        |  172 --
 .../task_scheduler_init_1.htm                      |  101 -
 .../task_scheduler/task_scheduler_observer.htm     |   71 -
 .../task_scheduler_observer_member.htm             |  186 --
 doc/help/reference/thread_local_storage.htm        |   76 -
 .../thread_local_storage/combinable_cls.htm        |  292 ---
 .../enumerable_thread_specific_cls.htm             |  230 --
 .../enumerable_thread_specific_cls/combining.htm   |  107 -
 .../concurrent_operations1.htm                     |  129 --
 .../iterators_specific_cls.htm                     |  161 --
 .../parallel_literation_specific_cls.htm           |  103 -
 .../whole_container_operations_specific_cls.htm    |  235 ---
 .../thread_local_storage/flattened2d_cls.htm       |  163 --
 .../flattened2d_cls/concurrent_operations.htm      |   83 -
 .../flattened2d_cls/iterators_2d_cls.htm           |  123 --
 .../flattened2d_cls/utility_funcs.htm              |   91 -
 .../whole_container_operations_2d_cls.htm          |  101 -
 doc/help/reference/threads.htm                     |  186 --
 .../reference/threads/this_thread_namespace.htm    |  129 --
 doc/help/reference/threads/thread_cls.htm          |   91 -
 .../threads/thread_cls/thread_cls_members.htm      |  229 --
 doc/help/reference/threads/thread_id.htm           |   71 -
 doc/help/reference/timing.htm                      |   53 -
 doc/help/reference/timing/tick_count_cls.htm       |   87 -
 .../tick_count_cls/tick_count_cls_members.htm      |  112 -
 .../tick_count_cls/tick_count_interval_t_cls.htm   |  237 ---
 doc/help/search.js                                 |  471 -----
 doc/help/searchdata.js                             |   13 -
 doc/help/tbb_userguide/Advanced_Example.htm        |  124 --
 .../Advanced_Idiom_Waiting_on_an_Element.htm       |  125 --
 ...anced_Topic_Other_Kinds_of_Iteration_Spaces.htm |  123 --
 doc/help/tbb_userguide/Atomic_Operations.htm       |  388 ----
 doc/help/tbb_userguide/Automatic_Chunking.htm      |   73 -
 .../tbb_userguide/Automically_Replacing_malloc.htm |   61 -
 .../tbb_userguide/Bandwidth_and_Cache_Affinity.htm |  181 --
 .../Cancellation_Without_An_Exception.htm          |   93 -
 .../Cancellation_and_Nested_Parallelism.htm        |  234 ---
 .../tbb_userguide/Concurrent_Queue_Classes.htm     |   81 -
 doc/help/tbb_userguide/Containers.htm              |  116 -
 doc/help/tbb_userguide/Continuation_Passing.htm    |  191 --
 doc/help/tbb_userguide/Controlling_Chunking.htm    |  302 ---
 .../tbb_userguide/Cook_Until_Done_parallel_do.htm  |  141 --
 .../Debug_Versus_Release_Libraries.htm             |  195 --
 .../Design_Patterns/Agglomeration.htm              |  214 --
 .../Design_Patterns/Compare_and_Swap_Loop.htm      |  209 --
 .../Design_Patterns/Design_Patterns.htm            |  149 --
 .../Design_Patterns/Divide_and_Conquer.htm         |  259 ---
 .../tbb_userguide/Design_Patterns/Elementwise.htm  |  158 --
 .../Design_Patterns/Fenced_Data_Transfer.htm       |  218 --
 .../tbb_userguide/Design_Patterns/GUI_Thread.htm   |  284 ---
 .../Design_Patterns/General_References.htm         |   92 -
 .../Design_Patterns/Images/image002.jpg            |  Bin 30886 -> 0 bytes
 .../Design_Patterns/Images/image003.jpg            |  Bin 10918 -> 0 bytes
 .../Design_Patterns/Images/image004.jpg            |  Bin 9101 -> 0 bytes
 .../Design_Patterns/Images/image005.jpg            |  Bin 11889 -> 0 bytes
 .../Design_Patterns/Images/image006.jpg            |  Bin 12007 -> 0 bytes
 .../Design_Patterns/Images/image007.jpg            |  Bin 16822 -> 0 bytes
 .../Design_Patterns/Lazy_Initialization.htm        |  283 ---
 .../Design_Patterns/Local_Serializer.htm           |  410 ----
 .../Design_Patterns/Non-Preemptive_Priorities.htm  |  214 --
 .../Design_Patterns/Odd-Even_Communication.htm     |  120 --
 .../tbb_userguide/Design_Patterns/Reduction.htm    |  267 ---
 .../Design_Patterns/Reference_Counting.htm         |  171 --
 .../tbb_userguide/Design_Patterns/Wavefront.htm    |  225 --
 doc/help/tbb_userguide/Empty_Tasks.htm             |   46 -
 .../tbb_userguide/Exceptions_and_Cancellation.htm  |  130 --
 .../General_Acyclic_Graphs_of_Tasks.htm            |  155 --
 .../tbb_userguide/How_Task_Scheduling_Works.htm    |  244 ---
 doc/help/tbb_userguide/Images/image002.jpg         |  Bin 10682 -> 0 bytes
 doc/help/tbb_userguide/Images/image004.jpg         |  Bin 3680 -> 0 bytes
 doc/help/tbb_userguide/Images/image006.jpg         |  Bin 14805 -> 0 bytes
 doc/help/tbb_userguide/Images/image007.jpg         |  Bin 21474 -> 0 bytes
 doc/help/tbb_userguide/Images/image008.jpg         |  Bin 20556 -> 0 bytes
 doc/help/tbb_userguide/Images/image009.jpg         |  Bin 41437 -> 0 bytes
 doc/help/tbb_userguide/Images/image010.jpg         |  Bin 767 -> 0 bytes
 doc/help/tbb_userguide/Images/image011.jpg         |  Bin 5852 -> 0 bytes
 doc/help/tbb_userguide/Images/image012.jpg         |  Bin 5596 -> 0 bytes
 doc/help/tbb_userguide/Images/image013.jpg         |  Bin 5533 -> 0 bytes
 doc/help/tbb_userguide/Images/image014.jpg         |  Bin 17178 -> 0 bytes
 doc/help/tbb_userguide/Images/image015.jpg         |  Bin 13148 -> 0 bytes
 doc/help/tbb_userguide/Images/image016.jpg         |  Bin 15846 -> 0 bytes
 doc/help/tbb_userguide/Images/image017.jpg         |  Bin 24044 -> 0 bytes
 doc/help/tbb_userguide/Images/image018.jpg         |  Bin 13870 -> 0 bytes
 .../Initializing_and_Terminating_the_Library.htm   |   75 -
 ...lug-In_for_Microsoft_Visual_Studio_Projects.htm |   52 -
 ...ating_Over_a_Concurrent_Queue_for_Debugging.htm |   48 -
 doc/help/tbb_userguide/Lambda_Expressions.htm      |  175 --
 ...inux_C_Dynamic_Memory_Interface_Replacement.htm |   70 -
 doc/help/tbb_userguide/Linux_OS.htm                |  484 -----
 doc/help/tbb_userguide/Lock_Pathologies.htm        |  137 --
 doc/help/tbb_userguide/Memory_Allocation.htm       |   78 -
 doc/help/tbb_userguide/Memory_Consistency.htm      |  188 --
 .../Microsoft_Visual_Studio_Code_Examples.htm      |  102 -
 doc/help/tbb_userguide/More_on_HashCompare.htm     |  107 -
 doc/help/tbb_userguide/Mutex_Flavors.htm           |  536 -----
 doc/help/tbb_userguide/Mutual_Exclusion.htm        |  187 --
 doc/help/tbb_userguide/Non-Linear_Pipelines.htm    |   46 -
 doc/help/tbb_userguide/OS_X_Systems.htm            |  386 ----
 doc/help/tbb_userguide/Open_Source_Version.htm     |  474 -----
 doc/help/tbb_userguide/Package_Contents.htm        |   68 -
 .../tbb_userguide/Parallelizing_Complex_Loops.htm  |   64 -
 .../tbb_userguide/Parallelizing_Simple_Loops.htm   |  159 --
 doc/help/tbb_userguide/Partitioner_Summary.htm     |  196 --
 doc/help/tbb_userguide/Reader_Writer_Mutexes.htm   |   72 -
 .../tbb_userguide/Recursive_Chain_Reaction_.htm    |   67 -
 doc/help/tbb_userguide/Recycling.htm               |  175 --
 doc/help/tbb_userguide/References.htm              |   56 -
 .../tbb_userguide/Scalable_Memory_Allocator.htm    |   66 -
 doc/help/tbb_userguide/Scheduler_Bypass.htm        |  127 --
 .../Simple_Example_Fibonacci_Numbers.htm           |  247 ---
 doc/help/tbb_userguide/Summary_of_Containers.htm   |   40 -
 .../Summary_of_Loops_and_Pipelines.htm             |   40 -
 doc/help/tbb_userguide/Task-Based_Programming.htm  |  156 --
 doc/help/tbb_userguide/Task_Scheduler_Summary.htm  |   51 -
 doc/help/tbb_userguide/The_Task_Scheduler.htm      |   64 -
 doc/help/tbb_userguide/Throughput_of_pipeline.htm  |   70 -
 doc/help/tbb_userguide/Timing.htm                  |   46 -
 doc/help/tbb_userguide/UpgradeDowngrade.htm        |   94 -
 doc/help/tbb_userguide/Useful_Task_Techniques.htm  |   58 -
 doc/help/tbb_userguide/Using_Circular_Buffers.htm  |   64 -
 doc/help/tbb_userguide/When_Not_to_Use_Queues.htm  |   96 -
 ...hen_Task-Based_Programming_Is_Inappropriate.htm |   40 -
 .../Which_Dynamic_Libraries_to_Use.htm             |  149 --
 .../Why_atomic_T_Has_No_Constructors.htm           |  126 --
 ...dows_C_Dynamic_Memory_Interface_Replacement.htm |   58 -
 doc/help/tbb_userguide/Windows_OS.htm              |  638 ------
 .../Working_on_the_Assembly_Line_pipeline.htm      |  432 ----
 doc/help/tbb_userguide/appendix_A.htm              |   86 -
 doc/help/tbb_userguide/appendix_B.htm              |   80 -
 doc/help/tbb_userguide/concurrent_hash_map.htm     |  112 -
 doc/help/tbb_userguide/concurrent_vector.htm       |  127 --
 doc/help/tbb_userguide/parallel_for.htm            |  207 --
 doc/help/tbb_userguide/parallel_reduce.htm         |  230 --
 doc/help/tbb_userguide/title.htm                   |   92 -
 doc/help/tree.css                                  |  106 -
 doc/help/tree.js                                   |  394 ----
 doc/help/treenodedot.gif                           |  Bin 829 -> 0 bytes
 doc/help/treenodeminus.gif                         |  Bin 56 -> 0 bytes
 doc/help/treenodeplus.gif                          |  Bin 59 -> 0 bytes
 doc/html/a00001.html                               |    2 +-
 doc/html/a00002.html                               |    2 +-
 doc/html/a00003.html                               |    2 +-
 doc/html/a00004.html                               |    2 +-
 doc/html/a00005.html                               |    2 +-
 doc/html/a00006.html                               |    2 +-
 doc/html/a00007.html                               |    2 +-
 doc/html/a00008.html                               |    2 +-
 doc/html/a00009.html                               |    4 +-
 doc/html/a00010.html                               |   86 +-
 doc/html/a00011.html                               |   79 +-
 doc/html/a00011.png                                |  Bin 1067 -> 0 bytes
 doc/html/a00012.html                               |   92 +-
 doc/html/a00012.png                                |  Bin 843 -> 1067 bytes
 doc/html/a00013.html                               |  110 +-
 doc/html/a00013.png                                |  Bin 1567 -> 843 bytes
 doc/html/a00014.html                               |   97 +-
 doc/html/{a00013.png => a00014.png}                |  Bin
 doc/html/a00015.html                               |   51 +-
 doc/html/a00016.html                               |   57 +-
 doc/html/a00016.png                                |  Bin 688 -> 1259 bytes
 doc/html/a00017.html                               |  147 +-
 doc/html/a00017.png                                |  Bin 490 -> 3777 bytes
 doc/html/a00018.html                               |   45 +-
 doc/html/{a00015.png => a00018.png}                |  Bin
 doc/html/a00019.html                               |   52 +-
 doc/html/a00019.png                                |  Bin 2213 -> 688 bytes
 doc/html/a00020.html                               |   63 +-
 doc/html/a00020.png                                |  Bin 1561 -> 490 bytes
 doc/html/a00021.html                               |  227 +-
 doc/html/a00022.html                               |   81 +-
 doc/html/{a00019.png => a00022.png}                |  Bin
 doc/html/a00023.html                               |  106 +-
 doc/html/{a00020.png => a00023.png}                |  Bin
 doc/html/a00024.html                               |  279 ++-
 doc/html/a00025.html                               |  210 +-
 doc/html/a00025.png                                |  Bin 1875 -> 0 bytes
 doc/html/a00026.html                               |  103 +-
 doc/html/a00027.html                               |  456 +---
 doc/html/a00027.png                                |  Bin 5177 -> 0 bytes
 doc/html/a00028.html                               |  267 ++-
 doc/html/a00028.png                                |  Bin 1158 -> 1875 bytes
 doc/html/a00029.html                               |  116 +-
 doc/html/{a00026.png => a00029.png}                |  Bin
 doc/html/a00030.html                               |  576 ++++-
 doc/html/a00030.png                                |  Bin 0 -> 5237 bytes
 doc/html/a00031.html                               |  193 +-
 doc/html/a00031.png                                |  Bin 835 -> 1158 bytes
 doc/html/a00032.html                               |  125 +-
 doc/html/a00033.html                               |   44 +-
 doc/html/a00034.html                               |  327 +--
 doc/html/a00034.png                                |  Bin 1180 -> 0 bytes
 doc/html/a00035.html                               |  723 +------
 doc/html/a00035.png                                |  Bin 1052 -> 835 bytes
 doc/html/a00036.html                               |   84 +-
 doc/html/a00036.png                                |  Bin 1068 -> 0 bytes
 doc/html/a00037.html                               |  387 +---
 doc/html/a00038.html                               |  225 +-
 doc/html/a00038.png                                |  Bin 872 -> 1890 bytes
 doc/html/a00039.html                               |  312 +--
 doc/html/a00039.png                                |  Bin 1170 -> 1634 bytes
 doc/html/a00040.html                               |  190 +-
 doc/html/a00040.png                                |  Bin 2163 -> 1636 bytes
 doc/html/a00041.html                               |   61 +-
 doc/html/a00042.html                               |  450 +++-
 doc/html/a00042.png                                |  Bin 2174 -> 766 bytes
 doc/html/a00043.html                               | 1149 ++++++++--
 doc/html/a00043.png                                |  Bin 2109 -> 1052 bytes
 doc/html/a00044.html                               |  131 +-
 doc/html/a00044.png                                |  Bin 2095 -> 1068 bytes
 doc/html/a00045.html                               |  599 +++++-
 doc/html/a00046.html                               |  743 ++-----
 doc/html/a00046.png                                |  Bin 1057 -> 872 bytes
 doc/html/a00047.html                               |  179 +-
 doc/html/a00047.png                                |  Bin 1888 -> 2163 bytes
 doc/html/a00048.html                               |   70 +-
 doc/html/a00049.html                               |  197 +-
 doc/html/a00049.png                                |  Bin 2359 -> 2174 bytes
 doc/html/a00050.html                               |  267 +--
 doc/html/a00050.png                                |  Bin 1010 -> 2109 bytes
 doc/html/a00051.html                               |  134 +-
 doc/html/a00051.png                                |  Bin 621 -> 2095 bytes
 doc/html/a00052.html                               |  232 +-
 doc/html/a00052.png                                |  Bin 1259 -> 0 bytes
 doc/html/a00053.html                               |  760 ++++++-
 doc/html/a00053.png                                |  Bin 757 -> 1057 bytes
 doc/html/a00054.html                               |  112 +-
 doc/html/{a00047.png => a00054.png}                |  Bin
 doc/html/a00055.html                               |   28 +-
 doc/html/a00056.html                               |  133 +-
 doc/html/a00056.png                                |  Bin 574 -> 2359 bytes
 doc/html/a00057.html                               |  276 ++-
 doc/html/{a00050.png => a00057.png}                |  Bin
 doc/html/a00058.html                               |   69 +-
 doc/html/{a00051.png => a00058.png}                |  Bin
 doc/html/a00059.html                               |  139 +-
 doc/html/a00059.png                                |  Bin 3107 -> 0 bytes
 doc/html/a00060.html                               |  130 +-
 doc/html/a00060.png                                |  Bin 2976 -> 1053 bytes
 doc/html/a00061.html                               |  443 ++--
 doc/html/a00061.png                                |  Bin 596 -> 1259 bytes
 doc/html/a00062.html                               |  169 +-
 doc/html/{a00053.png => a00062.png}                |  Bin
 doc/html/a00063.html                               |   98 +-
 doc/html/a00063.png                                |  Bin 10743 -> 0 bytes
 doc/html/a00064.html                               |   60 +-
 doc/html/a00065.html                               |   38 +-
 doc/html/a00065.png                                |  Bin 495 -> 574 bytes
 doc/html/a00066.html                               |  122 +-
 doc/html/a00067.html                               |   40 +-
 doc/html/a00067.png                                |  Bin 638 -> 0 bytes
 doc/html/a00068.html                               |  133 +-
 doc/html/a00068.png                                |  Bin 0 -> 2810 bytes
 doc/html/a00069.html                               |   51 +-
 doc/html/a00069.png                                |  Bin 1710 -> 0 bytes
 doc/html/a00070.html                               |  309 ++-
 doc/html/a00070.png                                |  Bin 1729 -> 596 bytes
 doc/html/a00071.html                               |  131 +-
 doc/html/a00072.html                               |  252 +--
 doc/html/a00072.png                                |  Bin 1877 -> 14405 bytes
 doc/html/a00073.html                               |   76 +-
 doc/html/a00073.png                                |  Bin 671 -> 0 bytes
 doc/html/a00074.html                               |  135 +-
 doc/html/{a00065.png => a00074.png}                |  Bin
 doc/html/a00075.html                               |  106 +-
 doc/html/a00075.png                                |  Bin 0 -> 1382 bytes
 doc/html/a00076.html                               |   74 +-
 doc/html/a00076.png                                |  Bin 0 -> 995 bytes
 doc/html/a00077.html                               |   55 +-
 doc/html/a00077.png                                |  Bin 489 -> 1042 bytes
 doc/html/a00078.html                               |  202 +-
 doc/html/a00078.png                                |  Bin 960 -> 1119 bytes
 doc/html/a00079.html                               |   92 +-
 doc/html/a00079.png                                |  Bin 3959 -> 1168 bytes
 doc/html/a00080.html                               |   87 +-
 doc/html/a00080.png                                |  Bin 3910 -> 1214 bytes
 doc/html/a00081.html                               |  143 +-
 doc/html/a00081.png                                |  Bin 0 -> 1263 bytes
 doc/html/a00082.html                               |   66 +-
 doc/html/a00082.png                                |  Bin 1052 -> 1307 bytes
 doc/html/a00083.html                               |   77 +-
 doc/html/a00083.png                                |  Bin 0 -> 1330 bytes
 doc/html/a00084.html                               |   77 +-
 doc/html/a00084.png                                |  Bin 0 -> 1358 bytes
 doc/html/a00085.html                               |   91 +-
 doc/html/a00085.png                                |  Bin 877 -> 0 bytes
 doc/html/a00086.html                               |  187 +-
 doc/html/a00086.png                                |  Bin 2529 -> 638 bytes
 doc/html/a00087.html                               |   55 +-
 doc/html/a00088.html                               |  124 +-
 doc/html/a00088.png                                |  Bin 612 -> 1710 bytes
 doc/html/a00089.html                               |  116 +-
 doc/html/{a00070.png => a00089.png}                |  Bin
 doc/html/a00090.html                               |   91 +-
 doc/html/{a00071.png => a00090.png}                |  Bin
 doc/html/a00091.html                               |  500 ++---
 doc/html/a00091.png                                |  Bin 4028 -> 1877 bytes
 doc/html/a00092.html                               |  268 +--
 doc/html/a00092.png                                |  Bin 4341 -> 671 bytes
 doc/html/a00093.html                               |  142 +-
 doc/html/a00094.html                               |   96 +-
 doc/html/a00095.html                               |  205 +-
 doc/html/a00095.png                                |  Bin 657 -> 0 bytes
 doc/html/a00096.html                               |   42 +-
 doc/html/{a00077.png => a00096.png}                |  Bin
 doc/html/a00097.html                               |  190 +-
 doc/html/{a00078.png => a00097.png}                |  Bin
 doc/html/a00098.html                               |  112 +-
 doc/html/a00098.png                                |  Bin 0 -> 3820 bytes
 doc/html/a00099.html                               |  129 +-
 doc/html/a00099.png                                |  Bin 0 -> 680 bytes
 doc/html/a00100.html                               |   65 +-
 doc/html/{a00082.png => a00100.png}                |  Bin
 doc/html/a00101.html                               |   56 +-
 doc/html/a00101.png                                |  Bin 0 -> 704 bytes
 doc/html/a00102.html                               |   56 +-
 doc/html/a00102.png                                |  Bin 0 -> 724 bytes
 doc/html/a00103.html                               |   21 +-
 doc/html/a00104.html                               |  265 ++-
 doc/html/{a00086.png => a00104.png}                |  Bin
 doc/html/a00105.html                               |   59 +-
 doc/html/{a00087.png => a00105.png}                |  Bin
 doc/html/a00106.html                               |  181 +-
 doc/html/a00106.png                                |  Bin 4592 -> 612 bytes
 doc/html/a00107.html                               |  127 +-
 doc/html/a00108.html                               |   29 +-
 doc/html/a00109.html                               |  394 +++-
 doc/html/a00109.png                                |  Bin 0 -> 4089 bytes
 doc/html/a00110.html                               |  610 +++---
 doc/html/a00110.png                                |  Bin 616 -> 4406 bytes
 doc/html/a00111.html                               |  117 +-
 doc/html/a00111.png                                |  Bin 0 -> 754 bytes
 doc/html/a00112.html                               |   72 +-
 doc/html/a00112.png                                |  Bin 0 -> 776 bytes
 doc/html/a00113.html                               |  201 +-
 doc/html/a00113.png                                |  Bin 594 -> 657 bytes
 doc/html/a00114.html                               |  172 +-
 doc/html/a00114.png                                |  Bin 655 -> 0 bytes
 doc/html/a00115.html                               |   42 +-
 doc/html/a00116.html                               |   70 +-
 doc/html/a00116.png                                |  Bin 542 -> 0 bytes
 doc/html/a00117.html                               |   48 +-
 doc/html/a00118.html                               |   60 +-
 doc/html/a00118.png                                |  Bin 798 -> 0 bytes
 doc/html/a00119.html                               |  116 +-
 doc/html/a00120.html                               |   71 +-
 doc/html/a00120.png                                |  Bin 645 -> 0 bytes
 doc/html/a00121.html                               |   90 +-
 doc/html/a00122.html                               |   35 +-
 doc/html/a00122.png                                |  Bin 743 -> 0 bytes
 doc/html/a00123.html                               |   60 +-
 doc/html/a00123.png                                |  Bin 839 -> 0 bytes
 doc/html/a00124.html                               |  159 +-
 doc/html/a00124.png                                |  Bin 4584 -> 4592 bytes
 doc/html/a00125.html                               |  331 +--
 doc/html/a00125.png                                |  Bin 4337 -> 766 bytes
 doc/html/a00126.html                               |  168 +-
 doc/html/a00127.html                               |  128 +-
 doc/html/a00128.html                               |  351 ++--
 doc/html/{a00110.png => a00128.png}                |  Bin
 doc/html/a00129.html                               |   99 +-
 doc/html/a00130.html                               |  111 +-
 doc/html/a00131.html                               |  111 +-
 doc/html/{a00119.png => a00131.png}                |  Bin
 doc/html/a00132.html                               |   89 +-
 doc/html/{a00121.png => a00132.png}                |  Bin
 doc/html/a00133.html                               |   94 +-
 doc/html/a00133.png                                |  Bin 961 -> 798 bytes
 doc/html/a00134.html                               |   90 +-
 doc/html/{a00113.png => a00134.png}                |  Bin
 doc/html/a00135.html                               |  323 +--
 doc/html/a00135.png                                |  Bin 656 -> 655 bytes
 doc/html/a00136.html                               |   80 +-
 doc/html/a00136.png                                |  Bin 891 -> 743 bytes
 doc/html/a00137.html                               |   82 +-
 doc/html/a00137.png                                |  Bin 1324 -> 574 bytes
 doc/html/a00138.html                               |   52 +-
 doc/html/a00138.png                                |  Bin 0 -> 604 bytes
 doc/html/a00139.html                               |   71 +-
 doc/html/a00139.png                                |  Bin 538 -> 645 bytes
 doc/html/a00140.html                               |   62 +-
 doc/html/a00140.png                                |  Bin 620 -> 542 bytes
 doc/html/a00141.html                               |  182 +-
 doc/html/a00141.png                                |  Bin 565 -> 839 bytes
 doc/html/a00142.html                               |  232 +-
 doc/html/a00142.png                                |  Bin 906 -> 4584 bytes
 doc/html/a00143.html                               |  451 ++--
 doc/html/a00143.png                                |  Bin 906 -> 4401 bytes
 doc/html/a00144.html                               |  280 ++-
 doc/html/{a00126.png => a00144.png}                |  Bin
 doc/html/a00145.html                               |  144 +-
 doc/html/a00145.png                                |  Bin 0 -> 729 bytes
 doc/html/a00146.html                               |  206 +-
 doc/html/a00146.png                                |  Bin 1423 -> 777 bytes
 doc/html/a00147.html                               |  166 +-
 doc/html/{a00130.png => a00147.png}                |  Bin
 doc/html/a00148.html                               |   91 +-
 doc/html/{a00133.png => a00148.png}                |  Bin
 doc/html/a00149.html                               |  127 +-
 doc/html/a00150.html                               |  356 +++-
 doc/html/a00150.png                                |  Bin 757 -> 656 bytes
 doc/html/a00151.html                               |   99 +-
 doc/html/a00151.png                                |  Bin 794 -> 891 bytes
 doc/html/a00152.html                               |   98 +-
 doc/html/a00152.png                                |  Bin 815 -> 1324 bytes
 doc/html/a00153.html                               |   63 +-
 doc/html/a00154.html                               |   49 +-
 doc/html/a00154.png                                |  Bin 1409 -> 538 bytes
 doc/html/a00155.html                               |   63 +-
 doc/html/{a00140.png => a00155.png}                |  Bin
 doc/html/a00156.html                               |  166 +-
 doc/html/a00156.png                                |  Bin 468 -> 565 bytes
 doc/html/a00157.html                               |  228 +-
 doc/html/a00157.png                                |  Bin 1711 -> 906 bytes
 doc/html/a00158.html                               |  139 +-
 doc/html/{a00143.png => a00158.png}                |  Bin
 doc/html/a00159.html                               |  281 +--
 doc/html/a00160.html                               |   83 +-
 doc/html/a00161.html                               |  202 +-
 doc/html/a00161.png                                |  Bin 679 -> 1423 bytes
 doc/html/a00162.html                               |  117 ++
 doc/html/a00163.html                               |   79 +
 doc/html/a00164.html                               |  185 ++
 doc/html/a00165.html                               |  160 ++
 doc/html/{a00150.png => a00165.png}                |  Bin
 doc/html/a00166.html                               |   96 +
 doc/html/{a00151.png => a00166.png}                |  Bin
 doc/html/a00167.html                               |  110 +
 doc/html/{a00152.png => a00167.png}                |  Bin
 doc/html/a00168.html                               |  103 +
 doc/html/{a00153.png => a00168.png}                |  Bin
 doc/html/a00169.html                               |   80 +
 doc/html/{a00154.png => a00169.png}                |  Bin
 doc/html/a00170.html                               |  101 +
 doc/html/a00171.html                               |   69 +
 doc/html/a00172.html                               |   66 +
 doc/html/a00173.html                               |   81 +
 doc/html/{a00156.png => a00173.png}                |  Bin
 doc/html/a00174.html                               |   91 +
 doc/html/{a00157.png => a00174.png}                |  Bin
 doc/html/a00175.html                               |   56 +
 doc/html/a00176.html                               |  325 +++
 doc/html/{a00159.png => a00176.png}                |  Bin
 doc/html/a00177.html                               |  133 ++
 doc/html/{a00160.png => a00177.png}                |  Bin
 doc/html/a00178.html                               |  102 +
 doc/html/{a00161.png => a00178.png}                |  Bin
 doc/html/a00179.html                               |  207 --
 doc/html/a00180.html                               |   99 -
 doc/html/a00196.html                               |  271 +++
 doc/html/a00198.html                               |   99 +
 doc/html/a00199.html                               |  191 --
 doc/html/a00217.html                               |  191 ++
 doc/html/a00219.html                               |  115 -
 doc/html/a00222.html                               |  641 ------
 doc/html/a00234.html                               | 1779 ----------------
 doc/html/a00235.html                               |   67 -
 doc/html/a00236.html                               |  382 ----
 doc/html/a00237.html                               |  142 +-
 doc/html/a00238.html                               |   52 -
 doc/html/a00239.html                               |   52 -
 doc/html/a00240.html                               |  666 +++++-
 doc/html/a00242.html                               |   53 -
 doc/html/a00243.html                               |   65 -
 doc/html/a00244.html                               |   58 -
 doc/html/a00245.html                               |   60 -
 doc/html/a00246.html                               |   60 -
 doc/html/a00247.html                               |   69 -
 doc/html/a00248.html                               |   65 -
 doc/html/a00249.html                               |   67 -
 doc/html/a00250.html                               |   74 -
 doc/html/a00251.html                               |   57 -
 doc/html/a00252.html                               |   59 -
 doc/html/a00253.html                               |   57 -
 doc/html/a00254.html                               |   66 -
 doc/html/a00255.html                               | 1998 +++++++++++++++++-
 doc/html/a00256.html                               |   77 +-
 doc/html/a00257.html                               |  435 +++-
 doc/html/a00258.html                               |  122 +-
 doc/html/a00259.html                               |   41 +-
 doc/html/a00260.html                               |   38 +-
 doc/html/a00261.html                               |   62 -
 doc/html/a00262.html                               |   15 +-
 doc/html/a00263.html                               |   25 +-
 doc/html/a00264.html                               |   12 +-
 doc/html/a00265.html                               |   13 +-
 doc/html/a00266.html                               |   13 +-
 doc/html/a00267.html                               |   28 +-
 doc/html/a00268.html                               |   25 +-
 doc/html/a00269.html                               |   34 +-
 doc/html/a00270.html                               |   39 +-
 doc/html/a00271.html                               |   14 +-
 doc/html/a00272.html                               |   17 +-
 doc/html/a00273.html                               |   15 +-
 doc/html/a00274.html                               |   26 +-
 doc/html/a00275.html                               |   22 +-
 doc/html/a00276.html                               |   49 +-
 doc/html/a00277.html                               |  104 +-
 doc/html/a00278.html                               |   13 +-
 doc/html/a00279.html                               |   28 +-
 doc/html/a00280.html                               |   16 +-
 doc/html/a00281.html                               |   21 +-
 doc/html/a00282.html                               |   21 +-
 doc/html/a00283.html                               |   29 +-
 doc/html/a00284.html                               |   29 +-
 doc/html/a00285.html                               |   15 +-
 doc/html/a00286.html                               |   26 +-
 doc/html/a00287.html                               |   21 +-
 doc/html/a00288.html                               |   24 +-
 doc/html/a00289.html                               |   35 +-
 doc/html/a00290.html                               |   21 +-
 doc/html/a00291.html                               |   23 +-
 doc/html/a00292.html                               |   14 +-
 doc/html/a00293.html                               |   26 +-
 doc/html/a00294.html                               |   15 +-
 doc/html/a00295.html                               |   20 +-
 doc/html/a00296.html                               |   21 +-
 doc/html/a00297.html                               |   17 +-
 doc/html/a00298.html                               |   28 +-
 doc/html/a00299.html                               |   10 +-
 doc/html/a00300.html                               |   12 +-
 doc/html/a00301.html                               |   10 +-
 doc/html/a00302.html                               |   24 +-
 doc/html/a00303.html                               |   28 +-
 doc/html/a00304.html                               |   39 +-
 doc/html/a00305.html                               |   23 +-
 doc/html/a00306.html                               |   22 +-
 doc/html/a00307.html                               |   60 +-
 doc/html/a00308.html                               |   29 +-
 doc/html/a00309.html                               |   33 +-
 doc/html/a00310.html                               |   64 +-
 doc/html/a00311.html                               |   31 +-
 doc/html/a00312.html                               |   28 +-
 doc/html/a00313.html                               |   32 +-
 doc/html/a00314.html                               |   29 +-
 doc/html/a00315.html                               |   31 +-
 doc/html/a00316.html                               |   31 +-
 doc/html/a00317.html                               |   29 +-
 doc/html/a00318.html                               |   21 +-
 doc/html/a00319.html                               |   21 +-
 doc/html/a00320.html                               |   23 +-
 doc/html/a00321.html                               |   29 +-
 doc/html/a00322.html                               |   46 +-
 doc/html/a00323.html                               |   54 +-
 doc/html/a00324.html                               |   51 +-
 doc/html/a00325.html                               |   86 +-
 doc/html/a00326.html                               |   18 +-
 doc/html/a00327.html                               |   79 +-
 doc/html/a00328.html                               |   89 +-
 doc/html/a00329.html                               |   93 +-
 doc/html/a00330.html                               |   64 +-
 doc/html/a00331.html                               |   44 +-
 doc/html/a00332.html                               |   38 +-
 doc/html/a00333.html                               |   38 +-
 doc/html/a00334.html                               |   83 +-
 doc/html/a00335.html                               |   50 +-
 doc/html/a00336.html                               |   34 +-
 doc/html/a00337.html                               |   37 +-
 doc/html/a00338.html                               |   32 +-
 doc/html/a00339.html                               |   53 +-
 doc/html/a00340.html                               |   73 +-
 doc/html/a00341.html                               |   70 +-
 doc/html/a00342.html                               |   90 +-
 doc/html/a00343.html                               |  138 +-
 doc/html/a00344.html                               |   28 +-
 doc/html/a00345.html                               |   87 -
 doc/html/a00346.html                               |  143 +-
 doc/html/a00347.html                               |  123 +-
 doc/html/a00348.html                               |  112 +-
 doc/html/a00349.html                               |   18 +-
 doc/html/a00350.html                               |   22 +-
 doc/html/a00351.html                               |   24 +-
 doc/html/a00352.html                               |   19 +-
 doc/html/a00353.html                               |   18 +-
 doc/html/a00354.html                               |   48 +-
 doc/html/a00355.html                               |   31 +-
 doc/html/a00356.html                               |   37 +-
 doc/html/a00357.html                               |   15 +-
 doc/html/a00358.html                               |   25 +-
 doc/html/a00359.html                               |   15 +-
 doc/html/a00360.html                               |   16 +-
 doc/html/a00361.html                               |   16 +-
 doc/html/a00362.html                               |   31 +-
 doc/html/a00363.html                               |   36 +-
 doc/html/a00364.html                               |   43 +-
 doc/html/a00365.html                               |   49 +-
 doc/html/a00366.html                               |   27 +-
 doc/html/a00367.html                               |   24 +-
 doc/html/a00368.html                               |   97 +-
 doc/html/a00369.html                               |   32 +-
 doc/html/a00370.html                               |   18 +-
 doc/html/a00371.html                               |   14 +-
 doc/html/a00372.html                               |   13 +-
 doc/html/a00373.html                               |   31 +-
 doc/html/a00374.html                               |   27 +-
 doc/html/a00375.html                               |   41 +-
 doc/html/a00376.html                               |   18 +-
 doc/html/a00377.html                               |   14 +-
 doc/html/a00378.html                               |   43 +-
 doc/html/a00379.html                               |   41 +-
 doc/html/a00380.html                               |   25 +-
 doc/html/a00381.html                               |   52 +-
 doc/html/a00382.html                               |   45 +-
 doc/html/a00383.html                               |   45 +-
 doc/html/a00384.html                               |   61 +
 doc/html/a00385.html                               |   61 +
 doc/html/a00386.html                               |   58 +
 doc/html/a00387.html                               |   57 +
 doc/html/a00388.html                               |   65 +
 doc/html/a00389.html                               |   59 +
 doc/html/a00390.html                               |   61 +
 doc/html/a00391.html                               |   60 +
 doc/html/a00392.html                               |   92 +
 doc/html/a00393.html                               |   73 +
 doc/html/a00394.html                               |   80 +
 doc/html/a00395.html                               |   57 +
 doc/html/a00396.html                               |   67 +
 doc/html/a00397.html                               |   57 +
 doc/html/a00398.html                               |   58 +
 doc/html/a00399.html                               |   58 +
 doc/html/a00400.html                               |   58 +
 doc/html/a00401.html                               |   65 +
 doc/html/a00402.html                               |   72 +
 doc/html/a00403.html                               |   71 +
 doc/html/a00404.html                               |   67 +
 doc/html/a00405.html                               |   67 +
 doc/html/a00406.html                               |   58 +
 doc/html/a00407.html                               |   70 +
 doc/html/a00408.html                               |   63 +
 doc/html/a00409.html                               |   65 +
 doc/html/a00410.html                               |   58 +
 doc/html/a00411.html                               |   57 +
 doc/html/a00412.html                               |   67 +
 doc/html/a00413.html                               |   65 +
 doc/html/a00414.html                               |   61 +
 doc/html/a00415.html                               |   58 +
 doc/html/a00416.html                               |   61 +
 doc/html/a00417.html                               |   62 +
 doc/html/a00418.html                               |   63 +
 doc/html/a00419.html                               |   75 +
 doc/html/a00420.html                               |   66 +
 doc/html/a00421.html                               |   83 +
 doc/html/annotated.html                            |  345 +--
 doc/html/classes.html                              |  116 +-
 doc/html/dir_525f2cc589630bacbdc3bb450847427e.html |    2 +-
 doc/html/dir_63fb2cc293d133785b96e521fa051167.html |    2 +-
 doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html |  116 +-
 doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html |    2 +-
 doc/html/files.html                                |    8 +-
 doc/html/functions.html                            |   61 +-
 doc/html/functions_0x62.html                       |   29 +-
 doc/html/functions_0x63.html                       |   85 +-
 doc/html/functions_0x64.html                       |   46 +-
 doc/html/functions_0x65.html                       |   83 +-
 doc/html/functions_0x66.html                       |   25 +-
 doc/html/functions_0x67.html                       |   22 +-
 doc/html/functions_0x68.html                       |    4 +-
 doc/html/functions_0x69.html                       |   59 +-
 doc/html/functions_0x6a.html                       |    4 +-
 doc/html/functions_0x6c.html                       |   26 +-
 doc/html/functions_0x6d.html                       |   37 +-
 doc/html/functions_0x6e.html                       |   14 +-
 doc/html/functions_0x6f.html                       |   67 +-
 doc/html/functions_0x70.html                       |   38 +-
 doc/html/functions_0x71.html                       |    8 +-
 doc/html/functions_0x72.html                       |  104 +-
 doc/html/functions_0x73.html                       |   82 +-
 doc/html/functions_0x74.html                       |   96 +-
 doc/html/functions_0x75.html                       |   18 +-
 doc/html/functions_0x76.html                       |   12 +-
 doc/html/functions_0x77.html                       |   12 +-
 doc/html/functions_0x7e.html                       |   66 +-
 doc/html/functions_enum.html                       |   10 +-
 doc/html/functions_eval.html                       |   20 +-
 doc/html/functions_func.html                       |   54 +-
 doc/html/functions_func_0x62.html                  |   26 +-
 doc/html/functions_func_0x63.html                  |   77 +-
 doc/html/functions_func_0x64.html                  |   36 +-
 doc/html/functions_func_0x65.html                  |   59 +-
 doc/html/functions_func_0x66.html                  |   16 +-
 doc/html/functions_func_0x67.html                  |   22 +-
 doc/html/functions_func_0x68.html                  |    4 +-
 doc/html/functions_func_0x69.html                  |   48 +-
 doc/html/functions_func_0x6a.html                  |    4 +-
 doc/html/functions_func_0x6c.html                  |   24 +-
 doc/html/functions_func_0x6d.html                  |   27 +-
 doc/html/functions_func_0x6e.html                  |   10 +-
 doc/html/functions_func_0x6f.html                  |   56 +-
 doc/html/functions_func_0x70.html                  |   31 +-
 doc/html/functions_func_0x71.html                  |    8 +-
 doc/html/functions_func_0x72.html                  |   94 +-
 doc/html/functions_func_0x73.html                  |   64 +-
 doc/html/functions_func_0x74.html                  |   94 +-
 doc/html/functions_func_0x75.html                  |   18 +-
 doc/html/functions_func_0x77.html                  |   12 +-
 doc/html/functions_func_0x7e.html                  |   66 +-
 doc/html/functions_rela.html                       |   14 +-
 doc/html/functions_type.html                       |   82 +-
 doc/html/functions_vars.html                       |   33 +-
 doc/html/globals.html                              |   24 +-
 doc/html/globals_func.html                         |   24 +-
 doc/html/hierarchy.html                            |  471 +++--
 doc/html/index.html                                |    2 +-
 doc/html/modules.html                              |   14 +-
 doc/html/namespacemembers.html                     |   38 +-
 doc/html/namespacemembers_enum.html                |    6 +-
 doc/html/namespacemembers_eval.html                |   10 +-
 doc/html/namespacemembers_func.html                |   22 +-
 doc/html/namespacemembers_type.html                |    6 +-
 doc/html/namespaces.html                           |    6 +-
 doc/html/pages.html                                |    5 +-
 examples/GettingStarted/index.html                 |    2 +-
 examples/GettingStarted/sub_string_finder/Makefile |   38 +-
 .../sub_string_finder/Makefile.windows             |   55 +-
 .../GettingStarted/sub_string_finder/index.html    |    4 +-
 .../msvs/sub_string_finder.icproj                  |   11 -
 .../sub_string_finder/msvs/sub_string_finder.sln   |   46 +
 .../msvs/sub_string_finder.vcproj                  |  352 ----
 .../msvs/sub_string_finder.vcxproj                 |  194 ++
 .../msvs/sub_string_finder_cl.sln                  |   50 -
 .../msvs/sub_string_finder_extended.icproj         |   11 -
 .../msvs/sub_string_finder_extended.vcproj         |  352 ----
 .../msvs/sub_string_finder_extended.vcxproj        |  194 ++
 .../msvs/sub_string_finder_icl.sln                 |   74 -
 .../msvs/sub_string_finder_pretty.icproj           |   11 -
 .../msvs/sub_string_finder_pretty.vcproj           |  352 ----
 .../msvs/sub_string_finder_pretty.vcxproj          |  194 ++
 .../sub_string_finder/sub_string_finder.cpp        |   38 +-
 .../sub_string_finder_extended.cpp                 |   42 +-
 .../sub_string_finder/sub_string_finder_pretty.cpp |   42 +-
 examples/Makefile                                  |   42 +-
 examples/common/copy_libraries.bat                 |   38 +-
 examples/common/gui/Makefile.gmake                 |  104 +-
 examples/common/gui/Makefile.win                   |   42 +-
 examples/common/gui/convideo.cpp                   |   57 +-
 examples/common/gui/d2dvideo.cpp                   |   44 +-
 examples/common/gui/ddvideo.cpp                    |  589 ------
 examples/common/gui/dxcheck.bat                    |   38 +-
 examples/common/gui/gdivideo.cpp                   |   44 +-
 examples/common/gui/macvideo.cpp                   |   42 +-
 examples/common/gui/video.h                        |   49 +-
 examples/common/gui/winvideo.h                     |   42 +-
 examples/common/gui/xcode/tbbExample/Info.plist    |    2 +-
 examples/common/gui/xcode/tbbExample/OpenGLView.h  |   42 +-
 examples/common/gui/xcode/tbbExample/OpenGLView.m  |   42 +-
 examples/common/gui/xcode/tbbExample/main.m        |   38 +-
 .../common/gui/xcode/tbbExample/tbbAppDelegate.h   |   42 +-
 .../common/gui/xcode/tbbExample/tbbAppDelegate.m   |   42 +-
 .../gui/xcode/tbbExample/tbbExample-Info.plist     |    2 +-
 .../gui/xcode/tbbExample/tbbExample-Prefix.pch     |   38 +-
 examples/common/gui/xvideo.cpp                     |   38 +-
 examples/common/index.html                         |    2 +-
 examples/common/toolset.props                      |    9 +
 examples/common/utility/fast_random.h              |   38 +-
 examples/common/utility/utility.h                  |   49 +-
 .../concurrent_hash_map/count_strings/Makefile     |   38 +-
 .../count_strings/Makefile.windows                 |   38 +-
 .../count_strings/count_strings.cpp                |   44 +-
 .../concurrent_hash_map/count_strings/index.html   |    4 +-
 .../count_strings/msvs/count_strings.icproj        |   11 -
 .../count_strings/msvs/count_strings.sln           |   26 +
 .../count_strings/msvs/count_strings.vcproj        |  356 ----
 .../count_strings/msvs/count_strings.vcxproj       |  197 ++
 .../count_strings/msvs/count_strings_cl.sln        |   26 -
 .../count_strings/msvs/count_strings_icl.sln       |   33 -
 examples/concurrent_hash_map/index.html            |    2 +-
 .../concurrent_priority_queue/shortpath/Makefile   |   38 +-
 .../shortpath/Makefile.windows                     |   38 +-
 .../concurrent_priority_queue/shortpath/index.html |    4 +-
 .../shortpath/msvs/shortpath.icproj                |   11 -
 .../shortpath/msvs/shortpath.sln                   |   26 +
 .../shortpath/msvs/shortpath.vcproj                |  356 ----
 .../shortpath/msvs/shortpath.vcxproj               |  197 ++
 .../shortpath/msvs/shortpath_cl.sln                |   25 -
 .../shortpath/msvs/shortpath_icl.sln               |   33 -
 .../shortpath/shortpath.cpp                        |   62 +-
 examples/graph/binpack/Makefile                    |   38 +-
 examples/graph/binpack/Makefile.windows            |   38 +-
 examples/graph/binpack/binpack.cpp                 |   44 +-
 examples/graph/binpack/index.html                  |    4 +-
 examples/graph/binpack/msvs/binpack.icproj         |   11 -
 examples/graph/binpack/msvs/binpack.sln            |   26 +
 examples/graph/binpack/msvs/binpack.vcproj         |  356 ----
 examples/graph/binpack/msvs/binpack.vcxproj        |  197 ++
 examples/graph/binpack/msvs/binpack_cl.sln         |   25 -
 examples/graph/binpack/msvs/binpack_icl.sln        |   33 -
 examples/graph/dining_philosophers/Makefile        |   38 +-
 .../graph/dining_philosophers/Makefile.windows     |   38 +-
 .../dining_philosophers/dining_philosophers.cpp    |   68 +-
 examples/graph/dining_philosophers/index.html      |    4 +-
 .../msvs/dining_philosophers.icproj                |   11 -
 .../msvs/dining_philosophers.sln                   |   26 +
 .../msvs/dining_philosophers.vcproj                |  356 ----
 .../msvs/dining_philosophers.vcxproj               |  197 ++
 .../msvs/dining_philosophers_cl.sln                |   25 -
 .../msvs/dining_philosophers_icl.sln               |   33 -
 examples/graph/index.html                          |    2 +-
 examples/graph/logic_sim/D_latch.h                 |   84 +-
 examples/graph/logic_sim/Makefile                  |   42 +-
 examples/graph/logic_sim/Makefile.windows          |   38 +-
 examples/graph/logic_sim/basics.h                  |  285 +--
 examples/graph/logic_sim/four_bit_adder.h          |   85 +-
 examples/graph/logic_sim/index.html                |    6 +-
 examples/graph/logic_sim/msvs/logic_sim.sln        |   26 +
 examples/graph/logic_sim/msvs/logic_sim.vcxproj    |  197 ++
 examples/graph/logic_sim/msvs/logic_sim_cl.sln     |   52 -
 examples/graph/logic_sim/msvs/logic_sim_icl.sln    |  132 --
 examples/graph/logic_sim/msvs/test_all.icproj      |   11 -
 examples/graph/logic_sim/msvs/test_all.vcproj      |  356 ----
 examples/graph/logic_sim/one_bit_adder.h           |  123 +-
 examples/graph/logic_sim/test_all.cpp              |  236 ++-
 examples/graph/logic_sim/two_bit_adder.h           |   59 +
 examples/graph/som/Makefile                        |   38 +-
 examples/graph/som/Makefile.windows.windows        |   38 +-
 examples/graph/som/index.html                      |    6 +-
 examples/graph/som/msvs/som.icproj                 |   11 -
 examples/graph/som/msvs/som.sln                    |   26 +
 examples/graph/som/msvs/som.vcproj                 |  361 ----
 examples/graph/som/msvs/som.vcxproj                |  213 ++
 examples/graph/som/msvs/som_cl.sln                 |   22 -
 examples/graph/som/msvs/som_icl.sln                |   33 -
 examples/graph/som/som.cpp                         |   42 +-
 examples/graph/som/som.h                           |   42 +-
 examples/graph/som/som_graph.cpp                   |   42 +-
 examples/index.html                                |   14 +-
 examples/parallel_do/index.html                    |    2 +-
 examples/parallel_do/parallel_preorder/Graph.cpp   |   38 +-
 examples/parallel_do/parallel_preorder/Graph.h     |   42 +-
 examples/parallel_do/parallel_preorder/Makefile    |   38 +-
 .../parallel_do/parallel_preorder/Makefile.windows |   38 +-
 examples/parallel_do/parallel_preorder/Matrix.h    |   38 +-
 examples/parallel_do/parallel_preorder/index.html  |    4 +-
 examples/parallel_do/parallel_preorder/main.cpp    |   38 +-
 .../msvs/parallel_preorder.icproj                  |   11 -
 .../parallel_preorder/msvs/parallel_preorder.sln   |   26 +
 .../msvs/parallel_preorder.vcproj                  |  378 ----
 .../msvs/parallel_preorder.vcxproj                 |  203 ++
 .../msvs/parallel_preorder_cl.sln                  |   25 -
 .../msvs/parallel_preorder_icl.sln                 |   33 -
 .../parallel_preorder/parallel_preorder.cpp        |   42 +-
 examples/parallel_for/game_of_life/Makefile        |   38 +-
 .../parallel_for/game_of_life/Makefile.windows     |   38 +-
 examples/parallel_for/game_of_life/index.html      |    4 +-
 .../game_of_life/msvs/Game_of_life.sln             |    7 +-
 .../game_of_life/msvs/Game_of_life.vcproj          |  794 -------
 .../game_of_life/msvs/Game_of_life.vcxproj         |  443 ++++
 .../parallel_for/game_of_life/src/AssemblyInfo.cpp |   42 +-
 examples/parallel_for/game_of_life/src/Board.h     |   38 +-
 .../parallel_for/game_of_life/src/Evolution.cpp    |   42 +-
 examples/parallel_for/game_of_life/src/Evolution.h |   42 +-
 examples/parallel_for/game_of_life/src/Form1.h     |   38 +-
 .../parallel_for/game_of_life/src/Game_of_life.cpp |   42 +-
 .../parallel_for/game_of_life/src/Update_state.cpp |   42 +-
 examples/parallel_for/index.html                   |    2 +-
 examples/parallel_for/polygon_overlay/Makefile     |   38 +-
 .../parallel_for/polygon_overlay/Makefile.windows  |   38 +-
 examples/parallel_for/polygon_overlay/index.html   |    4 +-
 .../parallel_for/polygon_overlay/msvs/pover.icproj |   11 -
 .../parallel_for/polygon_overlay/msvs/pover.sln    |   38 +
 .../parallel_for/polygon_overlay/msvs/pover.vcproj |  832 --------
 .../polygon_overlay/msvs/pover.vcxproj             |  440 ++++
 .../parallel_for/polygon_overlay/msvs/pover_cl.sln |   37 -
 .../polygon_overlay/msvs/pover_icl.sln             |   53 -
 examples/parallel_for/polygon_overlay/polymain.cpp |   42 +-
 examples/parallel_for/polygon_overlay/polymain.h   |   42 +-
 examples/parallel_for/polygon_overlay/polyover.cpp |   42 +-
 examples/parallel_for/polygon_overlay/polyover.h   |   42 +-
 .../parallel_for/polygon_overlay/pover_global.h    |   42 +-
 .../parallel_for/polygon_overlay/pover_video.cpp   |   42 +-
 .../parallel_for/polygon_overlay/pover_video.h     |   42 +-
 examples/parallel_for/polygon_overlay/rpolygon.h   |   42 +-
 examples/parallel_for/seismic/Makefile             |   40 +-
 examples/parallel_for/seismic/Makefile.windows     |   42 +-
 examples/parallel_for/seismic/index.html           |   11 +-
 examples/parallel_for/seismic/main.cpp             |   58 +-
 .../seismic/msvs/SeismicSimulation.icproj          |   11 -
 .../seismic/msvs/SeismicSimulation.sln             |   38 +
 .../seismic/msvs/SeismicSimulation.vcproj          |  836 --------
 .../seismic/msvs/SeismicSimulation.vcxproj         |  443 ++++
 .../seismic/msvs/SeismicSimulation_cl.sln          |   37 -
 .../seismic/msvs/SeismicSimulation_icl.sln         |   53 -
 examples/parallel_for/seismic/seismic_video.cpp    |   52 +-
 examples/parallel_for/seismic/seismic_video.h      |   44 +-
 examples/parallel_for/seismic/universe.cpp         |   50 +-
 examples/parallel_for/seismic/universe.h           |   56 +-
 examples/parallel_for/tachyon/Makefile             |   38 +-
 examples/parallel_for/tachyon/Makefile.windows     |   38 +-
 .../parallel_for/tachyon/android/jni/Android.mk    |   62 +-
 .../tachyon/android/jni/Application.mk             |   40 +-
 .../tachyon/android/jni/jni-engine.cpp             |   44 +-
 .../tachyon/android/project.properties             |    2 +-
 .../src/com/intel/tbb/example/tachyon/tachyon.java |   38 +-
 examples/parallel_for/tachyon/index.html           |   12 +-
 examples/parallel_for/tachyon/msvs/tachyon.icproj  |   11 -
 .../tachyon/msvs/tachyon.serial.icproj             |   11 -
 .../tachyon/msvs/tachyon.serial.vcproj             |  695 ------
 .../tachyon/msvs/tachyon.serial.vcxproj            |  385 ++++
 examples/parallel_for/tachyon/msvs/tachyon.sln     |   92 +
 .../parallel_for/tachyon/msvs/tachyon.tbb.icproj   |   11 -
 .../parallel_for/tachyon/msvs/tachyon.tbb.vcproj   |  731 -------
 .../parallel_for/tachyon/msvs/tachyon.tbb.vcxproj  |  437 ++++
 .../parallel_for/tachyon/msvs/tachyon.tbb1d.icproj |   11 -
 .../parallel_for/tachyon/msvs/tachyon.tbb1d.vcproj |  731 -------
 .../tachyon/msvs/tachyon.tbb1d.vcxproj             |  437 ++++
 examples/parallel_for/tachyon/msvs/tachyon.vcproj  | 1046 ---------
 examples/parallel_for/tachyon/msvs/tachyon.vcxproj |  447 ++++
 examples/parallel_for/tachyon/msvs/tachyon_cl.sln  |   92 -
 examples/parallel_for/tachyon/msvs/tachyon_icl.sln |  149 --
 examples/parallel_for/tachyon/msvs/win8ui/App.xaml |   15 +
 .../parallel_for/tachyon/msvs/win8ui/App.xaml.cpp  |   54 +
 .../parallel_for/tachyon/msvs/win8ui/App.xaml.h    |   41 +
 .../tachyon/msvs/win8ui/Assets/Logo.png            |  Bin 0 -> 35141 bytes
 .../tachyon/msvs/win8ui/Assets/SmallLogo.png       |  Bin 0 -> 2552 bytes
 .../tachyon/msvs/win8ui/Assets/SplashScreen.png    |  Bin 0 -> 144360 bytes
 .../tachyon/msvs/win8ui/Assets/StoreLogo.png       |  Bin 0 -> 6321 bytes
 .../tachyon/msvs/win8ui/Common/StandardStyles.xaml | 1007 +++++++++
 .../tachyon/msvs/win8ui/DirectXBase.cpp            |  413 ++++
 .../parallel_for/tachyon/msvs/win8ui/DirectXBase.h |   92 +
 .../tachyon/msvs/win8ui/DirectXPage.xaml           |   31 +
 .../tachyon/msvs/win8ui/DirectXPage.xaml.cpp       |  133 ++
 .../tachyon/msvs/win8ui/DirectXPage.xaml.h         |   48 +
 .../tachyon/msvs/win8ui/Package.appxmanifest       |   30 +
 .../msvs/win8ui/copy_libraries_and_assets.bat      |   70 +
 examples/parallel_for/tachyon/msvs/win8ui/pch.h    |   29 +
 .../tachyon/msvs/win8ui/tbbTachyon.sln             |   32 +
 .../tachyon/msvs/win8ui/tbbTachyon.vcxproj         |  239 +++
 .../tachyon/msvs/win8ui/tbbTachyon.vcxproj.filters |  215 ++
 .../tachyon/msvs/win8ui/tbbTachyonRenderer.cpp     |  190 ++
 .../tachyon/msvs/win8ui/tbbTachyonRenderer.h       |   46 +
 examples/parallel_for/tachyon/src/api.cpp          |   46 +-
 examples/parallel_for/tachyon/src/api.h            |   42 +-
 examples/parallel_for/tachyon/src/apigeom.cpp      |   46 +-
 examples/parallel_for/tachyon/src/apitrigeom.cpp   |   46 +-
 examples/parallel_for/tachyon/src/apitrigeom.h     |   42 +-
 examples/parallel_for/tachyon/src/bndbox.cpp       |   46 +-
 examples/parallel_for/tachyon/src/bndbox.h         |   38 +-
 examples/parallel_for/tachyon/src/box.cpp          |   46 +-
 examples/parallel_for/tachyon/src/box.h            |   38 +-
 examples/parallel_for/tachyon/src/camera.cpp       |   46 +-
 examples/parallel_for/tachyon/src/camera.h         |   42 +-
 examples/parallel_for/tachyon/src/coordsys.cpp     |   46 +-
 examples/parallel_for/tachyon/src/coordsys.h       |   42 +-
 examples/parallel_for/tachyon/src/cylinder.cpp     |   46 +-
 examples/parallel_for/tachyon/src/cylinder.h       |   38 +-
 examples/parallel_for/tachyon/src/extvol.cpp       |   46 +-
 examples/parallel_for/tachyon/src/extvol.h         |   38 +-
 examples/parallel_for/tachyon/src/global.cpp       |   47 +-
 examples/parallel_for/tachyon/src/global.h         |   38 +-
 examples/parallel_for/tachyon/src/grid.cpp         |   47 +-
 examples/parallel_for/tachyon/src/grid.h           |   42 +-
 examples/parallel_for/tachyon/src/imageio.cpp      |   48 +-
 examples/parallel_for/tachyon/src/imageio.h        |   38 +-
 examples/parallel_for/tachyon/src/imap.cpp         |   49 +-
 examples/parallel_for/tachyon/src/imap.h           |   42 +-
 examples/parallel_for/tachyon/src/intersect.cpp    |   46 +-
 examples/parallel_for/tachyon/src/intersect.h      |   38 +-
 examples/parallel_for/tachyon/src/jpeg.cpp         |   46 +-
 examples/parallel_for/tachyon/src/jpeg.h           |   42 +-
 examples/parallel_for/tachyon/src/light.cpp        |   46 +-
 examples/parallel_for/tachyon/src/light.h          |   38 +-
 examples/parallel_for/tachyon/src/machine.h        |   38 +-
 examples/parallel_for/tachyon/src/macros.h         |   42 +-
 examples/parallel_for/tachyon/src/main.cpp         |  144 +-
 examples/parallel_for/tachyon/src/objbound.cpp     |   46 +-
 examples/parallel_for/tachyon/src/objbound.h       |   38 +-
 examples/parallel_for/tachyon/src/parse.cpp        |   48 +-
 examples/parallel_for/tachyon/src/parse.h          |   42 +-
 examples/parallel_for/tachyon/src/plane.cpp        |   46 +-
 examples/parallel_for/tachyon/src/plane.h          |   38 +-
 examples/parallel_for/tachyon/src/ppm.cpp          |   49 +-
 examples/parallel_for/tachyon/src/ppm.h            |   42 +-
 examples/parallel_for/tachyon/src/pthread.cpp      |   42 +-
 examples/parallel_for/tachyon/src/pthread_w.h      |   42 +-
 examples/parallel_for/tachyon/src/quadric.cpp      |   46 +-
 examples/parallel_for/tachyon/src/quadric.h        |   38 +-
 examples/parallel_for/tachyon/src/render.cpp       |   42 +-
 examples/parallel_for/tachyon/src/render.h         |   42 +-
 examples/parallel_for/tachyon/src/ring.cpp         |   46 +-
 examples/parallel_for/tachyon/src/ring.h           |   38 +-
 examples/parallel_for/tachyon/src/shade.cpp        |   46 +-
 examples/parallel_for/tachyon/src/shade.h          |   42 +-
 examples/parallel_for/tachyon/src/sphere.cpp       |   46 +-
 examples/parallel_for/tachyon/src/sphere.h         |   38 +-
 .../parallel_for/tachyon/src/tachyon_video.cpp     |   38 +-
 examples/parallel_for/tachyon/src/tachyon_video.h  |   42 +-
 examples/parallel_for/tachyon/src/texture.cpp      |   46 +-
 examples/parallel_for/tachyon/src/texture.h        |   38 +-
 examples/parallel_for/tachyon/src/tgafile.cpp      |   58 +-
 examples/parallel_for/tachyon/src/tgafile.h        |   42 +-
 examples/parallel_for/tachyon/src/trace.h          |   42 +-
 examples/parallel_for/tachyon/src/trace.serial.cpp |   42 +-
 examples/parallel_for/tachyon/src/trace.simple.cpp |  183 ++
 examples/parallel_for/tachyon/src/trace.tbb.cpp    |   50 +-
 examples/parallel_for/tachyon/src/trace.tbb1d.cpp  |   42 +-
 examples/parallel_for/tachyon/src/trace_rest.cpp   |   46 +-
 examples/parallel_for/tachyon/src/triangle.cpp     |   46 +-
 examples/parallel_for/tachyon/src/triangle.h       |   42 +-
 examples/parallel_for/tachyon/src/types.h          |   42 +-
 examples/parallel_for/tachyon/src/ui.cpp           |   46 +-
 examples/parallel_for/tachyon/src/ui.h             |   38 +-
 examples/parallel_for/tachyon/src/util.cpp         |   53 +-
 examples/parallel_for/tachyon/src/util.h           |   50 +-
 examples/parallel_for/tachyon/src/vector.cpp       |   46 +-
 examples/parallel_for/tachyon/src/vector.h         |   38 +-
 examples/parallel_for/tachyon/src/vol.cpp          |   51 +-
 examples/parallel_for/tachyon/src/vol.h            |   42 +-
 examples/parallel_reduce/convex_hull/Makefile      |   38 +-
 .../parallel_reduce/convex_hull/Makefile.windows   |   41 +-
 examples/parallel_reduce/convex_hull/convex_hull.h |   45 +-
 .../convex_hull/convex_hull_bench.cpp              |   43 +-
 .../convex_hull/convex_hull_sample.cpp             |   44 +-
 examples/parallel_reduce/convex_hull/index.html    |    4 +-
 .../convex_hull/msvs/convex_hull.sln               |   36 +
 .../convex_hull/msvs/convex_hull_benchmark.icproj  |   11 -
 .../convex_hull/msvs/convex_hull_benchmark.vcproj  |  366 ----
 .../convex_hull/msvs/convex_hull_benchmark.vcxproj |  202 ++
 .../convex_hull/msvs/convex_hull_cl.sln            |   35 -
 .../convex_hull/msvs/convex_hull_icl.sln           |   51 -
 .../convex_hull/msvs/convex_hull_sample.icproj     |   11 -
 .../convex_hull/msvs/convex_hull_sample.vcproj     |  364 ----
 .../convex_hull/msvs/convex_hull_sample.vcxproj    |  199 ++
 examples/parallel_reduce/index.html                |    2 +-
 examples/parallel_reduce/primes/Makefile           |   38 +-
 examples/parallel_reduce/primes/Makefile.windows   |   38 +-
 examples/parallel_reduce/primes/index.html         |    4 +-
 examples/parallel_reduce/primes/main.cpp           |   42 +-
 examples/parallel_reduce/primes/msvs/primes.icproj |   11 -
 examples/parallel_reduce/primes/msvs/primes.sln    |   26 +
 examples/parallel_reduce/primes/msvs/primes.vcproj |  364 ----
 .../parallel_reduce/primes/msvs/primes.vcxproj     |  201 ++
 examples/parallel_reduce/primes/msvs/primes_cl.sln |   25 -
 .../parallel_reduce/primes/msvs/primes_icl.sln     |   33 -
 examples/parallel_reduce/primes/primes.cpp         |   42 +-
 examples/parallel_reduce/primes/primes.h           |   42 +-
 examples/pipeline/index.html                       |    2 +-
 examples/pipeline/square/Makefile                  |   38 +-
 examples/pipeline/square/Makefile.windows          |   40 +-
 examples/pipeline/square/gen_input.cpp             |   42 +-
 examples/pipeline/square/index.html                |    4 +-
 examples/pipeline/square/msvs/square.icproj        |   11 -
 examples/pipeline/square/msvs/square.sln           |   26 +
 examples/pipeline/square/msvs/square.vcproj        |  372 ----
 examples/pipeline/square/msvs/square.vcproj.user   |   37 -
 examples/pipeline/square/msvs/square.vcxproj       |  198 ++
 examples/pipeline/square/msvs/square_cl.sln        |   25 -
 examples/pipeline/square/msvs/square_icl.sln       |   54 -
 examples/pipeline/square/square.cpp                |   42 +-
 examples/task/index.html                           |    2 +-
 examples/task/tree_sum/Makefile                    |   38 +-
 examples/task/tree_sum/Makefile.windows            |   38 +-
 .../task/tree_sum/OptimizedParallelSumTree.cpp     |   38 +-
 examples/task/tree_sum/SerialSumTree.cpp           |   38 +-
 examples/task/tree_sum/SimpleParallelSumTree.cpp   |   42 +-
 examples/task/tree_sum/TreeMaker.h                 |   42 +-
 examples/task/tree_sum/common.h                    |   42 +-
 examples/task/tree_sum/index.html                  |    4 +-
 examples/task/tree_sum/main.cpp                    |   42 +-
 examples/task/tree_sum/msvs/tree_sum.icproj        |   11 -
 examples/task/tree_sum/msvs/tree_sum.sln           |   26 +
 examples/task/tree_sum/msvs/tree_sum.vcproj        |  376 ----
 examples/task/tree_sum/msvs/tree_sum.vcxproj       |  204 ++
 examples/task/tree_sum/msvs/tree_sum_cl.sln        |   25 -
 examples/task/tree_sum/msvs/tree_sum_icl.sln       |   33 -
 examples/task_group/index.html                     |    2 +-
 examples/task_group/sudoku/Makefile                |   38 +-
 examples/task_group/sudoku/Makefile.windows        |   38 +-
 examples/task_group/sudoku/index.html              |    4 +-
 examples/task_group/sudoku/msvs/sudoku.icproj      |   11 -
 examples/task_group/sudoku/msvs/sudoku.sln         |   26 +
 examples/task_group/sudoku/msvs/sudoku.vcproj      |  356 ----
 examples/task_group/sudoku/msvs/sudoku.vcxproj     |  197 ++
 examples/task_group/sudoku/msvs/sudoku_cl.sln      |   25 -
 examples/task_group/sudoku/msvs/sudoku_icl.sln     |   33 -
 examples/task_group/sudoku/sudoku.cpp              |   52 +-
 examples/task_priority/fractal/Makefile            |   38 +-
 examples/task_priority/fractal/Makefile.windows    |   38 +-
 examples/task_priority/fractal/fractal.cpp         |   48 +-
 examples/task_priority/fractal/fractal.h           |   42 +-
 examples/task_priority/fractal/fractal_video.h     |   38 +-
 examples/task_priority/fractal/index.html          |    4 +-
 examples/task_priority/fractal/main.cpp            |   42 +-
 examples/task_priority/fractal/msvs/fractal.icproj |   11 -
 examples/task_priority/fractal/msvs/fractal.sln    |   38 +
 examples/task_priority/fractal/msvs/fractal.vcproj |  853 --------
 .../task_priority/fractal/msvs/fractal.vcxproj     |  442 ++++
 examples/task_priority/fractal/msvs/fractal_cl.sln |   35 -
 .../task_priority/fractal/msvs/fractal_icl.sln     |   49 -
 examples/task_priority/index.html                  |    2 +-
 examples/test_all/fibonacci/Fibonacci.cpp          |   44 +-
 examples/test_all/fibonacci/Makefile               |   38 +-
 examples/test_all/fibonacci/Makefile.windows       |   38 +-
 examples/test_all/fibonacci/index.html             |    4 +-
 examples/test_all/fibonacci/msvs/fibonacci.icproj  |   11 -
 examples/test_all/fibonacci/msvs/fibonacci.sln     |   26 +
 examples/test_all/fibonacci/msvs/fibonacci.vcproj  |  356 ----
 examples/test_all/fibonacci/msvs/fibonacci.vcxproj |  197 ++
 examples/test_all/fibonacci/msvs/fibonacci_cl.sln  |   25 -
 examples/test_all/fibonacci/msvs/fibonacci_icl.sln |   33 -
 examples/test_all/index.html                       |    2 +-
 include/index.html                                 |    2 +-
 include/serial/tbb/parallel_for.h                  |   67 +-
 include/serial/tbb/tbb_annotate.h                  |   42 +-
 include/tbb/aggregator.h                           |   44 +-
 include/tbb/aligned_space.h                        |   44 +-
 include/tbb/atomic.h                               |   56 +-
 include/tbb/blocked_range.h                        |  100 +-
 include/tbb/blocked_range2d.h                      |   79 +-
 include/tbb/blocked_range3d.h                      |   90 +-
 include/tbb/cache_aligned_allocator.h              |   51 +-
 include/tbb/combinable.h                           |   42 +-
 include/tbb/compat/condition_variable              |   61 +-
 include/tbb/compat/ppl.h                           |   42 +-
 include/tbb/compat/thread                          |   42 +-
 include/tbb/compat/tuple                           |   42 +-
 include/tbb/concurrent_hash_map.h                  |  299 ++-
 include/tbb/concurrent_lru_cache.h                 |   42 +-
 include/tbb/concurrent_priority_queue.h            |  211 +-
 include/tbb/concurrent_queue.h                     |  272 ++-
 include/tbb/concurrent_unordered_map.h             |  170 +-
 include/tbb/concurrent_unordered_set.h             |  197 +-
 include/tbb/concurrent_vector.h                    |  503 +++--
 include/tbb/critical_section.h                     |   42 +-
 include/tbb/enumerable_thread_specific.h           |  249 ++-
 include/tbb/flow_graph.h                           | 2220 ++++++++++++++++----
 include/tbb/global_control.h                       |   87 +
 include/tbb/index.html                             |    2 +-
 include/tbb/internal/_aggregator_impl.h            |  104 +-
 include/tbb/internal/_concurrent_queue_impl.h      |  188 +-
 include/tbb/internal/_concurrent_unordered_impl.h  |  307 ++-
 include/tbb/internal/_flow_graph_impl.h            |  544 +++--
 include/tbb/internal/_flow_graph_indexer_impl.h    |  481 +++++
 .../tbb/internal/_flow_graph_item_buffer_impl.h    |  250 ++-
 include/tbb/internal/_flow_graph_join_impl.h       |  586 ++++--
 include/tbb/internal/_flow_graph_node_impl.h       |  314 ++-
 include/tbb/internal/_flow_graph_or_impl.h         |  295 ---
 .../tbb/internal/_flow_graph_tagged_buffer_impl.h  |  253 ++-
 include/tbb/internal/_flow_graph_trace_impl.h      |   82 +-
 include/tbb/internal/_flow_graph_types_impl.h      |  378 +++-
 include/tbb/internal/_mutex_padding.h              |   46 +-
 include/tbb/internal/_range_iterator.h             |   70 +
 include/tbb/internal/_tbb_strings.h                |   43 +-
 include/tbb/internal/_tbb_windef.h                 |   38 +-
 include/tbb/internal/_template_helpers.h           |  140 ++
 include/tbb/internal/_x86_eliding_mutex_impl.h     |   45 +-
 include/tbb/internal/_x86_rtm_rw_mutex_impl.h      |  114 +-
 include/tbb/machine/gcc_armv7.h                    |   42 +-
 include/tbb/machine/gcc_generic.h                  |   42 +-
 include/tbb/machine/gcc_ia32_common.h              |  107 +-
 include/tbb/machine/gcc_itsx.h                     |   57 +-
 include/tbb/machine/ibm_aix51.h                    |   38 +-
 include/tbb/machine/icc_generic.h                  |   53 +-
 include/tbb/machine/linux_common.h                 |   42 +-
 include/tbb/machine/linux_ia32.h                   |   42 +-
 include/tbb/machine/linux_ia64.h                   |   42 +-
 include/tbb/machine/linux_intel64.h                |   42 +-
 include/tbb/machine/mac_ppc.h                      |   42 +-
 include/tbb/machine/macos_common.h                 |   42 +-
 include/tbb/machine/mic_common.h                   |   47 +-
 include/tbb/machine/msvc_armv7.h                   |  107 +-
 include/tbb/machine/msvc_ia32_common.h             |   92 +-
 include/tbb/machine/sunos_sparc.h                  |   42 +-
 include/tbb/machine/windows_api.h                  |   42 +-
 include/tbb/machine/windows_ia32.h                 |   42 +-
 include/tbb/machine/windows_intel64.h              |   42 +-
 include/tbb/machine/xbox360_ppc.h                  |   44 +-
 include/tbb/memory_pool.h                          |   78 +-
 include/tbb/mutex.h                                |   54 +-
 include/tbb/null_mutex.h                           |   51 +-
 include/tbb/null_rw_mutex.h                        |   51 +-
 include/tbb/parallel_do.h                          |   85 +-
 include/tbb/parallel_for.h                         |   58 +-
 include/tbb/parallel_for_each.h                    |   68 +-
 include/tbb/parallel_invoke.h                      |  153 +-
 include/tbb/parallel_reduce.h                      |   60 +-
 include/tbb/parallel_scan.h                        |   40 +-
 include/tbb/parallel_sort.h                        |   71 +-
 include/tbb/parallel_while.h                       |   42 +-
 include/tbb/partitioner.h                          |  381 +++-
 include/tbb/pipeline.h                             |   68 +-
 include/tbb/queuing_mutex.h                        |   44 +-
 include/tbb/queuing_rw_mutex.h                     |   44 +-
 include/tbb/reader_writer_lock.h                   |   42 +-
 include/tbb/recursive_mutex.h                      |   54 +-
 include/tbb/runtime_loader.h                       |   46 +-
 include/tbb/scalable_allocator.h                   |   73 +-
 include/tbb/spin_mutex.h                           |   50 +-
 include/tbb/spin_rw_mutex.h                        |   83 +-
 include/tbb/task.h                                 |  128 +-
 include/tbb/task_arena.h                           |   59 +-
 include/tbb/task_group.h                           |   59 +-
 include/tbb/task_scheduler_init.h                  |   42 +-
 include/tbb/task_scheduler_observer.h              |   79 +-
 include/tbb/tbb.h                                  |   48 +-
 include/tbb/tbb_allocator.h                        |   51 +-
 include/tbb/tbb_config.h                           |  324 ++-
 include/tbb/tbb_exception.h                        |   43 +-
 include/tbb/tbb_machine.h                          |   90 +-
 include/tbb/tbb_profiling.h                        |   47 +-
 include/tbb/tbb_stddef.h                           |  294 ++-
 include/tbb/tbb_thread.h                           |  136 +-
 include/tbb/tbbmalloc_proxy.h                      |   42 +-
 include/tbb/tick_count.h                           |   42 +-
 index.html                                         |   41 -
 index.src.html                                     |   41 +
 jni/Android.mk                                     |   40 +-
 jni/Application.mk                                 |   61 +-
 src/Makefile                                       |   52 +-
 src/index.html                                     |    2 +-
 src/old/concurrent_queue_v2.cpp                    |   42 +-
 src/old/concurrent_queue_v2.h                      |   42 +-
 src/old/concurrent_vector_v2.cpp                   |   38 +-
 src/old/concurrent_vector_v2.h                     |   42 +-
 src/old/spin_rw_mutex_v2.cpp                       |   42 +-
 src/old/spin_rw_mutex_v2.h                         |   42 +-
 src/old/task_v2.cpp                                |   42 +-
 src/old/test_concurrent_queue_v2.cpp               |   40 +-
 src/old/test_concurrent_vector_v2.cpp              |   42 +-
 src/old/test_mutex_v2.cpp                          |   45 +-
 src/old/test_task_scheduler_observer_v3.cpp        |   42 +-
 src/perf/coarse_grained_raii_lru_cache.h           |   38 +-
 src/perf/cpq_pdes.cpp                              |   42 +-
 src/perf/cpq_throughput_test.cpp                   |  381 ----
 src/perf/fibonacci_impl_tbb.cpp                    |   38 +-
 src/perf/perf.cpp                                  |   42 +-
 src/perf/perf.h                                    |   42 +-
 src/perf/perf_sched.cpp                            |   42 +-
 src/perf/run_statistics.sh                         |   38 +-
 src/perf/statistics.cpp                            |   38 +-
 src/perf/statistics.h                              |   44 +-
 src/perf/statistics_xml.h                          |   42 +-
 src/perf/time_cpq_throughput_test.cpp              |  295 +++
 src/perf/time_fibonacci_cutoff.cpp                 |   42 +-
 src/perf/time_framework.h                          |   44 +-
 src/perf/time_hash_map.cpp                         |   42 +-
 src/perf/time_hash_map_fill.cpp                    |   42 +-
 src/perf/time_hash_map_fill.html                   |    2 +-
 src/perf/time_locked_work.cpp                      |   42 +-
 src/perf/time_lru_cache_throughput.cpp             |   44 +-
 src/perf/time_sandbox.h                            |   38 +-
 src/perf/time_vector.cpp                           |   42 +-
 src/rml/client/index.html                          |    2 +-
 src/rml/client/library_assert.h                    |   42 +-
 src/rml/client/omp_dynamic_link.cpp                |   38 +-
 src/rml/client/omp_dynamic_link.h                  |   42 +-
 src/rml/client/rml_factory.h                       |   38 +-
 src/rml/client/rml_omp.cpp                         |   42 +-
 src/rml/client/rml_tbb.cpp                         |   42 +-
 src/rml/include/index.html                         |    2 +-
 src/rml/include/rml_base.h                         |   42 +-
 src/rml/include/rml_omp.h                          |   42 +-
 src/rml/include/rml_tbb.h                          |   42 +-
 src/rml/index.html                                 |    2 +-
 src/rml/perfor/omp_nested.cpp                      |   42 +-
 src/rml/perfor/omp_simple.cpp                      |   42 +-
 src/rml/perfor/tbb_multi_omp.cpp                   |   42 +-
 src/rml/perfor/tbb_simple.cpp                      |   42 +-
 src/rml/perfor/thread_level.h                      |   38 +-
 src/rml/server/index.html                          |    2 +-
 src/rml/server/irml.rc                             |   40 +-
 src/rml/server/job_automaton.h                     |   42 +-
 src/rml/server/lin-rml-export.def                  |   38 +-
 src/rml/server/rml_server.cpp                      |   50 +-
 src/rml/server/thread_monitor.h                    |   43 +-
 src/rml/server/wait_counter.h                      |   38 +-
 src/rml/server/win32-rml-export.def                |   38 +-
 src/rml/server/win64-rml-export.def                |   38 +-
 src/rml/test/rml_omp_stub.cpp                      |   38 +-
 src/rml/test/test_job_automaton.cpp                |   38 +-
 src/rml/test/test_rml_mixed.cpp                    |   46 +-
 src/rml/test/test_rml_omp.cpp                      |   42 +-
 src/rml/test/test_rml_omp_c_linkage.c              |   38 +-
 src/rml/test/test_rml_tbb.cpp                      |   42 +-
 src/rml/test/test_server.h                         |   42 +-
 src/rml/test/test_thread_monitor.cpp               |   38 +-
 src/tbb/arena.cpp                                  |  433 ++--
 src/tbb/arena.h                                    |  130 +-
 src/tbb/cache_aligned_allocator.cpp                |   49 +-
 src/tbb/cilk-tbb-interop.h                         |   46 +-
 src/tbb/concurrent_hash_map.cpp                    |   42 +-
 src/tbb/concurrent_monitor.cpp                     |   38 +-
 src/tbb/concurrent_monitor.h                       |   46 +-
 src/tbb/concurrent_queue.cpp                       |  127 +-
 src/tbb/concurrent_vector.cpp                      |  372 ++--
 src/tbb/condition_variable.cpp                     |   42 +-
 src/tbb/critical_section.cpp                       |   42 +-
 src/tbb/custom_scheduler.h                         |  154 +-
 src/tbb/dynamic_link.cpp                           |  277 +--
 src/tbb/dynamic_link.h                             |   42 +-
 src/tbb/governor.cpp                               |   91 +-
 src/tbb/governor.h                                 |   62 +-
 src/tbb/ia32-masm/atomic_support.asm               |   38 +-
 src/tbb/ia32-masm/itsx.asm                         |   38 +-
 src/tbb/ia32-masm/lock_byte.asm                    |   38 +-
 src/tbb/ia64-gas/atomic_support.s                  |   38 +-
 src/tbb/ia64-gas/ia64_misc.s                       |   38 +-
 src/tbb/ia64-gas/lock_byte.s                       |   38 +-
 src/tbb/ia64-gas/log2.s                            |   38 +-
 src/tbb/ia64-gas/pause.s                           |   38 +-
 src/tbb/ibm_aix51/atomic_support.c                 |   42 +-
 src/tbb/index.html                                 |    2 +-
 src/tbb/intel64-masm/atomic_support.asm            |   38 +-
 src/tbb/intel64-masm/intel64_misc.asm              |   38 +-
 src/tbb/intel64-masm/itsx.asm                      |   38 +-
 src/tbb/intrusive_list.h                           |   66 +-
 src/tbb/itt_notify.cpp                             |   42 +-
 src/tbb/itt_notify.h                               |   45 +-
 src/tbb/lin32-tbb-export.def                       |   42 +-
 src/tbb/lin32-tbb-export.lst                       |   68 +-
 src/tbb/lin64-tbb-export.def                       |   42 +-
 src/tbb/lin64-tbb-export.lst                       |   63 +-
 src/tbb/lin64ipf-tbb-export.def                    |   42 +-
 src/tbb/lin64ipf-tbb-export.lst                    |   51 +-
 src/tbb/mac32-tbb-export.def                       |   38 +-
 src/tbb/mac32-tbb-export.lst                       |   67 +-
 src/tbb/mac64-tbb-export.def                       |   38 +-
 src/tbb/mac64-tbb-export.lst                       |   67 +-
 src/tbb/mailbox.h                                  |   45 +-
 src/tbb/market.cpp                                 |  370 ++--
 src/tbb/market.h                                   |  151 +-
 src/tbb/mutex.cpp                                  |   55 +-
 src/tbb/observer_proxy.cpp                         |   90 +-
 src/tbb/observer_proxy.h                           |   63 +-
 src/tbb/pipeline.cpp                               |   68 +-
 src/tbb/private_server.cpp                         |  164 +-
 src/tbb/queuing_mutex.cpp                          |   42 +-
 src/tbb/queuing_rw_mutex.cpp                       |   44 +-
 src/tbb/reader_writer_lock.cpp                     |   42 +-
 src/tbb/recursive_mutex.cpp                        |   53 +-
 src/tbb/scheduler.cpp                              |  112 +-
 src/tbb/scheduler.h                                |  184 +-
 src/tbb/scheduler_common.h                         |  113 +-
 src/tbb/scheduler_utility.h                        |   42 +-
 src/tbb/semaphore.cpp                              |   42 +-
 src/tbb/semaphore.h                                |   44 +-
 src/tbb/spin_mutex.cpp                             |   42 +-
 src/tbb/spin_rw_mutex.cpp                          |   42 +-
 src/tbb/task.cpp                                   |   61 +-
 src/tbb/task_group_context.cpp                     |  125 +-
 src/tbb/task_stream.h                              |  136 +-
 src/tbb/tbb_assert_impl.h                          |   42 +-
 src/tbb/tbb_main.cpp                               |  195 +-
 src/tbb/tbb_main.h                                 |   42 +-
 src/tbb/tbb_misc.cpp                               |   78 +-
 src/tbb/tbb_misc.h                                 |   65 +-
 src/tbb/tbb_misc_ex.cpp                            |   44 +-
 src/tbb/tbb_resource.rc                            |   40 +-
 src/tbb/tbb_statistics.cpp                         |   44 +-
 src/tbb/tbb_statistics.h                           |   44 +-
 src/tbb/tbb_thread.cpp                             |   65 +-
 src/tbb/tbb_version.h                              |   42 +-
 src/tbb/tls.h                                      |   42 +-
 src/tbb/tools_api/disable_warnings.h               |   42 +-
 src/tbb/tools_api/internal/ittnotify.h             |  663 +-----
 src/tbb/tools_api/ittnotify.h                      |  564 ++++-
 src/tbb/tools_api/ittnotify_config.h               |  173 +-
 src/tbb/tools_api/ittnotify_static.c               |  386 ++--
 src/tbb/tools_api/ittnotify_static.h               |   91 +-
 src/tbb/tools_api/ittnotify_types.h                |   42 +-
 src/tbb/tools_api/legacy/ittnotify.h               |   80 +-
 src/tbb/tools_api/prototype/ittnotify.h            |  147 +-
 src/tbb/win32-tbb-export.def                       |   38 +-
 src/tbb/win32-tbb-export.lst                       |   63 +-
 src/tbb/win64-gcc-tbb-export.def                   |   42 +-
 src/tbb/win64-gcc-tbb-export.lst                   |   61 +-
 src/tbb/win64-tbb-export.def                       |   38 +-
 src/tbb/win64-tbb-export.lst                       |   63 +-
 src/tbb/winrt-tbb-export.lst                       |   42 +-
 src/tbb/x86_rtm_rw_mutex.cpp                       |  117 +-
 src/tbb/xbox360-tbb-export.def                     |   38 +-
 src/tbbmalloc/Customize.h                          |  116 +-
 src/tbbmalloc/MapMemory.h                          |   42 +-
 src/tbbmalloc/Statistics.h                         |   44 +-
 src/tbbmalloc/TypeDefinitions.h                    |   85 +-
 src/tbbmalloc/backend.cpp                          |  532 +++--
 src/tbbmalloc/backref.cpp                          |   42 +-
 src/tbbmalloc/frontend.cpp                         |  277 ++-
 src/tbbmalloc/index.html                           |   54 +
 src/tbbmalloc/large_objects.cpp                    |  766 ++++---
 src/tbbmalloc/lin32-proxy-export.def               |   44 +-
 src/tbbmalloc/lin32-tbbmalloc-export.def           |   48 +-
 src/tbbmalloc/lin64-proxy-export.def               |   44 +-
 src/tbbmalloc/lin64-tbbmalloc-export.def           |   48 +-
 src/tbbmalloc/lin64ipf-proxy-export.def            |   44 +-
 src/tbbmalloc/lin64ipf-tbbmalloc-export.def        |   48 +-
 src/tbbmalloc/mac32-tbbmalloc-export.def           |   44 +-
 src/tbbmalloc/mac64-tbbmalloc-export.def           |   44 +-
 src/tbbmalloc/proxy.cpp                            |  404 ++--
 src/tbbmalloc/proxy.h                              |   70 +-
 src/tbbmalloc/proxy_overload_osx.h                 |  169 ++
 src/tbbmalloc/shared_utils.h                       |   89 +
 src/tbbmalloc/tbb_function_replacement.cpp         |   52 +-
 src/tbbmalloc/tbb_function_replacement.h           |   42 +-
 src/tbbmalloc/tbbmalloc.cpp                        |  139 +-
 src/tbbmalloc/tbbmalloc.rc                         |   40 +-
 src/tbbmalloc/tbbmalloc_internal.h                 |  346 +--
 src/tbbmalloc/tbbmalloc_internal_api.h             |   50 +-
 src/tbbmalloc/win32-gcc-tbbmalloc-export.def       |   48 +-
 src/tbbmalloc/win32-tbbmalloc-export.def           |   48 +-
 src/tbbmalloc/win64-gcc-tbbmalloc-export.def       |   48 +-
 src/tbbmalloc/win64-tbbmalloc-export.def           |   48 +-
 src/tbbmalloc/xbox360-tbbmalloc-export.def         |   48 +-
 src/tbbproxy/tbbproxy-windows.asm                  |   38 +-
 src/tbbproxy/tbbproxy.cpp                          |   48 +-
 src/test/harness.h                                 |  102 +-
 src/test/harness_allocator.h                       |  419 +++-
 src/test/harness_assert.h                          |   47 +-
 src/test/harness_bad_expr.h                        |   38 +-
 src/test/harness_barrier.h                         |   54 +-
 src/test/harness_checktype.h                       |   43 +-
 src/test/harness_concurrency.h                     |   42 +-
 src/test/harness_concurrency_checker.h             |   80 +
 src/test/harness_concurrency_tracker.h             |   47 +-
 src/test/harness_cpu.h                             |   42 +-
 src/test/harness_defs.h                            |  101 +-
 src/test/harness_dynamic_libs.h                    |   52 +-
 src/test/harness_eh.h                              |   42 +-
 src/test/harness_fp.h                              |  172 ++
 src/test/harness_graph.h                           |  628 +++++-
 src/test/harness_inject_scheduler.h                |   54 +-
 src/test/harness_iterator.h                        |   42 +-
 src/test/harness_m128.h                            |   38 +-
 src/test/harness_memory.h                          |   40 +-
 src/test/harness_mic.h                             |   42 +-
 src/test/harness_report.h                          |   48 +-
 src/test/harness_runtime_loader.h                  |   42 +-
 src/test/harness_task.h                            |   42 +-
 src/test/harness_tbb_independence.h                |   42 +-
 src/test/harness_test_cases_framework.h            |   43 +-
 src/test/harness_tsx.h                             |   63 +-
 src/test/test_ScalableAllocator.cpp                |   71 +-
 src/test/test_ScalableAllocator_STL.cpp            |   47 +-
 src/test/test_aggregator.cpp                       |   42 +-
 src/test/test_aligned_space.cpp                    |   46 +-
 src/test/test_allocator.h                          |   58 +-
 src/test/test_allocator_STL.h                      |   78 +-
 src/test/test_assembly.cpp                         |   38 +-
 src/test/test_async_node.cpp                       |  207 ++
 src/test/test_atomic.cpp                           |  180 +-
 src/test/test_blocked_range.cpp                    |  102 +-
 src/test/test_blocked_range2d.cpp                  |   42 +-
 src/test/test_blocked_range3d.cpp                  |   42 +-
 src/test/test_broadcast_node.cpp                   |  217 +-
 src/test/test_buffer_node.cpp                      |   66 +-
 src/test/test_cache_aligned_allocator.cpp          |   38 +-
 src/test/test_cache_aligned_allocator_STL.cpp      |   42 +-
 src/test/test_cilk_common.h                        |   38 +-
 src/test/test_cilk_dynamic_load.cpp                |   42 +-
 src/test/test_cilk_interop.cpp                     |   42 +-
 src/test/test_combinable.cpp                       |   46 +-
 src/test/test_composite_node.cpp                   |  541 +++++
 src/test/test_concurrent_hash_map.cpp              |  541 ++++-
 src/test/test_concurrent_lru_cache.cpp             |   54 +-
 src/test/test_concurrent_monitor.cpp               |   45 +-
 src/test/test_concurrent_priority_queue.cpp        |  718 ++++++-
 src/test/test_concurrent_queue.cpp                 |  805 +++++--
 src/test/test_concurrent_queue.h                   |   98 -
 src/test/test_concurrent_queue_whitebox.cpp        |  101 +
 src/test/test_concurrent_unordered.cpp             |  843 --------
 src/test/test_concurrent_unordered_common.h        |  925 ++++++++
 src/test/test_concurrent_unordered_map.cpp         |  327 +++
 src/test/test_concurrent_unordered_set.cpp         |  193 ++
 src/test/test_concurrent_vector.cpp                | 1295 +++++++++---
 src/test/test_condition_variable.h                 |  123 +-
 src/test/test_container_move_support.h             |  961 +++++++++
 src/test/test_continue_node.cpp                    |  180 +-
 src/test/test_critical_section.cpp                 |   42 +-
 src/test/test_dynamic_link.cpp                     |   42 +-
 src/test/test_eh_algorithms.cpp                    |   45 +-
 src/test/test_eh_flow_graph.cpp                    |  101 +-
 src/test/test_eh_tasks.cpp                         |   45 +-
 src/test/test_enumerable_thread_specific.cpp       | 1040 +++++----
 src/test/test_examples_common_utility.cpp          |   42 +-
 src/test/test_fast_random.cpp                      |   46 +-
 src/test/test_flow_graph.cpp                       |   42 +-
 src/test/test_flow_graph_whitebox.cpp              |  758 +++++++
 src/test/test_fp.cpp                               |  531 +++--
 src/test/test_function_node.cpp                    |  182 +-
 src/test/test_global_control.cpp                   |  341 +++
 src/test/test_global_control_whitebox.cpp          |   83 +
 src/test/test_halt.cpp                             |   41 +-
 src/test/test_handle_perror.cpp                    |   42 +-
 src/test/test_hw_concurrency.cpp                   |   42 +-
 src/test/test_indexer_node.cpp                     |  882 ++++++++
 src/test/test_initializer_list.h                   |  109 +-
 src/test/test_inits_loop.cpp                       |   38 +-
 src/test/test_intrusive_list.cpp                   |   42 +-
 src/test/test_ittnotify.cpp                        |   45 +-
 src/test/test_join_node.cpp                        |  671 ++++--
 src/test/test_lambda.cpp                           |   60 +-
 src/test/test_limiter_node.cpp                     |  218 +-
 src/test/test_malloc_atexit.cpp                    |  194 +-
 src/test/test_malloc_compliance.cpp                |  229 +-
 src/test/test_malloc_init_shutdown.cpp             |   44 +-
 src/test/test_malloc_lib_unload.cpp                |   75 +-
 src/test/test_malloc_overload.cpp                  |  271 ++-
 src/test/test_malloc_pools.cpp                     |   98 +-
 src/test/test_malloc_pure_c.c                      |   48 +-
 src/test/test_malloc_regression.cpp                |   89 +-
 src/test/test_malloc_used_by_lib.cpp               |   61 +-
 src/test/test_malloc_whitebox.cpp                  |  427 +++-
 src/test/test_model_plugin.cpp                     |  276 ++-
 src/test/test_multifunction_node.cpp               |  251 ++-
 src/test/test_mutex.cpp                            |   76 +-
 src/test/test_mutex_native_threads.cpp             |   42 +-
 src/test/test_openmp.cpp                           |   86 +-
 src/test/test_or_node.cpp                          |  464 ----
 src/test/test_overwrite_node.cpp                   |   56 +-
 src/test/test_parallel_do.cpp                      |   97 +-
 src/test/test_parallel_for.cpp                     |  178 +-
 src/test/test_parallel_for_each.cpp                |  100 +-
 src/test/test_parallel_for_vectorization.cpp       |   38 +-
 src/test/test_parallel_invoke.cpp                  |   47 +-
 src/test/test_parallel_pipeline.cpp                |   90 +-
 src/test/test_parallel_reduce.cpp                  |   80 +-
 src/test/test_parallel_scan.cpp                    |   38 +-
 src/test/test_parallel_sort.cpp                    |   96 +-
 src/test/test_parallel_while.cpp                   |   42 +-
 src/test/test_partitioner.h                        |  594 ++++++
 src/test/test_partitioner_whitebox.cpp             |  148 ++
 src/test/test_partitioner_whitebox.h               |  396 ++++
 src/test/test_pipeline.cpp                         |   38 +-
 src/test/test_pipeline_with_tbf.cpp                |  132 +-
 src/test/test_priority_queue_node.cpp              |  133 +-
 src/test/test_queue_node.cpp                       |  374 ++--
 src/test/test_range_based_for.h                    |   44 +-
 src/test/test_reader_writer_lock.cpp               |   42 +-
 src/test/test_runtime_loader.cpp                   |   45 +-
 src/test/test_rwm_upgrade_downgrade.cpp            |   41 +-
 src/test/test_semaphore.cpp                        |   38 +-
 src/test/test_sequencer_node.cpp                   |   52 +-
 src/test/test_source_node.cpp                      |  223 +-
 src/test/test_split_node.cpp                       |   51 +-
 src/test/test_static_assert.cpp                    |   39 +-
 src/test/test_std_thread.cpp                       |   42 +-
 src/test/test_tagged_msg.cpp                       |  262 +++
 src/test/test_task.cpp                             |   65 +-
 src/test/test_task_arena.cpp                       |  260 ++-
 src/test/test_task_assertions.cpp                  |   42 +-
 src/test/test_task_auto_init.cpp                   |   42 +-
 src/test/test_task_enqueue.cpp                     |   67 +-
 src/test/test_task_group.cpp                       |   59 +-
 src/test/test_task_leaks.cpp                       |   42 +-
 src/test/test_task_priority.cpp                    |   57 +-
 src/test/test_task_scheduler_init.cpp              |  113 +-
 src/test/test_task_scheduler_observer.cpp          |  219 +-
 src/test/test_task_steal_limit.cpp                 |   38 +-
 src/test/test_tbb_condition_variable.cpp           |   50 +-
 src/test/test_tbb_fork.cpp                         |   81 +-
 src/test/test_tbb_header.cpp                       |  103 +-
 src/test/test_tbb_thread.cpp                       |   39 +-
 src/test/test_tbb_version.cpp                      |   52 +-
 src/test/test_thread.h                             |   93 +-
 src/test/test_tick_count.cpp                       |  145 +-
 src/test/test_tuple.cpp                            |   42 +-
 src/test/test_write_once_node.cpp                  |   45 +-
 src/test/test_yield.cpp                            |   41 +-
 1869 files changed, 79038 insertions(+), 130796 deletions(-)

diff --git a/CHANGES b/CHANGES
index 6a7d475..81dfc91 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,11 +1,325 @@
 ------------------------------------------------------------------------
 The list of most significant changes made over time in
 Intel(R) Threading Building Blocks (Intel(R) TBB).
+
+Intel TBB 4.3 Update 6
+TBB_INTERFACE_VERSION == 8006
+
+Changes (w.r.t. Intel TBB 4.3 Update 5):
+- Supported zero-copy realloc for objects >1MB under Linux* via
+    mremap system call.
+- C++11 move-aware insert and emplace methods have been added to
+    concurrent_hash_map container.
+- install_name is set to @rpath/<library name> on OS X*.
+
+Preview Features:
+- Added template class async_node to the flow graph API. It allows a
+    flow graph to communicate with an external activity managed by
+    the user or another runtime.
+- Improved speed of flow::graph::reset() clearing graph edges.
+    rf_extract flag has been renamed rf_clear_edges.
+- extract() method of graph nodes now takes no arguments.
+
+Bugs fixed:
+- concurrent_unordered_{set,map} behaves correctly for degenerate
+    hashes.
+- Fixed a race condition in the memory allocator that may lead to
+    excessive memory consumption under high multithreading load.
+
+------------------------------------------------------------------------
+Intel TBB 4.3 Update 5
+TBB_INTERFACE_VERSION == 8005
+
+Changes (w.r.t. Intel TBB 4.3 Update 4):
+- Added add_ref_count() method of class tbb::task.
+
+Preview Features:
+- Added class global_control for application-wide control of allowed
+    parallelism and thread stack size.
+- memory_pool_allocator now throws the std::bad_alloc exception on
+    allocation failure.
+- Exceptions thrown for by memory pool constructors changed from
+    std::bad_alloc to std::invalid_argument and std::runtime_error.
+
+Bugs fixed:
+- scalable_allocator now throws the std::bad_alloc exception on
+    allocation failure.
+- Fixed a race condition in the memory allocator that may lead to
+    excessive memory consumption under high multithreading load.
+- A new scheduler created right after destruction of the previous one
+    might be unable to modify the number of worker threads.
+
+Open-source contributions integrated:
+- (Added but not enabled) push_front() method of class tbb::task_list
+    by Raf Schietekat.
+
+------------------------------------------------------------------------
+Intel TBB 4.3 Update 4
+TBB_INTERFACE_VERSION == 8004
+
+Changes (w.r.t. Intel TBB 4.3 Update 3):
+- Added a C++11 variadic constructor for enumerable_thread_specific.
+    The arguments from this constructor are used to construct
+    thread-local values.
+- Improved exception safety for enumerable_thread_specific.
+- Added documentation for tbb::flow::tagged_msg class and
+    tbb::flow::output_port function.
+- Fixed build errors for systems that do not support dynamic linking.
+- C++11 move-aware insert and emplace methods have been added to
+    concurrent unordered containers.
+
+Preview Features:
+- Interface-breaking change: typedefs changed for node predecessor and
+    successor lists, affecting copy_predecessors and copy_successors
+    methods.
+- Added template class composite_node to the flow graph API. It packages
+    a subgraph to represent it as a first-class flow graph node.
+- make_edge and remove_edge now accept multiport nodes as arguments,
+    automatically using the node port with index 0 for an edge.
+
+Open-source contributions integrated:
+- Draft code for enumerable_thread_specific constructor with multiple
+    arguments (see above) by Adrien Guinet.
+- Fix for GCC invocation on IBM* Blue Gene*
+    by Jeff Hammond and Raf Schietekat.
+- Extended testing with smart pointers for Clang & libc++
+    by Raf Schietekat.
+
+------------------------------------------------------------------------
+Intel TBB 4.3 Update 3
+TBB_INTERFACE_VERSION == 8003
+
+Changes (w.r.t. Intel TBB 4.3 Update 2):
+
+- Move constructor and assignment operator were added to unique_lock.
+
+Preview Features:
+
+- Time overhead for memory pool destruction was reduced.
+
+Open-source contributions integrated:
+
+- Build error fix for iOS* by Raf Schietekat.
+
+------------------------------------------------------------------------
+Intel TBB 4.3 Update 2
+TBB_INTERFACE_VERSION == 8002
+
+Changes (w.r.t. Intel TBB 4.3 Update 1):
+
+- Binary files for 64-bit Android* applications were added as part of the
+    Linux* OS package.
+- Exact exception propagation is enabled for Intel C++ Compiler on OS X*.
+- concurrent_vector::shrink_to_fit was optimized for types that support
+    C++11 move semantics.
+
+Bugs fixed:
+
+- Fixed concurrent unordered containers to insert elements much faster
+    in debug mode.
+- Fixed concurrent priority queue to support types that do not have
+    copy constructors.
+- Fixed enumerable_thread_specific to forbid copying from an instance
+    with a different value type.
+
+Open-source contributions integrated:
+
+- Support for PathScale* EKOPath* Compiler by Erik Lindahl.
+
+------------------------------------------------------------------------
+Intel TBB 4.3 Update 1
+TBB_INTERFACE_VERSION == 8001
+
+Changes (w.r.t. Intel TBB 4.3):
+
+- The ability to split blocked_ranges in a proportion, used by
+    affinity_partitioner since version 4.2 Update 4, became a formal
+    extension of the Range concept.
+- More checks for an incorrect address to release added to the debug
+    version of the memory allocator.
+- Different kind of solutions for each TBB example were merged.
+
+Preview Features:
+
+- Task priorities are re-enabled in preview binaries.
+
+Bugs fixed:
+
+- Fixed a duplicate symbol when TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE is
+    used in multiple compilation units.
+- Fixed a crash in __itt_fini_ittlib seen on Ubuntu 14.04.
+- Fixed a crash in memory release after dynamic replacement of the
+    OS X* memory allocator.
+- Fixed incorrect indexing of arrays in seismic example.
+- Fixed a data race in lazy initialization of task_arena.
+
+Open-source contributions integrated:
+
+- Fix for dumping information about gcc and clang compiler versions
+    by Misty De Meo.
+
+------------------------------------------------------------------------
+Intel TBB 4.3
+TBB_INTERFACE_VERSION == 8000
+
+Changes (w.r.t. Intel TBB 4.2 Update 5):
+
+- The following features are now fully supported: flow::indexer_node,
+    task_arena, speculative_spin_rw_mutex.
+- Compatibility with C++11 standard improved for tbb/compat/thread
+    and tbb::mutex.
+- C++11 move constructors have been added to concurrent_queue and
+    concurrent_bounded_queue.
+- C++11 move constructors and assignment operators have been added to
+    concurrent_vector, concurrent_hash_map, concurrent_priority_queue,
+    concurrent_unordered_{set,multiset,map,multimap}.
+- C++11 move-aware emplace/push/pop methods have been added to
+    concurrent_vector, concurrent_queue, concurrent_bounded_queue,
+    concurrent_priority_queue.
+- Methods to insert a C++11 initializer list have been added:
+    concurrent_vector::grow_by(), concurrent_hash_map::insert(),
+    concurrent_unordered_{set,multiset,map,multimap}::insert().
+- Testing for compatibility of containers with some C++11 standard
+    library types has been added.
+- Dynamic replacement of standard memory allocation routines has been
+    added for OS X*.
+- Microsoft* Visual Studio* projects for Intel TBB examples updated
+    to VS 2010.
+- For open-source packages, debugging information (line numbers) in
+    precompiled binaries now matches the source code.
+- Debug information was added to release builds for OS X*, Solaris*,
+    FreeBSD* operating systems and MinGW*.
+- Various improvements in documentation, debug diagnostics and examples.
+
+Preview Features:
+
+- Additional actions on reset of graphs, and extraction of individual
+    nodes from a graph (TBB_PREVIEW_FLOW_GRAPH_FEATURES).
+- Support for an arbitrary number of arguments in parallel_invoke
+   (TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE).
+
+Changes affecting backward compatibility:
+
+- For compatibility with C++11 standard, copy and move constructors and
+    assignment operators are disabled for all mutex classes. To allow
+    the old behavior, use TBB_DEPRECATED_MUTEX_COPYING macro.
+- flow::sequencer_node rejects messages with repeating sequence numbers.
+- Changed internal interface between tbbmalloc and tbbmalloc_proxy.
+- Following deprecated functionality has been removed:
+    old debugging macros TBB_DO_ASSERT & TBB_DO_THREADING_TOOLS;
+    no-op depth-related methods in class task;
+    tbb::deprecated::concurrent_queue;
+    deprecated variants of concurrent_vector methods.
+- register_successor() and remove_successor() are deprecated as methods
+    to add and remove edges in flow::graph; use make_edge() and
+    remove_edge() instead.
+
+Bugs fixed:
+
+- Fixed incorrect scalable_msize() implementation for aligned objects.
+- Flow graph buffering nodes now destroy their copy of forwarded items.
+- Multiple fixes in task_arena implementation, including for:
+    inconsistent task scheduler state inside executed functions;
+    incorrect floating-point settings and exception propagation;
+    possible stalls in concurrent invocations of execute().
+- Fixed floating-point settings propagation when the same instance of
+    task_group_context is used in different arenas.
+- Fixed compilation error in pipeline.h with Intel Compiler on OS X*.
+- Added missed headers for individual components to tbb.h.
+
+Open-source contributions integrated:
+
+- Range interface addition to parallel_do, parallel_for_each and
+    parallel_sort by Stephan Dollberg.
+- Variadic template implementation of parallel_invoke
+    by Kizza George Mbidde (see Preview Features).
+- Improvement in Seismic example for MacBook Pro* with Retina* display
+    by Raf Schietekat.
+
 ------------------------------------------------------------------------
+Intel TBB 4.2 Update 5
+TBB_INTERFACE_VERSION == 7005
+
+Changes (w.r.t. Intel TBB 4.2 Update 4):
+
+- The second template argument of class aligned_space<T,N> now is set
+    to 1 by default.
 
+Preview Features:
+
+- Better support for exception safety, task priorities and floating
+    point settings in class task_arena.
+- task_arena::current_slot() has been renamed to
+    task_arena::current_thread_index().
+
+Bugs fixed:
+
+- Task priority change possibly ignored by a worker thread entering
+    a nested parallel construct.
+- Memory leaks inside the task scheduler when running on
+    Intel(R) Xeon Phi(tm) coprocessor.
+
+Open-source contributions integrated:
+
+- Improved detection of X Window support for Intel TBB examples
+    and other feedback by Raf Schietekat.
+
+------------------------------------------------------------------------
+Intel TBB 4.2 Update 4
+TBB_INTERFACE_VERSION == 7004
+
+Changes (w.r.t. Intel TBB 4.2 Update 3):
+
+- Added possibility to specify floating-point settings at invocation
+    of most parallel algorithms (including flow::graph) via
+    task_group_context.
+- Added dynamic replacement of malloc_usable_size() under
+    Linux*/Android* and dlmalloc_usable_size() under Android*.
+- Added new methods to concurrent_vector:
+    grow_by() that appends a sequence between two given iterators;
+    grow_to_at_least() that initializes new elements with a given value.
+- Improved affinity_partitioner for better performance on balanced
+    workloads.
+- Improvements in the task scheduler, including better scalability
+    when threads search for a task arena, and better diagnostics.
+- Improved allocation performance for workloads that do intensive
+    allocation/releasing of same-size objects larger than ~8KB from
+    multiple threads.
+- Exception support is enabled by default for 32-bit MinGW compilers.
+- The tachyon example for Android* can be built for all targets
+    supported by the installed NDK.
+- Added Windows Store* version of the tachyon example.
+- GettingStarted/sub_string_finder example ported to offload execution
+    on Windows* for Intel(R) Many Integrated Core Architecture.
+
+Preview Features:
+
+- Removed task_scheduler_observer::on_scheduler_leaving() callback.
+- Added task_scheduler_observer::may_sleep() callback.
+- The CPF or_node has been renamed indexer_node. The input to
+    indexer_node is now a list of types. The output of indexer_node is
+    a tagged_msg type composed of a tag and a value. For indexer_node,
+    the tag is a size_t.
+
+Bugs fixed:
+
+- Fixed data races in preview extensions of task_scheduler_observer.
+- Added noexcept(false) for destructor of task_group_base to avoid
+    crash on cancelation of structured task group in C++11.
+
+Open-source contributions integrated:
+
+- Improved concurrency detection for BG/Q, and other improvements
+    by Raf Schietekat.
+- Fix for crashes in enumerable_thread_specific in case if a contained
+    object is too big to be constructed on the stack by Adrien Guinet.
+
+------------------------------------------------------------------------
 Intel TBB 4.2 Update 3
 TBB_INTERFACE_VERSION == 7003
 
+Changes (w.r.t. Intel TBB 4.2 Update 2):
+
 - Added support for Microsoft* Visual Studio* 2013.
 - Improved Microsoft* PPL-compatible form of parallel_for for better 
     support of auto-vectorization.
@@ -14,6 +328,7 @@ TBB_INTERFACE_VERSION == 7003
 - Various improvements in source code, tests, and makefiles.
 
 Bugs fixed:
+
 - Added dynamic replacement of _aligned_msize() previously missed.
 - Fixed task_group::run_and_wait() to throw invalid_multiple_scheduling
     exception if the specified task handle is already scheduled.
@@ -37,6 +352,11 @@ Changes affecting backward compatibility:
 
 - Internal layout changed for class tbb::flow::limiter_node.
 
+Preview Features:
+
+- Added speculative_spin_rw_mutex, a read-write lock class which uses
+    Intel(R) Transactional Synchronization Extensions.
+
 Bugs fixed:
 
 - When building for Intel(R) Xeon Phi(tm) coprocessor, TBB programs
@@ -62,7 +382,7 @@ Changes (w.r.t. Intel TBB 4.2):
     used to urge releasing memory from tbbmalloc internal buffers when
     the given limit is exceeded.
 
-Community Preview Features:
+Preview Features:
 
 - Class task_arena no longer requires linking with a preview library,
     though still remains a community preview feature.
@@ -99,7 +419,7 @@ Changes (w.r.t. Intel TBB 4.1 Update 4):
     were added on OS X*.
 - For OS X* exact exception propagation is supported with Clang;
     it requires use of libc++ and corresponding Intel TBB binaries.
-- Support for C++11 initilizer lists in constructor and assigment
+- Support for C++11 initializer lists in constructor and assigment
     has been added to concurrent_hash_map, concurrent_unordered_set,
     concurrent_unordered_multiset, concurrent_unordered_map,
     concurrent_unordered_multimap.
@@ -421,7 +741,7 @@ Bugs fixed:
 - concurrent_queue counter wraparound bug was fixed, which occurred when
     the number of push and pop operations exceeded ~>4 billion on IA32.
 - fixed races in the TBB scheduler that could put workers asleep too
-    early, especially in presense of affinitized tasks.
+    early, especially in presence of affinitized tasks.
 
 ------------------------------------------------------------------------
 Intel TBB 4.0 Update 1 commercial-aligned release
diff --git a/Makefile b/Makefile
index 00711b5..bc45989 100644
--- a/Makefile
+++ b/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 tbb_root?=.
 include $(tbb_root)/build/common.inc
diff --git a/build/AIX.gcc.inc b/build/AIX.gcc.inc
index 0e5b1c1..3b19a6d 100644
--- a/build/AIX.gcc.inc
+++ b/build/AIX.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -76,7 +68,7 @@ endif
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/AIX.inc b/build/AIX.inc
index 16d8949..5f87361 100644
--- a/build/AIX.inc
+++ b/build/AIX.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifndef arch
         arch:=$(shell uname -p)
@@ -30,7 +22,7 @@ ifndef arch
 endif
 
 ifndef runtime
-        gcc_version:=$(shell gcc -v 2>&1 | grep 'gcc version' | sed -e 's/^gcc version //' | sed -e 's/ .*$$//')
+        gcc_version:=$(shell gcc -dumpversion)
         os_version:=$(shell uname -r)
         os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
         export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
diff --git a/build/FreeBSD.clang.inc b/build/FreeBSD.clang.inc
new file mode 100644
index 0000000..5cee5d7
--- /dev/null
+++ b/build/FreeBSD.clang.inc
@@ -0,0 +1,116 @@
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+#
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+#
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
+
+COMPILE_ONLY = -c -MMD
+PREPROC_ONLY = -E -x c++
+INCLUDE_KEY = -I
+DEFINE_KEY = -D
+OUTPUT_KEY = -o #
+OUTPUTOBJ_KEY = -o #
+PIC_KEY = -fPIC
+WARNING_AS_ERROR_KEY = -Werror
+WARNING_KEY = -Wall
+TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
+WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -Wno-dangling-else
+DYLIB_KEY = -shared
+EXPORT_KEY = -Wl,--version-script,
+LIBDL =
+
+CPLUS = clang++
+CONLY = clang
+LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
+LIBS += -lpthread -lrt
+LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
+C_FLAGS = $(CPLUS_FLAGS)
+
+ifeq ($(cfg), release)
+        CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
+endif
+ifeq ($(cfg), debug)
+        CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
+endif
+
+ifeq (libc++,$(stdlib))
+    CPLUS_FLAGS += -stdlib=libc++
+    LIB_LINK_FLAGS += -stdlib=libc++
+endif
+
+CPP11_FLAGS = -std=c++11 -D_TBB_CPP0X
+
+ifneq (00,$(lambdas)$(cpp0x))
+    CXX_ONLY_FLAGS += $(CPP11_FLAGS)
+endif
+
+TBB_ASM.OBJ=
+MALLOC_ASM.OBJ=
+
+ifeq (intel64,$(arch))
+    ITT_NOTIFY = -DDO_ITT_NOTIFY
+    CPLUS_FLAGS += -m64
+    LIB_LINK_FLAGS += -m64
+endif
+
+ifeq (ia32,$(arch))
+    ITT_NOTIFY = -DDO_ITT_NOTIFY
+    CPLUS_FLAGS += -m32 -march=pentium4
+    LIB_LINK_FLAGS += -m32
+endif
+
+ifeq (ppc64,$(arch))
+    CPLUS_FLAGS += -m64
+    LIB_LINK_FLAGS += -m64
+endif
+
+ifeq (ppc32,$(arch))
+    CPLUS_FLAGS += -m32
+    LIB_LINK_FLAGS += -m32
+endif
+
+ifeq (bg,$(arch))
+    CPLUS = bgclang++
+    CONLY = bgclang
+endif
+
+#------------------------------------------------------------------------------
+# Setting assembler data.
+#------------------------------------------------------------------------------
+ASM = as
+ifeq (intel64,$(arch))
+    ASM_FLAGS += --64
+endif
+ifeq (ia32,$(arch))
+    ASM_FLAGS += --32
+endif
+ifeq ($(cfg),debug)
+    ASM_FLAGS += -g
+endif
+
+ASSEMBLY_SOURCE=$(arch)-gas
+#------------------------------------------------------------------------------
+# End of setting assembler data.
+#------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# Setting tbbmalloc data.
+#------------------------------------------------------------------------------
+
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
+
+#------------------------------------------------------------------------------
+# End of setting tbbmalloc data.
+#------------------------------------------------------------------------------
diff --git a/build/FreeBSD.gcc.inc b/build/FreeBSD.gcc.inc
index b86e15f..20f0027 100644
--- a/build/FreeBSD.gcc.inc
+++ b/build/FreeBSD.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -34,6 +26,7 @@ PIC_KEY = -fPIC
 WARNING_AS_ERROR_KEY = -Werror
 WARNING_KEY = -Wall
 DYLIB_KEY = -shared
+WARNING_SUPPRESS = -Wno-parentheses
 
 CPLUS = g++ 
 CONLY = gcc
@@ -42,7 +35,7 @@ LIBS = -lpthread
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
-        CPLUS_FLAGS = -O2 -DUSE_PTHREAD
+        CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD
 endif
 ifeq ($(cfg), debug)
         CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD
@@ -86,7 +79,7 @@ endif
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/FreeBSD.inc b/build/FreeBSD.inc
index b95c0d6..11d125e 100644
--- a/build/FreeBSD.inc
+++ b/build/FreeBSD.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifndef arch
         ifeq ($(shell uname -m),i386)
@@ -37,7 +29,7 @@ ifndef arch
 endif
 
 ifndef runtime
-        gcc_version:=$(shell gcc -v 2>&1 | grep 'gcc version' | sed -e 's/^gcc version //' | sed -e 's/ .*$$//')
+        gcc_version:=$(shell gcc -dumpversion)
         os_version:=$(shell uname -r)
         os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
         export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
diff --git a/build/Makefile.rml b/build/Makefile.rml
index 5b99769..43cba2d 100644
--- a/build/Makefile.rml
+++ b/build/Makefile.rml
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 tbb_root ?= $(TBBROOT)
 BUILDING_PHASE=1
@@ -77,6 +69,10 @@ LIBS += $(LIBDL)
 INCLUDES += $(INCLUDE_KEY)$(RML_ROOT)/include $(INCLUDE_KEY).
 T_INCLUDES = $(INCLUDES) $(INCLUDE_KEY)$(tbb_root)/src/test $(INCLUDE_KEY)$(RML_SERVER_ROOT)
 
+ifeq ($(rml_wcrm),1)
+CPLUS_FLAGS+=/DRML_USE_WCRM
+endif
+
 # Suppress superfluous warnings for RML compilation
 R_CPLUS_FLAGS =  $(subst DO_ITT_NOTIFY,DO_ITT_NOTIFY=0,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) \
 		 $(DEFINE_KEY)TBB_USE_THREADING_TOOLS=0 $(DEFINE_KEY)__TBB_RML_STATIC=1 $(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1
diff --git a/build/Makefile.tbb b/build/Makefile.tbb
index 2db399f..06e76e2 100644
--- a/build/Makefile.tbb
+++ b/build/Makefile.tbb
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Define rules for making the TBB shared library.
diff --git a/build/Makefile.tbbmalloc b/build/Makefile.tbbmalloc
index cb222b3..f2be65e 100644
--- a/build/Makefile.tbbmalloc
+++ b/build/Makefile.tbbmalloc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # default target
 default_malloc: malloc malloc_test
@@ -62,8 +54,10 @@ PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ)
 M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(DEFINE_KEY)__TBBMALLOC_BUILD=1
 M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT)
 
-# Suppress superfluous warnings for TBBmalloc compilation
+# Suppress superfluous warnings for TBBMalloc compilation
 $(MALLOC.OBJ): M_CPLUS_FLAGS += $(WARNING_SUPPRESS)
+# Suppress superfluous warnings for TBBMalloc proxy compilation
+$(PROXY.OBJ): CPLUS_FLAGS += $(WARNING_SUPPRESS)
 
 frontend.$(OBJ): frontend.cpp version_string.ver
 	$(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(M_INCLUDES) $(INCLUDE_KEY). $<
@@ -82,7 +76,7 @@ PROXY_LINK_FLAGS = $(LIB_LINK_FLAGS)
 
 ifneq (,$(MALLOC.DEF))
 tbbmalloc.def: $(MALLOC.DEF)
-	$(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@
+	$(CPLUS) $(PREPROC_ONLY) $< $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@
 
 MALLOC_LINK_FLAGS += $(EXPORT_KEY)tbbmalloc.def
 $(MALLOC.DLL): tbbmalloc.def
@@ -94,7 +88,7 @@ $(MALLOC.DLL): $(MALLOC.OBJ) $(MALLOC.RES) $(MALLOC_NO_VERSION.DLL)
 
 ifneq (,$(MALLOCPROXY.DEF))
 tbbmallocproxy.def: $(MALLOCPROXY.DEF)
-	$(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@
+	$(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@
 
 PROXY_LINK_FLAGS += $(EXPORT_KEY)tbbmallocproxy.def
 $(MALLOCPROXY.DLL): tbbmallocproxy.def
@@ -133,50 +127,69 @@ malloc_proxy_dll: $(MALLOCPROXY.DLL)
 #------------------------------------------------------
 
 # --------- The list of TBBMalloc unit tests ----------
-MALLOC_MAIN_TESTS = test_ScalableAllocator.$(TEST_EXT) \
-                    test_ScalableAllocator_STL.$(TEST_EXT) \
-                    test_malloc_compliance.$(TEST_EXT) \
-                    test_malloc_regression.$(TEST_EXT) \
-                    test_malloc_init_shutdown.$(TEST_EXT) \
-                    test_malloc_pools.$(TEST_EXT)
-MALLOC_TESTS = $(MALLOC_MAIN_TESTS) test_malloc_pure_c.$(TEST_EXT) test_malloc_whitebox.$(TEST_EXT) test_malloc_used_by_lib.$(TEST_EXT)
-MALLOC_OVERLOAD_TESTS =  test_malloc_overload.$(TEST_EXT) test_malloc_overload_proxy.$(TEST_EXT) test_malloc_atexit.$(TEST_EXT)
+MALLOC_TESTS = test_ScalableAllocator.$(TEST_EXT) \
+               test_ScalableAllocator_STL.$(TEST_EXT) \
+               test_malloc_compliance.$(TEST_EXT) \
+               test_malloc_regression.$(TEST_EXT) \
+               test_malloc_init_shutdown.$(TEST_EXT) \
+               test_malloc_pools.$(TEST_EXT) \
+               test_malloc_pure_c.$(TEST_EXT) \
+               test_malloc_whitebox.$(TEST_EXT) \
+               test_malloc_used_by_lib.$(TEST_EXT) \
+               test_malloc_lib_unload.$(TEST_EXT)
 ifneq (,$(MALLOCPROXY.DLL))
-MALLOC_TESTS += $(MALLOC_OVERLOAD_TESTS) test_malloc_lib_unload.$(TEST_EXT)
+MALLOC_TESTS += test_malloc_overload.$(TEST_EXT) \
+                test_malloc_overload_proxy.$(TEST_EXT) \
+                test_malloc_atexit.$(TEST_EXT)
 endif
 # -----------------------------------------------------
+
 # ------------ Set test specific variables ------------
 ifeq (windows.gcc,$(tbb_os).$(compiler))
 test_malloc_overload.$(TEST_EXT): LIBS += $(MALLOCPROXY.LIB)
 endif
 
-# on Ubuntu 11.10 linker called with --as-needed, so dependence on libtbbmalloc_proxy
-# is not created, and malloc overload via linking with -ltbbmalloc_proxy is not working.
-# Overcome with --no-as-needed.
-ifeq (linux.gcc,$(tbb_os).$(compiler))
-test_malloc_atexit.$(TEST_EXT): MALLOCPROXY.LIB := -Wl,--no-as-needed $(MALLOCPROXY.LIB)
-endif
-
 MALLOC_M_CPLUS_TESTS =    test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \
         test_malloc_used_by_lib.$(TEST_EXT)
 MALLOC_NO_LIB_TESTS =     test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \
-        test_malloc_used_by_lib.$(TEST_EXT) test_malloc_overload.$(TEST_EXT) test_malloc_atexit_dll.$(DLL)
-MALLOC_LINK_PROXY_TESTS = test_malloc_overload_proxy.$(TEST_EXT) test_malloc_atexit.$(TEST_EXT)
+        test_malloc_used_by_lib.$(TEST_EXT) test_malloc_overload.$(TEST_EXT)
+MALLOC_LINK_PROXY_TESTS = test_malloc_overload_proxy.$(TEST_EXT)
 MALLOC_ADD_DLL_TESTS =    test_malloc_lib_unload.$(TEST_EXT) test_malloc_used_by_lib.$(TEST_EXT) \
         test_malloc_atexit.$(TEST_EXT)
 
+# TODO: implement accurate warning suppression for tests to unify with Makefile.test.
+
 $(MALLOC_M_CPLUS_TESTS): CPLUS_FLAGS=$(M_CPLUS_FLAGS)
 $(MALLOC_M_CPLUS_TESTS): INCLUDES=$(M_INCLUDES)
 $(MALLOC_NO_LIB_TESTS): LINK_MALLOC.LIB=
 $(MALLOC_NO_LIB_TESTS): LINK_FLAGS+=$(LIBDL)
 $(MALLOC_LINK_PROXY_TESTS): LINK_MALLOC.LIB=$(LINK_MALLOCPROXY.LIB)
+ifneq (,$(DYLIB_KEY))
 $(MALLOC_ADD_DLL_TESTS): %.$(TEST_EXT): %_dll.$(DLL)
 $(MALLOC_ADD_DLL_TESTS): TEST_LIBS+=$(@:.$(TEST_EXT)=_dll.$(LIBEXT))
+endif
 
 test_malloc_over%.$(TEST_EXT): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
 test_malloc_over%.$(TEST_EXT): INCLUDES=$(M_INCLUDES)
 test_malloc_overload_proxy.$(TEST_EXT): LINK_FLAGS+=$(LIBDL)
 
+test_malloc_atexit_dll.$(DLL): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
+test_malloc_atexit.$(TEST_EXT): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
+test_malloc_atexit.$(TEST_EXT): LINK_FLAGS+=$(LIBDL)
+# on Ubuntu 11.10 linker called with --as-needed, so dependence on libtbbmalloc_proxy
+# is not created, and malloc overload via linking with -ltbbmalloc_proxy is not working.
+# Overcome with --no-as-needed.
+ifeq (linux.gcc,$(tbb_os).$(compiler))
+test_malloc_atexit.$(TEST_EXT): MALLOCPROXY.LIB := -Wl,--no-as-needed $(MALLOCPROXY.LIB)
+endif
+# The test isn't added to MALLOC_LINK_PROXY_TESTS, because we need both
+# tbbmalloc and proxy libs. For platforms other than Android it's enough
+# to modify LINK_MALLOC.LIB for TEST_EXT target only. But under Android build
+# of DLL and TEST_EXT can be requested independently, so there is no chance
+# to set LINK_MALLOC.LIB in TEST_EXT build rule, and affect DLL build.
+test_malloc_atexit.$(TEST_EXT): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB)
+test_malloc_atexit_dll.$(DLL): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB)
+
 test_malloc_whitebox.$(TEST_EXT): $(MALLOC_ASM.OBJ) version_string.ver
 test_malloc_whitebox.$(TEST_EXT): INCLUDES+=$(INCLUDE_KEY).
 test_malloc_whitebox.$(TEST_EXT): LINK_FILES+=$(MALLOC_ASM.OBJ)
@@ -190,6 +203,7 @@ test_malloc_used_by_lib_dll.$(DLL): CPLUS_FLAGS=$(subst /MT,/LD,$(M_CPLUS_FLAGS)
 test_malloc_used_by_lib_dll.$(DLL): LINK_FILES+=$(ORIG_LINK_MALLOC.LIB)
 test_malloc_used_by_lib_dll.$(DLL): LIBDL=
 # -----------------------------------------------------
+
 # ---- The list of TBBMalloc test running commands ----
 # run_cmd is usually empty
 malloc_test: $(MALLOC.DLL) malloc_test_no_depends
@@ -198,10 +212,10 @@ malloc_test_no_depends: $(TEST_PREREQUISITE) $(MALLOC_TESTS)
 	$(run_cmd) ./test_malloc_pools.$(TEST_EXT) $(args) 1:4
 ifneq (,$(MALLOCPROXY.DLL))
 	$(run_cmd) ./test_malloc_atexit.$(TEST_EXT) $(args)
-	$(run_cmd) $(TEST_LAUNCHER) ./test_malloc_lib_unload.$(TEST_EXT) $(args)
 	$(run_cmd) $(TEST_LAUNCHER) -l $(MALLOCPROXY.DLL) ./test_malloc_overload.$(TEST_EXT) $(args)
 	$(run_cmd) $(TEST_LAUNCHER) ./test_malloc_overload_proxy.$(TEST_EXT) $(args)
 endif
+	$(run_cmd) $(TEST_LAUNCHER) ./test_malloc_lib_unload.$(TEST_EXT) $(args)
 	$(run_cmd) $(TEST_LAUNCHER) ./test_malloc_used_by_lib.$(TEST_EXT)
 	$(run_cmd) ./test_malloc_whitebox.$(TEST_EXT) $(args) 1:4
 	$(run_cmd) $(TEST_LAUNCHER) -u ./test_malloc_compliance.$(TEST_EXT) $(args) 1:4
diff --git a/build/Makefile.tbbproxy b/build/Makefile.tbbproxy
index fc08703..706037e 100644
--- a/build/Makefile.tbbproxy
+++ b/build/Makefile.tbbproxy
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # default target
 default_tbbproxy: tbbproxy tbbproxy_test
diff --git a/build/Makefile.test b/build/Makefile.test
index bd53898..8fe080c 100644
--- a/build/Makefile.test
+++ b/build/Makefile.test
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Define rules for making the TBB tests.
@@ -55,14 +47,16 @@ ifdef use_proxy
     LIBS += $(LIBDL)
 endif
 
-TEST_SUFFIXES=secondary compiler_builtins pic deprecated
+TEST_SUFFIXES=secondary compiler_builtins pic
 include $(tbb_root)/build/common_rules.inc
 
 # Rules for the tests, which use TBB in a dynamically loadable library
 test_model_plugin.$(TEST_EXT): LINK_TBB.LIB =
 test_model_plugin.$(TEST_EXT): CPLUS_FLAGS := $(CPLUS_FLAGS:$(USE_PROXY_FLAG)=)
 test_model_plugin.$(TEST_EXT): LIBS += $(LIBDL)
+ifneq (,$(DYLIB_KEY))
 test_model_plugin.$(TEST_EXT): test_model_plugin_dll.$(DLL)
+endif
 
 # tbb_misc.$(OBJ) has to be specified here (instead of harness_inject_scheduler.h) because it carries dependency on version_string.ver
 SCHEDULER_DEPENDENCIES = $(TBB_ASM.OBJ) tbb_misc.$(OBJ)
@@ -70,7 +64,9 @@ SCHEDULER_DEPENDENCIES = $(TBB_ASM.OBJ) tbb_misc.$(OBJ)
 # These executables don't depend on the TBB library, but include core .cpp files directly
 SCHEDULER_DIRECTLY_INCLUDED = test_task_leaks.$(TEST_EXT) \
  test_task_assertions.$(TEST_EXT) \
- test_fast_random.$(TEST_EXT)
+ test_fast_random.$(TEST_EXT) \
+ test_global_control_whitebox.$(TEST_EXT) \
+ test_concurrent_queue_whitebox.$(TEST_EXT)
 
 # Necessary to locate version_string.ver referenced from directly included tbb_misc.cpp
 INCLUDES += $(INCLUDE_KEY).
@@ -93,7 +89,7 @@ endif
 
 # test_tbb_header detects "multiple definition" linker error using the test that covers the whole library
 TWICE_LINKED_TESTS = test_tbb_header.$(TEST_EXT) \
-                     test_concurrent_unordered.$(TEST_EXT)
+                     test_concurrent_unordered_set.$(TEST_EXT)
 
 %_secondary.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_SECONDARY=1
 
@@ -107,7 +103,7 @@ $(TWICE_LINKED_TESTS): LINK_FILES+=$(@:.$(TEST_EXT)=_secondary.$(OBJ))
 
 # Test of generic gcc port and icc intrinsics port
 %_compiler_builtins.$(TEST_EXT): LINK_TBB.LIB =
-%_compiler_builtins.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_BUILTINS=1
+%_compiler_builtins.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_BUILTINS=1 $(DEFINE_KEY)TBB_USE_ASSERT=0
 
 # The test_dynamic_link test doesn't depend on the TBB library
 test_dynamic_link.$(TEST_EXT): LINK_TBB.LIB =
@@ -115,6 +111,7 @@ test_dynamic_link.$(TEST_EXT): LIBS += $(LIBDL)
 
 # The main list of TBB tests
 TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT)   \
+        test_global_control.$(TEST_EXT)              \
 	test_tbb_fork.$(TEST_EXT)                    \
 	test_assembly_compiler_builtins.$(TEST_EXT)  \
 	test_aligned_space.$(TEST_EXT)               \
@@ -126,7 +123,8 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT)   \
 	test_blocked_range3d.$(TEST_EXT)             \
 	test_concurrent_queue.$(TEST_EXT)            \
 	test_concurrent_vector.$(TEST_EXT)           \
-	test_concurrent_unordered.$(TEST_EXT)        \
+	test_concurrent_unordered_set.$(TEST_EXT)    \
+	test_concurrent_unordered_map.$(TEST_EXT)    \
 	test_concurrent_hash_map.$(TEST_EXT)         \
 	test_enumerable_thread_specific.$(TEST_EXT)  \
 	test_handle_perror.$(TEST_EXT)               \
@@ -190,7 +188,7 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT)   \
 	test_source_node.$(TEST_EXT)                 \
 	test_overwrite_node.$(TEST_EXT)              \
 	test_write_once_node.$(TEST_EXT)             \
-	test_or_node.$(TEST_EXT)                     \
+	test_indexer_node.$(TEST_EXT)                \
 	test_multifunction_node.$(TEST_EXT)          \
 	test_split_node.$(TEST_EXT)                  \
 	test_static_assert.$(TEST_EXT)               \
@@ -199,10 +197,18 @@ TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT)   \
 	test_examples_common_utility.$(TEST_EXT)     \
 	test_dynamic_link.$(TEST_EXT)                \
 	test_parallel_for_vectorization.$(TEST_EXT)  \
+	test_tagged_msg.$(TEST_EXT)                  \
+	test_partitioner_whitebox.$(TEST_EXT)        \
+	test_flow_graph_whitebox.$(TEST_EXT)         \
+	test_composite_node.$(TEST_EXT)              \
+	test_async_node.$(TEST_EXT)                  \
 	test_tbb_version.$(TEST_EXT)                 # insert new files right above
 
 TEST_TBB_PLAIN.EXE += $(TEST_TBB_CPP11)
 
+# skip mode_plugin for now
+skip_tests += test_model_plugin
+
 ifdef OPENMP_FLAG
 test_openmp.$(TEST_EXT): CPLUS_FLAGS += $(OPENMP_FLAG)
 
@@ -232,120 +238,35 @@ endif
 
 $(TEST_TBB_PLAIN.EXE): WARNING_KEY += $(TEST_WARNING_KEY)
 
-# Run tests that are in SCHEDULER_DIRECTLY_INCLUDED and TEST_TBB_PLAIN.EXE
+# Run tests that are in SCHEDULER_DIRECTLY_INCLUDED and TEST_TBB_PLAIN.EXE but not in skip_tests (which is specified by user)
+TESTS_TO_RUN := $(filter-out $(addsuffix .$(TEST_EXT),$(skip_tests)),$(TEST_TBB_PLAIN.EXE) $(SCHEDULER_DIRECTLY_INCLUDED))
+
+# This definition intentionally consists of two blank lines
+define eol
+
+
+endef
+
+# First build the targets, then run them
+# Form a list of commands separated with end of line
 # Note that usually run_cmd is empty, and tests run directly
-test_tbb_plain: $(TEST_PREREQUISITE) $(SCHEDULER_DIRECTLY_INCLUDED) $(TEST_TBB_PLAIN.EXE)
-	$(run_cmd) ./test_tbb_version.$(TEST_EXT) $(args)
-        # Checking TBB version first to make sure the following testing has anything in it
-	$(run_cmd) ./test_assembly.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_atomic.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_atomic_pic.$(TEST_EXT) $(args)
-        # Yes, 4:8 is intended on the next line.
-	$(run_cmd) ./test_yield.$(TEST_EXT) $(args) 4:8
-	$(run_cmd) ./test_handle_perror.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_dynamic_link.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_task_auto_init.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_task_arena.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_task_scheduler_init.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task_scheduler_observer.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task_assertions.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_task_leaks.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_fast_random.$(TEST_EXT) $(args) 1:16
-	$(run_cmd) ./test_eh_tasks.$(TEST_EXT) $(args) 2:4
-	$(run_cmd) ./test_cache_aligned_allocator.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_cache_aligned_allocator_STL.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_blocked_range.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_blocked_range2d.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_blocked_range3d.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_for.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_for_vectorization.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_parallel_sort.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_aligned_space.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_parallel_reduce.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_scan.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_while.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_do.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_inits_loop.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_lambda.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_mutex.$(TEST_EXT) $(args) 1:3
-	$(run_cmd) ./test_mutex_native_threads.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_rwm_upgrade_downgrade.$(TEST_EXT) $(args) 4
-        # Yes, 4:8 is intended on the next line.
-	$(run_cmd) ./test_halt.$(TEST_EXT) $(args) 4:8
-	$(run_cmd) ./test_pipeline.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_pipeline_with_tbf.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_parallel_pipeline.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_tick_count.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_concurrent_queue.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_concurrent_vector.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_concurrent_unordered.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_concurrent_hash_map.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_enumerable_thread_specific.$(TEST_EXT) $(args) 0:4
-	$(run_cmd) ./test_combinable.$(TEST_EXT) $(args) 0:4
-	$(run_cmd) ./test_model_plugin.$(TEST_EXT) $(args) 4
-	$(run_cmd) ./test_eh_algorithms.$(TEST_EXT) $(args) 2:4
-	$(run_cmd) ./test_eh_flow_graph.$(TEST_EXT) $(args) 2:4
-	$(run_cmd) ./test_tbb_thread.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_std_thread.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_parallel_invoke.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task_group.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_ittnotify.$(TEST_EXT) $(args) 2:2
-	$(run_cmd) ./test_parallel_for_each.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_tbb_header.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_concurrent_monitor.$(TEST_EXT) $(args) 6:8
-	$(run_cmd) ./test_critical_section.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_semaphore.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_reader_writer_lock.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_tbb_condition_variable.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_tbb_fork.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_intrusive_list.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_concurrent_priority_queue.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task_priority.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_task_enqueue.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_task_steal_limit.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_hw_concurrency.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_fp.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_tuple.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_flow_graph.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_broadcast_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_continue_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_function_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_limiter_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_join_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_buffer_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_queue_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_priority_queue_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_sequencer_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_source_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_overwrite_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_write_once_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_or_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_multifunction_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_split_node.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_examples_common_utility.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_atomic_compiler_builtins.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_assembly_compiler_builtins.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_static_assert.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_aggregator.$(TEST_EXT) $(args)
-	$(run_cmd) ./test_concurrent_lru_cache.$(TEST_EXT) $(args)
+
+test_tbb_plain: $(TEST_PREREQUISITE) $(TESTS_TO_RUN)
+	$(foreach test, $(TESTS_TO_RUN), $(run_cmd) ./$(test) $(args) $(eol))
+
 
 # For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed
 CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)TBB_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
 TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ) 
-TEST_TBB_DEPRECATED.OBJ = test_concurrent_queue_deprecated.$(OBJ) test_concurrent_vector_deprecated.$(OBJ)
 
 $(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
-%_deprecated.$(OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
 
-TEST_TBB_OLD.EXE = $(subst .$(OBJ),.$(TEST_EXT),$(TEST_TBB_OLD.OBJ) $(TEST_TBB_DEPRECATED.OBJ))
+TEST_TBB_OLD.EXE = $(subst .$(OBJ),.$(TEST_EXT),$(TEST_TBB_OLD.OBJ))
 
 ifeq (,$(NO_LEGACY_TESTS))
 test_tbb_old: $(TEST_PREREQUISITE) $(TEST_TBB_OLD.EXE)
 	$(run_cmd) ./test_concurrent_vector_v2.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_concurrent_vector_deprecated.$(TEST_EXT) $(args) 1:4
 	$(run_cmd) ./test_concurrent_queue_v2.$(TEST_EXT) $(args) 1:4
-	$(run_cmd) ./test_concurrent_queue_deprecated.$(TEST_EXT) $(args) 1:4
 	$(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 1
 	$(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 2
 	$(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 4
diff --git a/build/SunOS.gcc.inc b/build/SunOS.gcc.inc
index b7d46ea..65df43c 100644
--- a/build/SunOS.gcc.inc
+++ b/build/SunOS.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -45,7 +37,7 @@ LIBS = -lpthread -lrt -ldl
 C_FLAGS = $(CPLUS_FLAGS) -x c
 
 ifeq ($(cfg), release)
-        CPLUS_FLAGS = -O2 -DUSE_PTHREAD
+        CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD
 endif
 ifeq ($(cfg), debug)
         CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD
@@ -93,7 +85,7 @@ endif
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/SunOS.inc b/build/SunOS.inc
index f135e07..6f46bab 100644
--- a/build/SunOS.inc
+++ b/build/SunOS.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifndef arch
         arch:=$(shell uname -p)
@@ -39,7 +31,7 @@ ifndef arch
 endif
 
 ifndef runtime
-        gcc_version:=$(shell gcc -v 2>&1 | grep 'gcc version' | sed -e 's/^gcc version //' | sed -e 's/ .*$$//')
+        gcc_version:=$(shell gcc -dumpversion)
         os_version:=$(shell uname -r)
         os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
         export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
diff --git a/build/SunOS.suncc.inc b/build/SunOS.suncc.inc
index 66c6341..4d88192 100644
--- a/build/SunOS.suncc.inc
+++ b/build/SunOS.suncc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -xMMD -errtags
 PREPROC_ONLY = -E -xMMD
@@ -48,7 +40,7 @@ C_FLAGS = $(CPLUS_FLAGS)
 
 #TODO: the $(stdlib) instead of hard-wiring STLPort 
 ifeq ($(cfg), release)
-        CPLUS_FLAGS = -mt -xO2 -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
+        CPLUS_FLAGS = -mt -xO2 -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
 endif
 ifeq ($(cfg), debug)
         CPLUS_FLAGS = -mt -DTBB_USE_DEBUG -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
diff --git a/build/android.gcc.inc b/build/android.gcc.inc
index 1a792f4..fd4607a 100644
--- a/build/android.gcc.inc
+++ b/build/android.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 
 COMPILE_ONLY = -c -MMD
@@ -47,7 +39,13 @@ CONLY = $(tbb_tool_prefix)gcc
 # -soname is necessary for proper linkage to TBB prebuilt libraries when building application with Android SDK
 LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
 
-LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
+# pie is necessary for test executables to work and might be removed if newer NDK will add it implicitly
+PIE_FLAG = -pie
+ifeq ($(APP_PIE), false)
+    PIE_FLAG=
+endif
+
+LINK_FLAGS = -Wl,-rpath-link=. -rdynamic $(PIE_FLAG)
 C_FLAGS = $(CPLUS_FLAGS)
 
 # gcc 4.4 and higher support C++11
@@ -99,7 +97,6 @@ ifeq (ia32,$(arch))
     LIB_LINK_FLAGS += -m32
 endif
 
-# Currently, no intel64 support for Android, but if added later, these flags may suffice
 ifeq (intel64,$(arch))
     CPLUS_FLAGS += -m64
     LIB_LINK_FLAGS += -m64
@@ -135,7 +132,7 @@ ASSEMBLY_SOURCE=$(arch)-gas
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/android.inc b/build/android.inc
index 50de4e7..fbe68a7 100644
--- a/build/android.inc
+++ b/build/android.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #
 # Extra gmake command-line parameters for use with Android:
@@ -61,13 +53,6 @@ ifneq ("command line","$(origin arch)")
     endif
 endif
 
-ifneq (ia32,$(arch))
-    ifneq (arm,$(findstring arm,$(arch)))
-        $(error "Unsupported architecture for Android target build: arch=$(arch).\nPlease ensure target device is connected via \'adb\' and \'ANDROID_SERIAL\' is set to target device.")
-    endif
-endif
-
-
 # Many OS versions (Android 4.0.[0-3] for example) need workaround for dlopen to avoid non-recursive loader lock hang
 export dlopen_workaround = 1
 
diff --git a/build/android.linux.inc b/build/android.linux.inc
index 95ef9e1..ab40bcc 100644
--- a/build/android.linux.inc
+++ b/build/android.linux.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
diff --git a/build/android.linux.launcher.sh b/build/android.linux.launcher.sh
index 5e94e04..5de025c 100644
--- a/build/android.linux.launcher.sh
+++ b/build/android.linux.launcher.sh
@@ -1,30 +1,22 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Usage:
 # android.linux.launcher.sh [-v] [-q] [-s] [-r <repeats>] [-u] [-l <library>] <executable> <arg1> <arg2> <argN>
@@ -57,10 +49,10 @@ do case $flag in #
     s )  # Stress testing mode
          echo Doing stress testing. Press Ctrl-C to terminate
          run_env='stressed() { while $*; do :; done; }; ' #
-         run_prefix="$run_prefix stressed" ;; #
+         run_prefix="stressed $run_prefix" ;; #
     r )  # Repeats test n times
          run_env="repeated() { for i in $(seq -s ' ' 1 $OPTARG) ; do echo \$i of $OPTARG:; \$*; done; }; " #
-         run_prefix="$run_prefix repeated" ;; #
+         run_prefix="repeated $run_prefix" ;; #
     l )  # Additional library
          ldpreload="$OPTARG " ;; #
     u )  # Stack limit
diff --git a/build/android.macos.inc b/build/android.macos.inc
index 77ec306..2f1b348 100644
--- a/build/android.macos.inc
+++ b/build/android.macos.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
diff --git a/build/android.windows.inc b/build/android.windows.inc
index b5f0a06..742f240 100644
--- a/build/android.windows.inc
+++ b/build/android.windows.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
diff --git a/build/big_iron.inc b/build/big_iron.inc
index 952a2af..9bafc78 100644
--- a/build/big_iron.inc
+++ b/build/big_iron.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Defines settings for building the TBB run-time as a static library.
@@ -41,37 +33,44 @@
 # multithreading is instead achieved by using the _r affix in the compiler name.
 # TODO: is -lpthread still relevant/needed with XL and _r affix?
 
-# Note that -D__TBB_NO_DLOPEN is only for scalability,
-# and is not necessarily needed by any static build.
+# Note that usage of dynamic (shared) libraries is disabled
+# (via -D__TBB_DYNAMIC_LOAD_ENABLED=0 and LIBDL emptied) primarily for performance.
 
 # OS specific settings =>
     LIB_LINK_CMD = ar rcs
     LIB_LINK_FLAGS =
     LIB_LINK_LIBS =
     LIB_OUTPUT_KEY =
+    DYLIB_KEY =
     ifeq ($(tbb_os),linux)
         ifeq ($(compiler),clang)
-            LIBS = -pthread -ldl -lrt
+            LIBS = -pthread -lrt
         endif
         ifeq ($(compiler),gcc)
-            LIBS = -pthread -ldl -lrt
+            LIBS = -pthread -lrt
         endif
         ifeq ($(compiler),xl)
-            LIBS = -lpthread -ldl -lrt
+            LIBS = -lpthread -lrt
         endif
         LINK_FLAGS =
     endif
     override CXXFLAGS += -D__TBB_DYNAMIC_LOAD_ENABLED=0 -D__TBB_SOURCE_DIRECTLY_INCLUDED=1
     ITT_NOTIFY =
+    DLL = a
     LIBEXT = a
     LIBPREF = lib
+    LIBDL =
 # <= OS specific settings
 
 TBB.DLL = $(LIBPREF)tbb$(DEBUG_SUFFIX).$(LIBEXT)
+LINK_TBB.LIB = $(TBB.DLL)
 TBB.LST =
 TBB.DEF =
+TBB_NO_VERSION.DLL =
+
 MALLOC.DLL = $(LIBPREF)tbbmalloc$(DEBUG_SUFFIX).$(LIBEXT)
+LINK_MALLOC.LIB = $(MALLOC.DLL)
 MALLOC.DEF =
+MALLOC_NO_VERSION.DLL =
 MALLOCPROXY.DLL =
 MALLOCPROXY.DEF =
-LINK_TBB.LIB = $(TBB.DLL)
diff --git a/build/common.inc b/build/common.inc
index ba2e08e..6aa702d 100644
--- a/build/common.inc
+++ b/build/common.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifndef tbb_os
 
diff --git a/build/common_rules.inc b/build/common_rules.inc
index ae59d6b..410bd9a 100644
--- a/build/common_rules.inc
+++ b/build/common_rules.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 
 ifeq ($(tbb_strict),1)
@@ -39,10 +31,10 @@ endif
 ifneq (,$(repeat))
   override largs+=-r $(repeat)
 endif
-ifneq (,$(largs))
-  override run_cmd:=$(run_cmd)$(TEST_LAUNCHER)
+ifneq (,$(largs)$(run_prefix))
+  override run_cmd:=$(run_cmd) $(TEST_LAUNCHER)
   TEST_LAUNCHER=
-  ifeq (,$(run_cmd))
+  ifeq (,$(strip $(run_cmd)))
     $(warning Test launcher is not defined for the platform, ignoring launcher arguments)
   endif
 endif
@@ -106,7 +98,7 @@ LINK_FILES+=$(TEST_LIBS)
 %_dll.$(DLL): LINK_FLAGS += $(PIC_KEY) $(DYLIB_KEY)
 %_dll.$(DLL): TEST_LIBS := $(subst %_dll.$(DLL),,$(TEST_LIBS))
 %_dll.$(DLL): %_dll.$(OBJ)
-	$(call make-test-binary,$@,$< $(subst %_dll.$(DLL),,$(LINK_FILES)))
+	$(call make-test-binary,$@,$< $(LINK_FILES))
 .PRECIOUS: %_dll.$(OBJ) %_dll.$(DLL)
 
 %.$(OBJ): %.c
diff --git a/build/detect.js b/build/detect.js
index 6484f29..9315fe2 100644
--- a/build/detect.js
+++ b/build/detect.js
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 function doWork() {
 		var WshShell = WScript.CreateObject("WScript.Shell");
@@ -107,6 +99,7 @@ function doWork() {
 			var vc100=/MSVCR100\.DLL/mgi;
 			var vc110=/MSVCR110\.DLL/mgi;
 			var vc120=/MSVCR120\.DLL/mgi;
+			var vc140=/VCRUNTIME140\.DLL/mgi;
 			var psdk=/MSVCRT\.DLL/mgi;
 			if ( mapContext.match(vc71) ) {
 				WScript.Echo( "vc7.1" );
@@ -120,6 +113,8 @@ function doWork() {
 				WScript.Echo( "vc11" );
 			} else if ( mapContext.match(vc120) ) {
 				WScript.Echo( "vc12" );
+			} else if ( mapContext.match(vc140) ) {
+				WScript.Echo( "vc14" );
 			} else {
 				WScript.Echo( "unknown" );
 			}
diff --git a/build/generate_tbbvars.bat b/build/generate_tbbvars.bat
index e3f43b8..2eb47c1 100644
--- a/build/generate_tbbvars.bat
+++ b/build/generate_tbbvars.bat
@@ -1,30 +1,22 @@
 @echo off
 REM
-REM Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+REM Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 REM
-REM This file is part of Threading Building Blocks.
+REM This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+REM you can redistribute it and/or modify it under the terms of the GNU General Public License
+REM version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+REM See  the GNU General Public License for more details.   You should have received a copy of
+REM the  GNU General Public License along with Threading Building Blocks; if not, write to the
+REM Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 REM
-REM Threading Building Blocks is free software; you can redistribute it
-REM and/or modify it under the terms of the GNU General Public License
-REM version 2 as published by the Free Software Foundation.
-REM
-REM Threading Building Blocks is distributed in the hope that it will be
-REM useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-REM of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Threading Building Blocks; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-REM
-REM As a special exception, you may use this file as part of a free software
-REM library without restriction.  Specifically, if other files instantiate
-REM templates or use macros or inline functions from this file, or you compile
-REM this file and link it with other files to produce an executable, this
-REM file does not by itself cause the resulting executable to be covered by
-REM the GNU General Public License.  This exception does not however
-REM invalidate any other reasons why the executable file might be covered by
-REM the GNU General Public License.
+REM As a special exception,  you may use this file  as part of a free software library without
+REM restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+REM functions from this file, or you compile this file and link it with other files to produce
+REM an executable,  this file does not by itself cause the resulting executable to be covered
+REM by the GNU General Public License. This exception does not however invalidate any other
+REM reasons why the executable file might be covered by the GNU General Public License.
 REM
 setlocal
 for %%D in ("%tbb_root%") do set actual_root=%%~fD
diff --git a/build/generate_tbbvars.sh b/build/generate_tbbvars.sh
index 7ff9799..2f15e1a 100644
--- a/build/generate_tbbvars.sh
+++ b/build/generate_tbbvars.sh
@@ -1,30 +1,22 @@
 #!/bin/bash
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate tbbvars.[c]sh scripts
 bin_dir="$PWD"  # 
diff --git a/build/index.html b/build/index.html
index 851d9a2..a78e32d 100644
--- a/build/index.html
+++ b/build/index.html
@@ -232,7 +232,7 @@ See the Makefile infrastructure files for examples.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <P></P>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel and Itanium are registered trademarks or trademarks of Intel Corporation or its
 subsidiaries in the United States and other countries.
diff --git a/build/linux.clang.inc b/build/linux.clang.inc
index 935d3c7..de9aee5 100644
--- a/build/linux.clang.inc
+++ b/build/linux.clang.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -34,7 +26,7 @@ PIC_KEY = -fPIC
 WARNING_AS_ERROR_KEY = -Werror
 WARNING_KEY = -Wall
 TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
+WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -Wno-dangling-else
 DYLIB_KEY = -shared
 EXPORT_KEY = -Wl,--version-script,
 LIBDL = -ldl
@@ -43,7 +35,7 @@ CPLUS = clang++
 CONLY = clang
 LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
 LIBS += -lpthread -lrt
-LINK_FLAGS = -Wl,-rpath-link=.
+LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
@@ -68,8 +60,7 @@ TBB_ASM.OBJ=
 MALLOC_ASM.OBJ=
 
 ifeq (intel64,$(arch))
-    #TODO: Fix compilation error and put it back
-    #ITT_NOTIFY = -DDO_ITT_NOTIFY
+    ITT_NOTIFY = -DDO_ITT_NOTIFY
     CPLUS_FLAGS += -m64
     LIB_LINK_FLAGS += -m64
 endif
diff --git a/build/linux.gcc.inc b/build/linux.gcc.inc
index 12e2fda..4b7122b 100644
--- a/build/linux.gcc.inc
+++ b/build/linux.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -56,14 +48,9 @@ ifneq (,$(shell gcc -dumpversion | egrep  "^(4\.[2-9]|[5-9])"))
     OPENMP_FLAG = -fopenmp
 endif
 
-# gcc 4.4 is particularly zealous about strict aliasing rules; suppress it for library builds
-ifneq (,$(shell gcc -dumpversion | egrep  "^4\.4"))
-    WARNING_SUPPRESS += -Wno-strict-aliasing
-endif
-
-# gcc 4.8 and later support TSX intrinsics, but require command line switch to enable them
+# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
 ifneq (,$(shell gcc -dumpversion | egrep  "^4\.[8-9]"))
-    ENABLE_RTM += -mrtm
+    RTM_KEY = -mrtm
 endif
 
 ifeq ($(cfg), release)
@@ -87,13 +74,13 @@ endif
 
 ifeq (intel64,$(arch))
     ITT_NOTIFY = -DDO_ITT_NOTIFY
-    CPLUS_FLAGS += -m64 $(ENABLE_RTM)
+    CPLUS_FLAGS += -m64 $(RTM_KEY)
     LIB_LINK_FLAGS += -m64
 endif
 
 ifeq (ia32,$(arch))
     ITT_NOTIFY = -DDO_ITT_NOTIFY
-    CPLUS_FLAGS += -m32 -march=pentium4 $(ENABLE_RTM)
+    CPLUS_FLAGS += -m32 -march=pentium4 $(RTM_KEY)
     LIB_LINK_FLAGS += -m32
 endif
 
@@ -108,8 +95,8 @@ ifeq (ppc32,$(arch))
 endif
 
 ifeq (bg,$(arch))
-    CPLUS = mpicxx
-    CONLY = mpicc
+    CPLUS = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-g++ 2>/dev/null)))
+    CONLY = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-gcc 2>/dev/null)))
 endif
 
 # for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify)
@@ -151,7 +138,7 @@ endif
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/linux.icc.inc b/build/linux.icc.inc
index 66bb2f3..d4b7f1c 100644
--- a/build/linux.icc.inc
+++ b/build/linux.icc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
diff --git a/build/linux.inc b/build/linux.inc
index ed09768..631c520 100644
--- a/build/linux.inc
+++ b/build/linux.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
@@ -65,7 +57,7 @@ ifndef arch
 endif
 
 ifndef runtime
-        gcc_version = $(shell gcc -dumpversion)
+        gcc_version:=$(shell gcc -dumpversion)
         os_version:=$(shell uname -r)
         os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
         export os_glibc_version_full:=$(shell getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //')
diff --git a/build/linux.pathcc.inc b/build/linux.pathcc.inc
new file mode 100644
index 0000000..477de03
--- /dev/null
+++ b/build/linux.pathcc.inc
@@ -0,0 +1,98 @@
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+#
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+#
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
+
+COMPILE_ONLY = -c -MMD
+PREPROC_ONLY = -E -x c++
+INCLUDE_KEY = -I
+DEFINE_KEY = -D
+OUTPUT_KEY = -o #
+OUTPUTOBJ_KEY = -o #
+PIC_KEY = -fPIC
+WARNING_AS_ERROR_KEY = -Werror
+WARNING_KEY = -Wall
+TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra
+
+WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
+DYLIB_KEY = -shared
+EXPORT_KEY = -Wl,--version-script,
+LIBDL = -ldl
+
+CPLUS = pathCC
+CONLY = pathcc
+LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
+LIBS += -lstl -lpthread -lrt
+LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
+C_FLAGS = $(CPLUS_FLAGS)
+
+CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X
+OPENMP_FLAG = -openmp
+
+ifeq ($(cfg), release)
+        CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
+endif
+ifeq ($(cfg), debug)
+        CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
+endif
+
+ifneq (00,$(lambdas)$(cpp0x))
+    CXX_ONLY_FLAGS += $(CPP11_FLAGS)
+endif
+
+TBB_ASM.OBJ=
+MALLOC_ASM.OBJ=
+
+ifeq (intel64,$(arch))
+    ITT_NOTIFY = -DDO_ITT_NOTIFY
+    CPLUS_FLAGS += -m64
+    LIB_LINK_FLAGS += -m64
+endif
+
+ifeq (ia32,$(arch))
+    ITT_NOTIFY = -DDO_ITT_NOTIFY
+    CPLUS_FLAGS += -m32 -march=pentium4
+    LIB_LINK_FLAGS += -m32
+endif
+
+#------------------------------------------------------------------------------
+# Setting assembler data.
+#------------------------------------------------------------------------------
+ASM = as
+ifeq (intel64,$(arch))
+    ASM_FLAGS += --64
+endif
+ifeq (ia32,$(arch))
+    ASM_FLAGS += --32
+endif
+ifeq ($(cfg),debug)
+    ASM_FLAGS += -g
+endif
+
+ASSEMBLY_SOURCE=$(arch)-gas
+#------------------------------------------------------------------------------
+# End of setting assembler data.
+#------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# Setting tbbmalloc data.
+#------------------------------------------------------------------------------
+
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
+
+#------------------------------------------------------------------------------
+# End of setting tbbmalloc data.
+#------------------------------------------------------------------------------
diff --git a/build/linux.xl.inc b/build/linux.xl.inc
index a626764..083b883 100644
--- a/build/linux.xl.inc
+++ b/build/linux.xl.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
diff --git a/build/macos.clang.inc b/build/macos.clang.inc
index ca28be7..3aacdeb 100644
--- a/build/macos.clang.inc
+++ b/build/macos.clang.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 CPLUS = clang++
 CONLY = clang
@@ -36,24 +28,29 @@ PIC_KEY = -fPIC
 WARNING_AS_ERROR_KEY = -Werror
 WARNING_KEY = -Wall
 TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
-WARNING_SUPPRESS = -Wno-non-virtual-dtor
+WARNING_SUPPRESS = -Wno-non-virtual-dtor -Wno-dangling-else
 DYLIB_KEY = -dynamiclib
 EXPORT_KEY = -Wl,-exported_symbols_list,
 LIBDL = -ldl
 
 LIBS = -lpthread
 LINK_FLAGS =
-LIB_LINK_FLAGS = -dynamiclib
+LIB_LINK_FLAGS = -dynamiclib -install_name @rpath/$(BUILDING_LIBRARY)
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
-    CPLUS_FLAGS = -O2
+    CPLUS_FLAGS = -g -O2
 else
     CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
 endif
 
 CPLUS_FLAGS += -DUSE_PTHREAD
 
+# For Clang, we add the option to support RTM intrinsics *iff* xtest is found in <immintrin.h>
+ifneq (,$(shell grep xtest `echo "\#include<immintrin.h>" | clang -E -M - 2>&1 | grep immintrin.h` 2>/dev/null))
+    RTM_KEY = -mrtm
+endif
+
 ifeq (libc++,$(stdlib))
     CPLUS_FLAGS    += -stdlib=libc++
     LIB_LINK_FLAGS += -stdlib=libc++
@@ -66,13 +63,13 @@ ifneq (00,$(lambdas)$(cpp0x))
 endif
 
 ifeq (intel64,$(arch))
-    CPLUS_FLAGS += -m64
+    CPLUS_FLAGS += -m64 $(RTM_KEY)
     LINK_FLAGS += -m64
     LIB_LINK_FLAGS += -m64
 endif
 
 ifeq (ia32,$(arch))
-    CPLUS_FLAGS += -m32
+    CPLUS_FLAGS += -m32 $(RTM_KEY)
     LINK_FLAGS += -m32
     LIB_LINK_FLAGS += -m32
 endif
@@ -89,6 +86,17 @@ ifeq (ppc32,$(arch))
     LIB_LINK_FLAGS += -arch ppc
 endif
 
+ifeq (armv7,$(arch))
+    CPLUS_FLAGS += -arch armv7
+    LINK_FLAGS += -arch armv7
+    LIB_LINK_FLAGS += -arch armv7
+endif
+
+ifdef SDKROOT
+    CPLUS_FLAGS += -isysroot $(SDKROOT)
+    LIB_LINK_FLAGS += -L$(SDKROOT)/usr/lib/system -L$(SDKROOT)/usr/lib/
+endif
+
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
diff --git a/build/macos.gcc.inc b/build/macos.gcc.inc
index 4654124..75a9b8c 100644
--- a/build/macos.gcc.inc
+++ b/build/macos.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 CPLUS = g++
 CONLY = gcc
@@ -43,11 +35,11 @@ LIBDL = -ldl
 
 LIBS = -lpthread
 LINK_FLAGS =
-LIB_LINK_FLAGS = -dynamiclib
+LIB_LINK_FLAGS = -dynamiclib -install_name @rpath/$(BUILDING_LIBRARY)
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq ($(cfg), release)
-    CPLUS_FLAGS = -O2
+    CPLUS_FLAGS = -g -O2
 else
     CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
 endif
@@ -112,7 +104,7 @@ endif
 # Setting tbbmalloc data.
 #------------------------------------------------------------------------------
 
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions -fno-schedule-insns2
+M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
 
 #------------------------------------------------------------------------------
 # End of setting tbbmalloc data.
diff --git a/build/macos.icc.inc b/build/macos.icc.inc
index 4e48939..970e73b 100644
--- a/build/macos.icc.inc
+++ b/build/macos.icc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 CPLUS = icpc
 CONLY = icc
@@ -42,7 +34,7 @@ LIBDL = -ldl
 OPENMP_FLAG = -openmp
 LIBS = -lpthread
 LINK_FLAGS =
-LIB_LINK_FLAGS = -dynamiclib -i-static
+LIB_LINK_FLAGS = -dynamiclib -i-static -install_name @rpath/$(BUILDING_LIBRARY)
 C_FLAGS = $(CPLUS_FLAGS)
 # ICC 11.0 and higher support -std=c++0x
 ifneq (,$(shell icc -dumpversion | egrep  "^1[1-9]\."))
@@ -55,7 +47,7 @@ ifneq (,$(shell icc -dumpversion | egrep  "^1[2-9]\."))
 endif
 
 ifeq ($(cfg), release)
-    CPLUS_FLAGS = -O2 -fno-omit-frame-pointer
+    CPLUS_FLAGS = -g -O2 -fno-omit-frame-pointer
 else
     CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
 endif
@@ -70,13 +62,16 @@ ifneq (00,$(lambdas)$(cpp0x))
 	CXX_ONLY_FLAGS += $(CPP11_FLAGS)
 endif
 
-# ICC 14.0 and higher support clang environment
+# ICC 14.0 and higher support usage of libc++, clang standard library
 ifneq (,$(shell icc -dumpversion | egrep  "^1[4-9]\."))
-    ifeq (libc++,$(stdlib))
-        CPLUS_FLAGS    += -use-clang-env -stdlib=libc++
-        LIB_LINK_FLAGS += -use-clang-env -stdlib=libc++
-    endif
+    LIBCPP_KEY = -stdlib=libc++
 endif
+
+ifeq (libc++,$(stdlib))
+    CPLUS_FLAGS    += $(LIBCPP_KEY)
+    LIB_LINK_FLAGS += $(LIBCPP_KEY)
+endif
+
 #------------------------------------------------------------------------------
 # Setting assembler data.
 #------------------------------------------------------------------------------
diff --git a/build/macos.inc b/build/macos.inc
index 96cce4e..b4e3ef8 100644
--- a/build/macos.inc
+++ b/build/macos.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ####### Detections and Commands ###############################################
 
@@ -69,13 +61,13 @@ ifeq (ios,$(target))
 endif
 
 ifndef runtime
- gcc_version = $(shell gcc -dumpversion)
+ gcc_version:=$(shell gcc -dumpversion)
  os_version:=$(shell /usr/bin/sw_vers -productVersion)
  export runtime:=cc$(gcc_version)_os$(os_version)
 endif
 
-native_compiler := gcc
-export compiler ?= gcc
+native_compiler := clang
+export compiler ?= clang
 debugger ?= gdb
 
 CMD=$(SHELL) -c
@@ -114,4 +106,8 @@ MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(MALLOC_DLL)
 MALLOC.LIB = $(MALLOC.DLL)
 LINK_MALLOC.LIB = $(MALLOC.LIB)
 
+MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(MALLOC_DLL)
+MALLOCPROXY.LIB = $(MALLOCPROXY.DLL)
+LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)
+
 TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
diff --git a/build/mic.icc.inc b/build/mic.icc.inc
index cb3c891..941fd66 100644
--- a/build/mic.icc.inc
+++ b/build/mic.icc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 COMPILE_ONLY = -c -MMD
 PREPROC_ONLY = -E -x c++
@@ -33,6 +25,11 @@ OUTPUTOBJ_KEY = -o #
 PIC_KEY = -fPIC
 WARNING_AS_ERROR_KEY = -Werror
 WARNING_KEY = -w1
+# Several options (e.g. -opt-streaming-stores) were deprecated in Intel(R) Compiler 15.0.
+# When Intel(R) Compiler 14.0 support is dropped consider enabling remark 10009 and replacing deprecated options with
+# new ones (e.g. -qopt-streaming-stores never).
+WARNING_SUPPRESS = -diag-disable 10009
+TEST_WARNING_KEY = -diag-disable 10009
 DYLIB_KEY = -shared -Wl,-soname=$@
 EXPORT_KEY = -Wl,--version-script,
 NOINTRINSIC_KEY = -fno-builtin
diff --git a/build/mic.linux.inc b/build/mic.linux.inc
index 2919de7..00b28e4 100644
--- a/build/mic.linux.inc
+++ b/build/mic.linux.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifeq ($(tbb_os),mic)
   $(error MIC supports only cross-compilation.  Specify "target=mic" instead.)
diff --git a/build/mic.linux.launcher.sh b/build/mic.linux.launcher.sh
index 53a4b02..0409f76 100644
--- a/build/mic.linux.launcher.sh
+++ b/build/mic.linux.launcher.sh
@@ -1,30 +1,22 @@
 #!/bin/bash
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-#
-# This file is part of Threading Building Blocks.
-#
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+#
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+#
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Usage:
 # mic.linux.launcher.sh [-v] [-q] [-s] [-r <repeats>] [-u] [-l <library>] <executable> <arg1> <arg2> <argN>
@@ -45,9 +37,11 @@ while getopts  "qvsr:ul:" flag #
 do case $flag in #
     s )  # Stress testing mode
          echo Doing stress testing. Press Ctrl-C to terminate
-         run_prefix+='rep() { while $*; do :; done; }; rep ' ;; #
+         run_env='stressed() { while $*; do :; done; };' #
+         run_prefix="stressed $run_prefix" ;; #
     r )  # Repeats test n times
-         run_prefix+="rep() { for i in \$(seq 1 $OPTARG); do echo \$i of $OPTARG:; \$*; done; }; rep " ;; #
+         run_env="repeated() { for i in \$(seq 1 $OPTARG); do echo \$i of $OPTARG:; \$*; done; };" #
+         run_prefix="repeated $run_prefix" ;; #
     l )  # Additional library
          ldd_list+="$OPTARG " #
          run_prefix+=" LD_PRELOAD=$OPTARG" ;; #
@@ -117,27 +111,26 @@ fnamelist=`echo $fnamelist` #
 #
 # Transfer input files used by example codes by scanning the executable argument list.
 argfiles= #
-for fullname in "$@"; do if [ -r $fullname ]; then { #
-    directory=$(dirname $fullname) #
-    filename=$(basename $fullname) #
-    # Strip leading "." from fullname if present
-    [ "$directory" = "." ] && directory="" && fullname="$filename" #
-    # Create the target directory to hold input file if necessary
-    [ -n "$directory" ] && eval $RSH "mkdir -p $targetdir/$directory" $SUPPRESS 2>&1 #
-    [ -n "$directory" ] && directory=$directory/
-    argfiles+="$directory$fullname " #
-}; fi; done #
+args= #
+for arg in "$@"; do #
+  if [ -r $arg ]; then #
+    argfiles+="$arg " #
+    args+="$(basename $arg) " #
+  else #
+    args+="$arg " #
+  fi #
+done #
 [ -n "$argfiles" ] && copy_files $argfiles #
 #
 # Get the list of transferred files
 testfiles="`$RSH find $targetdir/ -type f | tr '\n' ' ' 2>/dev/null`" #
 #
-args=$* #
-[ $verbose ] && echo Running ./$exename $args #
+[ $verbose ] && echo Running $run_prefix ./$exename $args #
 # Run the test on the target device
 trap 'kill_interrupt' SIGINT SIGQUIT # trap keyboard interrupt (control-c)
 trap - ERR #
-$RSH "cd $targetdir; export LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH; $run_prefix ./$exename $args" #
+run_env+="cd $targetdir; export LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH;" #
+$RSH "$run_env $run_prefix ./$exename $args" #
 #
 # Delete the test files and get the list of output files
 outfiles=`$RSH rm $testfiles 2>/dev/null; find $targetdir/ -type f 2>/dev/null` ||: #
diff --git a/build/mic.offload.inc b/build/mic.offload.inc
index 9b29679..0cf51a2 100644
--- a/build/mic.offload.inc
+++ b/build/mic.offload.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifneq (mic,$(offload))
   $(error File mic.offload.inc should not be included directly. Use offload=mic instead.)
@@ -45,35 +37,49 @@ ifdef BUILDING_PHASE
     LINK_MALLOC.LIB=-offload-option,mic,ld,"$(LINK_MALLOC_NATIVE.LIB)" $(MALLOC.LIB)
     LINK_MALLOCPROXY_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(MALLOCPROXY.DLL)
     LINK_MALLOCPROXY.LIB=-offload-option,mic,ld,"$(LINK_MALLOCPROXY_NATIVE.LIB)" $(MALLOCPROXY.LIB)
-    
+
     # Export extensions for test_launcher
     export DLL
     export TEST_EXT=offload.exe
     OBJ=offload.o
-    
+
     # Do not use -Werror because it is too strict for the early offload compiler.
     # Need to set anything because WARNING_AS_ERROR_KEY should not be empty.
     # Treat #2426 as a warning. Print errors only.
     tbb_strict=0
     WARNING_AS_ERROR_KEY = Warning as error
     WARNING_KEY = -diag-warning 2426 -w0
-    
+
+    # Several options (e.g. -offload-attribute-target, -offload-option and so on) were deprecated in Intel(R) Compiler 15.0.
+    # When Intel(R) Compiler 14.0 support is dropped consider enabling remark 10009 and replacing deprecated options with
+    # new ones (e.g. -qoffload-attribute-target, -qoffload-option and so on).
+    WARNING_KEY += -diag-disable 10009
+
     CXX_MIC_STUFF = -offload-attribute-target=mic -D__TBB_MIC_OFFLOAD=1 -offload-option,mic,compiler,"-D__TBB_MIC_OFFLOAD=1 $(CXX_MIC_NATIVE_STUFF)"
-    CXX_MIC_NATIVE_STUFF = -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0 
+    CXX_MIC_NATIVE_STUFF = -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0
     CPLUS_FLAGS += $(CXX_MIC_STUFF)
-    
+
+    # Some tests require that an executable exports its symbols.
+    LINK_FLAGS += -offload-option,mic,ld,"--export-dynamic"
+
+    # libcoi_device.so is needed for COIProcessProxyFlush used in Harness.
+    LINK_FLAGS += -offload-option,mic,ld,"-lcoi_device"
+
+    # DSO-linking semantics forces linking libpthread and librt to a test.
+    LINK_FLAGS += -offload-option,mic,ld,"-lpthread -lrt"
+
     .PHONY: FORCE
     FORCE:
-    
+
     $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL): FORCE
 	@$(MAKE) --no-print-directory -C "$(MIC_OFFLOAD_NATIVE_PATH)" target=mic offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL)
     %_dll.$(DLL): $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL) FORCE
 	@$(MAKE) --no-print-directory offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL)
-    
+
     .PRECIOUS: $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL)
 
     %.$(TEST_EXT): LINK_FILES+=-offload-option,mic,ld,"$(addprefix $(MIC_OFFLOAD_NATIVE_PATH)/,$(TEST_LIBS))"
-    
+
     TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
 
     ifdef MIC_LD_LIBRARY_PATH
@@ -90,13 +96,13 @@ else
   # Libraries
   LIB_TARGETS = tbb tbbmalloc tbbproxy rml
   addsuffixes = $(foreach suff,$(1),$(addsuffix $(suff),$(2)))
-  
+
   .PHONY: $(call addsuffixes, _debug _release _debug_mic _release_mic,$(LIB_TARGETS))
-  
+
   # The dependence on *_debug and *_release targets unifies the offload support
   # for top-level Makefile and src/Makefile
   $(LIB_TARGETS): %: %_release %_debug
-  
+
   # "override offload=" suppresses the "offload" variable value for nested makes
   $(LIB_TARGETS) $(call addsuffixes, _debug _release,$(LIB_TARGETS)): override offload=
   # Apply overriding for library builds
@@ -104,12 +110,12 @@ else
   export tbb_build_prefix
   # Add the dependency on target libraries
   $(call addsuffixes, _debug _release,$(LIB_TARGETS)): %: %_mic
-  
-  # tbb_build_prefix should be overriden since we want to restart make in "clear" enviroment
+
+  # tbb_build_prefix should be overriden since we want to restart make in "clear" environment
   $(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): override tbb_build_prefix=
   $(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): %_mic:
 	@$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" $* target=mic tbb_root=..
-  
+
   mic_clean: override tbb_build_prefix=
   mic_clean:
 	@$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" clean offload= target=mic tbb_root=..
diff --git a/build/test_launcher.bat b/build/test_launcher.bat
index f443f9d..35bbf43 100644
--- a/build/test_launcher.bat
+++ b/build/test_launcher.bat
@@ -1,30 +1,22 @@
 @echo off
 REM
-REM Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+REM Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 REM
-REM This file is part of Threading Building Blocks.
+REM This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+REM you can redistribute it and/or modify it under the terms of the GNU General Public License
+REM version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+REM See  the GNU General Public License for more details.   You should have received a copy of
+REM the  GNU General Public License along with Threading Building Blocks; if not, write to the
+REM Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 REM
-REM Threading Building Blocks is free software; you can redistribute it
-REM and/or modify it under the terms of the GNU General Public License
-REM version 2 as published by the Free Software Foundation.
-REM
-REM Threading Building Blocks is distributed in the hope that it will be
-REM useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-REM of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Threading Building Blocks; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-REM
-REM As a special exception, you may use this file as part of a free software
-REM library without restriction.  Specifically, if other files instantiate
-REM templates or use macros or inline functions from this file, or you compile
-REM this file and link it with other files to produce an executable, this
-REM file does not by itself cause the resulting executable to be covered by
-REM the GNU General Public License.  This exception does not however
-REM invalidate any other reasons why the executable file might be covered by
-REM the GNU General Public License.
+REM As a special exception,  you may use this file  as part of a free software library without
+REM restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+REM functions from this file, or you compile this file and link it with other files to produce
+REM an executable,  this file does not by itself cause the resulting executable to be covered
+REM by the GNU General Public License. This exception does not however invalidate any other
+REM reasons why the executable file might be covered by the GNU General Public License.
 REM
 
 set cmd_line=
diff --git a/build/test_launcher.sh b/build/test_launcher.sh
index 92ea4ff..02f7686 100644
--- a/build/test_launcher.sh
+++ b/build/test_launcher.sh
@@ -1,30 +1,22 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Usage:
 # test_launcher.sh [-v] [-q] [-s] [-r <repeats>] [-u] [-l <library>] <executable> <arg1> <arg2> <argN>
@@ -38,17 +30,20 @@
 while getopts  "qvsr:ul:" flag #
 do case $flag in #
     s )  # Stress testing mode
-         run_prefix="$run_prefix stressed" ;; #
+         run_prefix="stressed $run_prefix" ;; #
     r )  # Repeats test n times
          repeat=$OPTARG #
-         run_prefix="$run_prefix repeated" ;; #
-    l )  if [ `uname` != 'Linux' ] ; then #
+         run_prefix="repeated $run_prefix" ;; #
+    l )  if [ `uname` = 'Linux' ] ; then #
+             LD_PRELOAD=$OPTARG #
+         elif [ `uname` = 'Darwin' ] ; then #
+             DYLD_INSERT_LIBRARIES=$OPTARG #
+         else #
              echo 'skip' #
              exit #
-         fi #
-         LD_PRELOAD=$OPTARG ;; #
+         fi ;; #
     u )  # Set stack limit
-         ulimit -s 10240 ;; # 
+         ulimit -s 10240 ;; #
     q )  # Quiet mode, removes 'done' but prepends any other output by test name
          OUTPUT='2>&1 | sed -e "s/done//;/^[[:space:]]*$/d;s!^!$1: !"' ;; #
     v )  # Verbose mode
@@ -78,7 +73,11 @@ repeated() { #
 } #
 # Run the command line passed via parameters
 [ $verbose ] && echo Running $run_prefix $* #
-export LD_PRELOAD #
+if [ -n "$LD_PRELOAD" ] ; then #
+    export LD_PRELOAD #
+elif [ -n "$DYLD_INSERT_LIBRARIES" ] ; then #
+    export DYLD_INSERT_LIBRARIES #
+fi
 exec 4>&1 # extracting exit code of the first command in pipeline needs duplicated stdout
 # custom redirection needs eval, otherwise shell cannot parse it
 err=`eval '( $run_prefix $* || echo \$? >&3; )' ${OUTPUT} 3>&1 >&4` #
diff --git a/build/version_info_aix.sh b/build/version_info_aix.sh
index 246d06b..5df78af 100644
--- a/build/version_info_aix.sh
+++ b/build/version_info_aix.sh
@@ -1,30 +1,22 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate version info string
 echo "#define __TBB_VERSION_STRINGS(N) \\"
@@ -32,7 +24,7 @@ echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \'
 # find OS name in *-release and issue* files by filtering blank lines and lsb-release content out
 echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \'
 echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \'
-echo '#N": BUILD_GCC'"\t\t"`g++ -v </dev/null 2>&1 | grep 'gcc.*version'`'" ENDL \'
+echo '#N": BUILD_GCC'"\t\t"`g++ --version </dev/null 2>&1 | grep 'g++'`'" ENDL \'
 [ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
 echo '#N": BUILD_LIBC'"\t"`getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //'`'" ENDL \'
 echo '#N": BUILD_LD'"\t\t"`ld -v 2>&1 | grep 'version'`'" ENDL \'
diff --git a/build/version_info_android.sh b/build/version_info_android.sh
index 637136f..55af4ea 100644
--- a/build/version_info_android.sh
+++ b/build/version_info_android.sh
@@ -1,42 +1,29 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate version info string
-# remove extraneous cntrl-M characters from ends of lines generated by adb shell command
-android_os=`(adb shell getprop ro.build.version.release) | sed -e 's/\\r$//g'`
-android_kernel=`(adb shell uname -srv) | sed -e 's/\\r$//g'`
 echo "#define __TBB_VERSION_STRINGS(N) \\"
 echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \'
 # find OS name in *-release and issue* files by filtering blank lines and lsb-release content out
 echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \'
-echo '#N": BUILD_TARGET_OS'"\t\tAndroid ${android_os}"'" ENDL \'
-echo '#N": BUILD_TARGET_KERNEL'"\t${android_kernel}"'" ENDL \'
-echo '#N": BUILD_GCC'"\t\t"`${tbb_tool_prefix}g++ -dumpversion`'" ENDL \'
+echo '#N": BUILD_GCC'"\t\t"`${tbb_tool_prefix}g++ --version | grep 'g++'`'" ENDL \'
 [ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
 [ -z "$ndk_version" ] || echo '#N": BUILD_NDK'"\t\t$ndk_version"'" ENDL \'
 echo '#N": BUILD_LD'"\t\t"`${tbb_tool_prefix}ld -v 2>&1 | grep 'ld'`'" ENDL \'
diff --git a/build/version_info_linux.sh b/build/version_info_linux.sh
index 5498001..5df78af 100644
--- a/build/version_info_linux.sh
+++ b/build/version_info_linux.sh
@@ -1,30 +1,22 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate version info string
 echo "#define __TBB_VERSION_STRINGS(N) \\"
@@ -32,7 +24,7 @@ echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \'
 # find OS name in *-release and issue* files by filtering blank lines and lsb-release content out
 echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \'
 echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \'
-echo '#N": BUILD_GCC'"\t\t"`g++ -v </dev/null 2>&1 | grep 'gcc.*version '`'" ENDL \'
+echo '#N": BUILD_GCC'"\t\t"`g++ --version </dev/null 2>&1 | grep 'g++'`'" ENDL \'
 [ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
 echo '#N": BUILD_LIBC'"\t"`getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //'`'" ENDL \'
 echo '#N": BUILD_LD'"\t\t"`ld -v 2>&1 | grep 'version'`'" ENDL \'
diff --git a/build/version_info_macos.sh b/build/version_info_macos.sh
index 0481695..2db20af 100644
--- a/build/version_info_macos.sh
+++ b/build/version_info_macos.sh
@@ -1,37 +1,30 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate version info string
 echo "#define __TBB_VERSION_STRINGS(N) \\"
 echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`arch`")"'" ENDL \'
 echo '#N": BUILD_OS'"\t\t"`sw_vers -productName`" version "`sw_vers -productVersion`'" ENDL \'
 echo '#N": BUILD_KERNEL'"\t"`uname -v`'" ENDL \'
-echo '#N": BUILD_GCC'"\t\t"`gcc -v </dev/null 2>&1 | grep 'version '`'" ENDL \'
+echo '#N": BUILD_CLANG'"\t"`clang --version </dev/null 2>&1 | grep 'version '`'" ENDL \'
+echo '#N": BUILD_XCODE'"\t"`xcodebuild -version </dev/null 2>&1 | grep 'Xcode'`'" ENDL \'
 [ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \'
 echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \'
 echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \'
diff --git a/build/version_info_sunos.sh b/build/version_info_sunos.sh
index e19ea34..3ac838c 100644
--- a/build/version_info_sunos.sh
+++ b/build/version_info_sunos.sh
@@ -1,30 +1,22 @@
 #!/bin/sh
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Script used to generate version info string
 echo "#define __TBB_VERSION_STRINGS(N) \\"
diff --git a/build/version_info_windows.js b/build/version_info_windows.js
index b33c38c..b0df098 100644
--- a/build/version_info_windows.js
+++ b/build/version_info_windows.js
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 var WshShell = WScript.CreateObject("WScript.Shell");
 
diff --git a/build/vs2008/index.html b/build/vs2008/index.html
deleted file mode 100644
index d4a3747..0000000
--- a/build/vs2008/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<HTML>
-<BODY>
-
-<H2>Overview</H2>
-This directory contains the visual studio* 2008 solution to build Intel® Threading Building Blocks.
-
-
-<H2>Files</H2>
-<DL>
-<DT><A HREF="makefile.sln">makefile.sln</A>
-<DD>Solution file.
-<DT><A HREF="tbb.vcproj">tbb.vcproj</A>
-<DD>Library project file.
-<DT><A HREF="tbbmalloc.vcproj">tbbmalloc.vcproj</A>
-<DD>Scalable allocator library project file. Allocator sources are expected to be located in <A HREF="../../src/tbbmalloc">../../src/tbbmalloc</A> folder.
-<DT><A HREF="tbbmalloc_proxy.vcproj">tbbmalloc_proxy.vcproj</A>
-<DD>Standard allocator replacement project file. 
-</DL>
-
-<HR>
-<A HREF="../index.html">Up to parent directory</A>
-<P></P>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<P></P>
-Intel is a registered trademark or trademark of Intel Corporation
-or its subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
-</BODY>
-</HTML>
diff --git a/build/vs2008/makefile.sln b/build/vs2008/makefile.sln
deleted file mode 100644
index a4ebd48..0000000
--- a/build/vs2008/makefile.sln
+++ /dev/null
@@ -1,84 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8898CE0B-0BFB-45AE-AA71-83735ED2510D}"
-	ProjectSection(SolutionItems) = preProject
-		index.html = index.html
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbb", "tbb.vcproj", "{F62787DD-1327-448B-9818-030062BCFAA5}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbbmalloc", "tbbmalloc.vcproj", "{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F62787DD-1327-448B-9818-030062BCFAA5} = {F62787DD-1327-448B-9818-030062BCFAA5}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbbmalloc_proxy", "tbbmalloc_proxy.vcproj", "{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}"
-	ProjectSection(ProjectDependencies) = postProject
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8} = {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Debug-MT|Win32 = Debug-MT|Win32
-		Debug-MT|x64 = Debug-MT|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-		Release-MT|Win32 = Release-MT|Win32
-		Release-MT|x64 = Release-MT|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug|Win32.Build.0 = Debug|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug|x64.ActiveCfg = Debug|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug|x64.Build.0 = Debug|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|Win32.Build.0 = Debug-MT|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|x64.ActiveCfg = Debug-MT|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|x64.Build.0 = Debug-MT|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release|Win32.ActiveCfg = Release|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release|Win32.Build.0 = Release|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release|x64.ActiveCfg = Release|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release|x64.Build.0 = Release|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|Win32.ActiveCfg = Release-MT|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|Win32.Build.0 = Release-MT|Win32
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|x64.ActiveCfg = Release-MT|x64
-		{F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|x64.Build.0 = Release-MT|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|Win32.Build.0 = Debug|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|x64.ActiveCfg = Debug|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|x64.Build.0 = Debug|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|Win32.Build.0 = Debug-MT|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|x64.ActiveCfg = Debug-MT|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|x64.Build.0 = Debug-MT|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|Win32.ActiveCfg = Release|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|Win32.Build.0 = Release|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|x64.ActiveCfg = Release|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|x64.Build.0 = Release|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|Win32.ActiveCfg = Release-MT|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|Win32.Build.0 = Release-MT|Win32
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|x64.ActiveCfg = Release-MT|x64
-		{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|x64.Build.0 = Release-MT|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|Win32.ActiveCfg = Debug|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|Win32.Build.0 = Debug|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|x64.ActiveCfg = Debug|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|x64.Build.0 = Debug|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|Win32.Build.0 = Debug-MT|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|x64.ActiveCfg = Debug-MT|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|x64.Build.0 = Debug-MT|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|Win32.ActiveCfg = Release|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|Win32.Build.0 = Release|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|x64.ActiveCfg = Release|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|x64.Build.0 = Release|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|Win32.ActiveCfg = Release-MT|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|Win32.Build.0 = Release-MT|Win32
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|x64.ActiveCfg = Release-MT|x64
-		{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|x64.Build.0 = Release-MT|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/build/vs2008/tbb.vcproj b/build/vs2008/tbb.vcproj
deleted file mode 100644
index 387432f..0000000
--- a/build/vs2008/tbb.vcproj
+++ /dev/null
@@ -1,594 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject ProjectType="Visual C++" Version="9.00" Name="tbb" ProjectGUID="{F62787DD-1327-448B-9818-030062BCFAA5}" RootNamespace="tbb" Keyword="Win32Proj" TargetFrameworkVersion="131072">
-	<Platforms>
-		<Platform Name="Win32"/>
-		<Platform Name="x64"/>
-	</Platforms>
-	<ToolFiles>
-		<DefaultToolFile FileName="masm.rules"/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningL [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" BufferSecurityCheck="false" UsePr [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" AdditionalIncludeDirectories="." PreprocessorDefinitions="" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="3"/>
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" AdditionalIncludeDirectories="." PreprocessorDefinitions="" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="3"/>
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug-MT|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" UsePrecompiledHeader="0" WarningL [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug-MT|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" BufferSecurityCheck="false" UsePr [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release-MT|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" AdditionalIncludeDirectories="." PreprocessorDefinitions="" RuntimeLibrary="0" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="3"/>
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release-MT|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include" AdditionalIncludeDirectories="." PreprocessorDefinitions="" RuntimeLibrary="0" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="3"/>
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)\tbb.def"" OutputFile="$(OutDir)\tbb.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter Name="Source Files" Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File RelativePath="..\..\src\tbb\ia32-masm\atomic_support.asm">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\intel64-masm\atomic_support.asm">
-				<FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCCustomBuildTool" Description="building atomic_support.obj" CommandLine="ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-" Outputs="intel64\Debug\atomic_support.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCCustomBuildTool" Description="building atomic_support.obj" CommandLine="ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-" Outputs="intel64\Release\atomic_support.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building atomic_support.obj" CommandLine="ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-" Outputs="intel64\Debug-MT\atomic_support.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building atomic_support.obj" CommandLine="ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-" Outputs="intel64\Release-MT\atomic_support.obj"/>
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\intel64-masm\intel64_misc.asm">
-				<FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCCustomBuildTool" Description="building intel64_misc.obj" CommandLine="ml64 /Fo"intel64\Debug\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-" Outputs="intel64\Debug\intel64_misc.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCCustomBuildTool" Description="building intel64_misc.obj" CommandLine="ml64 /Fo"intel64\Release\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-" Outputs="intel64\Release\intel64_misc.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building intel64_misc.obj" CommandLine="ml64 /Fo"intel64\Debug-MT\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-" Outputs="intel64\Debug-MT\intel64_misc.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building intel64_misc.obj" CommandLine="ml64 /Fo"intel64\Release-MT\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-" Outputs="intel64\Release-MT\intel64_misc.obj"/>
-				</FileConfiguration>
-			</File>
-            <File RelativePath="..\..\src\tbb\ia32-masm\itsx.asm">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64" ExcludedFromBuild="true">
-				</FileConfiguration>
-			</File>
-            <File RelativePath="..\..\src\tbb\intel64-masm\itsx.asm">
-				<FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32" ExcludedFromBuild="true">
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCCustomBuildTool" Description="building itsx.obj" CommandLine="ml64 /Fo"intel64\Debug\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-" Outputs="intel64\Debug\itsx.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCCustomBuildTool" Description="building itsx.obj" CommandLine="ml64 /Fo"intel64\Release\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-" Outputs="intel64\Release\itsx.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building itsx.obj" CommandLine="ml64 /Fo"intel64\Debug-MT\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-" Outputs="intel64\Debug-MT\itsx.obj"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="building itsx.obj" CommandLine="ml64 /Fo"intel64\Release-MT\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-" Outputs="intel64\Release-MT\itsx.obj"/>
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\ia32-masm\lock_byte.asm">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="MASM" AdditionalOptions="/coff" UseSafeExceptionHandlers="true"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64" ExcludedFromBuild="true">
-					<Tool Name="MASM"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64" ExcludedFromBuild="true">
-					<Tool Name="MASM" AdditionalOptions="/coff /Zi"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64" ExcludedFromBuild="true">
-					<Tool Name="MASM"/>
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\win32-tbb-export.def">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\win64-tbb-export.def">
-				<FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32" ExcludedFromBuild="true">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCCustomBuildTool" Description="generating tbb.def file" CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)\tbb.def"
-" Outputs=""$(IntDir)\tbb.def""/>
-				</FileConfiguration>
-			</File>
-			<File RelativePath="..\..\src\tbb\concurrent_hash_map.cpp"/><File RelativePath="..\..\src\tbb\concurrent_queue.cpp"/><File RelativePath="..\..\src\tbb\concurrent_vector.cpp"/><File RelativePath="..\..\src\tbb\dynamic_link.cpp"/><File RelativePath="..\..\src\tbb\itt_notify.cpp"/><File RelativePath="..\..\src\tbb\cache_aligned_allocator.cpp"/><File RelativePath="..\..\src\tbb\pipeline.cpp"/><File RelativePath="..\..\src\tbb\queuing_mutex.cpp"/><File RelativePath="..\..\src\tbb\queuing_r [...]
-		<Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl;inc;xsd" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File RelativePath="..\..\include\tbb\internal\_concurrent_queue_impl.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\_tbb_windef.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\aligned_space.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\atomic.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\blocked_range.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\blocked_range2d.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\blocked_range3d.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\cache_aligned_allocator.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\combinable.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\concurrent_hash_map.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\concurrent_monitor.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\concurrent_priority_queue.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\concurrent_queue.h">
-			</File>
-			<File RelativePath="..\..\src\old\concurrent_queue_v2.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\concurrent_vector.h">
-			</File>
-			<File RelativePath="..\..\src\old\concurrent_vector_v2.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\critical_section.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\dynamic_link.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\enumerable_thread_specific.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\gate.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_allocator.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_assert.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_bad_expr.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_barrier.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_concurrency_tracker.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_cpu.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_eh.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_iterator.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_m128.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_memory.h">
-			</File>
-			<File RelativePath="..\..\src\test\harness_report.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\ibm_aix51.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\itt_notify.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\linux_common.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\linux_ia32.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\linux_ia64.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\linux_intel64.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\mac_ppc.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\null_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\null_rw_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_do.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_for.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_for_each.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_invoke.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_reduce.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_scan.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_sort.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\parallel_while.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\partitioner.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\pipeline.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\compat\ppl.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\queuing_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\queuing_rw_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\reader_writer_lock.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\recursive_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\scalable_allocator.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\semaphore.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\spin_mutex.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\spin_rw_mutex.h">
-			</File>
-			<File RelativePath="..\..\src\old\spin_rw_mutex_v2.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\task.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\task_group.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\task_scheduler_init.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\task_scheduler_observer.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_allocator.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\tbb_assert_impl.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_config.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_exception.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_machine.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\tbb_misc.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_profiling.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_stddef.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbb_thread.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\tbb_version.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbbmalloc_proxy.h">
-			</File>
-			<File RelativePath="..\..\src\test\test_allocator.h">
-			</File>
-			<File RelativePath="..\..\src\test\test_allocator_STL.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tick_count.h">
-			</File>
-			<File RelativePath="..\..\src\tbb\tls.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\windows_ia32.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\machine\windows_intel64.h">
-			</File>
-		</Filter>
-		<Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-			<File RelativePath="..\..\src\tbb\tbb_resource.rc">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/build/vs2008/tbbmalloc.vcproj b/build/vs2008/tbbmalloc.vcproj
deleted file mode 100644
index 91be06e..0000000
--- a/build/vs2008/tbbmalloc.vcproj
+++ /dev/null
@@ -1,1332 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tbbmalloc"
-	ProjectGUID="{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}"
-	RootNamespace="tbbmalloc"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-		<DefaultToolFile
-			FileName="masm.rules"
-		/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D_USE_RTM_VERSION /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				Optimization="0"
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				MinimalRebuild="true"
-				ExceptionHandling="0"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc_debug.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D_USE_RTM_VERSION /GS- /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				Optimization="0"
-				AdditionalIncludeDirectories="."
-				MinimalRebuild="false"
-				ExceptionHandling="0"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-				ShowIncludes="false"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc_debug.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D_USE_RTM_VERSION /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D_USE_RTM_VERSION /GS- /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug-MT|Win32"
-			OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				Optimization="0"
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				MinimalRebuild="true"
-				ExceptionHandling="0"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc_debug.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug-MT|x64"
-			OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /GS- /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				Optimization="0"
-				AdditionalIncludeDirectories="."
-				MinimalRebuild="false"
-				ExceptionHandling="0"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				TreatWChar_tAsBuiltInType="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-				ShowIncludes="false"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc_debug.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release-MT|Win32"
-			OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release-MT|x64"
-			OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions=" /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /GS- /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I."
-				AdditionalIncludeDirectories="."
-				PreprocessorDefinitions=""
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				WarningLevel="4"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)\tbbmalloc.def""
-				OutputFile="$(OutDir)\tbbmalloc.dll"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\src\tbb\intel64-masm\atomic_support.asm"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="building atomic_support.obj"
-						CommandLine="ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm&#x0D;&#x0A;"
-						Outputs="intel64\Debug\atomic_support.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="building atomic_support.obj"
-						CommandLine="ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm&#x0D;&#x0A;"
-						Outputs="intel64\Release\atomic_support.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|Win32"
-					ExcludedFromBuild="true"
-					>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="building atomic_support.obj"
-						CommandLine="ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm&#x0D;&#x0A;"
-						Outputs="intel64\Debug-MT\atomic_support.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|Win32"
-					ExcludedFromBuild="true"
-					>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="building atomic_support.obj"
-						CommandLine="ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm&#x0D;&#x0A;"
-						Outputs="intel64\Release-MT\atomic_support.obj"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\backend.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\backref.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\frontend.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbb\itt_notify.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						ObjectFile="$(IntDir)\itt_notify_malloc.obj"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\large_objects.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\tbbmalloc.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\win32-tbbmalloc-export.def"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|Win32"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\win64-tbbmalloc-export.def"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|x64"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-						Description="generating tbbmalloc.def file"
-						CommandLine="cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)\tbbmalloc.def"&#x0D;&#x0A;"
-						Outputs=""$(IntDir)\tbbmalloc.def""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\include\tbb\internal\_concurrent_queue_impl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\_tbb_windef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\aligned_space.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\atomic.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\blocked_range.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\blocked_range2d.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\blocked_range3d.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\cache_aligned_allocator.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\combinable.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\concurrent_hash_map.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\concurrent_queue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\concurrent_vector.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\critical_section.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\Customize.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\enumerable_thread_specific.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\LifoList.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\MapMemory.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\null_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\null_rw_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_do.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_for.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_for_each.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_invoke.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_reduce.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_scan.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_sort.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\parallel_while.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\partitioner.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\pipeline.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\proxy.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\queuing_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\queuing_rw_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\recursive_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\scalable_allocator.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\spin_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\spin_rw_mutex.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\Statistics.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\task.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\task_group.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\task_scheduler_init.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\task_scheduler_observer.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_allocator.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_config.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_exception.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\tbb_function_replacement.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_machine.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_profiling.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_stddef.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_thread.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbb_version.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tbbmalloc_proxy.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\tick_count.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\tbbmalloc\TypeDefinitions.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\machine\windows_ia32.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\include\tbb\machine\windows_intel64.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\..\src\tbbmalloc\tbbmalloc.rc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug-MT|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release-MT|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/build/vs2008/tbbmalloc_proxy.vcproj b/build/vs2008/tbbmalloc_proxy.vcproj
deleted file mode 100644
index 14f48e6..0000000
--- a/build/vs2008/tbbmalloc_proxy.vcproj
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject ProjectType="Visual C++" Version="9.00" Name="tbbmalloc_proxy" ProjectGUID="{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}" RootNamespace="tbbmalloc_proxy" Keyword="Win32Proj" TargetFrameworkVersion="131072">
-	<Platforms>
-		<Platform Name="Win32"/>
-		<Platform Name="x64"/>
-	</Platforms>
-	<ToolFiles>
-		<DefaultToolFile FileName="masm.rules"/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" ExceptionHandling="1" Bas [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO " OutputFile="$(OutDir)\tbbmalloc_proxy_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" Optimization="0" AdditionalIncludeDirectories="." MinimalRebuild="false" ExceptionHandling="0" BasicRuntimeChecks="0" Runtim [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO" OutputFile="$(OutDir)\tbbmalloc_proxy_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" AdditionalIncludeDirectories="." PreprocessorDefinitions="" ExceptionHandling="0" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" DebugInfo [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  " OutputFile="$(OutDir)\tbbmalloc_proxy.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" AdditionalIncludeDirectories="." PreprocessorDefinitions="" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0 [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO" OutputFile="$(OutDir)\tbbmalloc_proxy.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug-MT|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" Optimization="0" AdditionalIncludeDirectories="." PreprocessorDefinitions="" MinimalRebuild="true" ExceptionHandling="1" BasicRuntimeChecks="0" RuntimeLibrary="1" UsePrecompiledHeader=" [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO " OutputFile="$(OutDir)\tbbmalloc_proxy_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Debug-MT|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" Optimization="0" AdditionalIncludeDirectories="." MinimalRebuild="false" ExceptionHandling="0" BasicRuntimeChecks="0" Runtim [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO" OutputFile="$(OutDir)\tbbmalloc_proxy_debug.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release-MT|Win32" OutputDirectory="$(SolutionDir)ia32\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)ia32\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" AdditionalIncludeDirectories="." PreprocessorDefinitions="" ExceptionHandling="0" RuntimeLibrary="0" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="3"/>
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  " OutputFile="$(OutDir)\tbbmalloc_proxy.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-		<Configuration Name="Release-MT|x64" OutputDirectory="$(SolutionDir)intel64\$(ConfigurationName)" IntermediateDirectory="$(SolutionDir)intel64\$(ConfigurationName)" ConfigurationType="2" CharacterSet="0" WholeProgramOptimization="1">
-			<Tool Name="VCPreBuildEventTool"/>
-			<Tool Name="VCCustomBuildTool"/>
-			<Tool Name="MASM"/>
-			<Tool Name="VCXMLDataGeneratorTool"/>
-			<Tool Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool Name="VCMIDLTool" TargetEnvironment="3"/>
-			<Tool Name="VCCLCompilerTool" AdditionalOptions=" /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0501 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc" AdditionalIncludeDirectories="." PreprocessorDefinitions="" ExceptionHandling="0" RuntimeLibrary="0" BufferSecurityCheck="false" UsePrecompiledHeader="0 [...]
-			<Tool Name="VCManagedResourceCompilerTool"/>
-			<Tool Name="VCResourceCompilerTool"/>
-			<Tool Name="VCPreLinkEventTool"/>
-			<Tool Name="VCLinkerTool" AdditionalOptions="/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO" OutputFile="$(OutDir)\tbbmalloc_proxy.dll" LinkIncremental="1" GenerateDebugInformation="true" SubSystem="2" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>
-			<Tool Name="VCALinkTool"/>
-			<Tool Name="VCManifestTool"/>
-			<Tool Name="VCXDCMakeTool"/>
-			<Tool Name="VCBscMakeTool"/>
-			<Tool Name="VCFxCopTool"/>
-			<Tool Name="VCAppVerifierTool"/>
-			<Tool Name="VCPostBuildEventTool"/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter Name="Source Files" Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-			<File RelativePath="..\..\src\tbbmalloc\proxy.cpp"/><File RelativePath="..\..\src\tbbmalloc\tbb_function_replacement.cpp"/></Filter>
-		<Filter Name="Header Files" Filter="h;hpp;hxx;hm;inl;inc;xsd" UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
-			<File RelativePath="..\..\src\tbbmalloc\tbb_function_replacement.h">
-			</File>
-			<File RelativePath="..\..\include\tbb\tbbmalloc_proxy.h">
-			</File>
-		</Filter>
-		<Filter Name="Resource Files" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
-			<File RelativePath="..\..\src\tbbmalloc\tbbmalloc.rc">
-				<FileConfiguration Name="Debug|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Debug-MT|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|Win32">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-				<FileConfiguration Name="Release-MT|x64">
-					<Tool Name="VCResourceCompilerTool" AdditionalOptions="/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400"/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/build/vs2008/version_string.ver b/build/vs2008/version_string.ver
deleted file mode 100644
index 5d8f04e..0000000
--- a/build/vs2008/version_string.ver
+++ /dev/null
@@ -1 +0,0 @@
-#define __TBB_VERSION_STRINGS(N) "Empty"
diff --git a/build/vs2010/index.html b/build/vs2010/index.html
index 1bcbc7e..f638157 100644
--- a/build/vs2010/index.html
+++ b/build/vs2010/index.html
@@ -20,7 +20,7 @@ This directory contains the visual studio* 2010 solution to build Intel&reg Thre
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <P></P>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/build/vs2010/tbb.vcxproj b/build/vs2010/tbb.vcxproj
index a74a554..4ba5a59 100644
--- a/build/vs2010/tbb.vcxproj
+++ b/build/vs2010/tbb.vcxproj
@@ -1,711 +1,712 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug-MT|Win32">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug-MT|x64">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|Win32">
-      <Configuration>Release-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|x64">
-      <Configuration>Release-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F62787DD-1327-448B-9818-030062BCFAA5}</ProjectGuid>
-    <RootNamespace>tbb</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalOptions>  /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>  /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalOptions>  /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>  /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions>  /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>  /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions>  /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions>  /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /WX /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbb.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <MASM Include="..\..\src\tbb\ia32-masm\atomic_support.asm">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </MASM>
-    <CustomBuild Include="..\..\src\tbb\intel64-masm\atomic_support.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\atomic_support.obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\src\tbb\intel64-masm\intel64_misc.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building intel64_misc.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\intel64_misc.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building intel64_misc.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\intel64_misc.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building intel64_misc.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\intel64_misc.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building intel64_misc.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\intel64_misc.obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <MASM Include="..\..\src\tbb\ia32-masm\itsx.asm">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </MASM>
-    <CustomBuild Include="..\..\src\tbb\intel64-masm\itsx.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building itsx.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\itsx.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building itsx.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\itsx.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building itsx.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\itsx.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building itsx.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\itsx.obj;%(Outputs)</Outputs>
-    </CustomBuild>
-    <MASM Include="..\..\src\tbb\ia32-masm\lock_byte.asm">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/coff /Zi</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/coff /Zi</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
-      <UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-    </MASM>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\src\tbb\win32-tbb-export.def">
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\src\tbb\win64-tbb-export.def">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbb.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\tbb\concurrent_hash_map.cpp" />
-    <ClCompile Include="..\..\src\tbb\concurrent_queue.cpp" />
-    <ClCompile Include="..\..\src\tbb\concurrent_vector.cpp" />
-    <ClCompile Include="..\..\src\tbb\dynamic_link.cpp" />
-    <ClCompile Include="..\..\src\tbb\itt_notify.cpp" />
-    <ClCompile Include="..\..\src\tbb\cache_aligned_allocator.cpp" />
-    <ClCompile Include="..\..\src\tbb\pipeline.cpp" />
-    <ClCompile Include="..\..\src\tbb\queuing_mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\queuing_rw_mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\reader_writer_lock.cpp" />
-    <ClCompile Include="..\..\src\tbb\spin_rw_mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\spin_mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\critical_section.cpp" />
-    <ClCompile Include="..\..\src\tbb\mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\recursive_mutex.cpp" />
-    <ClCompile Include="..\..\src\tbb\condition_variable.cpp" />
-    <ClCompile Include="..\..\src\tbb\tbb_thread.cpp" />
-    <ClCompile Include="..\..\src\tbb\concurrent_monitor.cpp" />
-    <ClCompile Include="..\..\src\tbb\semaphore.cpp" />
-    <ClCompile Include="..\..\src\tbb\private_server.cpp" />
-    <ClCompile Include="..\..\src\rml\client\rml_tbb.cpp" />
-    <ClCompile Include="..\..\src\tbb\tbb_misc.cpp" />
-    <ClCompile Include="..\..\src\tbb\tbb_misc_ex.cpp" />
-    <ClCompile Include="..\..\src\tbb\task.cpp" />
-    <ClCompile Include="..\..\src\tbb\task_group_context.cpp" />
-    <ClCompile Include="..\..\src\tbb\governor.cpp" />
-    <ClCompile Include="..\..\src\tbb\market.cpp" />
-    <ClCompile Include="..\..\src\tbb\arena.cpp" />
-    <ClCompile Include="..\..\src\tbb\scheduler.cpp" />
-    <ClCompile Include="..\..\src\tbb\observer_proxy.cpp" />
-    <ClCompile Include="..\..\src\tbb\tbb_statistics.cpp" />
-    <ClCompile Include="..\..\src\tbb\tbb_main.cpp" />
-    <ClCompile Include="..\..\src\old\concurrent_vector_v2.cpp" />
-    <ClCompile Include="..\..\src\old\concurrent_queue_v2.cpp" />
-    <ClCompile Include="..\..\src\old\spin_rw_mutex_v2.cpp" />
-    <ClCompile Include="..\..\src\old\task_v2.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\tbb\internal\_concurrent_queue_impl.h" />
-    <ClInclude Include="..\..\include\tbb\_tbb_windef.h" />
-    <ClInclude Include="..\..\include\tbb\aligned_space.h" />
-    <ClInclude Include="..\..\include\tbb\atomic.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range2d.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range3d.h" />
-    <ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h" />
-    <ClInclude Include="..\..\include\tbb\combinable.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_hash_map.h" />
-    <ClInclude Include="..\..\src\tbb\concurrent_monitor.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_priority_queue.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_queue.h" />
-    <ClInclude Include="..\..\src\old\concurrent_queue_v2.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_vector.h" />
-    <ClInclude Include="..\..\src\old\concurrent_vector_v2.h" />
-    <ClInclude Include="..\..\include\tbb\critical_section.h" />
-    <ClInclude Include="..\..\src\tbb\dynamic_link.h" />
-    <ClInclude Include="..\..\include\tbb\enumerable_thread_specific.h" />
-    <ClInclude Include="..\..\src\tbb\gate.h" />
-    <ClInclude Include="..\..\src\test\harness.h" />
-    <ClInclude Include="..\..\src\test\harness_allocator.h" />
-    <ClInclude Include="..\..\src\test\harness_assert.h" />
-    <ClInclude Include="..\..\src\test\harness_bad_expr.h" />
-    <ClInclude Include="..\..\src\test\harness_barrier.h" />
-    <ClInclude Include="..\..\src\test\harness_concurrency_tracker.h" />
-    <ClInclude Include="..\..\src\test\harness_cpu.h" />
-    <ClInclude Include="..\..\src\test\harness_eh.h" />
-    <ClInclude Include="..\..\src\test\harness_iterator.h" />
-    <ClInclude Include="..\..\src\test\harness_m128.h" />
-    <ClInclude Include="..\..\src\test\harness_memory.h" />
-    <ClInclude Include="..\..\src\test\harness_report.h" />
-    <ClInclude Include="..\..\include\tbb\machine\ibm_aix51.h" />
-    <ClInclude Include="..\..\src\tbb\itt_notify.h" />
-    <ClInclude Include="..\..\include\tbb\machine\linux_common.h" />
-    <ClInclude Include="..\..\include\tbb\machine\linux_ia32.h" />
-    <ClInclude Include="..\..\include\tbb\machine\linux_ia64.h" />
-    <ClInclude Include="..\..\include\tbb\machine\linux_intel64.h" />
-    <ClInclude Include="..\..\include\tbb\machine\mac_ppc.h" />
-    <ClInclude Include="..\..\include\tbb\mutex.h" />
-    <ClInclude Include="..\..\include\tbb\null_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\null_rw_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_do.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_for.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_for_each.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_invoke.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_reduce.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_scan.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_sort.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_while.h" />
-    <ClInclude Include="..\..\include\tbb\partitioner.h" />
-    <ClInclude Include="..\..\include\tbb\pipeline.h" />
-    <ClInclude Include="..\..\include\tbb\compat\ppl.h" />
-    <ClInclude Include="..\..\include\tbb\queuing_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\queuing_rw_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\reader_writer_lock.h" />
-    <ClInclude Include="..\..\include\tbb\recursive_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\scalable_allocator.h" />
-    <ClInclude Include="..\..\src\tbb\semaphore.h" />
-    <ClInclude Include="..\..\include\tbb\spin_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\spin_rw_mutex.h" />
-    <ClInclude Include="..\..\src\old\spin_rw_mutex_v2.h" />
-    <ClInclude Include="..\..\include\tbb\task.h" />
-    <ClInclude Include="..\..\include\tbb\task_group.h" />
-    <ClInclude Include="..\..\include\tbb\task_scheduler_init.h" />
-    <ClInclude Include="..\..\include\tbb\task_scheduler_observer.h" />
-    <ClInclude Include="..\..\include\tbb\tbb.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_allocator.h" />
-    <ClInclude Include="..\..\src\tbb\tbb_assert_impl.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_config.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_exception.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_machine.h" />
-    <ClInclude Include="..\..\src\tbb\tbb_misc.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_profiling.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_stddef.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_thread.h" />
-    <ClInclude Include="..\..\src\tbb\tbb_version.h" />
-    <ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h" />
-    <ClInclude Include="..\..\src\test\test_allocator.h" />
-    <ClInclude Include="..\..\src\test\test_allocator_STL.h" />
-    <ClInclude Include="..\..\include\tbb\tick_count.h" />
-    <ClInclude Include="..\..\src\tbb\tls.h" />
-    <ClInclude Include="..\..\include\tbb\machine\windows_ia32.h" />
-    <ClInclude Include="..\..\include\tbb\machine\windows_intel64.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\tbb\tbb_resource.rc">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-    </ResourceCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<ItemGroup Label="ProjectConfigurations">
+		<ProjectConfiguration Include="Debug-MT|Win32">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug-MT|x64">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|Win32">
+			<Configuration>Debug</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|x64">
+			<Configuration>Debug</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|Win32">
+			<Configuration>Release-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|x64">
+			<Configuration>Release-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|Win32">
+			<Configuration>Release</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|x64">
+			<Configuration>Release</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+	</ItemGroup>
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{F62787DD-1327-448B-9818-030062BCFAA5}</ProjectGuid>
+		<RootNamespace>tbb</RootNamespace>
+		<Keyword>Win32Proj</Keyword>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
+	<ImportGroup Label="ExtensionSettings">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<PropertyGroup Label="UserMacros"/>
+	<PropertyGroup>
+		<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
+	</PropertyGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+		<ClCompile>
+			<AdditionalOptions>  /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions>  /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+		<ClCompile>
+			<AdditionalOptions>  /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions>  /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions>  /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions>  /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions>  /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions>  /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbb.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+			<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemGroup>
+		<MASM Include="..\..\src\tbb\ia32-masm\atomic_support.asm">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+		</MASM>
+		<CustomBuild Include="..\..\src\tbb\intel64-masm\atomic_support.asm">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\atomic_support.obj;%(Outputs)</Outputs>
+		</CustomBuild>
+		<CustomBuild Include="..\..\src\tbb\intel64-masm\intel64_misc.asm">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building intel64_misc.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\intel64_misc.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building intel64_misc.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\intel64_misc.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building intel64_misc.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\intel64_misc.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building intel64_misc.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\intel64_misc.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\intel64_misc.obj;%(Outputs)</Outputs>
+		</CustomBuild>
+		<MASM Include="..\..\src\tbb\ia32-masm\itsx.asm">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+		</MASM>
+		<CustomBuild Include="..\..\src\tbb\intel64-masm\itsx.asm">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building itsx.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\itsx.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building itsx.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\itsx.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building itsx.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\itsx.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building itsx.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\itsx.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\itsx.obj;%(Outputs)</Outputs>
+		</CustomBuild>
+		<MASM Include="..\..\src\tbb\ia32-masm\lock_byte.asm">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/coff /Zi</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/coff /Zi</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/coff /Zi</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/coff</AdditionalOptions>
+			<UseSafeExceptionHandlers Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseSafeExceptionHandlers>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+		</MASM>
+	</ItemGroup>
+	<ItemGroup>
+		<CustomBuild Include="..\..\src\tbb\win32-tbb-export.def">
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+		</CustomBuild>
+		<CustomBuild Include="..\..\src\tbb\win64-tbb-export.def">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbb.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbb.def;%(Outputs)</Outputs>
+		</CustomBuild>
+	</ItemGroup>
+	<ItemGroup>
+		<ClCompile Include="..\..\src\tbb\concurrent_hash_map.cpp"/>
+		<ClCompile Include="..\..\src\tbb\concurrent_queue.cpp"/>
+		<ClCompile Include="..\..\src\tbb\concurrent_vector.cpp"/>
+		<ClCompile Include="..\..\src\tbb\dynamic_link.cpp"/>
+		<ClCompile Include="..\..\src\tbb\itt_notify.cpp"/>
+		<ClCompile Include="..\..\src\tbb\cache_aligned_allocator.cpp"/>
+		<ClCompile Include="..\..\src\tbb\pipeline.cpp"/>
+		<ClCompile Include="..\..\src\tbb\queuing_mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\queuing_rw_mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\reader_writer_lock.cpp"/>
+		<ClCompile Include="..\..\src\tbb\spin_rw_mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\spin_mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\critical_section.cpp"/>
+		<ClCompile Include="..\..\src\tbb\mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\recursive_mutex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\condition_variable.cpp"/>
+		<ClCompile Include="..\..\src\tbb\tbb_thread.cpp"/>
+		<ClCompile Include="..\..\src\tbb\concurrent_monitor.cpp"/>
+		<ClCompile Include="..\..\src\tbb\semaphore.cpp"/>
+		<ClCompile Include="..\..\src\tbb\private_server.cpp"/>
+		<ClCompile Include="..\..\src\rml\client\rml_tbb.cpp"/>
+		<ClCompile Include="..\..\src\tbb\tbb_misc.cpp"/>
+		<ClCompile Include="..\..\src\tbb\tbb_misc_ex.cpp"/>
+		<ClCompile Include="..\..\src\tbb\task.cpp"/>
+		<ClCompile Include="..\..\src\tbb\task_group_context.cpp"/>
+		<ClCompile Include="..\..\src\tbb\governor.cpp"/>
+		<ClCompile Include="..\..\src\tbb\market.cpp"/>
+		<ClCompile Include="..\..\src\tbb\arena.cpp"/>
+		<ClCompile Include="..\..\src\tbb\scheduler.cpp"/>
+		<ClCompile Include="..\..\src\tbb\observer_proxy.cpp"/>
+		<ClCompile Include="..\..\src\tbb\tbb_statistics.cpp"/>
+		<ClCompile Include="..\..\src\tbb\tbb_main.cpp"/>
+		<ClCompile Include="..\..\src\old\concurrent_vector_v2.cpp"/>
+		<ClCompile Include="..\..\src\old\concurrent_queue_v2.cpp"/>
+		<ClCompile Include="..\..\src\old\spin_rw_mutex_v2.cpp"/>
+		<ClCompile Include="..\..\src\old\task_v2.cpp"/>
+		<ClCompile Include="..\..\src\tbb\x86_rtm_rw_mutex.cpp"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ClInclude Include="..\..\include\tbb\internal\_concurrent_queue_impl.h"/>
+		<ClInclude Include="..\..\include\tbb\_tbb_windef.h"/>
+		<ClInclude Include="..\..\include\tbb\aligned_space.h"/>
+		<ClInclude Include="..\..\include\tbb\atomic.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range2d.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range3d.h"/>
+		<ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h"/>
+		<ClInclude Include="..\..\include\tbb\combinable.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_hash_map.h"/>
+		<ClInclude Include="..\..\src\tbb\concurrent_monitor.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_priority_queue.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_queue.h"/>
+		<ClInclude Include="..\..\src\old\concurrent_queue_v2.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_vector.h"/>
+		<ClInclude Include="..\..\src\old\concurrent_vector_v2.h"/>
+		<ClInclude Include="..\..\include\tbb\critical_section.h"/>
+		<ClInclude Include="..\..\src\tbb\dynamic_link.h"/>
+		<ClInclude Include="..\..\include\tbb\enumerable_thread_specific.h"/>
+		<ClInclude Include="..\..\src\tbb\gate.h"/>
+		<ClInclude Include="..\..\src\test\harness.h"/>
+		<ClInclude Include="..\..\src\test\harness_allocator.h"/>
+		<ClInclude Include="..\..\src\test\harness_assert.h"/>
+		<ClInclude Include="..\..\src\test\harness_bad_expr.h"/>
+		<ClInclude Include="..\..\src\test\harness_barrier.h"/>
+		<ClInclude Include="..\..\src\test\harness_concurrency_tracker.h"/>
+		<ClInclude Include="..\..\src\test\harness_cpu.h"/>
+		<ClInclude Include="..\..\src\test\harness_eh.h"/>
+		<ClInclude Include="..\..\src\test\harness_iterator.h"/>
+		<ClInclude Include="..\..\src\test\harness_m128.h"/>
+		<ClInclude Include="..\..\src\test\harness_memory.h"/>
+		<ClInclude Include="..\..\src\test\harness_report.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\ibm_aix51.h"/>
+		<ClInclude Include="..\..\src\tbb\itt_notify.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\linux_common.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\linux_ia32.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\linux_ia64.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\linux_intel64.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\mac_ppc.h"/>
+		<ClInclude Include="..\..\include\tbb\mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\null_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\null_rw_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_do.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_for.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_for_each.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_invoke.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_reduce.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_scan.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_sort.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_while.h"/>
+		<ClInclude Include="..\..\include\tbb\partitioner.h"/>
+		<ClInclude Include="..\..\include\tbb\pipeline.h"/>
+		<ClInclude Include="..\..\include\tbb\compat\ppl.h"/>
+		<ClInclude Include="..\..\include\tbb\queuing_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\queuing_rw_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\reader_writer_lock.h"/>
+		<ClInclude Include="..\..\include\tbb\recursive_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\scalable_allocator.h"/>
+		<ClInclude Include="..\..\src\tbb\semaphore.h"/>
+		<ClInclude Include="..\..\include\tbb\spin_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\spin_rw_mutex.h"/>
+		<ClInclude Include="..\..\src\old\spin_rw_mutex_v2.h"/>
+		<ClInclude Include="..\..\include\tbb\task.h"/>
+		<ClInclude Include="..\..\include\tbb\task_group.h"/>
+		<ClInclude Include="..\..\include\tbb\task_scheduler_init.h"/>
+		<ClInclude Include="..\..\include\tbb\task_scheduler_observer.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_allocator.h"/>
+		<ClInclude Include="..\..\src\tbb\tbb_assert_impl.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_config.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_exception.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_machine.h"/>
+		<ClInclude Include="..\..\src\tbb\tbb_misc.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_profiling.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_stddef.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_thread.h"/>
+		<ClInclude Include="..\..\src\tbb\tbb_version.h"/>
+		<ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h"/>
+		<ClInclude Include="..\..\src\test\test_allocator.h"/>
+		<ClInclude Include="..\..\src\test\test_allocator_STL.h"/>
+		<ClInclude Include="..\..\include\tbb\tick_count.h"/>
+		<ClInclude Include="..\..\src\tbb\tls.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\windows_ia32.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\windows_intel64.h"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\tbb\tbb_resource.rc">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+		</ResourceCompile>
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
+	<ImportGroup Label="ExtensionTargets">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
+	</ImportGroup>
+</Project>
diff --git a/build/vs2010/tbbmalloc.vcxproj b/build/vs2010/tbbmalloc.vcxproj
index a379e6a..ad9a793 100644
--- a/build/vs2010/tbbmalloc.vcxproj
+++ b/build/vs2010/tbbmalloc.vcxproj
@@ -1,584 +1,584 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug-MT|Win32">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug-MT|x64">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|Win32">
-      <Configuration>Release-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|x64">
-      <Configuration>Release-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}</ProjectGuid>
-    <RootNamespace>tbbmalloc</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>false</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>false</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\src\tbb\intel64-masm\atomic_support.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\atomic_support.obj;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building atomic_support.obj</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\atomic_support.obj;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuild Include="..\..\src\tbbmalloc\win32-tbbmalloc-export.def">
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-    </CustomBuild>
-    <CustomBuild Include="..\..\src\tbbmalloc\win64-tbbmalloc-export.def">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbbmalloc.def file</Message>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
-</Command>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
-    </CustomBuild>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\tbbmalloc\backend.cpp" />
-    <ClCompile Include="..\..\src\tbbmalloc\large_objects.cpp" />
-    <ClCompile Include="..\..\src\tbbmalloc\backref.cpp" />
-    <ClCompile Include="..\..\src\tbbmalloc\tbbmalloc.cpp" />
-    <ClCompile Include="..\..\src\tbb\itt_notify.cpp" />
-    <ClCompile Include="..\..\src\tbbmalloc\frontend.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\tbb\internal\_concurrent_queue_impl.h" />
-    <ClInclude Include="..\..\include\tbb\_tbb_windef.h" />
-    <ClInclude Include="..\..\include\tbb\aligned_space.h" />
-    <ClInclude Include="..\..\include\tbb\atomic.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range2d.h" />
-    <ClInclude Include="..\..\include\tbb\blocked_range3d.h" />
-    <ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h" />
-    <ClInclude Include="..\..\include\tbb\combinable.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_hash_map.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_queue.h" />
-    <ClInclude Include="..\..\include\tbb\concurrent_vector.h" />
-    <ClInclude Include="..\..\include\tbb\critical_section.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\Customize.h" />
-    <ClInclude Include="..\..\include\tbb\enumerable_thread_specific.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\LifoList.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\MapMemory.h" />
-    <ClInclude Include="..\..\include\tbb\mutex.h" />
-    <ClInclude Include="..\..\include\tbb\null_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\null_rw_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_do.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_for.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_for_each.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_invoke.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_reduce.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_scan.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_sort.h" />
-    <ClInclude Include="..\..\include\tbb\parallel_while.h" />
-    <ClInclude Include="..\..\include\tbb\partitioner.h" />
-    <ClInclude Include="..\..\include\tbb\pipeline.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\proxy.h" />
-    <ClInclude Include="..\..\include\tbb\queuing_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\queuing_rw_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\recursive_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\scalable_allocator.h" />
-    <ClInclude Include="..\..\include\tbb\spin_mutex.h" />
-    <ClInclude Include="..\..\include\tbb\spin_rw_mutex.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\Statistics.h" />
-    <ClInclude Include="..\..\include\tbb\task.h" />
-    <ClInclude Include="..\..\include\tbb\task_group.h" />
-    <ClInclude Include="..\..\include\tbb\task_scheduler_init.h" />
-    <ClInclude Include="..\..\include\tbb\task_scheduler_observer.h" />
-    <ClInclude Include="..\..\include\tbb\tbb.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_allocator.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_config.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_exception.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\tbb_function_replacement.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_machine.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_profiling.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_stddef.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_thread.h" />
-    <ClInclude Include="..\..\include\tbb\tbb_version.h" />
-    <ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h" />
-    <ClInclude Include="..\..\include\tbb\tick_count.h" />
-    <ClInclude Include="..\..\src\tbbmalloc\TypeDefinitions.h" />
-    <ClInclude Include="..\..\include\tbb\machine\windows_ia32.h" />
-    <ClInclude Include="..\..\include\tbb\machine\windows_intel64.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\tbbmalloc\tbbmalloc.rc">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="tbb.vcxproj">
-      <Project>{f62787dd-1327-448b-9818-030062bcfaa5}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<ItemGroup Label="ProjectConfigurations">
+		<ProjectConfiguration Include="Debug-MT|Win32">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug-MT|x64">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|Win32">
+			<Configuration>Debug</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|x64">
+			<Configuration>Debug</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|Win32">
+			<Configuration>Release-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|x64">
+			<Configuration>Release-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|Win32">
+			<Configuration>Release</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|x64">
+			<Configuration>Release</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+	</ItemGroup>
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}</ProjectGuid>
+		<RootNamespace>tbbmalloc</RootNamespace>
+		<Keyword>Win32Proj</Keyword>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
+	<ImportGroup Label="ExtensionSettings">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<PropertyGroup Label="UserMacros"/>
+	<PropertyGroup>
+		<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
+	</PropertyGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<MinimalRebuild>false</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<MinimalRebuild>false</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I.</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemGroup>
+		<CustomBuild Include="..\..\src\tbb\intel64-masm\atomic_support.asm">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">intel64\Debug-MT\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">intel64\Debug\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">ml64 /Fo"intel64\Release-MT\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">intel64\Release-MT\atomic_support.obj;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">building atomic_support.obj</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ml64 /Fo"intel64\Release\atomic_support.obj"  /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">intel64\Release\atomic_support.obj;%(Outputs)</Outputs>
+		</CustomBuild>
+	</ItemGroup>
+	<ItemGroup>
+		<CustomBuild Include="..\..\src\tbbmalloc\win32-tbbmalloc-export.def">
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+		</CustomBuild>
+		<CustomBuild Include="..\..\src\tbbmalloc\win64-tbbmalloc-export.def">
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+			<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">generating tbbmalloc.def file</Message>
+			<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def"
+</Command>
+			<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)tbbmalloc.def;%(Outputs)</Outputs>
+		</CustomBuild>
+	</ItemGroup>
+	<ItemGroup>
+		<ClCompile Include="..\..\src\tbbmalloc\backend.cpp"/>
+		<ClCompile Include="..\..\src\tbbmalloc\large_objects.cpp"/>
+		<ClCompile Include="..\..\src\tbbmalloc\backref.cpp"/>
+		<ClCompile Include="..\..\src\tbbmalloc\tbbmalloc.cpp"/>
+		<ClCompile Include="..\..\src\tbb\itt_notify.cpp"/>
+		<ClCompile Include="..\..\src\tbbmalloc\frontend.cpp"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ClInclude Include="..\..\include\tbb\internal\_concurrent_queue_impl.h"/>
+		<ClInclude Include="..\..\include\tbb\_tbb_windef.h"/>
+		<ClInclude Include="..\..\include\tbb\aligned_space.h"/>
+		<ClInclude Include="..\..\include\tbb\atomic.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range2d.h"/>
+		<ClInclude Include="..\..\include\tbb\blocked_range3d.h"/>
+		<ClInclude Include="..\..\include\tbb\cache_aligned_allocator.h"/>
+		<ClInclude Include="..\..\include\tbb\combinable.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_hash_map.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_queue.h"/>
+		<ClInclude Include="..\..\include\tbb\concurrent_vector.h"/>
+		<ClInclude Include="..\..\include\tbb\critical_section.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\Customize.h"/>
+		<ClInclude Include="..\..\include\tbb\enumerable_thread_specific.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\LifoList.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\MapMemory.h"/>
+		<ClInclude Include="..\..\include\tbb\mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\null_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\null_rw_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_do.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_for.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_for_each.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_invoke.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_reduce.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_scan.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_sort.h"/>
+		<ClInclude Include="..\..\include\tbb\parallel_while.h"/>
+		<ClInclude Include="..\..\include\tbb\partitioner.h"/>
+		<ClInclude Include="..\..\include\tbb\pipeline.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\proxy.h"/>
+		<ClInclude Include="..\..\include\tbb\queuing_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\queuing_rw_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\recursive_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\scalable_allocator.h"/>
+		<ClInclude Include="..\..\include\tbb\spin_mutex.h"/>
+		<ClInclude Include="..\..\include\tbb\spin_rw_mutex.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\Statistics.h"/>
+		<ClInclude Include="..\..\include\tbb\task.h"/>
+		<ClInclude Include="..\..\include\tbb\task_group.h"/>
+		<ClInclude Include="..\..\include\tbb\task_scheduler_init.h"/>
+		<ClInclude Include="..\..\include\tbb\task_scheduler_observer.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_allocator.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_config.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_exception.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\tbb_function_replacement.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_machine.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_profiling.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_stddef.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_thread.h"/>
+		<ClInclude Include="..\..\include\tbb\tbb_version.h"/>
+		<ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h"/>
+		<ClInclude Include="..\..\include\tbb\tick_count.h"/>
+		<ClInclude Include="..\..\src\tbbmalloc\TypeDefinitions.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\windows_ia32.h"/>
+		<ClInclude Include="..\..\include\tbb\machine\windows_intel64.h"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\tbbmalloc\tbbmalloc.rc">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+		</ResourceCompile>
+	</ItemGroup>
+	<ItemGroup>
+		<ProjectReference Include="tbb.vcxproj">
+			<Project>{f62787dd-1327-448b-9818-030062bcfaa5}</Project>
+			<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+		</ProjectReference>
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
+	<ImportGroup Label="ExtensionTargets">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
+	</ImportGroup>
+</Project>
diff --git a/build/vs2010/tbbmalloc_proxy.vcxproj b/build/vs2010/tbbmalloc_proxy.vcxproj
index 621e67e..6462df2 100644
--- a/build/vs2010/tbbmalloc_proxy.vcxproj
+++ b/build/vs2010/tbbmalloc_proxy.vcxproj
@@ -1,421 +1,421 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug-MT|Win32">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug-MT|x64">
-      <Configuration>Debug-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|Win32">
-      <Configuration>Release-MT</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release-MT|x64">
-      <Configuration>Release-MT</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}</ProjectGuid>
-    <RootNamespace>tbbmalloc_proxy</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
-    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
-    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>false</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO   %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>false</MinimalRebuild>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ShowIncludes>false</ShowIncludes>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
-    <ClCompile>
-      <AdditionalOptions> /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO   %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <AdditionalOptions> /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /WX /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
-      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <ExceptionHandling>
-      </ExceptionHandling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <BufferSecurityCheck>false</BufferSecurityCheck>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level4</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
-      <OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\tbbmalloc\tbb_function_replacement.h" />
-    <ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\src\tbbmalloc\tbbmalloc.rc">
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
-    </ResourceCompile>
-    <ClCompile Include="..\..\src\tbbmalloc\proxy.cpp" />
-    <ClCompile Include="..\..\src\tbbmalloc\tbb_function_replacement.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="tbbmalloc.vcxproj">
-      <Project>{b15f131e-328a-4d42-adc2-9ff4ca6306d8}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+	<ItemGroup Label="ProjectConfigurations">
+		<ProjectConfiguration Include="Debug-MT|Win32">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug-MT|x64">
+			<Configuration>Debug-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|Win32">
+			<Configuration>Debug</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Debug|x64">
+			<Configuration>Debug</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|Win32">
+			<Configuration>Release-MT</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release-MT|x64">
+			<Configuration>Release-MT</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|Win32">
+			<Configuration>Release</Configuration>
+			<Platform>Win32</Platform>
+		</ProjectConfiguration>
+		<ProjectConfiguration Include="Release|x64">
+			<Configuration>Release</Configuration>
+			<Platform>x64</Platform>
+		</ProjectConfiguration>
+	</ItemGroup>
+	<PropertyGroup Label="Globals">
+		<ProjectGuid>{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}</ProjectGuid>
+		<RootNamespace>tbbmalloc_proxy</RootNamespace>
+		<Keyword>Win32Proj</Keyword>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+		<WholeProgramOptimization>true</WholeProgramOptimization>
+	</PropertyGroup>
+	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+		<ConfigurationType>DynamicLibrary</ConfigurationType>
+		<CharacterSet>NotSet</CharacterSet>
+	</PropertyGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
+	<ImportGroup Label="ExtensionSettings">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+		<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform"/>
+	</ImportGroup>
+	<PropertyGroup Label="UserMacros"/>
+	<PropertyGroup>
+		<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">$(SolutionDir)ia32\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">false</LinkIncremental>
+		<OutDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</OutDir>
+		<IntDir Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">$(SolutionDir)intel64\$(Configuration)\</IntDir>
+		<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">false</LinkIncremental>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"/>
+		<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+		<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'"/>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectName)_debug</TargetName>
+		<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">$(ProjectName)_debug</TargetName>
+	</PropertyGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<ExceptionHandling>Sync</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<MinimalRebuild>false</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO   %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<MinimalRebuild>true</MinimalRebuild>
+			<ExceptionHandling>Sync</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO  %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<Optimization>Disabled</Optimization>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<MinimalRebuild>false</MinimalRebuild>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<BasicRuntimeChecks>Default</BasicRuntimeChecks>
+			<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+			<ShowIncludes>false</ShowIncludes>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy_debug.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">
+		<ClCompile>
+			<AdditionalOptions> /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO   %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX86</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">
+		<Midl>
+			<TargetEnvironment>X64</TargetEnvironment>
+		</Midl>
+		<ClCompile>
+			<AdditionalOptions> /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc</AdditionalOptions>
+			<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+			<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+			<ExceptionHandling>
+			</ExceptionHandling>
+			<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+			<BufferSecurityCheck>false</BufferSecurityCheck>
+			<PrecompiledHeader>
+			</PrecompiledHeader>
+			<WarningLevel>Level4</WarningLevel>
+			<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+		</ClCompile>
+		<Link>
+			<AdditionalOptions>/nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions)</AdditionalOptions>
+			<OutputFile>$(OutDir)tbbmalloc_proxy.dll</OutputFile>
+			<GenerateDebugInformation>true</GenerateDebugInformation>
+			<SubSystem>Windows</SubSystem>
+			<OptimizeReferences>true</OptimizeReferences>
+			<EnableCOMDATFolding>true</EnableCOMDATFolding>
+			<RandomizedBaseAddress>false</RandomizedBaseAddress>
+			<DataExecutionPrevention>
+			</DataExecutionPrevention>
+			<TargetMachine>MachineX64</TargetMachine>
+		</Link>
+	</ItemDefinitionGroup>
+	<ItemGroup>
+	</ItemGroup>
+	<ItemGroup>
+		<ClInclude Include="..\..\src\tbbmalloc\tbb_function_replacement.h"/>
+		<ClInclude Include="..\..\include\tbb\tbbmalloc_proxy.h"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ResourceCompile Include="..\..\src\tbbmalloc\tbbmalloc.rc">
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release-MT|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+			<AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">/I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions)</AdditionalOptions>
+		</ResourceCompile>
+		<ClCompile Include="..\..\src\tbbmalloc\proxy.cpp"/>
+		<ClCompile Include="..\..\src\tbbmalloc\tbb_function_replacement.cpp"/>
+	</ItemGroup>
+	<ItemGroup>
+		<ProjectReference Include="tbbmalloc.vcxproj">
+			<Project>{b15f131e-328a-4d42-adc2-9ff4ca6306d8}</Project>
+			<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+		</ProjectReference>
+	</ItemGroup>
+	<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
+	<ImportGroup Label="ExtensionTargets">
+		<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets"/>
+	</ImportGroup>
+</Project>
diff --git a/build/windows.cl.inc b/build/windows.cl.inc
index 4b28e04..b7f6036 100644
--- a/build/windows.cl.inc
+++ b/build/windows.cl.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Define compiler-specific variables.
diff --git a/build/windows.gcc.inc b/build/windows.gcc.inc
index 8516f9d..2a6d000 100644
--- a/build/windows.gcc.inc
+++ b/build/windows.gcc.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Overriding settings from windows.inc
@@ -68,7 +60,7 @@ PIC_KEY =
 WARNING_AS_ERROR_KEY = -Werror
 WARNING_KEY = -Wall
 TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wno-uninitialized
-WARNING_SUPPRESS = -Wno-parentheses -Wno-uninitialized
+WARNING_SUPPRESS = -Wno-parentheses -Wno-uninitialized -Wno-non-virtual-dtor
 DYLIB_KEY = -shared
 LIBDL =
 EXPORT_KEY = -Wl,--version-script,
@@ -87,8 +79,13 @@ ifeq (ok,$(call detect_js,/minversion gcc 4.4))
     CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X
 endif
 
+# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them
+ifeq (ok,$(call detect_js,/minversion gcc 4.8))
+    RTM_KEY = -mrtm
+endif
+
 ifeq ($(cfg), release)
-        CPLUS_FLAGS = -O2
+        CPLUS_FLAGS = -g -O2
 endif
 ifeq ($(cfg), debug)
         CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG
@@ -109,12 +106,12 @@ debugger = gdb
 C_FLAGS = $(CPLUS_FLAGS)
 
 ifeq (intel64,$(arch))
-    CPLUS_FLAGS += -m64
+    CPLUS_FLAGS += -m64 $(RTM_KEY)
     LIB_LINK_FLAGS += -m64
 endif
 
 ifeq (ia32,$(arch))
-    CPLUS_FLAGS += -m32 -march=i686
+    CPLUS_FLAGS += -m32 -march=i686 $(RTM_KEY)
     LIB_LINK_FLAGS += -m32
 endif
 
diff --git a/build/windows.icl.inc b/build/windows.icl.inc
index 30137a1..d5047d4 100644
--- a/build/windows.icl.inc
+++ b/build/windows.icl.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Define compiler-specific variables.
diff --git a/build/windows.inc b/build/windows.inc
index e7d469f..3f81f1f 100644
--- a/build/windows.inc
+++ b/build/windows.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 export SHELL = cmd
 
diff --git a/build/xbox360.cl.inc b/build/xbox360.cl.inc
index aa7a931..8cd0bc1 100644
--- a/build/xbox360.cl.inc
+++ b/build/xbox360.cl.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 #------------------------------------------------------------------------------
 # Define compiler-specific variables.
diff --git a/build/xbox360.inc b/build/xbox360.inc
index 321ec63..f3573d6 100644
--- a/build/xbox360.inc
+++ b/build/xbox360.inc
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 ifdef tbb_build_dir
   test_dir:=$(tbb_build_dir)
diff --git a/doc/Release_Notes.txt b/doc/Release_Notes.txt
index 7190c0d..b37d7ed 100644
--- a/doc/Release_Notes.txt
+++ b/doc/Release_Notes.txt
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 Intel(R) Threading Building Blocks - Release Notes
-		  Version 4.2
+                   Version 4.3
 ------------------------------------------------------------------------
 
 
@@ -23,14 +23,14 @@ and compilers listed here.
 Hardware - Recommended
 
     Microsoft* Windows* Systems
-	Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor
-	    or higher
+        Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor
+            or higher
     Linux* Systems
-	Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor
-	    or higher
-	Intel(R) Xeon Phi(TM) coprocessor
+        Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor
+            or higher
+        Intel(R) Xeon Phi(TM) coprocessor
     OS X* Systems
-	Intel(R) Core(TM) 2 Duo processor or higher
+        Intel(R) Core(TM) 2 Duo processor or higher
 
 Hardware - Supported
 
@@ -45,36 +45,39 @@ Software - Minimum Requirements
 
 Software - Recommended
 
-    Intel(R) Parallel Studio XE 2011 and higher
-    Intel(R) Parallel Studio 2011 and higher
+    Intel(R) Parallel Studio XE 2013 SP1
+    Intel(R) Parallel Studio XE 2015 Professional Edition
 
 Software - Supported Operating Systems
 
     Systems with Microsoft* Windows* operating systems
-	Microsoft* Windows* 8, 8.1
-	Microsoft* Windows* 7 SP1
-	Microsoft* Windows* Server 2012
-	Microsoft* Windows* Server 2008 SP2
-	Microsoft* Windows* Server 2008 R2 SP1
-	Microsoft* Windows* XP Professional SP3
+        Microsoft* Windows* 8, 8.1
+        Microsoft* Windows* 7 SP1
+        Microsoft* Windows* Server 2012
+        Microsoft* Windows* Server 2008 SP2 (IA-32 only)
+        Microsoft* Windows* Server 2008 R2 SP1
+        Microsoft* Windows* HPC Server 2008
     Systems with Linux* operating systems
-	Red Hat* Enterprise Linux* 5, 6
-	Fedora* 18, 19
-	Debian* 6.0, 7
-	Ubuntu* 12.04, 13.04
-	SuSE* Linux* Enterprise Server 10, 11SP2
-	Intel(R) Cluster Ready
+        Red Hat* Enterprise Linux* 5, 6, 7
+        Fedora* 20
+        Debian* 6.0, 7
+        Ubuntu* 12.04 LTS, 14.04 LTS
+        Ubuntu* 13.10
+        SuSE* Linux* Enterprise Server 11
+        Intel(R) Cluster Ready
     Systems with OS X* operating systems
-	OS X* 10.8 or higher
+        OS X* 10.9 and higher
 
 Software - Supported Compilers
 
-    Intel(R) C++ Composer XE 2011 SP1 and higher
-    Microsoft* Visual Studio* 2008 and higher (Windows* OS only)
+    Intel(R) C++ Compiler 13.1 (Intel(R) Parallel Studio XE 2013 SP1)
+        and higher
+    Microsoft* Visual C++ 10.0 (Microsoft* Visual Studio* 2010,
+        Windows* OS only) and higher
     For each supported Linux* operating system, the standard gcc
-	version provided with that operating system is supported,
-	including gcc 4.1 through 4.7
-    Xcode* 4.4.1 and higher and command line tools (OS X* only)
+        version provided with that operating system is supported,
+        including gcc 4.1 through 4.8.2
+    Xcode* 5.0 and higher and command line tools (OS X* only)
 
 
 Known Issues
@@ -84,61 +87,64 @@ Please note the following with respect to this particular release of
 Intel(R) Threading Building Blocks.
 
 Library Issues
-    - If Intel TBB is used together with Intel C++ Compiler 12.1 and 
-	the standard C++ library from GCC 4.4, compilation in C++11 mode 
-	(-std=c++0x) may fail with an error saying 'namespace "std" has 
-	no member "exception_ptr"'. To overcome the problem, include an 
-	Intel TBB header (e.g. tbb_stddef.h) before any standard 
-	library headers.
-
-    - If an application is built for Microsoft* Windows* XP Professional
-	or similar the _WIN32_WINNT macro must be set manually to 0x0501
-	in order to limit the usage of modern API that is available on 
-	newer operating systems.
 
     - If an application uses static version of MSVCRT libraries or uses
-	Intel TBB DLL built with static MSVCRT (vc_mt variant), and throws
-	an exception from a functor passed to task_group::run_and_wait(),
-	the exception will not be intercepted by Intel TBB and will not result
-	in cancellation of the task_group. For a workaround, catch the
-	exception in the functor and explicitly cancel the task_group.
+        Intel TBB DLL built with static MSVCRT (vc_mt variant), and throws
+        an exception from a functor passed to task_group::run_and_wait(),
+        the exception will not be intercepted by Intel TBB and will not
+        result in cancellation of the task_group. For a workaround, catch
+        the exception in the functor and explicitly cancel the task_group.
 
-    - If an application uses debug version of Intel TBB DLL built with static 
-	MSVCRT (vc_mt variant), Microsoft* Visual C++ debug library 10.0 
-	(msvcp100d.dll) is required to be available on the system to run 
-	an application.
+    - The debug version of Intel TBB DLL built with static MSVCRT
+        (vc_mt/tbb_debug.dll) additionally requires
+        Microsoft* Visual C++ 10.0 debug library (msvcp100d.dll) in order
+        to run.
 
     - If you are using Intel(R) Threading Building Blocks and OpenMP*
-	constructs mixed together in rapid succession in the same
-	program, and you are using Intel(R) compilers for your OpenMP*
-	code, set KMP_BLOCKTIME to a small value (e.g., 20 milliseconds)
-	to improve performance.  This setting can also be made within
-	your OpenMP* code via the kmp_set_blocktime() library call.  See
-	the Intel(R) compiler OpenMP* documentation for more details on
-	KMP_BLOCKTIME and kmp_set_blocktime().
+        constructs mixed together in rapid succession in the same
+        program, and you are using Intel(R) compilers for your OpenMP*
+        code, set KMP_BLOCKTIME to a small value (e.g., 20 milliseconds)
+        to improve performance.  This setting can also be made within
+        your OpenMP* code via the kmp_set_blocktime() library call.  See
+        the Intel(R) compiler OpenMP* documentation for more details on
+        KMP_BLOCKTIME and kmp_set_blocktime().
 
     - In general, non-debug ("release") builds of applications or
-	examples should link against the non-debug versions of the
-	Intel(R) Threading Building Blocks libraries, and debug builds
-	should link against the debug versions of these libraries.  On
-	Windows* OS, compile with /MD and use Intel(R) Threading
-	Building Blocks release libraries, or compile with /MDd and use
-	debug libraries; not doing so may cause run-time failures.  See
-	the Tutorial in the product "doc" sub-directory for more details
-	on debug vs. release libraries.
-
-    - If open source verion installed to the system folders like /usr/lib64
-	on Linux OS examples may fail to link because sometimes gcc
-	searches for folders in the different order than expected.
-	-L command line	linker option needs to be used to set the right
-	location. This does not affect a program execution.
+        examples should link against the non-debug versions of the
+        Intel(R) Threading Building Blocks libraries, and debug builds
+        should link against the debug versions of these libraries.  On
+        Windows* OS, compile with /MD and use Intel(R) Threading
+        Building Blocks release libraries, or compile with /MDd and use
+        debug libraries; not doing so may cause run-time failures.  See
+        the Tutorial in the product "doc" sub-directory for more details
+        on debug vs. release libraries.
+
+    - If an open source version installed to the system folders like
+        /usr/lib64 on Linux OS, examples may fail to link because sometimes
+        gcc searches for folders in unexpected order. To resolve this, use
+        the -L command line linker option needs to be used to set the right
+        location. This does not affect a program execution.
 
     - Running applications linked with Intel(R) Threading Building Blocks
         version 4.0 U5 or higher under Intel(R) Graphics Performance
         Analyzers is not supported.
 
+    - If an application that uses dynamic memory allocator replacement via
+        LD_PRELOAD is analyzed with Intel(R) VTune(TM) Amplifier XE for Linux,
+        the analysis may fail to start. For a workaround, either specify
+        the full path to both libtbbmalloc_proxy.so.2 and libtbbmalloc.so.2
+        in LD_PRELOAD, or set up a Intel(R) VTune(TM) Amplifier XE project
+        to use a shell script that sets LD_PRELOAD and starts the application.
+
+    - If your application includes tbb/enumerable_thread_specific.h (or
+        tbb/tbb.h) for offload execution on an Intel(R) Xeon Phi(TM)
+        coprocessor, you may see link issues related to libpthread. To resolve
+        this issue, add the /Qoffload-option,mic,compiler,"-pthread" compiler
+        switch to the command line on Windows* OS (or
+        -qoffload-option,mic,compiler,"-pthread" on Linux* OS).
+
 ------------------------------------------------------------------------
-Copyright (C) 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright (C) 2005-2015 Intel Corporation.  All Rights Reserved.
 
 Intel, Xeon and Pentium are registered trademarks or trademarks of
 Intel Corporation or its subsidiaries in the United States and other countries.
@@ -147,5 +153,5 @@ Intel Corporation or its subsidiaries in the United States and other countries.
 
 Third Party and Open Source Licenses
 
-Content of some examples or binaries may be covered by various open-source 
+Content of some examples or binaries may be covered by various open-source
 licenses. See the index.html file in each respective folder for details.
diff --git a/doc/help/NavScript.js b/doc/help/NavScript.js
deleted file mode 100755
index f5fa703..0000000
--- a/doc/help/NavScript.js
+++ /dev/null
@@ -1,58 +0,0 @@
-//*==============================================================================
-//*    Helpware NavScript.js 1.01
-//*      Copyright (c) 2008, Robert Chandler, The Helpware Group
-//*      http://helpware.net/FAR/
-//*      support at helpware.net
-//*    Descriptions:
-//*      Adds a Open Navigation link at page top if nav is currently not open
-//*       or inside a CHM.
-//*    Usage: Anyone may use and modify this file. If you modify it then
-//*       please change its name and acknowledge my work in your (c) statement.
-//*       Email me your changes if you think that others could benefit too.
-//*==============================================================================
-//*  10-June-2008: 1.00 RWC - Original Version
-//*  11-July-2008: 1.01 RWC - Now detects if inside CHM Help file. IsInsideChm()
-//*
-
-function GetTest() {
-   alert( window.location );
-}
-
-function WriteOpenNavLink(navLink) {
-  var ss = '<div style="font-family: Verdana; font-size: 80%;color: #333333; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">'
-          +'<a href="'+navLink+'" style="padding:0px 5px 0px 5px;">< Table Of Contents</a>'
-          +'</div>';
-  document.write(ss);
-}
-
-function IsNavOpen() {
-  if ((top.right == null) || (top.right == undefined) || (top.right.location == null) || (top.right.location == undefined) || (typeof(top.right.location.href) != "string") || (top.right.location.href == ""))
-    return false;  //no nav found
-  else
-    return true;  //nav found
-}
-
-function IsInsideChm() {   //returns true if current file is inside a CHM Help File
-  var ra = /::/;
-  return (location.href.search(ra) > 0); //If found then then we are in a CHM
-  }
-
-// pass in the directory level. 0 = if this HTML is same level as hh_goto.hh; 1 = of one level down etc
-function WriteNavLink(aDirLevel) {
-  if ((!IsNavOpen()) && (!IsInsideChm()))
-  {
-    var prefix = "";
-    for (var n=0; n < aDirLevel; n++)
-      prefix = prefix + "../";
-
-    //find last back slash in path
-    var x = location.href.lastIndexOf("/");       // get last splash of "path/dir/name.htm"
-    for (var n=0; n < aDirLevel; n++)
-      x = location.href.lastIndexOf("/", x-1);    // get 2nd last slash etc
-    var curFileName = location.href.substr(x+1);
-
-    var navLink = prefix + "hh_goto.htm#" + curFileName
-    WriteOpenNavLink(navLink);
-  }
-}
-
diff --git a/doc/help/Resources/NavScript.js b/doc/help/Resources/NavScript.js
deleted file mode 100755
index 699c54d..0000000
--- a/doc/help/Resources/NavScript.js
+++ /dev/null
@@ -1,61 +0,0 @@
-//*==============================================================================
-//*    Helpware NavScript.js 1.01
-//*      Copyright (c) 2008, Robert Chandler, The Helpware Group
-//*      http://helpware.net/FAR/
-//*      support at helpware.net
-//*    Descriptions:
-//*      Adds a Open Navigation link at page top if nav is currently not open
-//*       or inside a CHM.
-//*    Usage: Anyone may use and modify this file. If you modify it then
-//*       please change its name and acknowledge my work in your (c) statement.
-//*       Email me your changes if you think that others could benefit too.
-//*==============================================================================
-//*  10-June-2008: 1.00 RWC - Original Version
-//*  11-July-2008: 1.01 RWC - Now detects if inside CHM Help file. IsInsideChm()
-//*
-
-function GetTest() {
-   alert( window.location );
-}
-
-function WriteOpenNavLink(navLink) {
-  var ss = '<div style="font-family: Verdana; font-size: 80%;color: #333333; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px;">'
-          +'<a href="'+navLink+'" style="padding:0px 5px 0px 5px;">< Table Of Contents</a>'
-          +'</div>';
-  document.write(ss);
-}
-
-function IsNavOpen() {
-  if ((top.right == null) || (top.right == undefined) || (top.right.location == null) || (top.right.location == undefined) || (typeof(top.right.location.href) != "string") || (top.right.location.href == ""))
-    return false;  //no nav found
-  else
-    return true;  //nav found
-}
-
-function IsInsideChm() {   //returns true if current file is inside a CHM Help File
-  var ra = /::/;
-  return (location.href.search(ra) > 0); //If found then then we are in a CHM
-  }
-
-// pass in the directory level. 0 = if this HTML is same level as hh_goto.hh; 1 = of one level down etc
-function WriteNavLink(aDirLevel) {
-  if ((!IsNavOpen()) && (!IsInsideChm()))
-  {
-    var prefix = "";
-    for (var n=0; n < aDirLevel; n++)
-      prefix = prefix + "../";
-
-    //find last back slash in path
-    var x = location.href.lastIndexOf("/");       // get last splash of "path/dir/name.htm"
-    for (var n=0; n < aDirLevel; n++)
-      x = location.href.lastIndexOf("/", x-1);    // get 2nd last slash etc
-    var curFileName = location.href.substr(x+1);
-
-    var navLink = prefix + "hh_goto.htm#" + curFileName
-    WriteOpenNavLink(navLink);
-  }
-}
-
-
-
-
diff --git a/doc/help/Resources/ssgid_scripts.js b/doc/help/Resources/ssgid_scripts.js
deleted file mode 100755
index dffec08..0000000
--- a/doc/help/Resources/ssgid_scripts.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var popupWindow = null;
-function popUp(URL) {
-    popupWindow = window.open(URL,'name','titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=550,width=500');
-  
-   if(popupWindow && window.focus) {
-      popupWindow.focus();
-    }
-
-    var el = window.event;
-    el.returnValue = false;
-    el.cancelBubble = true;
-}
-var day = null;
-var id = null;
-function TestpopUp(URL) {
-day = new Date();
-id = day.getTime();
-eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=500,height=550,left = 470');");
-}
diff --git a/doc/help/delta.gif b/doc/help/delta.gif
deleted file mode 100755
index 30f2959..0000000
Binary files a/doc/help/delta.gif and /dev/null differ
diff --git a/doc/help/deltaend.gif b/doc/help/deltaend.gif
deleted file mode 100755
index 55e32fb..0000000
Binary files a/doc/help/deltaend.gif and /dev/null differ
diff --git a/doc/help/hh_goto.htm b/doc/help/hh_goto.htm
deleted file mode 100755
index 3825ceb..0000000
--- a/doc/help/hh_goto.htm
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<!-- saved from url=(0014)about:internet -->
-<html>
-<head>
-  <title>Redirect Page</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
-<script type="text/javascript">
-<!--
-  var Param = window.location.hash.substring(1);
-  var URL="index.htm";
-  if (Param != "")
-    URL = URL + "#" + Param;
-  window.location.replace(URL);
-//-->
-</script>
-
-<style type="text/css">
-body { font-family: Verdana; }
-</style>
-
-</head>
-<body>
-
-<h3>Page Loader</h3>
-
-<p>If there is a security warning at the top of the page please click it and select "Allow blocked content".</p>
-
-<p>If redirection does not occur click this link:
-<script type="text/javascript">
-<!--
-  document.write('<a href="'+ URL +'">'+ URL +'</a>')
-//-->
-</script>
-</p>
-
-</body>
-</html>
-
diff --git a/doc/help/hh_index.htm b/doc/help/hh_index.htm
deleted file mode 100755
index 63ae842..0000000
--- a/doc/help/hh_index.htm
+++ /dev/null
@@ -1,531 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<!-- saved from url=(0014)about:internet -->
-<html>
-<head>
-  <script type="text/javascript">
-  <!--
-
-  if (parent.location.href == self.location.href)
-    window.location.href = "index.htm#+hh_index.htm";
-
-  function CloseNav() {
-    if ((top.right.location == null) || (top.right.location == undefined) || (typeof(top.right.location.href) != "string") || (top.right.location.href == ""))
-      top.location="main/title.htm";
-    else
-      top.location=top.right.location;
-  }
-  function IndexListOnChange() { //Listbox select -> Put selected text into Entry field
-    var iSelect = document.getElementById("indexcontainer").selectedIndex;
-    var text = document.getElementById("indexcontainer").item(iSelect).text;
-    //Remove leading spaces -     %A0 -- Finding it hard to remove Non-breaking space. JScript does not see %A0 as White space
-    text = escape(text);    text = text.replace(/^(%A0)+/g, "");
-    text = unescape(text);  text = text.replace(/^\s+/g, "");
-    document.getElementById("IndexEntry").value = text;
-  }
-  function IndexEntryOnKeyUp() { //text typed -> select closest listbox entry 
-    var oList = document.getElementById("indexcontainer"); 
-    var ListLen = oList.length; 
-    var iCurSel = oList.selectedIndex; 
-    var text = document.getElementById("IndexEntry").value.toUpperCase(); 
-    var TextLen = text.length; 
-    for (var i = 0; i < ListLen; i++) { 
-      var listitem = oList.item(i).text.substr(0, TextLen).toUpperCase(); 
-      if (listitem == text) { 
-        if (i != iCurSel) { 
-          var iPos = i + oList.size - 1; 
-          if(ListLen > iPos) 
-            oList.selectedIndex = iPos; 
-          else 
-            oList.selectedIndex = ListLen-1; 
-          oList.selectedIndex = i; 
-        } 
-        break; 
-      } 
-    } 
-    return(true); //do not gobble keypress 
-  } 
-  function OpenSelected() {  //open selected list item
-    var iSelect = document.getElementById("indexcontainer").selectedIndex;
-    if (iSelect >= 0) {
-      var URL = document.getElementById("indexcontainer").item(iSelect).value;
-      if (URL.length > 0) top.right.location = URL;  //right pane has name "right"
-    }
-  }
-  function KeyDownEvent(event) {
-    if ((event.which && event.which==13) || (event.keyCode && event.keyCode==13)) {
-      OpenSelected();
-      IndexListOnChange();  //update entry field to list box selected text
-      return(false);        //gobble text
-      } else return(true);
-  }
-
-  function GetFrameWidth() { 
-    var x = 300; 
-    if (self.innerHeight) // all except Explorer 
-	x = self.innerWidth; 
-    else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode 
-	x = document.documentElement.clientWidth; 
-    else if (document.body) // other Explorers 
-	x = document.body.clientWidth; 
-    return(x); 
-  } 
-
-  function GetFrameHeight() { 
-    var y = 400; 
-    if (self.innerHeight) // all except Explorer 
-      y = self.innerHeight; 
-    else if (document.documentElement && document.documentElement.clientWidth) // Explorer 6 Strict Mode 
-      y = document.documentElement.clientHeight; 
-    else if (document.body) // other Explorers 
-      y = document.body.clientHeight; 
-    return(y); 
-  } 
-
-  function resizeIndex() {
-    var indexDiv = document.getElementById("indexcontainer");
-    var xTop = indexDiv.offsetTop;
-    var DivFooter = document.getElementById("DivFooter");
-    if ((DivFooter != null) && (DivFooter != undefined))
-        xTop = xTop + DivFooter.offsetHeight;
-
-    var WW = GetFrameWidth() - 10; //working with 5px each side 
-    indexDiv.style.width = WW.toString() + "px"; 
-    var HH = GetFrameHeight() -  xTop; 
-    if (HH > 0) 
-      indexDiv.style.height = HH.toString() + "px"; 
-  }
-  function OnLoadCode() {
-    window.onresize=resizeIndex;
-    resizeIndex();
-  }
-  -->
-  </script>
-
-
-<title>Index</title>
-<meta http-equiv="content-type" content="text/html; charset=utf-8">
-
-  <style type="text/css">
-  .docstyle
-  {
-    font-size: 80%;
-    font-family: arial,verdana,sans-serif;
-  }
-  </style>
-
-</head>
-
-<body id="docBody" style="color: Black; margin: 5px 0px 0px 0px;" onload="OnLoadCode()">
-
-
-<div style="display: inline; white-space: nowrap; margin: 0px 0px 0px 5px;">
-<input
- TYPE="button" VALUE="Contents" ONCLICK="javascript:location='hh_toc.htm';"
- NAME="HelpTopics"><input
- TYPE="button" VALUE="Index" ONCLICK="javascript:location='hh_index.htm';"
- NAME="Index"><input
- TYPE="button" VALUE="Search" ONCLICK="javascript:location='hh_search.htm';"
- NAME="Search">
-</div>
-
-
-  <div style="margin: 11px 0px 0px 0px; padding: 0px 5px 0px 5px;">
-     <input type="text" id="IndexEntry" class="docstyle"
-       style="width:100%;"
-       onkeydown="javascript:return(KeyDownEvent(event));"
-       onkeyup="javascript:return(IndexEntryOnKeyUp());">
-  </div>
-
-<div style="margin: 5px 0px 0px 0px; padding: 0px 5px 0px 5px;">
-<select id="indexcontainer" name="IndexListbox" class="docstyle"
-  style="width:200; height:200;"
-  size="500"
-  onchange="javascript:IndexListOnChange();"
-  onclick="javascript:OpenSelected();return(true);"
-  onkeydown="javascript:return(KeyDownEvent(event));">
-<option value="reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm">~task_scheduler_init</option>
-<option value="reference/containers_overview/concurrent_vector/access.htm">Access</option>
-<option value="tbb_userguide/Advanced_Example.htm">Advanced 			 Example</option>
-<option value="tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm">Advanced Idiom: Waiting on an 			 Element</option>
-<option value="tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm">Advanced Topic: Other Kinds of Iteration 			 Spaces</option>
-<option value="reference/task_scheduler/affinity.htm">Affinity</option>
-<option value="reference/algorithms/partitioners/affinity_partitioner.htm">affinity_partitioner</option>
-<option value="tbb_userguide/Design_Patterns/Agglomeration.htm">Agglomeration</option>
-<option value="reference/appendices/community_preview_features/aggregator_cls.htm">aggregator Class</option>
-<option value="reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm">aggregator Class Basic Interface</option>
-<option value="reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm">aggregator Class Expert Interface</option>
-<option value="reference/algorithms.htm">Algorithms</option>
-<option value="reference/memory_allocation/aligned_space_cls.htm">aligned 			 space</option>
-<option value="">allocator</option>
-<option value="reference/memory_allocation/scalable_allocator_cls.htm">   scalable_allocator Template Class</option>
-<option value="reference/memory_allocation/zero_allocator.htm">   zero_allocator</option>
-<option value="reference/memory_allocation/aligned_space_cls.htm">   aligned_space Template Class</option>
-<option value="reference/memory_allocation/tbb_allocator_cls.htm">   tbb_allocator Template Class</option>
-<option value="reference/memory_allocation/cache_aligned_allocator_cls.htm">   cache_aligned_allocator Template Class</option>
-<option value="reference/environment/version_information.htm">ALLOCATOR</option>
-<option value="reference/memory_allocation/allocator_concept.htm">Allocator Concept</option>
-<option value="tbb_userguide/appendix_A.htm">Appendix A Costs of Time 			 Slicing</option>
-<option value="tbb_userguide/appendix_B.htm">Appendix B Mixing With Other Threading Packages</option>
-<option value="tbb_userguide/Atomic_Operations.htm">Atomic 			 Operations</option>
-<option value="reference/synchronization/atomic_cls.htm">atomic Template 			 Class</option>
-<option value="tbb_userguide/Why_atomic_T_Has_No_Constructors.htm">atomic<T> 			 constructors</option>
-<option value="reference/algorithms/partitioners/auto_partitioner_cls.htm">auto_partitioner 			 Class</option>
-<option value="tbb_userguide/Automatic_Chunking.htm">Automatic 			 Chunking</option>
-<option value="tbb_userguide/Automically_Replacing_malloc.htm">Automatically Replacing malloc and Other C/C++ 			 Functions for Dynamic Memory Allocation</option>
-<option value="tbb_userguide/Bandwidth_and_Cache_Affinity.htm">Bandwidth and Cache 			 Affinity</option>
-<option value="main/Benefits.htm">Benefits</option>
-<option value="reference/algorithms/range_concept/blocked_range_cls.htm">blocked_range Template 			 Class</option>
-<option value="reference/algorithms/range_concept/blocked_range2d_cls.htm">blocked_range2d Template 			 Class</option>
-<option value="reference/algorithms/range_concept/blocked_range3d_cls.htm">blocked_range3d Template Class</option>
-<option value="reference/flow_graph/body_objects.htm">Body Objects</option>
-<option value="reference/flow_graph/broadcast_node_cls.htm">broadcast_node Template 			 Class</option>
-<option value="">Bucket 			 Interface</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm">   Bucket Interface</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm">   Bucket Interface</option>
-<option value="reference/flow_graph/buffer_node_cls.htm">buffer_node Class</option>
-<option value="reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm">C Interface to Scalable 			 Allocator</option>
-<option value="reference/environment/feature_macros.htm">C++11 			 Support</option>
-<option value="reference/synchronization/c_11_synchronization.htm">C++11 Synchronization</option>
-<option value="reference/memory_allocation/cache_aligned_allocator_cls.htm">cache aligned allocator</option>
-<option value="reference/task_scheduler/cancellation.htm">Cancellation</option>
-<option value="tbb_userguide/Cancellation_and_Nested_Parallelism.htm">Cancellation and Nested 			 Parallelism</option>
-<option value="tbb_userguide/Cancellation_Without_An_Exception.htm">Cancellation Without An 			 Exception</option>
-<option value="">Capacity</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm">   Capacity</option>
-<option value="reference/containers_overview/concurrent_vector/capacity_vector.htm">   Capacity</option>
-<option value="reference/exceptions/captured_exception.htm">captured_exception</option>
-<option value="reference/task_scheduler/catalog_of_recommended_task_patterns.htm">Catalog of Recommended task Patterns</option>
-<option value="reference/thread_local_storage/combinable_cls.htm">combinable Template 			 Class</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm">Combining</option>
-<option value="reference/appendices/community_preview_features.htm">Community Preview Features</option>
-<option value="tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm">Compare and Swap 			 Loop</option>
-<option value="reference/appendices.htm">compatibility</option>
-<option value="reference/appendices/compatibility_features.htm">Compatibility 			 Features</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm">Concurrent 			 Access</option>
-<option value="reference/containers_overview/concurrent_vector/concurrent_growth.htm">Concurrent 			 Growth</option>
-<option value="">Concurrent 			 Operations</option>
-<option value="reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm">   Concurrent Operations</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm">   Concurrent Operations</option>
-<option value="tbb_userguide/Concurrent_Queue_Classes.htm">Concurrent Queue Classes</option>
-<option value="reference/containers_overview/concurrent_bounded_queue_cls.htm">concurrent_bounded_queue Template 			 Class</option>
-<option value="tbb_userguide/concurrent_hash_map.htm">concurrent_hash_map</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template 			 Class</option>
-<option value="reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm">concurrent_lru_cache Template 			 Class</option>
-<option value="reference/containers_overview/concurrent_priority_queue_cls.htm">concurrent_priority_queue Template 			 Class</option>
-<option value="reference/containers_overview/concurrent_queue_cls.htm">concurrent_queue Template 			 Class</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_multimap</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_multiset</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set</option>
-<option value="">concurrent_vector</option>
-<option value="tbb_userguide/concurrent_vector.htm">   concurrent_vector</option>
-<option value="reference/containers_overview/concurrent_vector.htm">   concurrent_vector</option>
-<option value="">Construct, Destroy, 			 Copy</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm">   Construct, Destroy, Copy</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm">   Construct, Destroy, Copy</option>
-<option value="reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm">Construction, Copy, and 			 Assignment</option>
-<option value="">constructors</option>
-<option value="tbb_userguide/Why_atomic_T_Has_No_Constructors.htm">   Why atomic<T> Has No Constructors in C++03 mode</option>
-<option value="tbb_userguide/Why_atomic_T_Has_No_Constructors.htm">   atomic<T></option>
-<option value="reference/containers_overview/container_range_concept.htm">Container Range 			 Concept</option>
-<option value="tbb_userguide/Containers.htm">Containers</option>
-<option value="tbb_userguide/Continuation_Passing.htm">Continuation 			 Passing</option>
-<option value="reference/flow_graph/continue_msg_cls.htm">continue_msg Class</option>
-<option value="reference/flow_graph/continue_node_cls.htm">continue_node Template 			 Class</option>
-<option value="reference/flow_graph/continue_receiver_cls.htm">continue_receiver 			 Class</option>
-<option value="tbb_userguide/Controlling_Chunking.htm">Controlling Chunking  		</option>
-<option value="tbb_userguide/Cook_Until_Done_parallel_do.htm">Cook Until Done: 			 parallel_do</option>
-<option value="reference/flow_graph/copy_body_func.htm">copy_body Template 			 Function</option>
-<option value="reference/synchronization/ppl_compatibility/critical_section.htm">critical_section</option>
-<option value="tbb_userguide/Debug_Versus_Release_Libraries.htm">Debug Versus Release 			 Libraries</option>
-<option value="reference/appendices/compatibility_features/debugging_macros.htm">Debugging Macros</option>
-<option value="reference/flow_graph/dependency_flow_graph_example.htm">Dependency Flow Graph 			 Example</option>
-<option value="tbb_userguide/Design_Patterns/Divide_and_Conquer.htm">Divide and Conquer</option>
-<option value="reference/environment/version_information.htm">DO_ITT_NOTIFY</option>
-<option value="tbb_userguide/Automically_Replacing_malloc.htm">dynamic memory 			 allocation</option>
-<option value="tbb_userguide/Design_Patterns/Elementwise.htm">Elementwise</option>
-<option value="tbb_userguide/Empty_Tasks.htm">Empty Tasks</option>
-<option value="reference/task_scheduler/empty_task_cls.htm">empty_task Class</option>
-<option value="reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm">Enabling a Community Preview Feature</option>
-<option value="reference/environment/enabling_debugging_features.htm">Enabling Debugging Features</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</option>
-<option value="reference/environment.htm">Environment</option>
-<option value="reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm">error_code load(char const * path[],int min_ver = 			 TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</option>
-<option value="reference/exceptions.htm">Exceptions</option>
-<option value="tbb_userguide/Exceptions_and_Cancellation.htm">Exceptions and 			 Cancellation</option>
-<option value="reference/task_scheduler/explicit_task_destruction.htm">Explicit task 			 Destruction</option>
-<option value="reference/environment/feature_macros.htm">Feature macros</option>
-<option value="tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm">Fenced Data 			 Transfer</option>
-<option value="reference/algorithms/pipeline_cls/filter_cls.htm">filter Class</option>
-<option value="reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm">fixed_pool Class</option>
-<option value="reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</option>
-<option value="">Flow Graph</option>
-<option value="reference/appendices/community_preview_features/flow_graph_features.htm">   Flow Graph</option>
-<option value="reference/flow_graph.htm">   Flow Graph</option>
-<option value="reference/algorithms/parallel_pipeline_func/flow_control_cls.htm">flow_control Class</option>
-<option value="reference/flow_graph/flow_tuple.htm">flow::tuple</option>
-<option value="reference/flow_graph/func_node_cls.htm">function_node Template 			 Class</option>
-<option value="tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm">General Acyclic Graphs of 			 Tasks</option>
-<option value="reference/general_conventions.htm">General Conventions</option>
-<option value="tbb_userguide/Design_Patterns/General_References.htm">General References</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm">Global 			 Functions</option>
-<option value="reference/flow_graph/graph_cls.htm">graph Class</option>
-<option value="reference/flow_graph/graph_node_cls.htm">graph_node Class</option>
-<option value="tbb_userguide/Design_Patterns/GUI_Thread.htm">GUI Thread</option>
-<option value="reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm">handle_object 			 class</option>
-<option value="">Hash 			 policy</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm">   Hash Policy</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm">   Hash Policy</option>
-<option value="main/help_support.htm">Help</option>
-<option value="tbb_userguide/How_Task_Scheduling_Works.htm">How Task Scheduling 			 Works</option>
-<option value="reference/general_conventions/identifiers.htm">Identifiers</option>
-<option value="tbb_userguide/Initializing_and_Terminating_the_Library.htm">Initializing and Terminating the 			 Library</option>
-<option value="reference/flow_graph/input_port_func.htm">input_port Template 			 Function</option>
-<option value="tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm">Integration Plug-In for Microsoft Visual Studio* Projects</option>
-<option value="">Intel® Thread Building Blocks  			</option>
-<option value="reference/introducing.htm">   Introducing Intel® Threading Building Blocks</option>
-<option value="main/introducing.htm">   Introducing Intel® Threading Building Blocks</option>
-<option value="">   Overview</option>
-<option value="reference/introducing.htm">      Introducing Intel® Threading Building Blocks</option>
-<option value="main/introducing.htm">      Introducing Intel® Threading Building Blocks</option>
-<option value="reference/appendices/compatibility_features/interface_for_concurrent_vector.htm">Interface for 			 concurrent_vector</option>
-<option value="reference/appendices/compatibility_features/interface_for_cls_task.htm">Interface for class 			 task</option>
-<option value="reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm">Interface for constructing a pipeline 			 filter</option>
-<option value="reference/task_groups/is_current_task_group_canceling_func.htm">is_current_task_group_canceling Function</option>
-<option value="tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm">Iterating Over a Concurrent Queue for Debugging</option>
-<option value="">Iterators</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm">   Iterators</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm">   Iterators</option>
-<option value="reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm">   Iterators</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm">   Iterators</option>
-<option value="reference/containers_overview/concurrent_vector/iterators_vector.htm">   Iterators</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm">   Iterators</option>
-<option value="reference/flow_graph/join_node_cls.htm">join_node Template 			 Class</option>
-<option value="reference/appendices.htm">known issues</option>
-<option value="reference/appendices/known_issues.htm">Known Issues</option>
-<option value="tbb_userguide/Lambda_Expressions.htm">Lambda 			 Expressions</option>
-<option value="tbb_userguide/Design_Patterns/Lazy_Initialization.htm">Lazy 			 Initialization</option>
-<option value="reference/flow_graph/limiter_node_cls.htm">limiter_node Template 			 Class</option>
-<option value="tbb_userguide/Linux_OS.htm">Linux* OS</option>
-<option value="tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm">Linux* OS C/C++ Dynamic Memory Interface Replacement</option>
-<option value="tbb_userguide/Design_Patterns/Local_Serializer.htm">Local Serializer</option>
-<option value="tbb_userguide/Lock_Pathologies.htm">Lock 			 Pathologies</option>
-<option value="reference/synchronization/mutexes/hardware_transactional_locking.htm">Lock Elision</option>
-<option value="">Lookup</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm">   Lookup</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm">   Lookup</option>
-<option value="reference/flow_graph/make_edge_func.htm">make_edge Template Function</option>
-<option value="reference/task_groups/make_task_func.htm">make_task Template Function</option>
-<option value="tbb_userguide/Automically_Replacing_malloc.htm">malloc</option>
-<option value="tbb_userguide/Memory_Consistency.htm">Memory 			 Consistency</option>
-<option value="">Memory Allocation</option>
-<option value="reference/memory_allocation.htm">   Memory Allocation</option>
-<option value="tbb_userguide/Memory_Allocation.htm">   Memory Allocation</option>
-<option value="reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm">memory_pool Template 			 Class</option>
-<option value="reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm">memory_pool_allocator Template 			 Class</option>
-<option value="reference/flow_graph/message_flow_graph_example.htm">Message Flow Graph 			 Example</option>
-<option value="reference/flow_graph/message_passing_protocol.htm">Message Passing Protocol</option>
-<option value="tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm">Microsoft Visual Studio* Code 			 Examples</option>
-<option value="">Modifiers</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm">   Modifiers</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm">   Modifiers</option>
-<option value="tbb_userguide/More_on_HashCompare.htm">More on HashCompare</option>
-<option value="reference/exceptions/movable_exception.htm">movable_exception</option>
-<option value="reference/flow_graph/multifunc_node_cls.htm">multifunction_node Template 			 Class</option>
-<option value="reference/synchronization/mutexes/mutex_concept.htm">Mutex 			 Concept</option>
-<option value="tbb_userguide/Mutex_Flavors.htm">Mutex 			 Flavors</option>
-<option value="reference/synchronization/mutexes.htm">Mutexes</option>
-<option value="tbb_userguide/Mutual_Exclusion.htm">Mutual 			 Exclusion</option>
-<option value="reference/general_conventions/namespaces.htm">Namespaces</option>
-<option value="tbb_userguide/Non-Linear_Pipelines.htm">Non-Linear Pipelines</option>
-<option value="tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm">Non-Preemptive 			 Priorities</option>
-<option value="main/notation.htm">Notation</option>
-<option value="reference/synchronization/mutexes/null_mutex_cls.htm">null_mutex Class</option>
-<option value="reference/synchronization/mutexes/null_rw_mutex_cls.htm">null_rw_mutex Class</option>
-<option value="">Observers</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm">   Observers</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm">   Observers</option>
-<option value="tbb_userguide/Design_Patterns/Odd-Even_Communication.htm">Odd-Even 			 Communication</option>
-<option value="tbb_userguide/Open_Source_Version.htm">Open Source 			 Version</option>
-<option value="reference/appendices/community_preview_features/flow_graph/or_node_cls.htm">or_node Template 			 Class</option>
-<option value="tbb_userguide/OS_X_Systems.htm">OS X* 			 Systems</option>
-<option value="reference/flow_graph/overwrite_node_cls.htm">overwrite_node Template 			 Class</option>
-<option value="tbb_userguide/Package_Contents.htm">Package 			 Contents</option>
-<option value="">Parallel 			 Iteration</option>
-<option value="reference/containers_overview/concurrent_vector/parallel_iteration.htm">   Parallel Iteration</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm">   Parallel Iteration</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm">   Parallel Iteration</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm">   Parallel Iteration</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm">   Parallel Iteration</option>
-<option value="reference/algorithms/parallel_deterministic_reduce_func.htm">parallel_ deterministic _reduce Template 			 Function</option>
-<option value="reference/algorithms/parallel_do_func.htm">parallel_do Template 			 Function</option>
-<option value="tbb_userguide/parallel_for.htm">parallel_for</option>
-<option value="reference/algorithms/parallel_for_func.htm">parallel_for Template Function</option>
-<option value="reference/algorithms/parallel_for_each_func.htm">parallel_for_each Template Function</option>
-<option value="reference/algorithms/parallel_invoke_func.htm">parallel_invoke Template Function</option>
-<option value="tbb_userguide/parallel_reduce.htm">parallel_reduce</option>
-<option value="reference/algorithms/parallel_reduce_func.htm">parallel_reduce Template Function</option>
-<option value="reference/algorithms/parallel_scan_func.htm">parallel_scan Template Function</option>
-<option value="reference/algorithms/parallel_sort_func.htm">parallel_sort Template Function</option>
-<option value="reference/appendices/compatibility_features/parallel_while_cls.htm">parallel_while Template 			 Class</option>
-<option value="tbb_userguide/Parallelizing_Complex_Loops.htm">Parallelizing Complex 			 Loops</option>
-<option value="tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple 			 Loops</option>
-<option value="tbb_userguide/Partitioner_Summary.htm">Partitioner 			 Summary</option>
-<option value="reference/algorithms/partitioners.htm">Partitioners</option>
-<option value="reference/algorithms/pipeline_cls.htm">pipeline Class</option>
-<option value="">PPL Compatibility</option>
-<option value="reference/synchronization/ppl_compatibility_synch.htm">   PPL Compatibility</option>
-<option value="reference/appendices/ppl_compatibility.htm">   PPL Compatibility</option>
-<option value="reference/flow_graph/primary_components.htm">Primary Components</option>
-<option value="reference/task_scheduler/priorities.htm">Priority</option>
-<option value="reference/flow_graph/priority_queue_node_cls.htm">priority_queue_node Template 			 Class</option>
-<option value="reference/flow_graph/queue_node_cls.htm">queue_node Template 			 Class</option>
-<option value="reference/synchronization/mutexes/queuing_mutex_cls.htm">queuing_mutex Class</option>
-<option value="reference/synchronization/mutexes/queuing_rw_mutex_cls.htm">queuing_rw_mutex Class</option>
-<option value="">Range Concept</option>
-<option value="reference/algorithms/range_concept.htm">   Range Concept</option>
-<option value="reference/algorithms/parallel_pipeline_func.htm">   parallel_pipeline Function</option>
-<option value="tbb_userguide/Reader_Writer_Mutexes.htm">Reader Writer 			 Mutexes</option>
-<option value="reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm">reader_writer_lock Class</option>
-<option value="reference/synchronization/mutexes/readerwritermutex_concept.htm">ReaderWriterMutex 			 Concept</option>
-<option value="reference/flow_graph/receiver_cls.htm">receiver Template 			 Class</option>
-<option value="tbb_userguide/Recursive_Chain_Reaction_.htm">Recursive Chain Reaction  		</option>
-<option value="reference/synchronization/mutexes/recursive_mutex_cls.htm">recursive_mutex Class</option>
-<option value="tbb_userguide/Recycling.htm">Recycling</option>
-<option value="reference/task_scheduler/recycling_tasks.htm">Recycling 			 Tasks</option>
-<option value="tbb_userguide/Design_Patterns/Reduction.htm">Reduction</option>
-<option value="tbb_userguide/Design_Patterns/Reference_Counting.htm">Reference Counting</option>
-<option value="tbb_userguide/References.htm">References</option>
-<option value="reference/flow_graph/remove_edge_func.htm">remove_edge Template Function</option>
-<option value="reference/appendices/community_preview_features/run_time_loader.htm">Run-time loader</option>
-<option value="reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm">runtime_loader 			 Class</option>
-<option value="tbb_userguide/Scalable_Memory_Allocator.htm">Scalable Memory 			 Allocator</option>
-<option value="reference/appendices/community_preview_features/scalable_memory_pools.htm">Scalable Memory 			 Pools</option>
-<option value="reference/memory_allocation/scalable_allocator_cls.htm">scalable_allocator</option>
-<option value="tbb_userguide/Scheduler_Bypass.htm">Scheduler 			 Bypass</option>
-<option value="reference/task_scheduler/scheduling_algorithm.htm">Scheduling 			 Algorithm</option>
-<option value="reference/flow_graph/sender_cls.htm">sender Template 			 Class</option>
-<option value="reference/flow_graph/sequencer_node_cls.htm">sequencer_node Template 			 Class</option>
-<option value="reference/appendices/community_preview_features/serial_subset.htm">Serial subset</option>
-<option value="tbb_userguide/Simple_Example_Fibonacci_Numbers.htm">Simple Example: Fibonacci 			 Numbers</option>
-<option value="reference/algorithms/partitioners/simple_partitioner_cls.htm">simple_partitioner 			 Class</option>
-<option value="">Size and 			 Capacity</option>
-<option value="reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm">   Size and Capacity</option>
-<option value="reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm">   Size and capacity</option>
-<option value="reference/flow_graph/source_node_cls.htm">source_node Class</option>
-<option value="reference/exceptions/specific_exceptions.htm">Specific 			 Exceptions</option>
-<option value="reference/synchronization/mutexes/hardware_transactional_locking.htm">Speculative Locking</option>
-<option value="reference/synchronization/mutexes/speculative_spin_mutex_cls.htm">speculative_spin_mutex Class</option>
-<option value="reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm">speculative_spin_rw_mutex Class</option>
-<option value="reference/synchronization/mutexes/spin_mutex_cls.htm">spin_mutex Class</option>
-<option value="reference/synchronization/mutexes/spin_rw_mutex_cls.htm">spin_rw_mutex Class</option>
-<option value="reference/algorithms/splittable_concept/split_cls.htm">split Class</option>
-<option value="reference/flow_graph/split_node_cls.htm">split_node Template 			 Class</option>
-<option value="reference/algorithms/splittable_concept.htm">Splittable Concept</option>
-<option value="reference/task_groups/structured_task_group_cls.htm">structured_task_group Class</option>
-<option value="tbb_userguide/Summary_of_Containers.htm">Summary of Containers</option>
-<option value="tbb_userguide/Summary_of_Loops_and_Pipelines.htm">Summary of Loops and Pipelines</option>
-<option value="main/help_support.htm">Support</option>
-<option value="">Synchronization</option>
-<option value="reference/task_scheduler/synchronization.htm">   Synchronization</option>
-<option value="reference/synchronization.htm">   Synchronization</option>
-<option value="reference/task_scheduler/task_allocation.htm">task 			 Allocation</option>
-<option value="reference/task_scheduler/task_context.htm">task 			 Context</option>
-<option value="reference/task_scheduler/task_debugging.htm">task 			 Debugging</option>
-<option value="reference/task_groups.htm">Task 			 Groups</option>
-<option value="reference/task_scheduler.htm">Task 			 Scheduler</option>
-<option value="reference/task_scheduler/task_cls.htm">task Class</option>
-<option value="reference/task_scheduler/task_cls/task_derivation.htm">task Derivation</option>
-<option value="tbb_userguide/Task_Scheduler_Summary.htm">Task Scheduler Summary</option>
-<option value="reference/appendices/community_preview_features/task_arena_cls.htm">task_arena Class</option>
-<option value="reference/task_groups/task_group_cls.htm">task_group Class</option>
-<option value="">task_group_context</option>
-<option value="reference/task_scheduler/task_group_context.htm">   task_group_context</option>
-<option value="reference/task_scheduler/task_group_context/task_group_context.htm">   task_group_context Members</option>
-<option value="reference/task_groups/task_group_status_enum.htm">task_group_status Enum</option>
-<option value="reference/task_groups/task_handle_cls.htm">task_handle Template Class</option>
-<option value="reference/task_scheduler/task_list_cls.htm">task_list 			 Class</option>
-<option value="reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm">task_scheduler_init</option>
-<option value="reference/task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init 			 Class</option>
-<option value="">task_scheduler_observer</option>
-<option value="reference/task_scheduler/task_scheduler_observer.htm">   task_scheduler_observer</option>
-<option value="reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm">   task_scheduler_observer Members</option>
-<option value="reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm">task_scheduler_observer Class 			 extensions</option>
-<option value="tbb_userguide/Task-Based_Programming.htm">Task-Based 			 Programming</option>
-<option value="reference/general_conventions/namespaces.htm">tbb</option>
-<option value="reference/memory_allocation/tbb_allocator_cls.htm">tbb_allocator</option>
-<option value="reference/environment/version_information.htm">TBB_COMPATIBLE_INTERFACE_VERSION</option>
-<option value="">TBB_DEPRECATED</option>
-<option value="reference/environment/feature_macros.htm">   Feature macros</option>
-<option value="reference/general_conventions/namespaces.htm">   Namespaces</option>
-<option value="reference/exceptions/tbb_exception.htm">tbb_exception</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm">tbb_hash_compare Class</option>
-<option value="reference/environment/version_information.htm">TBB_INTERFACE_VERSION</option>
-<option value="reference/environment/version_information.htm">TBB_INTERFACE_VERSION_MAJOR</option>
-<option value="reference/environment/version_information.htm">TBB_INTERFACE_VERSION/1000</option>
-<option value="reference/appendices/compatibility_features/tbb_thread_cls.htm">tbb_thread Class</option>
-<option value="">TBB_USE_ASSERT</option>
-<option value="reference/environment/enabling_debugging_features.htm">   Enabling Debugging Features</option>
-<option value="reference/environment/version_information.htm">   Version Information</option>
-<option value="reference/environment/feature_macros.htm">TBB_USE_CAPTURED_EXCEPTION</option>
-<option value="reference/environment/enabling_debugging_features.htm">TBB_USE_DEBUG</option>
-<option value="reference/environment/feature_macros.htm">TBB_USE_EXCEPTIONS</option>
-<option value="reference/environment/enabling_debugging_features.htm">TBB_USE_PERFORMANCE_WARNINGS</option>
-<option value="reference/environment/enabling_debugging_features.htm">TBB_USE_THREADING_TOOLS</option>
-<option value="reference/general_conventions/namespaces.htm">tbb::deprecated</option>
-<option value="reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm">tbb::deprecated::concurrent_queue<T,Alloc> 			 Template Class</option>
-<option value="reference/general_conventions/namespaces.htm">tbb::interface</option>
-<option value="reference/general_conventions/namespaces.htm">tbb::interfacex</option>
-<option value="reference/general_conventions/namespaces.htm">tbb::internal</option>
-<option value="reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm">tbb::serial::parallel_for()</option>
-<option value="reference/general_conventions/namespaces.htm">tbb::strict_ppl</option>
-<option value="reference/memory_allocation/aligned_space_cls.htm">template class</option>
-<option value="reference/general_conventions/terminology.htm">Terminology</option>
-<option value="">TestMetaData</option>
-<option value="reference/threads/thread_cls/thread_cls_members.htm">   thread Class Members</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm">   Concurrent Operations</option>
-<option value="reference/task_groups/task_group_cls/task_group_cls_members.htm">   task_group Class Members</option>
-<option value="reference/timing/tick_count_cls/tick_count_cls_members.htm">   tick_count Class Members</option>
-<option value="reference/synchronization/mutexes/mutex_cls.htm">   mutex Class</option>
-<option value="tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</option>
-<option value="reference/threads/this_thread_namespace.htm">this_thread 			 Namespace</option>
-<option value="reference/threads/thread_cls.htm">thread Class</option>
-<option value="reference/thread_local_storage.htm">Thread Local 			 Storage</option>
-<option value="reference/general_conventions/thread_safety.htm">Thread Safety</option>
-<option value="reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm">thread_bound_filter 			 Class</option>
-<option value="reference/threads/thread_id.htm">thread::id</option>
-<option value="reference/threads.htm">Threads</option>
-<option value="tbb_userguide/Throughput_of_pipeline.htm">Throughput of 			 pipeline</option>
-<option value="reference/timing/tick_count_cls.htm">tick_count Class</option>
-<option value="reference/timing/tick_count_cls/tick_count_interval_t_cls.htm">tick_count::interval_t 			 Class</option>
-<option value="">Timing</option>
-<option value="reference/timing.htm">   Timing</option>
-<option value="tbb_userguide/Timing.htm">   Timing</option>
-<option value="tbb_userguide/UpgradeDowngrade.htm">Upgrade/Downgrade</option>
-<option value="tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</option>
-<option value="tbb_userguide/Using_Circular_Buffers.htm">Using Circular 			 Buffers</option>
-<option value="reference/thread_local_storage/flattened2d_cls/utility_funcs.htm">Utility 			 Functions</option>
-<option value="reference/environment/version_information.htm">Version Information</option>
-<option value="tbb_userguide/Design_Patterns/Wavefront.htm">Wavefront</option>
-<option value="reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm">What is a Community Preview 			 Feature?</option>
-<option value="tbb_userguide/When_Not_to_Use_Queues.htm">When Not to Use 			 Queues</option>
-<option value="tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm">When Task-Based Programming Is Inappropriate</option>
-<option value="tbb_userguide/Which_Dynamic_Libraries_to_Use.htm">Which Dynamic Libraries to 			 Use</option>
-<option value="">Whole Container 			 Operations</option>
-<option value="reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm">   Whole Container Operations</option>
-<option value="reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm">   Whole Container Operations</option>
-<option value="reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm">Whole Table 			 Operations</option>
-<option value="reference/containers_overview/concurrent_vector/whole_vector_operations.htm">Whole Vector 			 Operations</option>
-<option value="">Windows* OS</option>
-<option value="reference/appendices/known_issues/windows_os.htm">   Windows* OS</option>
-<option value="tbb_userguide/Windows_OS.htm">   Windows* OS</option>
-<option value="tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm">Windows* OS C/C++ Dynamic Memory Interface Replacement</option>
-<option value="tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: 			 pipeline</option>
-<option value="reference/flow_graph/write_once_node_cls.htm">write_once_node Template 			 Class</option>
-<option value="reference/memory_allocation/zero_allocator.htm">zero allocator</option>
-</select>
-</div>
-
-
-</body>
-</html>
diff --git a/doc/help/hh_search.htm b/doc/help/hh_search.htm
deleted file mode 100755
index d1e0aec..0000000
--- a/doc/help/hh_search.htm
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<!-- saved from url=(0014)about:internet -->
-<html>
-<head>
-  <script type="text/javascript">
-  <!--
-
-  if (parent.location.href == self.location.href)
-    window.location.href = "index.htm#+hh_search.htm";
-
-  function CloseNav() {
-    if ((top.right.location == null) || (top.right.location == undefined) || (typeof(top.right.location.href) != "string") || (top.right.location.href == ""))
-      top.location="main/title.htm";
-    else
-      top.location=top.right.location;
-  }
-
-  function GetFrameWidth() { 
-    var x = 300; 
-    if (self.innerHeight) // all except Explorer 
-	x = self.innerWidth; 
-    else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode 
-	x = document.documentElement.clientWidth; 
-    else if (document.body) // other Explorers 
-	x = document.body.clientWidth; 
-    return(x); 
-  } 
-
-  function GetFrameHeight() { 
-    var y = 400; 
-    if (self.innerHeight) // all except Explorer 
-      y = self.innerHeight; 
-    else if (document.documentElement && document.documentElement.clientWidth) // Explorer 6 Strict Mode 
-      y = document.documentElement.clientHeight; 
-    else if (document.body) // other Explorers 
-      y = document.body.clientHeight; 
-    return(y); 
-  } 
-
-  function resizeSearch() {
-    var searchDiv = document.getElementById("searchcontainer");
-    var xTop = searchDiv.offsetTop;
-    var DivFooter = document.getElementById("DivFooter");
-    if ((DivFooter != null) && (DivFooter != undefined))
-        xTop = xTop + DivFooter.offsetHeight;
-    var WW = GetFrameWidth() - 10; //5px either side 
-    searchDiv.style.width = WW.toString() + "px"; 
-    var HH = GetFrameHeight() -  xTop; 
-    if (HH > 0) 
-      searchDiv.style.height = HH.toString() + "px"; 
-  }
-  function DocOnLoad() {
-    resizeSearch();
-    //Check for author: Is searchdata.js created?
-    if (typeof(SearchIndexes) == "undefined")
-      alert("Warning: Search database file not found \"searchdata.js\".");
-  }
-  -->
-  </script>
-
-<!-- BEGIN_SEARCH_SCRIPT -->
-<!-- Helpware Search data generated by FAR.EXE http://helpware.net/FAR/ -->
-<script type="text/javascript" src="searchdata.js"></script>
-<!-- Search Code to find words -->
-<script type="text/javascript" src="search.js"></script>
-<!-- END_SEARCH_SCRIPT -->
-
-  <style type="text/css">
-  .docstyle
-  {
-    font-size: 80%;
-    font-family: arial,verdana,sans-serif;
-  }
-  </style>
-
-</head>
-
-<body id="docBody" style="color: Black; margin:5px 0px 0px 0px;" onload="DocOnLoad()" onresize="resizeSearch()">
-
-<div style="display: inline; white-space: nowrap; margin: 0px 0px 0px 5px;">
-<input
- TYPE="button" VALUE="Contents" ONCLICK="javascript:location='hh_toc.htm';"
- NAME="HelpTopics"><input
- TYPE="button" VALUE="Index" ONCLICK="javascript:location='hh_index.htm';"
- NAME="Index"><input
- TYPE="button" VALUE="Search" ONCLICK="javascript:location='hh_search.htm';"
- NAME="Search">
-</div>
-
-
-
-<!-- BEGIN_SEARCH_FORM -->
-  <script type="text/javascript"> 
-  <!-- 
-  function SearchForWords() { 
-    DoSearch(document.getElementById("searchdata1").value, document.getElementById("searchdata2").value, document.getElementById("searchdata3").value, document.getElementById("searchdata4").checked, "right");} 
-  function KeyDownEvent(event) { 
-    if ((event.which && event.which==13) || (event.keyCode && event.keyCode==13)) { 
-      SearchForWords(); return(false); } else return(true); } 
-  function ResultList_KeyDownEvent(event) { 
-    if ((event.which && event.which==13) || (event.keyCode && event.keyCode==13)) { 
-      OpenResultListDoc(); return(false);} else return(true);} 
-  --> 
-  </script> 
-  <div style="margin: 11px 0px 0px 0px; padding: 0px 5px 0px 5px;"> 
-    <span class="docstyle">Topics containing any of these words:</span> 
-       <input type="text" id="searchdata1" class="docstyle" style="width:100%; margin: 0px 0px 5px 0px;" 
-       onKeyDown="javascript:return(KeyDownEvent(event));"><br> 
-    <span class="docstyle">Topics containing all of these words:</span> 
-       <input type="text" id="searchdata2" class="docstyle"  style="width:100%; margin: 0px 0px 5px 0px;" 
-       onKeyDown="javascript:return(KeyDownEvent(event));"><br> 
-    <span class="docstyle">Topics should not contain these words:</span> 
-       <input type="text" id="searchdata3" class="docstyle" style="width:100%; margin: 0px 0px 5px 0px;" 
-       onKeyDown="javascript:return(KeyDownEvent(event));"><br> 
-    <input type="checkbox" id="searchdata4" 
-       class="docstyle" value="1"><span class="docstyle">Partial word matching</span><br> 
-    <br><input type="button" class="docstyle" name="searchbutton" 
-       value="Search" style="width:150" onclick="javascript:SearchForWords();"> 
-  </div> 
-
-  <div style="margin: 5px 0px 0px 0px; padding: 0px 5px 0px 5px;"> 
-    <form name="searchform" style="margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px;"> 
-      <select class="docstyle" id="searchcontainer" name="SearchResultList" 
-         style="width:200; height:200;" 
-         onkeydown="javascript:return(ResultList_KeyDownEvent(event));" 
-         onclick="javascript:OpenResultListDoc();return(true);" 
-         size="50"></select> 
-    </form> 
-  </div> 
-<!-- END_SEARCH_FORM -->
-
-
-
-</body>
-</html>
diff --git a/doc/help/hh_toc.htm b/doc/help/hh_toc.htm
deleted file mode 100755
index 25a0133..0000000
--- a/doc/help/hh_toc.htm
+++ /dev/null
@@ -1,1640 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<!-- saved from url=(0014)about:internet -->
-<html>
-<head>
-
-  <title>Contents</title>
-  <link rel="stylesheet" type="text/css" href="tree.css">
-  <script src="tree.js" type="text/javascript">
-  </script>
-
-  <script type="text/javascript">
-  <!--
-
-  if (parent.location.href == self.location.href)
-    window.location.href = "index.htm";
-
-  function CloseNav() {
-    if ((top.right.location == null) || (top.right.location == undefined) || (typeof(top.right.location.href) != "string") || (top.right.location.href == ""))
-      top.location="main/title.htm";
-    else
-      top.location=top.right.location;
-  }
-
-  //Links to other domains normally wont work because of browser security 
-  function SyncDocUrl(showError) 
-  { 
-     if ((top.right.location != null) 
-     && (top.right.location != undefined) 
-     && (typeof(top.right.location.href) == "string") 
-     && (top.right.location.href != "") 
-     && (top.right.document != null) 
-     && (top.right.document != undefined)) 
-     { 
-        return top.right.document.URL; 
-     } 
-     else 
-     { 
-	if (showError) 
-          alert("Operation failed!\r\rCross frame communication is blocked. Please check your browser security settings or try another browser."); 
-        return ""; 
-     } 
-  } 
-  
-  // RWC: 2007-06-24 - Get absolute URL to current page
-  
-  function TrimURL(aref)  //Strip off leading protocol http:///
-  {
-    sRet = aref;
-    if ((sRet.substring(0, 7) == "http://") || (sRet.substring(0, 7) == "file://"))
-     	sRet = sRet.substring(7, sRet.length);
-    if (sRet.substring(0, 8) == "https://")
-     	sRet = sRet.substring(8, sRet.length);
-    if (sRet.substring(0, 1) == "/")
-     	sRet = sRet.substring(1, sRet.length);
-    //Scrub embedded codes
-    sRet = unescape(sRet);  //Converts %2520 -> %20  (under FireFox)
-    sRet = unescape(sRet);  //Converts %20 = " "
-    //all Unix slashes /
-    sRet = sRet.replace(/\\/g, "/");
-    return sRet;
-  }
-  
-function GetGotoURL()
-{
-   var topURL = top.location.href;  
-   if (topURL == undefined)      // undefined if frame communication is blocked
-      topURL = location.href;
-   var i = topURL.indexOf("#");  // trim off any bookmark
-   if (i > 0)
-      topURL = topURL.substr(0, i);
-   var baseURL = topURL.substr(0, topURL.lastIndexOf("/") + 1);   // "http://c:/base/start.htm" --> "http://c:/base/"
-   return baseURL + "hh_goto.htm";
-}
-
-function ShowUrlBox(rightURL)
-{
-   var gotoUrl = GetGotoURL();
-   var sBase = gotoUrl.substr(0, gotoUrl.lastIndexOf("/") + 1);   // "http://c:/base/goto.htm" --> "http://c:/base/"
-
-   rightURL = TrimURL(rightURL);     // "http://c:/base/" --> "c:/base/dir/page.htm"
-   sBase = TrimURL(sBase);           // "http://c:/base/" --> "c:/base/"
-   if (rightURL.indexOf(sBase) >= 0)
-      rightURL = rightURL.substr(sBase.length, rightURL.length); // "c:/base/dir/page.htm" --> "dir/page.htm" 
-
-   //create full goto full URL. The bookmark allows goto.htm to set the right frame. 
-   //Using hh_goto.htm works where hh_start.htm usually wont update.
-   var url=gotoUrl + "#"+ rightURL;
-
-   //Show URL in prompt and give option to goto the URL
-   url = prompt("Absolute address. Click OK to load this URL in the browser", url)
-   if (url != "" && url != null)
-     top.location.href= url;
-}
-
-function GetFullLink(){
-  if (SyncDocUrl(false) == "")  // Can't see the right frame -- Use the current TOC selection
-  {
-     var el = findLinkNode();
-     if (el != null && el != undefined)
-       ShowUrlBox(el.getAttribute('href'));
-     else
-       alert("Please select a Table of Contents item."); 
-     return;
-  }
-
-  var rightURL = SyncDocUrl(true);
-  if (rightURL != "")
-  {
-      ShowUrlBox(rightURL);
-  }
-}
-
-
-  function DoTocNext(fwd) { 
-    var aref = selectNext(fwd); 
-    if (aref != null && aref != undefined && aref != "") 
-       top.right.location = aref;
-  } 
-
-  function DoTocSync(showError) { 
-    var url = SyncDocUrl(showError); 
-    if (url != "") 
-       syncTree(url); 
-  } 
-
-  function OnLoadCode() {
-    window.onresize=resizeTree;
-    resizeTree();
-    DoTocSync(false);
-  }
-
-  function KeyDownEvent(event) {
-    if ((event.which && event.which==13) || (event.keyCode && event.keyCode==13)) {  // Return
-      var node = findLinkNode();
-      if (node != null && node != undefined && node != "") 
-      {
-        aref = node.getAttribute('href');
-        if (aref != null && aref != undefined && aref != "") 
-          top.right.location = aref;
-      }
-    }
-    else if ((event.which && event.which==40) || (event.keyCode && event.keyCode==40)) { //down arrow
-      selectNext(true);
-    }
-    else if ((event.which && event.which==38) || (event.keyCode && event.keyCode==38)) { //up arrow
-      selectNext(false);
-    }
-
-    return(true); //do not gobble keypress 
-  }
-  -->
-  </script>
-
-
-</head>
-
-<body id="docBody" style="color: Black; margin: 5px 0px 0px 0px;" 
-  onkeydown="javascript:return(KeyDownEvent(event));"
-  onload="OnLoadCode()" onselectstart="return false;">
-
-
-<div style="display: inline; white-space: nowrap; margin: 0px 0px 0px 5px;">
-<input
- TYPE="button" VALUE="Contents" ONCLICK="javascript:location='hh_toc.htm';"
- NAME="HelpTopics"><input
- TYPE="button" VALUE="Index" ONCLICK="javascript:location='hh_index.htm';"
- NAME="Index"><input
- TYPE="button" VALUE="Search" ONCLICK="javascript:location='hh_search.htm';"
- NAME="Search">
-</div>
-
-
-<div align="right" style="margin: 3 8 5 3;">
-   <span title="Get absolute address of current page"
-      style="cursor: pointer; font-size: 8pt; font-family: verdana,arial,sans-serif;"
-      onmouseover="this.style.textDecoration='underline'"
-      onmouseout="this.style.textDecoration='none'"
-      onclick="GetFullLink();">Get Link</span>
-|
-   <span title="Sync table of contents to current page"
-      style="cursor: pointer; font-size: 8pt; font-family: verdana,arial,sans-serif;"
-      onmouseover="this.style.textDecoration='underline'"
-      onmouseout="this.style.textDecoration='none'"
-      onclick="DoTocSync(true);">Sync TOC</span>
-|
-   <span title="Previous Page"
-      style="cursor: pointer; font-size: 8pt; font-family: verdana,arial,sans-serif;"
-      onmouseover="this.style.textDecoration='underline'"
-      onmouseout="this.style.textDecoration='none'"
-      onclick="DoTocNext(false);"><<</span>
-|
-   <span title="Next Page"
-      style="cursor: pointer; font-size: 8pt; font-family: verdana,arial,sans-serif;"
-      onmouseover="this.style.textDecoration='underline'"
-      onmouseout="this.style.textDecoration='none'"
-      onclick="DoTocNext(true);">>></span>
-</div>
-
-    <div id="tree" style="top: 35px; left: 0px;" class="treeDiv">
-      <div id="treeRoot" onselectstart="return false" ondragstart="return false">
-        <div class="treeNode">
-          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-          <a href="main/title.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Intel® Threading Building Blocks Documenation</a>
-          <div class="treeSubnodesHidden">
-            <div class="treeNode">
-              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-              <a href="main/legal_information.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Legal Information</a>
-            </div>
-            <div class="treeNode">
-              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-              <a href="main/help_support.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Getting Help and Support</a>
-            </div>
-            <div class="treeNode">
-              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-              <a href="main/introducing.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Introducing the Intel® Threading Building Blocks (Intel® TBB)</a>
-            </div>
-            <div class="treeNode">
-              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-              <a href="main/Benefits.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Intel TBB Benefits</a>
-            </div>
-            <div class="treeNode">
-              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-              <a href="main/notation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Notational Conventions</a>
-            </div>
-            <div class="treeNode">
-              <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-              <a href="tbb_userguide/title.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Intel® Threading Building Blocks (Intel® TBB) User Guide</a>
-              <div class="treeSubnodesHidden">
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Package_Contents.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Package Contents</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Debug_Versus_Release_Libraries.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Debug Versus Release Libraries</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Scalable_Memory_Allocator.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Scalable Memory Allocator</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/Windows_OS.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Windows* OS</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Microsoft Visual Studio* Code Examples</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Integration Plug-In for Microsoft Visual Studio* Projects</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Linux_OS.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Linux* OS</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/OS_X_Systems.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">OS X* Systems</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Open_Source_Version.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Open Source Version</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Parallelizing_Simple_Loops.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallelizing Simple Loops</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Initializing_and_Terminating_the_Library.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Initializing and Terminating the Library</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/parallel_for.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_for</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Lambda_Expressions.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Lambda Expressions</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Automatic_Chunking.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Automatic Chunking</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Controlling_Chunking.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Controlling Chunking</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Bandwidth_and_Cache_Affinity.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Bandwidth and Cache Affinity</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Partitioner_Summary.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Partitioner Summary</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/parallel_reduce.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_reduce</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Advanced_Example.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Advanced Example</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Advanced Topic: Other Kinds of Iteration Spaces</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Parallelizing_Complex_Loops.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallelizing Complex Loops</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Cook_Until_Done_parallel_do.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Cook Until Done: parallel_do</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Working on the Assembly Line: pipeline</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Using_Circular_Buffers.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Using Circular Buffers</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Throughput_of_pipeline.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Throughput of pipeline</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Non-Linear_Pipelines.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Non-Linear Pipelines</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Summary_of_Loops_and_Pipelines.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Summary of Loops and Pipelines</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Exceptions_and_Cancellation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Exceptions and Cancellation</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Cancellation_Without_An_Exception.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Cancellation Without An Exception</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Cancellation_and_Nested_Parallelism.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Cancellation and Nested Parallelism</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Containers.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Containers</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/concurrent_hash_map.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_hash_map</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/More_on_HashCompare.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">More on HashCompare</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/concurrent_vector.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_vector</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Advanced Idiom: Waiting on an Element</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/Concurrent_Queue_Classes.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Queue Classes</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterating Over a Concurrent Queue for Debugging</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/When_Not_to_Use_Queues.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">When Not to Use Queues</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Summary_of_Containers.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Summary of Containers</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Mutual_Exclusion.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Mutual Exclusion</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Mutex_Flavors.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Mutex Flavors</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Reader_Writer_Mutexes.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Reader Writer Mutexes</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/UpgradeDowngrade.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Upgrade/Downgrade</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Lock_Pathologies.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Lock Pathologies</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Atomic_Operations.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Atomic Operations</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Why_atomic_T_Has_No_Constructors.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Why atomic<T> Has No Constructors</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Memory_Consistency.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Memory Consistency</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                  <a href="tbb_userguide/Timing.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Timing</a>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Memory_Allocation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Memory Allocation</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Which_Dynamic_Libraries_to_Use.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Which Dynamic Libraries to Use</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/Automically_Replacing_malloc.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Linux* OS C/C++ Dynamic Memory Interface Replacement</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Windows* OS C/C++ Dynamic Memory Interface Replacement</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/The_Task_Scheduler.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">The Task Scheduler</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Task-Based_Programming.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task-Based Programming</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">When Task-Based Programming Is Inappropriate</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Simple_Example_Fibonacci_Numbers.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Simple Example: Fibonacci Numbers</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/How_Task_Scheduling_Works.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">How Task Scheduling Works</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="tbb_userguide/Useful_Task_Techniques.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Useful Task Techniques</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Recursive_Chain_Reaction_.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Recursive Chain Reaction</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Continuation_Passing.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Continuation Passing</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Scheduler_Bypass.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Scheduler Bypass</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Recycling.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Recycling</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="tbb_userguide/Empty_Tasks.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Empty Tasks</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">General Acyclic Graphs of Tasks</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Task_Scheduler_Summary.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task Scheduler Summary</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="tbb_userguide/Design_Patterns/Design_Patterns.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Design Patterns</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Agglomeration.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Agglomeration</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Elementwise.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Elementwise</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Odd-Even_Communication.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Odd-Even Communication</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Wavefront.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Wavefront</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Reduction.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Reduction</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Divide_and_Conquer.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Divide and Conquer</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/GUI_Thread.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">GUI Thread</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Non-Preemptive Priorities</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Local_Serializer.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Local Serializer</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Fenced Data Transfer</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Lazy_Initialization.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Lazy Initialization</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Reference_Counting.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Reference Counting</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Compare and Swap Loop</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="tbb_userguide/Design_Patterns/General_References.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">General References</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                  <a href="tbb_userguide/appendix_A.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Appendix A Costs of Time Slicing</a>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                  <a href="tbb_userguide/appendix_B.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Appendix B Mixing With Other Threading Packages</a>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                  <a href="tbb_userguide/References.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">References</a>
-                </div>
-              </div>
-            </div>
-            <div class="treeNode">
-              <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-              <a href="reference/reference.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Intel® Threading Building Blocks Reference Manual</a>
-              <div class="treeSubnodesHidden">
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/general_conventions.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">General Conventions</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/general_conventions/terminology.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Terminology</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/general_conventions/identifiers.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Identifiers</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/general_conventions/namespaces.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Namespaces</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/general_conventions/thread_safety.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Thread Safety</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/environment.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Environment</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/environment/version_information.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Version Information</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/environment/enabling_debugging_features.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Enabling Debugging Features</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/environment/feature_macros.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Feature Macros</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/algorithms.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Algorithms</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/splittable_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Splittable Concept</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/splittable_concept/split_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">split Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/range_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Range Concept</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/algorithms/range_concept/blocked_range_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">blocked_range Template Class</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">blocked_range( Value begin, Value end, size_t grainsize=1 )</a>
-                            </div>
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">blocked_range( blocked_range& range, split )</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/range_concept/blocked_range2d_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">blocked_range2d Template Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/range_concept/blocked_range3d_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">blocked_range3d Template Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/partitioners.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Partitioners</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/partitioners/auto_partitioner_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">auto_partitioner Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/partitioners/affinity_partitioner.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">affinity_partitioner</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/partitioners/simple_partitioner_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">simple_partitioner Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_for_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_for Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_reduce_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_reduce Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_deterministic_reduce_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_deterministic_reduce Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/parallel_scan_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_scan Template Function</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">pre_scan_tag and final_scan_tag Classes</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/parallel_do_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_do Template Function</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_do_feeder class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_for_each_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_for_each Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/pipeline_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">pipeline Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/pipeline_cls/filter_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">filter Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">thread_bound_filter Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/algorithms/parallel_pipeline_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_pipeline Function</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/parallel_pipeline_func/filter_t_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">filter_t Template Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/algorithms/parallel_pipeline_func/flow_control_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">flow_control Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_sort_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_sort Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/algorithms/parallel_invoke_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_invoke Template Function</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/containers_overview.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Containers</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/containers_overview/container_range_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Container Range Concepts</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/containers_overview/concurrent_unordered_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Construct, Destroy, Copy</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Size and Capacity</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Modifiers</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Observers</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Lookup</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallel Iteration</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Bucket Interface</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Hash Policy</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/containers_overview/concurrent_unordered_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Construct, Destroy, Copy</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Size and Capacity</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Modifiers</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Observers</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Lookup</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallel Iteration</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Bucket Interface</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Hash Policy</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/containers_overview/concurrent_hash_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_hash_map Template Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Whole Table Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Access</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallel Iteration</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Capacity</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Global Functions</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb_hash_compare Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/containers_overview/concurrent_queue_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_queue Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/containers_overview/concurrent_bounded_queue_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_bounded_queue Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/containers_overview/concurrent_priority_queue_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_priority_queue Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/containers_overview/concurrent_vector.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_vector</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Construction, Copy, and Assignment</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/whole_vector_operations.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Whole Vector Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/concurrent_growth.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Growth</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/access.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Access</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/parallel_iteration.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallel Iteration</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/capacity_vector.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Capacity</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/containers_overview/concurrent_vector/iterators_vector.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/flow_graph.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Flow Graph</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/primary_components.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Primary Components</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/message_passing_protocol.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Message Passing Protocol</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/body_objects.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Body Objects</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/flow_tuple.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">flow::tuple Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/dependency_flow_graph_example.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Dependency Flow Graph Example</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/message_flow_graph_example.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Message Flow Graph Example</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/graph_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">graph Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/sender_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">sender Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/receiver_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">receiver Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/continue_msg_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">continue_msg Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/continue_receiver_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">continue_receiver Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/graph_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">graph_node Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/continue_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">continue_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/func_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">function_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/source_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">source_node Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/multifunc_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">multifunction_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/overwrite_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">overwrite_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/write_once_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">write_once_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/broadcast_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">broadcast_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/buffer_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">buffer_node Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/queue_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">queue_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/priority_queue_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">priority_queue_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/sequencer_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">sequencer_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/limiter_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">limiter_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/join_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">join_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/split_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">split_node Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/input_port_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">input_port Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/make_edge_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">make_edge Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/remove_edge_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">remove_edge Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/flow_graph/copy_body_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">copy_body Template Function</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/thread_local_storage.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Thread Local Storage</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/thread_local_storage/combinable_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">combinable Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/thread_local_storage/enumerable_thread_specific_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">enumerable_thread_specific Template Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Whole Container Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Combining</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Parallel Iteration</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/thread_local_storage/flattened2d_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">flattened2d Template Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Whole Container Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Concurrent Operations</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Iterators</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/thread_local_storage/flattened2d_cls/utility_funcs.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Utility Functions</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/memory_allocation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Memory Allocation</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/memory_allocation/allocator_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Allocator Concept</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/memory_allocation/tbb_allocator_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb_allocator Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/memory_allocation/scalable_allocator_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">scalable allocator Template Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">C Interface to Scalable Allocator</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/memory_allocation/cache_aligned_allocator_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">cache_aligned_allocator Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/memory_allocation/zero_allocator.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">zero_allocator</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/memory_allocation/aligned_space_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">aligned_space Template Class</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/synchronization.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Synchronization</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/synchronization/mutexes.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Mutexes</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/mutex_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Mutex Concept</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/hardware_transactional_locking.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Speculative locking (Transactional Lock Elision)</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/recursive_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">recursive_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/spin_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">spin_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/speculative_spin_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">speculative_spin_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/queuing_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">queuing_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/readerwritermutex_concept.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">ReaderWriterMutex Concept</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/spin_rw_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">spin_rw_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/queuing_rw_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">queuing_rw_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/null_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">null_mutex Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/null_rw_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">null_rw_mutex Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/synchronization/atomic_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">atomic Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/synchronization/ppl_compatibility_synch.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">PPL Compatibility</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/ppl_compatibility/critical_section.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">critical_section</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">reader_writer_lock Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/synchronization/c_11_synchronization.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">C++11 Synchronization</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/timing.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Timing</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/timing/tick_count_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tick_count Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/timing/tick_count_cls/tick_count_cls_members.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tick_count Members</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/timing/tick_count_cls/tick_count_interval_t_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tick_count::interval_t Class</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/task_groups.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task Groups</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/task_groups/task_group_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_group Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_groups/task_group_cls/task_group_cls_members.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task Groups</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_groups/task_group_status_enum.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_group_status Enum</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_groups/task_handle_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_handle Template Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_groups/make_task_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">make_task Template Function</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_groups/structured_task_group_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">structured_task_group Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_groups/is_current_task_group_canceling_func.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">is_current_task_group_canceling Function</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/task_scheduler.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task Scheduler</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/scheduling_algorithm.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Scheduling Algorithm</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/task_scheduler/task_scheduler_init_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_init Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_init max_threads</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_init</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/task_scheduler/task_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_scheduler/task_cls/task_derivation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task Derivation</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/task_allocation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task Allocation</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/explicit_task_destruction.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Explicit task Destruction</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/recycling_tasks.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Recycling Tasks</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/synchronization.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Synchronization</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/task_context.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task Context</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/cancellation.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Cancellation</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/priorities.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Priority</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/affinity.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Affinity</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/task_debugging.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task Debugging</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/empty_task_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">empty_task Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/task_list_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_list Class</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/task_scheduler/task_group_context.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_group_context</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_scheduler/task_group_context/task_group_context.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_group_context members</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/task_scheduler/task_scheduler_observer.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_observer</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_observer Member</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/task_scheduler/catalog_of_recommended_task_patterns.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Catalog of Recommended task Patterns</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/exceptions.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Exceptions</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/exceptions/tbb_exception.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb_exception</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/exceptions/captured_exception.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">captured_exception</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/exceptions/movable_exception.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">movable_exception ExceptionData</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/exceptions/specific_exceptions.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Specific Exceptions</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/threads.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Threads</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/threads/thread_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">thread Class</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/threads/thread_cls/thread_cls_members.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">thread Class members</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/threads/thread_id.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">thread::id</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/threads/this_thread_namespace.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">this_thread Namespace</a>
-                    </div>
-                  </div>
-                </div>
-                <div class="treeNode">
-                  <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                  <a href="reference/appendices.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Appendices</a>
-                  <div class="treeSubnodesHidden">
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/appendices/compatibility_features.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Compatibility Features</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/parallel_while_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">parallel_while Template Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Interface for constructing a pipeline filter</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/debugging_macros.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Debugging Macros</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb::deprecated::concurrent_queue<T,Alloc> Template Class</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Task Enqueuing Flow Graph</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/interface_for_concurrent_vector.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Interface for concurrent_vector</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/interface_for_cls_task.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Interface for class task</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/compatibility_features/tbb_thread_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb_thread Class</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                      <a href="reference/appendices/ppl_compatibility.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">PPL Compatibility</a>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/appendices/known_issues.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Known Issues</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/known_issues/windows_os.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Windows* OS</a>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="treeNode">
-                      <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                      <a href="reference/appendices/community_preview_features.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Community Preview Features</a>
-                      <div class="treeSubnodesHidden">
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">What is a Community Preview Feature?</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Enabling a Community Preview Feature</a>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/flow_graph_features.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Flow Graph</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/flow_graph/or_node_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">or_node Template Class</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/run_time_loader.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Run-time loader</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                              <a href="reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">runtime_loader Class</a>
-                              <div class="treeSubnodesHidden">
-                                <div class="treeNode">
-                                  <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                                  <a href="reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</a>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/scalable_memory_pools.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Scalable Memory Pools</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">memory_pool Template Class</a>
-                            </div>
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">fixed_pool Class</a>
-                            </div>
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">memory_pool_allocator Template Class</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/serial_subset.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">Serial subset</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">tbb::serial::parallel_for()</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">concurrent_lru_cache Template Class</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">handle_object class</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/aggregator_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">aggregator Class</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">aggregator Class Basic Interface</a>
-                            </div>
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">aggregator Class Expert Interface</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodeplus.gif" class="treeLinkImage" onclick="expandCollapse(this.parentNode)" alt="">
-                          <a href="reference/appendices/community_preview_features/task_arena_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_arena Class</a>
-                          <div class="treeSubnodesHidden">
-                            <div class="treeNode">
-                              <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                              <a href="reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">task_scheduler_observer Class extensions</a>
-                            </div>
-                          </div>
-                        </div>
-                        <div class="treeNode">
-                          <img src="treenodedot.gif" class="treeNoLinkImage" alt="">
-                          <a href="reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm" target="right" class="treeUnselected" onclick="clickAnchor(this)">speculative_spin_rw_mutex Class</a>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-
-
-
-</body>
-</html>
diff --git a/doc/help/index.htm b/doc/help/index.htm
deleted file mode 100755
index d35170f..0000000
--- a/doc/help/index.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
-<!-- saved from url=(0014)about:internet -->
-<html>
-<head>
-  <title>Intel® Threading Building Blocks Documentation</title>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-</head>
-
-<script type="text/javascript" language="javascript">
-<!--
-
-// ensure page is not loaded inside another frame
-if (top.location != self.location) {top.location = self.location;} 
-
-
-//-- eg. hh_start.htm#index2.htm                -- sets the content frame only
-//-- eg. hh_start.htm#index2.htm+hh_search.htm  -- sets the content and nav frame
-//-- eg. hh_start.htm#+hh_search.htm            -- sets the nav frame only
-var LFile="hh_toc.htm";
-var RFile="main/title.htm";
-var Param=window.location.hash.substring(1);
-var Params=Param.split("+");
-if (Param != "") {
-  if ((Params.length == 2) && (Params[1] != "")) LFile=Params[1];
-  if (Params[0] != "") RFile=Params[0];
-}
-
-//debug line
-//alert('LFile='+ LFile + ', RFile='+RFile);
-
-document.write('<frameset cols="263,100%" frameborder="1" border="3" framespacing="3">');
-document.write('  <frame src="'+LFile+'" name="left" scrolling="no" frameborder="1" />');
-document.write('  <frame src="'+RFile+'" name="right" scrolling="auto" frameborder="1" />');
-document.write('    <noframes>');
-document.write('      <body>');
-document.write('      <p>This page uses frames, but your browser does not support frames.</p>');
-document.write('      </body>');
-document.write('    </noframes>');
-document.write('</frameset>');
-
-//-->
-</script>
-</html>
diff --git a/doc/help/intel_css_styles.css b/doc/help/intel_css_styles.css
deleted file mode 100755
index f6fe56c..0000000
--- a/doc/help/intel_css_styles.css
+++ /dev/null
@@ -1,1020 +0,0 @@
-/* ================================================= */
-/* ====== Windows CSS Styles ======================= */
-/* ====== styles_w.css ============================= */
-
-/* ------------------------------------------------- */
-/* Default body style */
-body {
-	color:#333333;
-	background-color:#ffffff;
-	font-family: Verdana, Arial, sans-serif;
-	font-size: 10pt;
-	margin-left: 30px;
-}
-
-/* ------------------------------------------------- */
-/* Help 3 body style overriding default MSHV behavior */
-
-body.OH_VSIP_body {
-	
-	margin-left: 30px;
-	
-	}
-	
-DIV.OH_outerContent
-{  
-  border:0px none #FFFFFF; 
-}
-
-
-/* ------------------------------------------------- */
-/* Title headings styles */
-h1 {
-	color: #0860a8;
-	font-size: 15pt;
-	font-weight: normal;
-	padding-bottom: 1px;	
-	margin-left: 0pt;
-	margin-bottom: 0px;
-	border-bottom: 1px solid #0860A8; 
-}
-
-h1.firsttitle { 
-    font-weight:normal; 
-    border-bottom:0 none; 
-    margin-left:0; 
-}
-h2 {
-	color: #0860a8;
-	font-weight: lighter;
-	margin-top: 5pt;
-	margin-bottom: 0;
-	font-size: 13pt;
-}
-/*h2 { 
-	color: #0860a8;
-	font-weight: lighter;
-	padding-left:30px; 
-	margin-top:5pt; 
-	margin-bottom:0; 
-	font-size:13pt;
-}*/
-h3 {
-	color: #333333;
-	font-weight: bold;
-	margin-top: 5pt;
-	margin-bottom: 0;
-	font-size: 10.5pt;
-}
-/*h3 { 
-	color: #333333;
-	font-weight:bold; 
-	padding-left:30px; 
-	margin-top:5pt; 
-	margin-bottom:0; 
-	font-size:10.5pt;
-}*/
-
-h4 { 
-	color: #333333;
-	color: #0860a8;
-	margin-bottom:0.75em; 
-	padding-left:0px;
-	/*padding-left:15px;*/
-	font-size: 10.0pt;
- }
-.relinfo { 
-	padding-left:30px; 
-/*	color: #333333;*/
-}
-caption { 
-    font-size:10pt; 
-    font-weight: bold; 
-}
-.figcap { 
-    margin-left:24px;
-    font-size:10pt; 
-    font-weight: bold; 
-    text-align:center;
-}
-.sectiontitle { 
-	padding-left:0px;
-	/*padding-left:30px;*/ 
-}
-.linklist { 
-	padding-left:0px;
-	/*padding-left:30px;*/ 
-}
-/* ------------------------------------------------- */
-/* Link styles */
-a:link { 
-	color: #0860a8;
-	text-decoration: none;
-/*	color:#0033ff;*/
-}
-a:active { 
-	color: #0860a8;
-	text-decoration: underline;
-/*	color:#000000;	*/
-}
-a:visited { 
-	color:#0860a8;
-	text-decoration: none;
-/*	color:#9900cc;*/
-}
-a:hover { 
-	color:#000000; 
-	background-color:#ffffcc;
-}
-.familylinks { 
-     margin-top:1em; 
- }
-a.start { 
-	font-size: 18pt;
-	text-decoration: underline;
-}
-a:active.start { 
-	color: #0860a8;
-	text-decoration: underline;
-}
-a:visited.start { 
-	color:#0860a8;
-	text-decoration: underline;
-}
-a.underlined { 
-	text-decoration: underline;
-}
-a:active.underlined { 
-	color: #0860a8;
-	text-decoration: underline;
-}
-a:visited.underlined { 
-	color:#0860a8;
-	text-decoration: underline;
-}
-/* ------------------------------------------------- */
-/* Paragraph styles */
-.shortdesc {
-	font-size: inherit;
-	/*font-size: 12pt;*/
-   /*font-style: italic;*/
-	padding-left: inherit;
-	line-height : 16pt;	
-	margin-top: 0px;	
-	margin-bottom: 0.5em;	
-}
-p { 
-	font-size: inherit;
-	margin-left:0px;  
-	/*margin-left:30px; */
-	/*line-height:120%;*/
-	line-height:150%;
-	margin-top:0; 
-	/*margin-bottom:5pt;*/
-	margin-bottom:10px;
-}
-.p { 
-	font-size:inherit; 
-	margin-left:0px; 
-	/*margin-left:30px; */
-/*	line-height:130%; */
-	line-height:170%; 
-	margin-top:0; 
-	margin-bottom:5pt;
-	padding-left:0pt; 
-}
-
-/* ------------------------------------------------- */
-/* Table styles */
-table { 
-	margin-bottom:5pt; 
-	border-collapse:collapse; 
-	margin-left:0px; 
-	/*margin-left:30px;*/  
-	margin-top:0.3em; 
-	font-size:10pt;
-}
-tr { 
-	vertical-align:top;
-}	
-th, th h3{ 
-	padding:4px; 
-	text-align:left; 
-	background-color: #555555; 
-	font-weight:bold; 
-	margin-top:0; 
-	margin-bottom:0; 
-	color: #FFFFFF; 
-	font-size:11pt;	
-}
-th { 
-	border:1px #bababa solid;
-	/*padding:0;*/
-	padding-top: 0px; 
-	padding-bottom: 0px; 
-	padding-right: 3px; 
-	padding-left: 3px; 
-}
-
-td { 
-	border: 1px #bababa solid; 
-/*	border:1px #ff9900 solid; */
-	vertical-align:top; 
-	font-size:inherit;
-	margin-bottom:0;
-}
-td, td p{ 
-	margin-top:0; 
-	margin-left:0;
-	/*padding: 5px; */
-	text-align:left; 
-	font-size:inherit; 
-	line-height: 120%;
-/*	line-height:130%;*/
-}
-td p {
-	margin-bottom:0;
-	padding-top: 5px; 
-	padding-bottom: 5px; 
-	padding-right: 5px; 
-	padding-left: 1px; 
-}
-.noborder { 
-	border:0px none;
-}
-.noborder1stcol { 
-	border:0px none;
-	padding-left: 0pt;
-}
-td ol { 
-	font-size:inherit;
-	margin-left:28px; 
-}
-td ul { 
-	font-size:inherit;
-	margin-left:24px; 
-}
-.DefListTbl {
-   width: 90%;
-	margin-left: -3pt;
-}
-.syntaxdiagramtbl {
-	 margin-left: -3pt;
-}
-.sdtbl {  
-}
-.sdrow {  
-}
-.sdtblp {  
-	border:0px none;
-	font-size:inherit;
-	line-height: 120%;
-	margin-bottom:0;
-	padding-bottom: 0px; 
-	padding-top: 5px; 
-	padding-left: 0px; 
-	padding-right: 5px; 
-	vertical-align:top; 
-}
-
-.idepara {  
-	border:0px none;
-	font-size:inherit;
-	line-height: 120%;
-	margin-bottom:0;
-	padding-bottom: 0px; 
-	padding-top: 5px; 
-	padding-left: 0px; 
-	padding-right: 5px; 
-	vertical-align:top; 
-}
-.ide_para {  
-	border:0px none;
-	font-size:inherit;
-	line-height: 120%;
-	margin-bottom:0;
-	padding-bottom: 0px; 
-	padding-top: 5px; 
-	padding-left: 0px; 
-	padding-right: 5px; 
-	vertical-align:top; 
-}
-/* ------------------------------------------------- */
-/* Note styles */
-div.Note{
-	margin-top:0px;
-	margin-left:15px;
-	margin-bottom:10px;
-	padding-left:10px;
-	padding-right:5px;
-	padding-bottom:5px;
-	
-	background-color: #E2E7EB;
-	max-width:600px;
-	box-shadow:2px 3px 3px 1px #CCCCCC;
-}
-dd div.Note {
-	margin-top:10px;
-}
-
-h3.NoteTipHead {
-	color: #0860a8;
-	padding-top: 5px;
-	text-transform: uppercase;
-}
-h3.NoteTipHead img {
-	vertical-align: middle;
-}
-P.Note { 
-	/*margin-top:0;
-	margin-left:25px;
-	margin-bottom:0pt;*/
-	margin-top:0;
-	margin-left:15px;
-	padding-left:10px;
-	padding-right:5px;
-	padding-bottom:5px;
-	margin-bottom:0pt;
-	background-color: #E2E7EB;
-	max-width:600px;	
-
-}
-
-/* ------------------------------------------------- */
-blockquote { 
-	margin-top:0; 
-	margin-bottom:0;
-}
-HR { 
-	/*color:#ff9900; */
-	color: #0860A8;
-	border:0; 
-	background:#ff9900;
-	height:1px; 
-	margin-left:0;
-}
-/* ------------------------------------------------- */
-/* List styles */
-.simple    {
-	list-style: none;
-}
-ul { 
-	/*margin-left: 24px; */
-	margin-bottom: 1em; 
-	/*padding-left:24px; */
-	font-size: inherit; 
-	line-height: 100%; 
-	/*line-height:130%;*/ 
-	list-style-image:url();
-	margin-top: 0px; 
-
-}
-ol { 
-	font-size:inherit;
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type:decimal;
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol.num { 
-	font-size:inherit; 
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type: decimal;
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol.abc { 
-	font-size:inherit; 
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type: lower-alpha;
-/*	list-style-type: upper-alpha;*/
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol.ABC { 
-	font-size:inherit; 
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type: upper-alpha;
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol.roman { 
-	font-size:inherit; 
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type: lower-roman;
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol.Roman { 
-	font-size:inherit; 
-	line-height: 100%; 
-	/*line-height:130%; */
-	list-style-type: upper-roman;
-	/*margin-left:24px; */
-	margin-bottom:1em; 
-	margin-top:0px; 
-	/*padding-left:30px; */
-}
-ol ol { 
-	/*margin-left:0px; */
-	margin-left:24px; 
-	list-style:lower-alpha; 
-	margin-bottom:0em; 
-	font-size:inherit;
-}
-ul ol { 
-	/*margin-left:0px; */
-	margin-left:24px; 
-	list-style-image:url();
-	list-style-type:decimal; 
-	margin-bottom:0em; 
-	font-size:inherit;
-}
-ul ul { 
-	font-size:inherit;
-	margin-bottom:0px; 
-	/*margin-left:0px; */
-	margin-left:18px; 
-	/*list-style-image:url(); 
-	list-style:circle;*/
-}
-/*ul li p, ol ul li p, ol ul li {
-}*/
-ul ul li p {
-	list-style: url();
-}
-
-ol ul { 
-	font-size:inherit;
-	margin-bottom:0px; 
-	margin-left:18px; 
-	/*list-style:circle; */
-}
-.dash {
-	list-style: url("../Resources/ndash.gif");
-}
-.dashpara { 
-	margin-left:10pt; 
-}
-dd ul, dd p ul { 
-	list-style: url();
-	/*margin-left: 12pt;*/
-}
-dd ul { 
-	margin-left:16px; 
-	font-size:inherit;
-}
-dd ol { 
-	margin-left:24px; 
-	font-size:inherit;
-}
-/*ul li ul li, ul li p ul li {
-	list-style-image:url("Resources/ndash.gif"); */
-	/*list-style: url();*/
-/*}*/
-/*ul li ul li p, ul li p ul li p {
-	list-style-image:url("Resources/ndash.gif"); */
-	/*list-style: url();*/
-/*}*/
-li { 
-	font-size:inherit;
-	line-height:130%; 
-	margin-top:0px; 
-}
-li p, ol p, ul p { 
-	margin-bottom:0.2em; 
-	margin-top:0.2em; 
-	margin-left:0; 
-	padding-left:0; 
-	font-size:inherit;
-}
-li table, td table, dd table { 
-	margin-left:0;
-}
-indent li p { 
-	margin-bottom:0.2em; 
-	margin-top:0.2em; 
-	margin-left:-2em;
-}
-P.Preformatted, pre {
- 	background-color:#eeeeee;
-	font-size:inherit; 
-	font-family:"Courier New", Courier, monospace; 
-	line-height: 110%;
-	margin-bottom:0; 
-	margin-left:0px; 
-	/*margin-left:30px;*/  
-	margin-top:0; 		
-	x-text-tab-stops:repeat 1in; 
-}
-
-td P.Preformatted, pre { 
-	background-color:#eeeeee;
-	font-size:10pt; 
-	/*font-size:inherit; */
-	font-family:"Courier New", Courier, monospace; 
-	/*line-height:90%;*/ // reduced line height by 50%.
-	margin-bottom:0; 
-	margin-left:0px; // reduced the left margin for the this new pseudo-class.
-	margin-top:0; 
-	x-text-tab-stops:repeat 1in; 
-}
-
-div.nobullet { 
-	margin-left:10pt; 
- }
-/*p.nobullet { 
-	margin-bottom:0.2em; 
-	margin-top:0.2em; 
-	padding-left:0; 
-	font-size:inherit;
-	background-color: red;
-}*/
-
-ul.ullinks { 
-	margin-left: 0px;
-	margin-bottom: 1em; 
-	/*padding-left:24px; */
-	font-size: inherit; 
-	line-height: 100%; 
-	/*line-height:130%;*/ 
-	/*list-style-image:url(); */
-	margin-top: 0px; 
-	margin-left: 16px;
-}
-/*.ulchildlink {
-	list-style: url();
-}*/
-
-*/
-/* ------------------------------------------------- */
-/* Definition list */
-dl { 
-	font-size:inherit; 
-	margin-bottom:0px; 
-	margin-left:0px;
-	margin-top:0px; 
-}	
-dt { 
-/*	font-weight:bold; */
-	margin-left:0em; 
-	margin-top:0em;
-   margin-bottom:0em; 
-   width:100px;
-}
-.dlterm { 
-	/*font-weight:bold; */
-	margin-left:0em; 
-	margin-top:0em;
-   margin-bottom:0em; 
-   width:100px; 
-}
-dd {
-	font-size:inherit; 
-	margin-left:0px; 
-   position:relative; 
-  	top:-13pt;
-   left:110px;  
-   width:70%; 
-   line-height:14pt;
-   margin-top:0em;
-   margin-bottom:-10pt;
-}
-/*.biblio {
-	color: blue;
-}*/
-dd.biblio {
-	/*color: blue;*/
-	font-size:inherit; 
-	margin-left:0px; 
-   position:relative; 
-    top:-14pt; 
-    left:140px; 
-    width:60%; 
-    line-height:14pt;
-    margin-top:0em;
-    margin-bottom:0em; 
-}
-.DefListTbl {
-   width: 90%;
-}
-table.argTbl {
-   width: 75%;
-/*	padding-left:30px; 
-	margin-left:24px; */
-}
-.dlsyntax { 
-	/*margin-left:24px;*/
-	margin-left:0px; 
-/*	margin-bottom:1em; */
-	/*padding-left:5px;*/
-	padding-left:0px;  
-/*	padding-left:30px; */
-	font-size:inherit; 
-	margin-top:-1px; 
-	line-height:150%; 
-}	
-.dtsyntax  { 
-   margin-bottom:-1.125em; 
-	margin-left:0em; 
-	margin-top:0em;
-   width:100px; }
-.ddsyntax  { 
-	 font-size:inherit; 
- 	 margin-left:0px; 
-    position:relative; 
-    top:-4pt; 
-    left:110px; 
-    width:70%; 
-    line-height:14pt;
-    margin-bottom:-1em; 
-}
-.dlsyntaxpara {
-/*	margin-left:24px; */
-	margin-left:0px;
-	margin-bottom:1em; 
-	/*padding-left:30px; */
-	font-size:inherit; 
-	/*margin-top:-1px; */
-	/*margin-top:1em; */
-	line-height:150%; 
-}
-.syntaxnote { 
-	margin-left:0px; 
-	/*margin-left:30px;*/  
-	/*margin-bottom:1em; */
-	padding-left:0px; 
-	font-size:inherit; 
-	margin-top:-5px; 
-	line-height:150%; 
- }
-.syntaxnote-orig { 
-	margin-left:135px; 
-	margin-bottom:1em; 
-	padding-left:30px; 
-	font-size:inherit; 
-	margin-top:-1px; 
-	line-height:150%; 
- }
-/* "dl" style for ""ReturnValues" */
-.dlretval { 
-	margin-left:24px; 
-	margin-bottom:2em; 
-	padding-left:30px; 
-	font-size:inherit;
-	margin-top:-1px; 
-	line-height:150%; 
-   width: 90%;
-}	
-/* "dt" style for ""ReturnValues" */
-.dtretval  { 
-    margin-left:0em; 
-    margin-top:0em;
-    margin-bottom:-1.25em; 
-    width:400px; 
-}
-/* "dd" style for ""ReturnValues" */
-.ddretval  { 
-    /*color: blue;*/
-	 font-size:inherit; 
- 	 margin-left:0px; 
-    position:relative; 
-    top:-4pt; 
-    left:300px; 
-/*    width:60%;*/ 
-/*    line-height:14pt;*/
-    margin-bottom:0;
-/*    margin-bottom:-1em;*/
-}
-dd p {
-	margin-bottom:0em; 
-	margin-top:0em; 
-	margin-left:0; 
-	padding-left:0; 
-	font-size:inherit;
-}
-dd dl { 
-	margin-left:0px;
-}
-/* ------------------------------------------------- */
-/* Inline Styles */
-SPAN.Big { 
-	font-weight:bold; 
-	font-size:105%;
-}
-SPAN.Code, .Code { 
-    font-family:"Courier New", Courier, monospace;
-}
-.code { 
-        background-color: #F5F5F5; 
-        font-family: "Courier New" , Courier, monospace;
-        font-size: 10pt; 
-        line-height: 118%; 
-        margin-top:0.0em; 
-        margin-bottom:0.0em;
-        /*padding-left:30px; */
-        padding-left:0px; 
-        white-space: pre;
-}
-code { 
-       background-color: #F5F5F5; 
-       font-family:"Courier New" , Courier, monospace;
-       font-size: 10pt; 
-       line-height: 118%; 
-       margin-top:0.0em; 
-       margin-bottom:0.0em;
-       /*padding-left:30px; */
-       padding-left:0px; 
-       white-space: pre;
-}
-strong { 
-    font-size: inherit; 
- }
-sup, sub { vertical-align: 0;
-           position: relative; }
-
-sub{
-  top: 0.8ex;
-}
-sup{
-    bottom: 1ex;
-}
-/*sub {
-    font-family:Arial, Symbol, monospace;
-	 font-size: 80%;
-    vertical-align: bottom;
- }
-sup {
-    font-family:Arial, Symbol, monospace;
-	 font-size: 80%;
-    vertical-align: top;
- }*/
-tt { 
-    font-family: "Courier New" , Courier, monospace;  
-}
-.b {
-    font-weight: bold; 
-}
-.boldspan {
-    font-weight: bold; 
-}
-.bgcolorgray { 
-    background-color:#999999;
- }
-.bi {
-    font-style: italic;
-    font-weight: bold; 
-}
-.bt {
-    font-family:times;  
-    font-weight: bold; 
-}
-.codeph { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.delim { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.eq { 
-    margin-bottom:1em; 
-	/*margin-left:30px; */
- }
-.eqsymbol { 
-    /*font-family:"Courier New" , Courier, monospace;  */
-    /*font-family:Tahoma, sans-serif;*/
-    font-family:'Times New Roman', sans-serif;
-    font-size: 12pt;
-}
-
- }
-.imagecenter {
-    text-align: center; 
-}
-.tfootnote {
-    font-size:8pt; 
-}
-.italic {
-    font-style: italic;
-}
-.keyword { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: normal; 
-}
-.keywordb { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-}
-.keywordtt { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: normal; 
-}
-.keywordbt { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-}
-.keywordit { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-style: italic;
-    font-weight: inherit; 
-}
-.keywordbi { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-    font-style: italic;
-}
-.keywordn { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-style: normal;
-    font-weight: normal; 
-}
-h1 .keyword, h2 .keyword, h3 .keyword { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-}
-.kwd { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.option { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.optionb { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-}
-.optiontt { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: normal; 
-}
-.optionbt { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-}
-.optionit { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-style: italic;
-    font-weight: inherit; 
-}
-.optionbi { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-weight: bold; 
-    font-style: italic;
-}
-.optionn { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-style: normal;
-    font-weight: normal; 
-}
-.oper { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.parmname {
-    font-style: italic;
-    font-family:"Courier New" , Courier, monospace;  
-	font-weight: normal;
-}
-.parmnameb { 
-    font-family:"Courier New" , Courier, monospace;  
-	font-style: italic;
-    font-weight: bold; 
-}
-.parmnamett { 
-    font-family:"Courier New" , Courier, monospace;  
-	font-style: normal;
-    font-weight: normal; 
-}
-.parmnamebt { 
-    font-family:"Courier New" , Courier, monospace;  
-	font-style: normal;
-    font-weight: bold; 
-}
-.parmnamen { 
-    font-family:"Courier New" , Courier, monospace;  
-    font-style: normal;
-    font-weight: normal; 
-}
-.sep { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.tenpt { 
-    font-size:8pt; 
- }
-.tt { 
-    font-family:"Courier New" , Courier, monospace;  
-}
-.var {
-    font-style: italic;
-    font-family:"Courier New" , Courier, monospace;  
-}
-.equation { 
-    font-style: italic;
-    font-family:"Times New Roman" , monospace;  
-}
-.varname {
-    font-style: italic;
-    font-family:"Courier New" , monospace;  
-}
-.varnameb { 
-    font-family:"Courier New" , monospace;  
-    font-style: italic;
-    font-weight: bold; 
-}
-.varnamebo { 
-    font-family:"Courier New" , monospace;  
-    font-style: italic;
-    font-weight: bold; 
-	text-decoration: overline
-}
-.varnamebt { 
-    font-family:"Courier New" , monospace;  
-    font-style: normal;
-    font-weight: bold; 
-}
-.varnamebu { 
-    font-family:"Courier New" , monospace;  
-    font-style: italic;
-    font-weight: bold; 
-	text-decoration: underline
-}
-.varnamett { 
-    font-family:"Courier New" , monospace;  
-    font-style: normal;
-    font-weight: normal; 
-}
-
-.varnamen { 
-    font-family:"Courier New" , monospace;  
-    font-style: normal;
-    font-weight: normal; 
-}
-.overline { 
-	text-decoration: overline
-}
-.underline { 
-	text-decoration: underline
-}
-.filepath {
-    font-style: normal; /* MKL */
-    /* font-style: italic;*/ /* Compiler */
-    font-family:"Courier New" , Courier, monospace;  
-}
-
-/*.uicontrol {
-    font-style: italic;
-    font-family:"Courier New" , Courier, monospace;  
-}*/
-/*.Fortran95 {*/
-.NonStdFortran {
-   /*color: teal;*/
-   /*color: #007783;*/
-   color: green;
-}
-
-.h3titleblue {
-	color: #0860a8;
-   font-weight: lighter;
-	margin-top: 5pt;
-	margin-bottom: 0;
-   font-size: 13pt;
-}
-
-.Context_StepsIntro {
-   font-weight: bold;
-}
-
-.docfeedback {
-	margin-top: 15px;
-	margin-left: 0pt;
-	margin-bottom: 0px;
-	border-top: 1px solid #cccccc;
-	font-weight: bold;
-}
-
-.noBgrnd {
-	background-image: none;
-}
-.dropPara {
-	float: left;
-}
-
-
-.RevUpdate {
-   /*color: red; */
-   background-color: #FFFF99;
-   font-weight: normal;
-   line-height:120%;
-}
\ No newline at end of file
diff --git a/doc/help/main/Benefits.htm b/doc/help/main/Benefits.htm
deleted file mode 100755
index 942c65a..0000000
--- a/doc/help/main/Benefits.htm
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Intel® Threading Building Blocks Benefits">
-<meta name="DC.subject" content="Benefits">
-<meta name="keywords" content="Benefits">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Benefits">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Intel® Threading Building Blocks Benefits</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Benefits">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Benefits"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Intel® Threading Building Blocks Benefits</h1>
- 
-   
-  <div> 
-	 <p> Intel® Threading Building Blocks (Intel® TBB) is a library that helps
-		you leverage multi-core performance without having to be a threading expert.
-		Typically you can improve performance for multi-core processors by implementing
-		the key points explained in the early sections of the User Guide. As your
-		expertise grows, you may want to dive into more complex subjects that are
-		covered in advanced sections. 
-	 </p>
- 
-	 <p>There are a variety of approaches to parallel programming, ranging from
-		using platform-dependent threading primitives to exotic new languages. The
-		advantage of Intel® Threading Building Blocks is that it works at a higher
-		level than raw threads, yet does not require exotic languages or compilers. You
-		can use it with any compiler supporting ISO C++. The library differs from
-		typical threading packages in the following ways: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><strong>Intel® Threading Building Blocks enables you to specify 
-				<em>logical paralleism</em> instead of threads</strong>. Most threading
-			 packages require you to specify threads. Programming directly in terms of
-			 threads can be tedious and lead to inefficient programs, because threads are
-			 low-level, heavy constructs that are close to the hardware. Direct programming
-			 with threads forces you to efficiently map logical tasks onto threads. In
-			 contrast, the Intel® Threading Building Blocks run-time library automatically
-			 maps logical parallelism onto threads in a way that makes efficient use of
-			 processor resources. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Intel® Threading Building Blocks targets 
-				<em>threading for performance</em></strong>. Most general-purpose
-			 threading packages support many different kinds of threading, such as threading
-			 for asynchronous events in graphical user interfaces. As a result,
-			 general-purpose packages tend to be low-level tools that provide a foundation,
-			 not a solution. Instead, Intel® Threading Building Blocks focuses on the
-			 particular goal of parallelizing computationally intensive work, delivering
-			 higher-level, simpler solutions. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Intel® Threading Building Blocks is 
-				<em>compatible</em> with other threading packages.</strong> Because the
-			 library is not designed to address all threading problems, it can coexist
-			 seamlessly with other threading packages. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Intel® Threading Building Blocks emphasizes 
-				<em>scalable, data parallel programming</em></strong>. Breaking a program
-			 up into separate functional blocks, and assigning a separate thread to each
-			 block is a solution that typically does not scale well since typically the
-			 number of functional blocks is fixed. In contrast, Intel® Threading Building
-			 Blocks emphasizes 
-			 <em>data-parallel</em> programming, enabling multiple threads to work
-			 on different parts of a collection. Data-parallel programming scales well to
-			 larger numbers of processors by dividing the collection into smaller pieces.
-			 With data-parallel programming, program performance increases as you add
-			 processors. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Intel® Threading Building Blocks relies on 
-				<em>generic programming</em></strong>. Traditional libraries specify
-			 interfaces in terms of specific types or base classes. Instead, Intel®
-			 Threading Building Blocks uses generic programming. The essence of generic
-			 programming is writing the best possible algorithms with the fewest
-			 constraints. The C++ Standard Template Library (STL) is a good example of
-			 generic programming in which the interfaces are specified by 
-			 <em>requirements</em> on types. For example, C++ STL has a template
-			 function 
-			 <samp class="codeph">sort</samp> that sorts a sequence abstractly defined in
-			 terms of iterators on the sequence. The requirements on the iterators are: 
-		  </p>
- 
-		  <ul type="disc"> 
-			 <li> 
-				<p>Provide random access 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>The expression 
-				  <samp class="codeph">*i<*j</samp> is true if the item pointed to by
-				  iterator 
-				  <samp class="codeph">i</samp> should precede the item pointed to by iterator
-				  
-				  <samp class="codeph">j</samp>, and false otherwise. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>The expression 
-				  <samp class="codeph">swap(*i,*j)</samp> swaps two elements. 
-				</p>
- 
-			 </li>
- 
-		  </ul>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>Specification in terms of requirements on types enables the template to
-		sort many different representations of sequences, such as vectors and deques.
-		Similarly, the Intel® Threading Building Blocks templates specify requirements
-		on types, not particular types, and thus adapt to different data
-		representations. Generic programming enables Intel® Threading Building Blocks
-		to deliver high performance algorithms with broad applicability. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/main/Resources/back.GIF b/doc/help/main/Resources/back.GIF
deleted file mode 100755
index 787eb7d..0000000
Binary files a/doc/help/main/Resources/back.GIF and /dev/null differ
diff --git a/doc/help/main/Resources/forward.GIF b/doc/help/main/Resources/forward.GIF
deleted file mode 100755
index 19cb7fb..0000000
Binary files a/doc/help/main/Resources/forward.GIF and /dev/null differ
diff --git a/doc/help/main/Resources/hpc_header.jpg b/doc/help/main/Resources/hpc_header.jpg
deleted file mode 100755
index 6d6a53a..0000000
Binary files a/doc/help/main/Resources/hpc_header.jpg and /dev/null differ
diff --git a/doc/help/main/Resources/sync.GIF b/doc/help/main/Resources/sync.GIF
deleted file mode 100755
index da29078..0000000
Binary files a/doc/help/main/Resources/sync.GIF and /dev/null differ
diff --git a/doc/help/main/help_support.htm b/doc/help/main/help_support.htm
deleted file mode 100755
index 7df0db3..0000000
--- a/doc/help/main/help_support.htm
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Getting Help and Support">
-<meta name="DC.subject" content="Support, Help">
-<meta name="keywords" content="Support, Help">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="notation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Getting Help and Support</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="notation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="notation"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Getting Help and Support</h1>
- 
-   
-  <div> 
-	 <p>The online version of the Intel® Threading Building
-		Blocks (Intel® TBB) documentation integrates into the Microsoft Visual Studio*
-		IDE help system. 
-	 </p>
- 
-	 <div class="section"><h2 class="sectiontitle">Getting Help</h2> 
-		 
-		<p>In the Visual Studio IDE, you can browse and search for topics in
-		  different ways: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li>Use 
-			 <b class="uicontrol">Help > Contents</b> to browse through topics by
-			 functional domains. 
-		  </li>
- 
-		  <li>Use 
-			 <b class="uicontrol">Help > Index</b> to access an index to all
-			 topics. Either type the word you are looking for or scroll through the list. 
-		  </li>
- 
-		  <li>Click 
-			 <b class="uicontrol">Help > Search</b> to perform a full text
-			 search. 
-		  </li>
- 
-		</ul>
- 
-		<p>To navigate between topics, use the navigation buttons available in
-		  the Document Explorer toolbar or from the topic pop-up menu: 
-		</p>
- 
-		<p> 
-		<ul type="disc"> 
-		  <li>Click the Back 
-			 <img height="23" width="21" src="Resources/back.GIF"> button to return to the
-			 previously viewed topic. 
-		  </li>
- 
-		  <li>Click the Forward 
-			 <img height="23" width="21" src="Resources/forward.GIF"> button to go to the following topic. 
-		  </li>
- 
-		</ul>
- 
-		</p>
- 
-		<p><strong>Accessing Help in Visual Studio* 2010 IDE</strong> 
-		</p>
- 
-		<p>To access the Intel TBB documentation in Visual Studio* 2010 IDE: 
-		</p>
- 
-		<p> 
-		<ol> 
-		  <li>Configure the IDE to use local help (once). To do this, go to 
-			 <strong>Help > Manage Help Settings</strong> and check 
-			 <strong>I want to use online help</strong>. 
-		  </li>
- 
-		  <li>Use the 
-			 <strong>Help > View Help</strong> menu item to view a list of available help
-			 collections and open the Intel TBB documentation. 
-		  </li>
- 
-		</ol>
- 
-		</p>
- 
-		<p><strong>Using Intel Search Filters</strong> 
-		</p>
- 
-		<p>With Visual Studio* 2008, you can include Intel documentation in all
-		  search results by checking the 'Intel' search filter box for the 
-		  <strong>Language</strong>, 
-		  <strong>Technology</strong>, and 
-		  <strong>Content Type</strong> categories. You must check the Intel search box for
-		  all three categories to include Intel documentation in your searches.
-		  Unchecking all three Intel search boxes excludes Intel documentation from
-		  search results. The Intel search filters work in combination with other search
-		  options for each category. 
-		</p>
- 
-		<p><strong>Locating Intel Topics</strong> 
-		</p>
- 
-		<p>To display Intel documentation in Visual Studio 2008, select 
-		  <strong>Contents</strong> from the Visual Studio 
-		  <strong>Help</strong> menu. Then, select 
-		  <strong>Intel</strong> in the choices under 
-		  <strong>Filtered by</strong>. In navigating the Intel documentation, you may want
-		  to know where the topic you are reading is located in the table of contents
-		  (TOC). Click the Sync with Table of Contents 
-		  <img height="22" width="24" src="Resources/sync.GIF"> button on the Visual Studio toolbar to find where the
-		  topic is located in the TOC. You can also use Sync with Table of Contents with
-		  Intel topics in search results or with the context-sensitive help topics to
-		  locate them in the Intel documentation TOC. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Getting Technical Support</h2> 
-		 
-		<p>If you did not register your Intel® software product during
-		  installation, please do so now at the Intel® Software Development Products
-		  Registration Center. Registration entitles you to free technical support,
-		  product updates and upgrades for the duration of the support term. 
-		</p>
- 
-		<p>For general information about Intel technical support, product
-		  updates, user forums, FAQs, tips and tricks and other support questions, go to:
-		  
-		  <a href="http://www.intel.com/software/products/support/" target="_blank">http://www.intel.com/software/products/support/</a>. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/main/introducing.htm b/doc/help/main/introducing.htm
deleted file mode 100755
index 36a0f42..0000000
--- a/doc/help/main/introducing.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Introducing Intel® Threading Building Blocks">
-<meta name="DC.subject" content="Intel® Thread Building Blocks, Overview">
-<meta name="keywords" content="Intel® Thread Building Blocks, Overview">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="introducing">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Introducing Intel® Threading Building Blocks</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="introducing">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="introducing"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Introducing Intel® Threading Building Blocks</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) is a
-		library that supports scalable parallel programming using standard ISO C++
-		code. It does not require special languages or compilers. It is designed to
-		promote scalable data parallel programming. Additionally, it fully supports
-		nested parallelism, so you can build larger parallel components from smaller
-		parallel components. To use the library, you specify tasks, not threads, and
-		let the library map tasks onto threads in an efficient manner. 
-	 </p>
- 
-	 <p>Many of the library interfaces employ generic
-		programming, in which interfaces are defined by requirements on types and not
-		specific types. The C++ Standard Template Library (STL) is an example of
-		generic programming. Generic programming enables Intel® TBB to be flexible yet
-		efficient. The generic interfaces enable you to customize components to your
-		specific needs. 
-	 </p>
- 
-	 <p>The net result is that Intel® TBB enables you to
-		specify parallelism far more conveniently than using raw threads, and at the
-		same time can improve performance. 
-	 </p>
- 
-	 <p> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"> 
-		   
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="100%" id="d608e50">
-				  <p>Optimization Notice
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="bgcolor(#ccecff)" bgcolor="#ccecff" valign="top" width="100%" headers="d608e50 ">
-				  Intel's compilers may or may not optimize to the same degree for non-Intel
-				  microprocessors for optimizations that are not unique to Intel microprocessors.
-				  These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other
-				  optimizations. Intel does not guarantee the availability, functionality, or
-				  effectiveness of any optimization on microprocessors not manufactured by Intel.
-				  Microprocessor-dependent optimizations in this product are intended for use
-				  with Intel microprocessors. Certain optimizations not specific to Intel
-				  microarchitecture are reserved for Intel microprocessors. Please refer to the
-				  applicable product User and Reference Guides for more information regarding the
-				  specific instruction sets covered by this notice. 
-				  <p>Notice revision #20110804 
-				  </p>
-
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/main/legal_information.htm b/doc/help/main/legal_information.htm
deleted file mode 100755
index 86ba08b..0000000
--- a/doc/help/main/legal_information.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Legal Information">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="legal_information">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Legal Information</title>
-</head>
-<body id="legal_information">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="legal_information"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Legal Information</h1>
- 
-  <div> 
-	 <p> INFORMATION IN THIS DOCUMENT IS PROVIDED IN
-		CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL
-		OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT.
-		EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS,
-		INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR
-		IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING
-		LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,
-		MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-		PROPERTY RIGHT. 
-	 </p>
- 
-	 <p> A "Mission Critical Application" is any application
-		in which failure of the Intel Product could result, directly or indirectly, in
-		personal injury or death. SHOULD YOU PURCHASE OR USE INTEL'S PRODUCTS FOR ANY
-		SUCH MISSION CRITICAL APPLICATION, YOU SHALL INDEMNIFY AND HOLD INTEL AND ITS
-		SUBSIDIARIES, SUBCONTRACTORS AND AFFILIATES, AND THE DIRECTORS, OFFICERS, AND
-		EMPLOYEES OF EACH, HARMLESS AGAINST ALL CLAIMS COSTS, DAMAGES, AND EXPENSES AND
-		REASONABLE ATTORNEYS' FEES ARISING OUT OF, DIRECTLY OR INDIRECTLY, ANY CLAIM OF
-		PRODUCT LIABILITY, PERSONAL INJURY, OR DEATH ARISING IN ANY WAY OUT OF SUCH
-		MISSION CRITICAL APPLICATION, WHETHER OR NOT INTEL OR ITS SUBCONTRACTOR WAS
-		NEGLIGENT IN THE DESIGN, MANUFACTURE, OR WARNING OF THE INTEL PRODUCT OR ANY OF
-		ITS PARTS. 
-	 </p>
- 
-	 <p> Intel may make changes to specifications and product
-		descriptions at any time, without notice. Designers must not rely on the
-		absence or characteristics of any features or instructions marked "reserved" or
-		"undefined." Intel reserves these for future definition and shall have no
-		responsibility whatsoever for conflicts or incompatibilities arising from
-		future changes to them. The information here is subject to change without
-		notice. Do not finalize a design with this information. 
-	 </p>
- 
-	 <p> The products described in this document may contain
-		design defects or errors known as errata which may cause the product to deviate
-		from published specifications. Current characterized errata are available on
-		request. 
-	 </p>
- 
-	 <p>Contact your local Intel sales office or your
-		distributor to obtain the latest specifications and before placing your product
-		order. 
-	 </p>
- 
-	 <p>Copies of documents which have an order number and
-		are referenced in this document, or other Intel literature, may be obtained by
-		calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm. 
-	 </p>
- 
-	 <p> BlueMoon, BunnyPeople, Celeron, Celeron Inside,
-		Centrino, Centrino Inside, Cilk, Core Inside, E-GOLD, Flexpipe, i960, Intel,
-		the Intel logo, Intel AppUp, Intel Atom, Intel Atom Inside, Intel CoFluent,
-		Intel Core, Intel Inside, Intel Insider, the Intel Inside logo, Intel NetBurst,
-		Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep, Intel
-		Sponsors of Tomorrow., the Intel Sponsors of Tomorrow. logo, Intel StrataFlash,
-		Intel vPro, Intel Xeon Phi, Intel XScale, InTru, the InTru logo, the InTru
-		Inside logo, InTru soundmark, Itanium, Itanium Inside, MCS, MMX, Pentium,
-		Pentium Inside, Puma, skoool, the skoool logo, SMARTi, Sound Mark, Stay With
-		It, The Creators Project, The Journey Inside, Thunderbolt, Ultrabook, vPro
-		Inside, VTune, Xeon, Xeon Inside, X-GOLD, XMM, X-PMU and XPOSYS are trademarks
-		of Intel Corporation in the U.S. and/or other countries. 
-	 </p>
- 
-	 <p>* Other names and brands may be claimed as the
-		property of others. 
-	 </p>
- 
-	 <p>Microsoft, Windows, and the Windows logo are trademarks, or registered
-		trademarks of Microsoft Corporation in the United States and/or other
-		countries. 
-	 </p>
- 
-	 <p>Copyright © 2005 - 2014, Intel Corporation. All
-		rights reserved. 
-	 </p>
- 
-  </div>
- 
-
-
-</body>
-</html>
diff --git a/doc/help/main/notation.htm b/doc/help/main/notation.htm
deleted file mode 100755
index 6e1df44..0000000
--- a/doc/help/main/notation.htm
+++ /dev/null
@@ -1,397 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Notational Conventions">
-<meta name="DC.subject" content="Notation">
-<meta name="keywords" content="Notation">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="notation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Notational Conventions</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="notation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="notation"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Notational Conventions</h1>
- 
-   
-  <div> 
-	 <p>The following conventions may be used in this
-		document. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="GUID-0641CB7E-7712-4703-B217-383F9F40A04C"><!-- --></a><table cellpadding="4" summary="" id="GUID-0641CB7E-7712-4703-B217-383F9F40A04C" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="18.281535648994517%" id="d819e41"> 
-				  <p>Convention 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="36.74588665447898%" id="d819e47"> 
-				  <p>Explanation 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="44.972577696526514%" id="d819e53"> 
-				  <p>Example 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p><em>Italic</em> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Used for introducing new terms, denotation
-					 of terms, placeholders, or titles of manuals. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p>The filename consists of the 
-					 <em>basename</em> and the 
-					 <br><em>extension</em>. 
-				  </p>
- 
-				  <p>For more information, refer to the 
-					 <em>Intel® Linker Manual</em>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p><samp class="codeph">Monospace 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Indicates directory paths and filenames,
-					 commands and command line 
-				  </p>
- 
-				  <p>options, function names, methods, classes,
-					 data structures in body text, source code. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p><samp class="codeph">ippsapi.h 
-					 </samp> 
-				  </p>
- 
-				  <p><samp class="codeph">\alt\include 
-					 </samp> 
-				  </p>
- 
-				  <p>Use the 
-				  <span class="option">okCreateObjs()</span> function to... 
-				  </p>
- 
-				  <p><samp class="codeph">printf("hello, world\n"); 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p><samp class="codeph">Monospace 
-						<em>italic</em></samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Indicates source code placeholders. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p>blocked_range<<em>Type</em>> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p><samp class="codeph">Monospace 
-						<strong>bold</strong> 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Emphasizes parts of source code. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p><samp class="codeph">x = ( h > 0 ? 
-						<strong>sizeof(m)</strong> : 0xF ) + min; 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p>[ ] 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Items enclosed in brackets are optional. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p>Fa[c] 
-				  </p>
- 
-				  <p>Indicates 
-				  <span class="option">Fa</span> or 
-				  <span class="option">Fac</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p>{ | } 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Braces and vertical bars indicate the
-					 choice of one item from a selection of two or more items. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p>X{K | W | P} 
-				  </p>
- 
-				  <p>Indicates 
-				  <span class="option">XK</span>, 
-				  <span class="option">XW</span>, or 
-				  <span class="option">XP</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p>"[" "]" "{"<br>" }" "|" 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>Writing a metacharacter in quotation marks
-					 negates the syntactical meaning stated above; 
-					 <br>the character is
-					 taken as a literal. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p>"[" X "]" [ Y ] 
-				  </p>
- 
-				  <p>Denotes the letter X enclosed in brackets,
-					 optionally followed by the letter Y. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p>... 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>The ellipsis indicates that the previous
-					 item can be repeated several times. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p><var>filename</var> ... 
-				  </p>
- 
-				  <p>Indicates that one or more filenames can be
-					 specified. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="18.281535648994517%" headers="d819e41 "> 
-				  <p>,... 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="36.74588665447898%" headers="d819e47 "> 
-				  <p>The ellipsis preceded by a comma indicates
-					 that the previous item can be repeated several times, 
-					 <br>separated by
-					 commas. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="44.972577696526514%" headers="d819e53 "> 
-				  <p><var>word</var> ,... 
-				  </p>
- 
-				  <p>Indicates that one or more words can be
-					 specified. If more than one word is specified, the words are comma-separated. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 <div class="section"> 
-		<p>Class members are summarized by informal class
-		  declarations that describe the class as it seems to clients, not how it is
-		  actually implemented. For example, here is an informal declaration of class 
-		  <samp class="codeph">Foo</samp>: 
-		</p>
- 
-		<pre>class Foo {
-public:
-	int x();
-	int y;
-	~Foo();
-};
-</pre> 
-		<p>The actual implementation might look like: 
-		</p>
- 
-		<pre>namespace internal {
-	class FooBase  {
-	protected:
-		int x();
-	};
-
-	class Foo_v3: protected FooBase {
-	private:
-		int internal_stuff;
-	public:
-		using FooBase::x;
-		int y;
-	};
-}
-
-typedef internal::Foo_v3 Foo;</pre> 
-		<p>The example shows two cases where the actual
-		  implementation departs from the informal declaration: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p><samp class="codeph">Foo</samp> is actually a typedef to 
-				<samp class="codeph">Foo_v3</samp>. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Method 
-				<samp class="codeph">x()</samp> is inherited from a protected base class. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The destructor is an implicit method generated
-				by the compiler. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The informal declarations are intended to show you
-		  what you need to know to use the class without the distraction of irrelevant
-		  clutter particular to the implementation. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/main/title.htm b/doc/help/main/title.htm
deleted file mode 100755
index fbbf300..0000000
--- a/doc/help/main/title.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Intel® Threading Building Blocks Documentation">
-<meta name="DC.Relation" scheme="URI" content="../main/legal_information.htm">
-<meta name="DC.Relation" scheme="URI" content="../main/help_support.htm">
-<meta name="DC.Relation" scheme="URI" content="../main/introducing.htm">
-<meta name="DC.Relation" scheme="URI" content="../main/Benefits.htm">
-<meta name="DC.Relation" scheme="URI" content="../main/notation.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="reference">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Intel® Threading Building Blocks Documentation</title>
-</head>
-<body class="no-rel-links" id="reference">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="reference"><!-- --></a>
-
- 
-  <h1 class="firsttitle"> 
-	 <br><a name="image_F4CD264A91964937B2F5D11A649804BA"><!-- --></a><img id="image_F4CD264A91964937B2F5D11A649804BA" src="Resources/hpc_header.jpg" height="161" width="300"><br> Intel® Threading Building Blocks Documentation</h1>
- 
-  <div> 
-	 <p>Document number: 327304-006US 
-	 </p>
- 
-	 <p>Intel® Threading Building Blocks - 4.2 update 2
-	 </p>
- 
-	 <p><a href="legal_information.htm#legal_information" class="underlined">Legal
-		  Information</a> 
-	 </p>
- 
-	 <p><a href="../reference/introducing.htm" class="start">Start Here</a> 
-	 </p>
- 
-  </div>
- 
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/Resources/06000005.png b/doc/help/reference/Resources/06000005.png
deleted file mode 100755
index 7dbbd2c..0000000
Binary files a/doc/help/reference/Resources/06000005.png and /dev/null differ
diff --git a/doc/help/reference/Resources/06000007.png b/doc/help/reference/Resources/06000007.png
deleted file mode 100755
index c1b00c1..0000000
Binary files a/doc/help/reference/Resources/06000007.png and /dev/null differ
diff --git a/doc/help/reference/Resources/06000008.png b/doc/help/reference/Resources/06000008.png
deleted file mode 100755
index 3377597..0000000
Binary files a/doc/help/reference/Resources/06000008.png and /dev/null differ
diff --git a/doc/help/reference/Resources/06000009.png b/doc/help/reference/Resources/06000009.png
deleted file mode 100755
index 60e48f4..0000000
Binary files a/doc/help/reference/Resources/06000009.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000A.png b/doc/help/reference/Resources/0600000A.png
deleted file mode 100755
index 5636ef3..0000000
Binary files a/doc/help/reference/Resources/0600000A.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000B.png b/doc/help/reference/Resources/0600000B.png
deleted file mode 100755
index 6f0114e..0000000
Binary files a/doc/help/reference/Resources/0600000B.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000C.png b/doc/help/reference/Resources/0600000C.png
deleted file mode 100755
index 6f85ddb..0000000
Binary files a/doc/help/reference/Resources/0600000C.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000D.png b/doc/help/reference/Resources/0600000D.png
deleted file mode 100755
index b33975b..0000000
Binary files a/doc/help/reference/Resources/0600000D.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000E.png b/doc/help/reference/Resources/0600000E.png
deleted file mode 100755
index 84b2ab6..0000000
Binary files a/doc/help/reference/Resources/0600000E.png and /dev/null differ
diff --git a/doc/help/reference/Resources/0600000F.png b/doc/help/reference/Resources/0600000F.png
deleted file mode 100755
index 5b75563..0000000
Binary files a/doc/help/reference/Resources/0600000F.png and /dev/null differ
diff --git a/doc/help/reference/Resources/08000006.png b/doc/help/reference/Resources/08000006.png
deleted file mode 100755
index abf06da..0000000
Binary files a/doc/help/reference/Resources/08000006.png and /dev/null differ
diff --git a/doc/help/reference/Resources/dep_graph.jpg b/doc/help/reference/Resources/dep_graph.jpg
deleted file mode 100755
index 818157e..0000000
Binary files a/doc/help/reference/Resources/dep_graph.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/flow-graph.jpg b/doc/help/reference/Resources/flow-graph.jpg
deleted file mode 100755
index e132912..0000000
Binary files a/doc/help/reference/Resources/flow-graph.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/hpc_header.jpg b/doc/help/reference/Resources/hpc_header.jpg
deleted file mode 100755
index 6d6a53a..0000000
Binary files a/doc/help/reference/Resources/hpc_header.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/message_flow_graph.jpg b/doc/help/reference/Resources/message_flow_graph.jpg
deleted file mode 100755
index 4a292ee..0000000
Binary files a/doc/help/reference/Resources/message_flow_graph.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/non_consq_rng.jpg b/doc/help/reference/Resources/non_consq_rng.jpg
deleted file mode 100755
index 00eda94..0000000
Binary files a/doc/help/reference/Resources/non_consq_rng.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/parll_red.jpg b/doc/help/reference/Resources/parll_red.jpg
deleted file mode 100755
index b566896..0000000
Binary files a/doc/help/reference/Resources/parll_red.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/parll_scan.jpg b/doc/help/reference/Resources/parll_scan.jpg
deleted file mode 100755
index 4195a84..0000000
Binary files a/doc/help/reference/Resources/parll_scan.jpg and /dev/null differ
diff --git a/doc/help/reference/Resources/reference-latest-19.jpg b/doc/help/reference/Resources/reference-latest-19.jpg
deleted file mode 100755
index 60684ad..0000000
Binary files a/doc/help/reference/Resources/reference-latest-19.jpg and /dev/null differ
diff --git a/doc/help/reference/algorithms.htm b/doc/help/reference/algorithms.htm
deleted file mode 100755
index 972b487..0000000
--- a/doc/help/reference/algorithms.htm
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Algorithms">
-<meta name="DC.subject" content="Algorithms">
-<meta name="keywords" content="Algorithms">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/splittable_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/range_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/partitioners.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_for_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_reduce_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_deterministic_reduce_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_scan_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_do_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_for_each_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/pipeline_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_pipeline_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_sort_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms/parallel_invoke_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="algorithms">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Algorithms</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="algorithms">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="algorithms"><!-- --></a>
-
-
-    <h1 class="topictitle1">Algorithms</h1>
-
-     
-    <div> 
-        <p>Most parallel algorithms provided by Intel®
-            Threading Building Blocks (Intel® TBB) are generic. They operate on all
-            types that model the necessary concepts. Parallel algorithms may be nested. For
-            example, the body of a <samp class="codeph">parallel_for</samp> can invoke another <samp class="codeph">parallel_for</samp>. 
-        </p>
- 
-        <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-            <p> When the body of an outer parallel algorithm invokes another parallel
-                algorithm, it may cause the outer body to be re-entered for a different
-                iteration of the outer algorithm. 
-            </p>
- 
-            <p>For example, if the outer body holds a global lock while calling an
-                inner parallel algorithm, the body will deadlock if the re-entrant invocation
-                attempts to acquire the same global lock. This ill-formed example is a special
-                case of a general rule that code should not hold a lock while calling code
-                written by another author. 
-            </p>
- 
-        </div> 
-    </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/algorithms/splittable_concept.htm">Splittable Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/range_concept.htm">Range Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/partitioners.htm">Partitioners</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_for_func.htm">parallel_for Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_reduce_func.htm">parallel_reduce Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_deterministic_reduce_func.htm">parallel_deterministic_reduce Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_scan_func.htm">parallel_scan Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_do_func.htm">parallel_do Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_for_each_func.htm">parallel_for_each Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/pipeline_cls.htm">pipeline Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_pipeline_func.htm">parallel_pipeline Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_sort_func.htm">parallel_sort Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/algorithms/parallel_invoke_func.htm">parallel_invoke Template Function</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_deterministic_reduce_func.htm b/doc/help/reference/algorithms/parallel_deterministic_reduce_func.htm
deleted file mode 100755
index 0470f9c..0000000
--- a/doc/help/reference/algorithms/parallel_deterministic_reduce_func.htm
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_deterministic_reduce Template Function">
-<meta name="DC.subject" content="parallel_ deterministic _reduce Template Function">
-<meta name="keywords" content="parallel_ deterministic _reduce Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="partitioners/simple_partitioner_cls.htm#simple_partitioner_cls">
-<meta name="DC.Relation" scheme="URI" content="parallel_reduce_func.htm#parallel_reduce_func">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_deterministic_reduce_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_deterministic_reduce Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_deterministic_reduce_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_deterministic_reduce_func"><!-- --></a>
-
- 
-  <h1 class="topictitle1">parallel_deterministic_reduce Template
-	 Function</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Computes reduction over a range, with deterministic
-		  split/join behavior. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename Range, typename Value,
-           typename Func, typename Reduction>
-           Value parallel_deterministic_reduce( const Range& range,
-           const Value& identity, const Func& func,
-           const Reduction& reduction,
-           <var>[,</var> task_group_context& group<var>]</var> );
- 
-template<typename Range, typename Body>
-           void parallel_deterministic_reduce( const Range& range,
-           const Body& body
-           <var>[,</var> task_group_context& group<var>]</var> );</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/parallel_reduce.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>The 
-		  <samp class="codeph">parallel_deterministic_reduce</samp> template
-		  is very similar to the 
-		  <samp class="codeph">parallel_reduce</samp>
-		  template. It also has the functional and imperative forms and has similar
-		  requirements for Func and Reduction. 
-		</p>
- 
-		<p>Unlike 
-		  <samp class="codeph">parallel_reduce</samp>, 
-		  <samp class="codeph">parallel_deterministic_reduce</samp> has
-		  deterministic behavior with regard to splits of both Body and Range and joins
-		  of the bodies. For the functional form, Func is applied to a deterministic set
-		  of Ranges, and Reduction merges partial results in a deterministic order. To
-		  achieve that, 
-		  <samp class="codeph">parallel_deterministic_reduce</samp> always
-		  uses a 
-		  <samp class="codeph">simple_partitioner</samp>
-		  because other partitioners react to random work stealing behavior. Therefore,
-		  the template declaration does not have a partitioner argument. 
-		</p>
- 
-		<p><samp class="codeph">parallel_deterministic_reduce</samp> always
-		  invokes the Body splitting constructor for each range split. 
-		</p>
- 
-		<div class="fignone" id="fig18"><a name="fig18"><!-- --></a><span class="figcap">Execution of
-			 parallel_deterministic_reduce over
-			 blocked_range<int>(0,20,5)</span> 
-		  <br><div class="imageleft"><img src="../Resources/reference-latest-19.jpg" height="135" width="403" align="left"></div><br> 
-		</div>
- 
-		<p>As a result, 
-		  <samp class="codeph">parallel_deterministic_reduce</samp>
-		  recursively splits a range until it is no longer divisible, and creates a new
-		  body (by calling Body splitting constructor) for each new subrange. Like 
-		  <samp class="codeph">parallel_reduce</samp>, for
-		  each body split the method 
-		  <samp class="codeph">join</samp> is invoked in order to merge the results from the
-		  bodies. The figure above shows the execution of 
-		  <samp class="codeph">parallel_deterministic_reduce</samp> over a
-		  sample range, with the slash marks (/) denoting where new instances of the body
-		  were created. 
-		</p>
- 
-		<p>Therefore for given arguments, 
-		  <samp class="codeph">parallel_
-			 deterministic_reduce</samp> executes the same set of split and join
-		  operations no matter how many threads participate in execution and how tasks
-		  are mapped to the threads. If the user-provided functions are also
-		  deterministic (i.e. different runs with the same input result in the same
-		  output), then multiple calls to 
-		  <samp class="codeph">parallel_deterministic_reduce</samp> will
-		  produce the same result. Note however that the result might differ from that
-		  obtained with an equivalent sequential (linear) algorithm. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>Since 
-			 <samp class="codeph">simple_partitioner</samp>
-			 is always used, be careful to specify an appropriate grainsize. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Complexity</h2> 
-		 
-		<p>If the range and body take O(1) space, and the
-		  range splits into nearly equal pieces, then the space complexity is O(P
-		  log(N)), where N is the size of the range and P is the number of threads. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example from 
-		  <samp class="codeph">parallel_reduce</samp>
-		  section can be easily modified to use 
-		  <samp class="codeph">parallel_deterministic_reduce</samp>. It is
-		  sufficient torename 
-		  <samp class="codeph">parallel_reduce</samp> to 
-		  <samp class="codeph">parallel_deterministic_reduce</samp>; a
-		  partitioner, if any, should be removed to prevent compilation error. A grain
-		  size may need to be specified for blocked_range if performance suffered. 
-		</p>
- 
-		<pre>#include <numeric>
-#include <functional>
-#include "tbb/parallel_reduce.h"
-#include "tbb/blocked_range.h"
-using namespace tbb;
-
-float ParallelSum( float array[], size_t n ) {
-    size_t grain_size = 1000;
-    return parallel_deterministic_reduce( 
-        blocked_range<float*>( array, array+n, grain_size[ ),
-        0.f,
-        [](const blocked_range<float*>& r, float value)->float {
-            return std::accumulate(r.begin(),r.end(),value);
-        },
-        std::plus<float>());
-}</pre> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="partitioners/simple_partitioner_cls.htm#simple_partitioner_cls">simple_partitioner Class 
-		  </a></div>
-<div><a href="parallel_reduce_func.htm#parallel_reduce_func">parallel_reduce Template Function 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_do_func.htm b/doc/help/reference/algorithms/parallel_do_func.htm
deleted file mode 100755
index 9493679..0000000
--- a/doc/help/reference/algorithms/parallel_do_func.htm
+++ /dev/null
@@ -1,244 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_do Template Function">
-<meta name="DC.subject" content="parallel_do Template Function">
-<meta name="keywords" content="parallel_do Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_do_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_do Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_do_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_do_func"><!-- --></a>
-
-
-  <h1 class="topictitle1">parallel_do Template Function</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		 Template function that processes work items in
-		parallel. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		 
-		<p> 
-		  <pre> #include "tbb/parallel_do.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		 
-		<pre>template<typename InputIterator, typename Body> 
-void parallel_do( InputIterator first, InputIterator last,
-                 Body body[, task_group_context& group] );
-</pre>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		 
-		<p>A 
-		  <samp class="codeph">parallel_do(<em>first,last,body</em>)</samp> applies a function
-		  object body over the half-open interval [<em>first,last</em>). Items may be
-		  processed in parallel. Additional work items can be added by body if it has a
-		  second argument of type<samp class="codeph"> parallel_do_feeder</samp>. The function
-		  terminates when<samp class="codeph"> body(x)</samp> returns for all items x that were in
-		  the input sequence or added to it by method 
-		  <samp class="codeph">parallel_do_feeder::add</samp>.
-		</p>
-
-		<p>The requirements for input iterators are specified in Section 24.1 of
-		  the ISO C++ standard. The table below shows the requirements on type Body. 
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">parallel_do Requirements for Body B and its
-		  Argument Type T</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d2552e96"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" id="d2552e102"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d2552e96 "> 
-				  <pre>B::operator()(
-<em>cv-qualifiers</em> T& item,
- parallel_do_feeder<T>& feeder
- ) const
-OR
- B::operator()(<em>cv-qualifiers</em> T&
-item ) const
- </pre>
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d2552e102 "> 
-				  <p>Process item. Template<samp class="codeph"> parallel_do</samp> may
-					 concurrently invoke operator() for the same 
-					 <samp class="codeph">this</samp> but different 
-					 <samp class="codeph">item</samp>.
-				  </p>
-
-				  <p> The signature with feeder permits additional work items to be
-					 added.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d2552e96 "> 
-				  <p><samp class="codeph"> T( const T& ) 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d2552e102 "> 
-				  <p> Copy a work item.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d2552e96 "> 
-				  <p><samp class="codeph"> ~T::T()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d2552e102 "> 
-				  <p> Destroy a work item.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>For example, a unary function object, as defined in Section 20.3 of
-		  the C++ standard, models the requirements for B. 
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		  <p>Defining both the one-argument and two-argument forms of 
-			 <samp class="codeph">operator()</samp> is not permitted.
-		  </p>
-
-		</div>
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-		  <p>The parallelism in 
-			 <samp class="codeph">parallel_do</samp> is not scalable if all of the items come
-			 from an input stream that does not have random access. To achieve scaling, do
-			 one of the following:
-		  </p>
-
-		  <ul type="disc">
-			 <li>
-				<p>Use random access iterators to specify the input stream. 
-				</p>
-
-			 </li>
-
-			 <li>
-				<p>Design your algorithm such that the body often adds more than
-				  one piece of work.
-				</p>
-
-			 </li>
-
-			 <li>
-				<p>Use<samp class="codeph"> parallel_for</samp> instead. 
-				</p>
-
-			 </li>
-
-		  </ul>
-
-		</div>
-		<p>To achieve speedup, the grainsize of 
-		  <samp class="codeph">B::operator()</samp> needs to be on the order of at least
-		  ~100,000 clock cycles. Otherwise, the internal overheads of 
-		  <samp class="codeph">parallel_do</samp> swamp the useful work.
-		</p>
-
-		<p>The algorithm can be passed a 
-		  <samp class="codeph">task_group_context</samp> object so that its tasks are
-		  executed in this group. By default the algorithm is executed in a bound group
-		  of its own.
-		</p>
-
-		<p><strong>Example</strong>
-		</p>
-
-		<p>The following code sketches a body with the
-		  two-argument form of 
-		  <samp class="codeph">operator(</samp>).
-		</p>
-
-		<pre>struct MyBody {
-    void operator()(item_t item, 
-                    parallel_do_feeder<item_t>& feeder ) {
-        for each new piece of work implied by item do {
-            item_t new_item = initializer;
-            feeder.add(new_item);
-        }
-    } 
-};
-</pre>
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm">parallel_do_feeder<item> class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm b/doc/help/reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm
deleted file mode 100755
index 2ea526c..0000000
--- a/doc/help/reference/algorithms/parallel_do_func/parallel_do_feeder_cls.htm
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_do_feeder<item> class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/parallel_do_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_do_feeder_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>parallel_do_feeder<item> class</title>
-</head>
-<body id="parallel_do_feeder_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_do_feeder_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">parallel_do_feeder<item> class</h1>
- 
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Inlet into which additional work items for a 
-		<samp class="codeph">parallel_do</samp> can be fed. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/parallel_do.h" </pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename Item> 
-class parallel_do_feeder;
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">parallel_do_feeder</samp> enables the body of a 
-		  <samp class="codeph">parallel_do</samp> to add more work items. 
-		</p>
- 
-		<p>Only class<samp class="codeph"> parallel_do</samp> can create or destroy a 
-		  <samp class="codeph">parallel_do_feeder</samp>. The only operation other code can
-		  perform on a 
-		  <samp class="codeph">parallel_do_feeder</samp> is to invoke method 
-		  <samp class="codeph">parallel_do_feeder::add</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-    template<typename Item>
-    struct parallel_do_feeder {
-        void add( const Item& item );
-    };
-}
-</pre> 
-	 </div>
- 
-	 <div class="section"><!--no heading--><h2 class="sectiontitle"> </h2> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the member
-			 of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d3084e91">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d3084e94">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d3084e91 "><span class="keyword">void add( const Item& item
-						)()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d3084e94 "> 
-					 <p><strong>Requirements</strong>: Must be called from
-						a call to 
-						<em>body</em> .<samp class="codeph">operator()</samp> created by 
-						<samp class="codeph">parallel_do</samp>. Otherwise, the termination
-						semantics of method 
-						<samp class="codeph">operator()</samp> are undefined. 
-					 </p>
- 
-					 <p> 
-						<strong>Effects</strong>: Adds item to collection of work items to be
-						processed. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/parallel_do_func.htm">parallel_do Template Function</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_for_each_func.htm b/doc/help/reference/algorithms/parallel_for_each_func.htm
deleted file mode 100755
index e49e0cf..0000000
--- a/doc/help/reference/algorithms/parallel_for_each_func.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_for_each Template Function">
-<meta name="DC.subject" content="parallel_for_each Template Function">
-<meta name="keywords" content="parallel_for_each Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_for_each_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_for_each Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_for_each_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_for_each_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_for_each Template Function</h1>
-
-  
-
-<div>
- <div class="section"><h2 class="sectiontitle">Summary</h2> Parallel variant of <samp class="codeph">std::for_each</samp>. </div>
-
- <div class="section"><h2 class="sectiontitle">Header</h2> 
-<pre>#include "tbb/parallel_for_each.h"</pre>
- </div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-<pre>template<typename InputIterator, typename Func> 
-void parallel_for_each (InputIterator first, InputIterator last, 
-                        const Func& f
-                        [, task_group_context& group]);
-</pre></div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2> <p>A <samp class="codeph">parallel_for_each(<em>first,last,f</em>)</samp>applies<samp class="codeph"><em> f </em></samp>to
-    the result of dereferencing every iterator in the range [<em>first,last</em>), possibly in
-    parallel. It is provided for PPL compatibility and equivalent to
-      <samp class="codeph">parallel_do(<em>first,last,f</em>)</samp> without "feeder" functionality.</p>
-<p>If the <samp class="codeph">group</samp> argument is specified, the algorithm's tasks are executed in this
-    group. By default the algorithm is executed in a bound group of its own.</p>
-</div>
-
-
-</div>
-
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_for_func.htm b/doc/help/reference/algorithms/parallel_for_func.htm
deleted file mode 100755
index 04dacea..0000000
--- a/doc/help/reference/algorithms/parallel_for_func.htm
+++ /dev/null
@@ -1,296 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_for Template Function">
-<meta name="DC.subject" content="parallel_for Template Function">
-<meta name="keywords" content="parallel_for Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context/task_group_context.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_for_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_for Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_for_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_for_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_for Template Function</h1>
-
-     
-<div>
-    <div class="section"><h2 class="sectiontitle">Summary</h2> 
-         
-        <p>Template function that performs parallel iteration over a range of values.</p>
-
-    </div>
-
-    
-    <div class="section"><h2 class="sectiontitle">Header</h2> 
-         
-        <pre> #include "tbb/parallel_for.h"</pre>
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-         
-<pre>template<typename Index, typename Func>
-Func parallel_for( Index first, Index_type last, const Func& f
-                   [, partitioner[, task_group_context& group]] );
-
-template<typename Index, typename Func>
-Func parallel_for( Index first, Index_type last, 
-                   Index step, const Func& f
-                   [, partitioner[, task_group_context& group]] );
-
-template<typename Range, typename Body> 
-void parallel_for( const Range& range, const Body& body, 
-                   [, partitioner[, task_group_context& group]] );
-</pre></div>
-
-    <div class="section"><h2 class="sectiontitle">Description</h2> 
-         <p>A <samp class="codeph">parallel_for(first,last,step,f)</samp> represents parallel execution of the
-                loop:</p>
-<pre>for( auto i=first; i<last; i+=step ) f(i);</pre><p>The index type must be an integral type. The loop must not wrap around. The step value must be
-                positive. If omitted, it is implicitly 1. There is no guarantee that the iterations
-                run in parallel. Deadlock may occur if a lesser iteration waits for a greater
-                iteration. The partitioning strategy is
-                <samp class="codeph">auto_partitioner</samp> when the parameter is not specified.</p>
-<p>A <samp class="codeph">parallel_for(range,body,partitioner)</samp> provides a more general form of parallel
-                iteration. It represents parallel execution of <samp class="codeph">body</samp> over each value
-                in range. The optional <samp class="codeph">partitioner</samp> specifies a partitioning
-                strategy. Type <samp class="codeph">Range</samp> must model the Range concept . The body must
-                model the requirements in the following table. </p>
-
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Requirements for parallel_for Body</span></caption> 
-			 <thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" id="d3575e97"> 
-					 <p>Pseudo-Signature 
-					 </p>
- 
-				  </th>
- 
-				  <th class="row-nocellborder" valign="top" id="d3575e103"> 
-					 <p>Semantics 
-					 </p>
- 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d3575e97 "> 
-					 <p><samp class="codeph"> Body::Body( const Body& )</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d3575e103 "> 
-					 <p> Copy constructor. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d3575e97 "> 
-					 <p><samp class="codeph"> Body::~Body()</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d3575e103 "> 
-					 <p> Destructor. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d3575e97 "> 
-					 <p><samp class="codeph">    void Body::operator()( Range& range ) const</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d3575e103 "> 
-					   <p> Apply body to range.</p>
-
- 
-				  </td>
- 
-				</tr>
- 
-	
-			 </tbody>
- 
-		  </table>
-</div>
- 
-<p>A <samp class="codeph">parallel_for</samp> recursively splits the range into subranges to the point such
-                that <samp class="codeph">is_divisible()</samp> is false for each subrange, and makes copies of
-                the body for each of these subranges. For each such body/subrange pair, it invokes
-                    <samp class="codeph">Body::operator()</samp>. The invocations are interleaved with the
-                recursive splitting, in order to minimize space overhead and efficiently use cache. </p>
-<p>Some of the copies of the range and body may be destroyed after <samp class="codeph">parallel_for</samp>
-                returns. This late destruction is not an issue in typical usage, but is something to
-                be aware of when looking at execution traces or writing range or body objects with
-                complex side effects.</p>
-<p>When worker threads are available, <samp class="codeph">parallel_for</samp> executes iterations is
-                non-deterministic order. Do not rely upon any particular execution order for
-                correctness. However, for efficiency, do expect <samp class="codeph">parallel_for</samp> to
-                tend towards operating on consecutive runs of values. </p>
-<p>When no worker threads are available, <samp class="codeph">parallel_for</samp> executes iterations from left
-                to right in the following sense. Imagine drawing a binary tree that represents the
-                recursive splitting. Each non-leaf node represents splitting a subrange r by
-                invoking the splitting constructor <samp class="codeph">Range(r,split())</samp>. The left child
-                represents the updated value of <samp class="codeph">r</samp>. The right child represents the
-                newly constructed object. Each leaf in the tree represents an indivisible subrange.
-                The method <samp class="codeph">Body::operator()</samp> is invoked on each leaf subrange, from
-                left to right.</p>
-<p>All overloads can be passed a <samp class="codeph">task_group_context</samp> object so that the algorithm’s
-                tasks are executed in this group. By default the algorithm is executed in a bound
-                group of its own.</p>
-<p><strong>Complexity</strong></p>
-<p>If the range and body take O(1) space, and the range splits into nearly equal pieces, then the space complexity is O(P log(N)), where N is the size of the range and P is the number of threads.</p>
-
-        </div>
-
-
-    <div class="section"><h2 class="sectiontitle">Example</h2> 
-         
-<p>This example defines a routine <samp class="codeph">ParallelAverage</samp> that sets
-                    <samp class="codeph">output[i]</samp> to the average of<samp class="codeph"> input[i-1]</samp>,
-    <samp class="codeph">input[i]</samp>, and<samp class="codeph"> input[i+1]</samp>, for 1 <= i< n.</p>
-<p><pre>#include "tbb/parallel_for.h"
-#include "tbb/blocked_range.h"
-
-using namespace tbb;
-
-struct Average {
-    const float* input;
-    float* output;
-    void operator()( const blocked_range<int>& range ) const {
-        for( int i=range.begin(); i!=range.end(); ++i )
-            output[i] = (input[i-1]+input[i]+input[i+1])*(1/3.f);
-    }
-};
-
-// Note: Reads input[0..n] and writes output[1..n-1]. 
-void ParallelAverage( float* output, const float* input, size_t n ) {
-    Average avg;
-    avg.input = input;
-    avg.output = output;
-    parallel_for( blocked_range<int>( 1, n ), avg );
-    }</pre></p>
-
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Example</h2> 
-         
-         <p>This example is more complex and requires familiarity with STL. It shows the power of
-                <samp class="codeph">parallel_for</samp> beyond flat iteration spaces. The code performs a parallel
-                merge of two sorted sequences. It works for any sequence with a random-access
-                iterator. The algorithm (Akl 1987) works recursively as follows:</p>
-<ol><li>If the sequences are too short for effective use of parallelism, do a sequential merge. Otherwise perform steps 2-6.</li>
-<li>Swap the sequences if necessary, so that the first sequence [begin1,end1) is at least as long as the second sequence [begin2,end2).</li>
-<li>Set m1 to the middle position in [begin1,end1). Call the item at that location key. </li>
-<li>Set m2 to where <em>key</em> would fall in [begin2,end2).</li>
-<li>	Merge [begin1,m1) and [begin2,m2) to create the first part of the merged sequence.</li>
-<li>Merge [m1,end1) and [m2,end2) to create the second part of the merged sequence.</li>
-</ol>
-<p>The Intel® Threading Building Blocks implementation of this algorithm uses the range object to
-                perform most of the steps. Predicate <samp class="codeph">is_divisible</samp> performs the test
-                in step 1, and step 2. The splitting constructor does steps 3-6. The body object
-                does the sequential merges.</p>
-<p><pre>#include "tbb/parallel_for.h"
-#include <algorithm>
-
-using namespace tbb;
-
-template<typename Iterator>
-struct ParallelMergeRange {
-    static size_t grainsize;
-    Iterator begin1, end1; // [begin1,end1) is 1st sequence to be merged
-    Iterator begin2, end2; // [begin2,end2) is 2nd sequence to be merged
-    Iterator out;               // where to put merged sequence    
-    bool empty()   const {return (end1-begin1)+(end2-begin2)==0;}
-    bool is_divisible() const {
-        return std::min( end1-begin1, end2-begin2 ) > grainsize;
-    }
-    ParallelMergeRange( ParallelMergeRange& r, split ) {
-        if( r.end1-r.begin1 < r.end2-r.begin2 ) {
-            std::swap(r.begin1,r.begin2);
-            std::swap(r.end1,r.end2);
-        }
-        Iterator m1 = r.begin1 + (r.end1-r.begin1)/2;
-        Iterator m2 = std::lower_bound( r.begin2, r.end2, *m1 );
-        begin1 = m1;
-        begin2 = m2;
-        end1 = r.end1;
-        end2 = r.end2;
-        out = r.out + (m1-r.begin1) + (m2-r.begin2);
-        r.end1 = m1;
-        r.end2 = m2;
-    }
-    ParallelMergeRange( Iterator begin1_, Iterator end1_, 
-                        Iterator begin2_, Iterator end2_, 
-                        Iterator out_ ) :
-        begin1(begin1_), end1(end1_), 
-        begin2(begin2_), end2(end2_), out(out_)
-    {}
-};
-
-template<typename Iterator>
-size_t ParallelMergeRange<Iterator>::grainsize = 1000;
-
-template<typename Iterator>
-struct ParallelMergeBody {
-    void operator()( ParallelMergeRange<Iterator>& r ) const {
-        std::merge( r.begin1, r.end1, r.begin2, r.end2, r.out );
-    }
-};
-
-template<typename Iterator>
-void ParallelMerge( Iterator begin1, Iterator end1, Iterator begin2, Iterator end2, Iterator out ) {
-    parallel_for(     
-       ParallelMergeRange<Iterator>(begin1,end1,begin2,end2,out),
-       ParallelMergeBody<Iterator>(),
-       simple_partitioner() 
-    );
-}
-</pre></p>
-<p>Because the algorithm moves many locations, it tends to be bandwidth limited. Speedup varies, depending upon the system.</p>
-</div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init Class</a></div>
-<div><a href="../task_scheduler/task_group_context/task_group_context.htm">Bound groups (task_group_context Class)</a></div></div>
-</div>
- 
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_invoke_func.htm b/doc/help/reference/algorithms/parallel_invoke_func.htm
deleted file mode 100755
index e97283c..0000000
--- a/doc/help/reference/algorithms/parallel_invoke_func.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_invoke Template Function">
-<meta name="DC.subject" content="parallel_invoke Template Function">
-<meta name="keywords" content="parallel_invoke Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_invoke_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_invoke Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_invoke_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_invoke_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_invoke Template Function</h1>
-
-  
-<div>
- <div class="section"><h2 class="sectiontitle">Summary</h2> Template function that evaluates several functions in parallel. </div>
-
- <div class="section"><h2 class="sectiontitle">Header</h2> 
-<pre>#include "tbb/parallel_invoke.h"</pre>
- </div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-<pre>template<typename Func0, typename Func1>
-void parallel_invoke(const Func0& f0, const Func1& f1);
-
-template<typename Func0, typename Func1, typename Func2>
-void parallel_invoke(const Func0& f0, const Func1& f1, const Func2& f2);
-template<typename Func0, typename Func1, ..., typename Func9>
-void parallel_invoke(const Func0& f0, const Func1& f1, ..., const Func9& f9);
-</pre><div class="Note"><h3 class="NoteTipHead">
-					Note</h3><p>When support for C++11 rvalue references become prevalent, the formal parameters may change to rvalue references.</p>
-</div></div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2> <p>The expression parallel_invoke(f<sub>0</sub>,f<sub>1</sub>,...,f<sub>k</sub>) evaluates
-     f<sub>0</sub>(), f<sub>1</sub>(), ..., f<sub>k</sub>() possibly in parallel. There can be from 2
-    to 10 arguments. Each argument must have a type for which <samp class="codeph">operator()</samp> is
-    defined. Typically the arguments are either function objects or pointers to functions. Return
-    values are ignored.</p>
-</div>
-
-  <div class="section"><h2 class="sectiontitle">Example</h2> <p>The following example evaluates <samp class="codeph">f(), g(),</samp> and
-     <samp class="codeph">h()</samp> in parallel. Notice how <samp class="codeph">g</samp> and <samp class="codeph">h</samp> are
-    function objects that can hold local state.</p>
-<pre>#include "tbb/parallel_invoke.h"
-
-using namespace tbb;
-
-void f();
-extern void bar(int);
-
-class MyFunctor {
-    int arg;
-public:
-    MyFunctor(int a) : arg(a) {}
-    void operator()() const {bar(arg);}
-};
-
-void RunFunctionsInParallel() {
-    MyFunctor g(2);
-    MyFunctor h(3);
-    tbb::parallel_invoke(f, g, h );
-}
-  </pre>
-  </div>
-
-  <div class="section"><h2 class="sectiontitle">Example with Lambda Expressions</h2> <p>Here is the previous example rewritten with C++11 lambda expressions, which generate function objects.</p>
-<pre>#include "tbb/parallel_invoke.h"
-
-using namespace tbb;
-
-void f();
-extern void bar(int);
-
-void RunFunctionsInParallel() {
-    tbb::parallel_invoke(f, []{bar(2);}, []{bar(3);} );
-}
-  </pre>
-  </div>
-
-</div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_pipeline_func.htm b/doc/help/reference/algorithms/parallel_pipeline_func.htm
deleted file mode 100755
index d07135a..0000000
--- a/doc/help/reference/algorithms/parallel_pipeline_func.htm
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_pipeline Function">
-<meta name="DC.subject" content="Range Concept">
-<meta name="keywords" content="Range Concept">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/parallel_pipeline_func/filter_t_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/parallel_pipeline_func/flow_control_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="pipeline_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_pipeline_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_pipeline Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_pipeline_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_pipeline_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_pipeline Function</h1>
-
-     
-
-<div>
-    <div class="section"><h2 class="sectiontitle">Summary</h2> Strongly typed interface for pipelined execution. </div>
-
-    <div class="section"><h2 class="sectiontitle">Header</h2> 
-<pre>#include "tbb/pipeline.h"</pre>
- </div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-<pre>void parallel_pipeline( size_t max_number_of_live_tokens, 
-                        const filter_t<void,void>& filter_chain
-                        [, task_group_context& group] );
-</pre></div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2>
-            <p> Function <samp class="codeph">parallel_pipeline</samp> is a strongly typed lambda-friendly
-                interface for building and running pipelines. The pipeline has characteristics
-                similar to class <samp class="codeph">pipeline</samp>, except that the stages of the pipeline
-                are specified via functors instead of class derivation.</p>
-
-            <p>To build and run a pipeline from functors <em>g</em><sub>0</sub>, <em>g</em><sub>1</sub>, 
-	    <em>g</em><sub>2</sub>, ..., <em>g</em><sub>n</sub>, write:</p>
-
-            <pre>parallel_pipeline( max_number_of_live_tokens, 
-                   make_filter<void,I1>(mode0,g0) &
-                   make_filter<I1,I2>(mode1,g1) &
-                   make_filter<I2,I3>(mode2,g2) &
-                   ... 
-                   make_filter<In,void>(moden,gn) );
-</pre><p>In
-                general, functor <em>g</em><sub>i</sub> should define its <samp class="codeph">operator()</samp> to map objects of type
-                    <em>I</em><sub>i</sub> to objects of type <em>I</em><sub>i+1</sub>. Functor <em>g</em><sub>0</sub> is a special case, because it notifies the pipeline when the end of the
-                input stream is reached. Functor <em>g</em><sub>0</sub> must be defined such that for a flow_control object <em>fc</em>, the
-                expression <em>g</em><sub>0</sub> (<em>fc</em> ) either returns the next value in the input stream, or if
-                at the end of the input stream, invokes <em>fc.</em>stop() and returns a dummy
-                value.</p>
- The value <em>max_number_of_live_tokens</em> has the same meaning as it
-            does for <samp class="codeph">pipeline::run</samp>. <p> If the group argument is specified,
-                pipeline's tasks are executed in this group. By default the algorithm is executed in
-                a bound group of its own. </p>
-</div>
-
-    <div class="section"><h2 class="sectiontitle">Example</h2>
-     <p> The following example uses <samp class="codeph">parallel_pipeline</samp> compute
-                the root-mean-square of a sequence defined by [ <em>first</em> , <em>last</em> ). The
-                example is only for demonstrating syntactic mechanics. It is not as a practical way
-                to do the calculation because parallel overhead would be vastly higher than useful
-                work. Operator & requires that the output type of its first
-                    <samp class="codeph">filter_t</samp> argument matches the input type of its second
-                    <samp class="codeph">filter_t</samp> argument.</p>
-<pre>float RootMeanSquare( float* first, float* last ) {
-    float sum=0;
-    parallel_pipeline( /*max_number_of_live_token=*/16,       
-        make_filter<void,float*>(
-            filter::serial,
-            [&](flow_control& fc)-> float*{
-                if( first<last ) {
-                    return first++;
-                 } else {
-                    fc.stop();
-                    return NULL;
-                }
-            }    
-        ) &
-        make_filter<float*,float>(
-            filter::parallel,
-            [](float* p){return (*p)*(*p);} 
-        ) &
-        make_filter<float,void>(
-            filter::serial,
-            [&](float x) {sum+=x;}
-        )
-    );
-    return sqrt(sum);
-}
-     </pre><p>See the Intel® Threading Building Blocks Tutorial for a non-trivial example
-                of <samp class="codeph">parallel_pipeline</samp>.</p>
-
-     </div>
-
-
-</div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/parallel_pipeline_func/filter_t_cls.htm">filter_t Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/parallel_pipeline_func/flow_control_cls.htm">flow_control Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="pipeline_cls.htm">pipeline Class 
-		  </a></div>
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_pipeline_func/filter_t_cls.htm b/doc/help/reference/algorithms/parallel_pipeline_func/filter_t_cls.htm
deleted file mode 100755
index 8898fd1..0000000
--- a/doc/help/reference/algorithms/parallel_pipeline_func/filter_t_cls.htm
+++ /dev/null
@@ -1,269 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="filter_t Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/parallel_pipeline_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../pipeline_cls/filter_cls.htm#filter_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="filter_t_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>filter_t Template Class</title>
-</head>
-<body id="filter_t_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="filter_t_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">filter_t Template Class</h1>
- 
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 A filter or composite filter used in conjunction
-		with function 
-		<samp class="codeph">parallel_pipeline</samp>. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre> #include "tbb/pipeline.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename T, typename U> class filter_t;
-template<typename T, typename U, typename Func>
-filter_t<T,U> make_filter( filter::mode mode, const Func& f );
-template<typename T, typename V, typename U>
-filter_t<T,U> operator&( const filter_t<T,V>& left, 
-                         const filter_t<V,U>& right );
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p> A<samp class="codeph"> filter_t</samp> is a strongly typed filter that specifies
-		  its input and output types. A<samp class="codeph"> filter_t 
-		  </samp>can be constructed from a functor or by composing of two 
-		  <samp class="codeph">filter_t 
-		  </samp>objects with 
-		  <samp class="codeph">operator&</samp> . The same<samp class="codeph"> filter_t 
-		  </samp>object can be shared by multiple<samp class="codeph"> & 
-		  </samp>expressions. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-    template<typename T, typename U>
-    class filter_t {
-    public:
-        filter_t();
-        filter_t( const filter_t<T,U>& rhs );
-        template<typename Func>
-        filter_t( filter::mode mode, const Func& func );
-        void operator=( const filter_t<T,U>& rhs );
-        ~filter_t();
-        void clear();
-    };
-
-    template<typename T, typename U, typename Func>
-    filter_t<T,U> make_filter( filter::mode mode, const Func& f );
-    template<typename T, typename V, typename U>
-    filter_t<T,U> operator&( const filter_t<T,V>& left, 
-                             const filter_t<V,U>& right );
-}
-</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d4861e85">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d4861e88">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">filter _t()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 "> 
-					 <p> Construct an undefined filter. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>The effect of using an undefined filter by 
-						  <samp class="codeph">operator&</samp> or 
-						  <samp class="codeph">parallel_pipeline</samp> is undefined. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">filter_t( const
-						filter_t<T,U>& rhs )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 "> 
-					 <p> Construct a copy of 
-						<em>rhs</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">template<typename Func>
-						filter_t( filter::mode mode, const Func& f )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 "> 
-					 <p>Construct a 
-						<samp class="codeph">filter_t</samp> that uses a copy of functor 
-						<samp class="codeph"><em>f</em></samp> to map an input value 
-						<em>t</em> of type 
-						<em>T</em> to an output value 
-						<em>u</em> of type 
-						<em>U</em>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>When parallel_pipeline uses the 
-						  <samp class="codeph">filter_t</samp>, it computes 
-						  <em>u</em> by evaluating 
-						  <samp class="codeph"><em>f</em>(<em>t</em>)</samp>, unless 
-						  <em>T</em> is 
-						  <samp class="codeph">void</samp>. In the void case 
-						  <em>u</em> is computed by the expression 
-						  <em>u</em>=<samp class="codeph"><em>f</em>(<em>fc</em>)</samp>, where 
-						  <samp class="codeph"><em>fc</em></samp> is of type flow_control. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">void operator=( const
-						filter_t<T,U>& rhs )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 ">
-					 <p>Update 
-						<samp class="codeph">*this</samp> to use the functor associated with 
-						<em>rhs</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">~filter_t()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 ">
-					 <p>Destroy the 
-						<samp class="codeph">filter_t</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 ">
-					 <p> Set 
-						<samp class="codeph">*this</samp> to an undefined filter. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">template<typename T, typename
-						U, typename Func> filter_t<T,U> make_filter(filter::mode mode, const
-						Func& f)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">filter_t<T,U>(mode,f)</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d4861e85 "><span class="keyword">template<typename T, typename
-						V, typename U> filter_t<T,U> operator& (const
-						filter_t<T,V>& left, const filter_t<V,U>& right)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d4861e88 ">
-					 <p><strong>Requires</strong>: The output type of 
-						<em>left</em> must match the input type of 
-						<em>right</em>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: A<samp class="codeph"> filter_t</samp> representing the
-						composition of filters 
-						<em>left</em> and 
-						<em>right</em>. The composition behaves as if the output value
-						of 
-						<em>left</em> becomes the input value of 
-						<em>right</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/parallel_pipeline_func.htm">parallel_pipeline Function</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../pipeline_cls/filter_cls.htm#filter_cls">filter Class 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_pipeline_func/flow_control_cls.htm b/doc/help/reference/algorithms/parallel_pipeline_func/flow_control_cls.htm
deleted file mode 100755
index 10e1916..0000000
--- a/doc/help/reference/algorithms/parallel_pipeline_func/flow_control_cls.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="flow_control Class">
-<meta name="DC.subject" content="flow_control Class">
-<meta name="keywords" content="flow_control Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/parallel_pipeline_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="flow_control_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>flow_control Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="flow_control_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="flow_control_cls"><!-- --></a>
-
-
-<h1 class="topictitle1">flow_control Class</h1>
-
-  
- 
-<div>
- <div class="section"><h2 class="sectiontitle">Summary</h2>Enables the first filter in a composite filter to indicate when the
-   end of input has been reached. </div>
-
- <div class="section"><h2 class="sectiontitle">Header</h2>  <pre>#include "tbb/pipeline.h" </pre></div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-<pre>class flow_control;</pre>
-</div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2> <p> Template function <samp class="codeph">parallel_pipeline </samp>passes a <samp class="codeph">flow_control </samp>object<samp class="codeph">
-     <em>fc</em></samp> to the input functor of a <samp class="codeph">filter_t</samp>. When the input functor
-    reaches the end of its input, it should invoke <samp class="codeph"><em>fc</em>.stop()</samp> and return a
-    dummy value. </p>
-
-
-
-</div>
-
-
- <div class="section"><h2 class="sectiontitle">Members</h2> 
-<pre>namespace tbb {
-    class flow_control {
-    public:
-        void stop();
-    };
-}
-</pre></div>
-
-</div>
-
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/parallel_pipeline_func.htm">parallel_pipeline Function</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_reduce_func.htm b/doc/help/reference/algorithms/parallel_reduce_func.htm
deleted file mode 100755
index a30b960..0000000
--- a/doc/help/reference/algorithms/parallel_reduce_func.htm
+++ /dev/null
@@ -1,428 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_reduce Template Function">
-<meta name="DC.subject" content="parallel_reduce Template Function">
-<meta name="keywords" content="parallel_reduce Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_reduce_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_reduce Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_reduce_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_reduce_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_reduce Template Function</h1>
-
-     
-<div>
-    <div class="section"><h2 class="sectiontitle">Summary</h2> 
-         
-        <p>Computes reduction over a range.</p>
-
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Header</h2> 
-         
-<pre> #include "tbb/parallel_reduce.h"</pre>
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-            
-<pre>
-template<typename Range, typename Value, 
-         typename Func, typename Reduction>
-Value parallel_reduce( const Range& range, const Value& identity,
-                     const Func& func, const Reduction& reduction,
-                     [, partitioner[, task_group_context& group]] );
-
-template<typename Range, typename Body> 
-void parallel_reduce( const Range& range, const Body& body
-                      [, partitioner[, task_group_context& group]] );
-</pre><p>where the optional <samp class="codeph">partitioner</samp> declares any of the partitioners as shown in column 1 of the Partitioners table in the Partitioners section.</p>
-
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Description</h2>
-            
-            <p>The <samp class="codeph">parallel_reduce</samp> template has two forms. The functional form is
-                designed to be easy to use in conjunction with lambda expressions. The imperative
-                form is designed to minimize copying of data. </p>
-<p>The functional form<samp class="codeph">
-                    parallel_reduce(range,identity,func,reduction)</samp> performs a parallel
-                reduction by applying <em>func</em> to subranges in range and reducing the results
-                using binary operator <em>reduction</em>. It returns the result of the reduction.
-                Parameter <em>func</em> and <em>reduction</em> can be lambda expressions. The table below
-                summarizes the type requirements on the types of <em>identity</em>, <em>func</em>, and
-                <em>reduction</em>.</p>
-
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Requirements for Func and Reduction</span></caption>
-                    
-                    
-                    <thead align="left">
-                        <tr>
-                            <th class="cellrowborder" valign="top" id="d5924e111">
-                                <p>Pseudo-Signature </p>
-
-                            </th>
-
-                            <th class="row-nocellborder" valign="top" id="d5924e117">
-                                <p>Semantics </p>
-
-                            </th>
-
-                        </tr>
-
-                    </thead>
-
-                    <tbody>
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e111 ">
-                                <p><samp class="codeph"> Value Identity;</samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e117 ">
-                                <p> Left identity element for
-                                        <samp class="codeph">Func::operator()</samp>.</p>
-
-                            </td>
-
-                        </tr>
-
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e111 ">
-                                <p><samp class="codeph"> Value Func::operator()(const
-                                        Range& range, const Value& x) </samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e117 ">
-                                <p> Accumulate result for subrange, starting with
-                                    initial value <samp class="codeph">x</samp>.</p>
-
-                            </td>
-
-                        </tr>
-
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e111 ">
-                                <p><samp class="codeph">Value Reduction::operator()(const
-                                        Value& x, const Value& y); </samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e117 ">
-                                <p> Combine results<samp class="codeph"> x</samp> and
-                                        <samp class="codeph">y</samp>.</p>
-
-                            </td>
-
-                        </tr>
-
-                    </tbody>
-
-                </table>
-</div>
-
-            <p>The imperative form
-                        <samp class="codeph">parallel_reduce(<em>range</em>,<em>body</em>)</samp> performs parallel
-                reduction of <em>body</em> over each value in <em>range</em>. Type
-                    <samp class="codeph">Range</samp> must model the Range concept. The body must model the
-                requirements shown in the table below.</p>
-
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Requirements for parallel_reduce
-                    Body</span></caption>
-                    
-                    
-                    <thead align="left">
-                        <tr>
-                            <th class="cellrowborder" valign="top" id="d5924e228">
-                                <p>Pseudo-Signature </p>
-
-                            </th>
-
-                            <th class="row-nocellborder" valign="top" id="d5924e234">
-                                <p>Semantics </p>
-
-                            </th>
-
-                        </tr>
-
-                    </thead>
-
-                    <tbody>
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e228 ">
-                                <p><samp class="codeph"> Body::Body( Body&, split
-                                        );</samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e234 ">
-                                <p>Splitting constructor. Must be able to run concurrently with
-                                        <samp class="codeph">operator()</samp> and method
-                                    <samp class="codeph">join</samp>.</p>
-
-                            </td>
-
-                        </tr>
-
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e228 ">
-                                <p><samp class="codeph"> Body::~Body()</samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e234 ">
-                                <p> Destructor.</p>
-
-                            </td>
-
-                        </tr>
-
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e228 ">
-                                <p><samp class="codeph"> void Body::operator()(const
-                                        Range& range); </samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e234 ">
-                                <p> Accumulate result for subrange.</p>
-
-                            </td>
-
-                        </tr>
-
-                        <tr valign="top">
-                            <td class="cellrowborder" valign="top" headers="d5924e228 ">
-                                <p><samp class="codeph"> void Body::join( Body& rhs );
-                                    </samp>
-                                </p>
-
-                            </td>
-
-                            <td class="row-nocellborder" valign="top" headers="d5924e234 ">
-                                <p> Join results. The result in rhs should be merged into the result
-                                    of <samp class="codeph">this</samp>.</p>
-
-                            </td>
-
-                        </tr>
-
-                    </tbody>
-
-                </table>
-</div>
-
-            <p>A <samp class="codeph">parallel_reduce</samp> recursively splits the range into subranges to the
-                point such that <samp class="codeph">is_divisible()</samp> is false for each subrange.
-                    A<samp class="codeph"> parallel_reduce</samp> uses the splitting constructor to make one or
-                more copies of the body for each thread. It may copy a body while the body’s
-                    <samp class="codeph">operator() </samp>or method join runs concurrently. You are
-                responsible for ensuring the safety of such concurrency. In typical usage, the
-                safety requires no extra effort.</p>
-<p>When worker threads are available,
-                    <samp class="codeph">parallel_reduce</samp> invokes the splitting constructor for the body.
-                For each such split of the body, it invokes method join in order to merge the
-                results from the bodies. Define join to update this to represent the accumulated
-                result for this and rhs. The reduction operation should be associative, but does not
-                have to be commutative. For a noncommutative operation op,
-                        "<samp class="codeph"><em>left</em>.join(<em>right</em>)</samp>" should update <em>left</em>
-                to be the result of <em>left</em>
-                <em>op</em>
-                <em>right</em>.</p>
-<p>A body is split only if the range is split, but the converse is
-                not necessarily so. The figure below diagrams a sample execution of
-                    <samp class="codeph">parallel_reduce</samp>. The root represents the original body b0 being
-                applied to the half-open interval [0,20). The range is recursively split at each
-                level into two subranges. The grain size for the example is 5, which yields four
-                leaf ranges. The slash marks (/) denote where copies (b<sub>1</sub> and
-                    b<sub>2</sub>) of the body were created by the body splitting constructor.
-                Bodies b<sub>0</sub> and b<sub>1</sub> each evaluate one leaf. Body b<sub>2</sub>
-                evaluates leaf [10,15) and [15,20), in that order. On the way back up the tree,
-                    <samp class="codeph">parallel_reduce</samp> invokes b<sub>0</sub>.join(b<sub>1</sub>) and
-                    b<sub>0</sub>.join(b<sub>2</sub>) to merge the results of the leaves. </p>
-<p><strong>Execution of parallel_reduce over
-                    blocked_range<int>(0,20,5)</strong></p>
-
-            <a name="image_5E29BE34010E45D982CC687AE7BA97D8"><!-- --></a><img id="image_5E29BE34010E45D982CC687AE7BA97D8" src="../Resources/parll_red.jpg"><p> The figure above shows only one
-                possible execution. Other valid executions include splitting b<sub> 2</sub> into
-                    b<sub> 2</sub> and b<sub> 3</sub>, or doing no splitting at all. With no
-                splitting, b<sub> 0</sub> evaluates each leaf in left to right order, with no calls
-                to <samp class="codeph">join</samp>. A given body always evaluates one or more subranges in
-                left to right order. For example, in the figure above, body b<sub> 2</sub> is guaranteed to
-                evaluate [10,15) before [15,20). You may rely on the left to right property for a
-                given instance of a body. However, you t must neither rely on a particular choice of
-                body splitting nor on the subranges processed by a given body object being
-                consecutive. <samp class="codeph">parallel_reduce</samp> makes the choice of body splitting
-                nondeterministically.</p>
-<p><strong>Example where Body b<sub>0</sub> processes
-                non-consecutive subranges.</strong></p>
-
-            <a name="image_F63A9E8F7D5743878142989C0D8A9143"><!-- --></a><img id="image_F63A9E8F7D5743878142989C0D8A9143" src="../Resources/non_consq_rng.jpg"><p>The subranges evaluated by a given body are not
-                consecutive if there is an intervening <samp class="codeph">join</samp>. The joined information
-                represents processing of a gap between evaluated subranges. The figure above shows such an
-                example. The body b<sub>0</sub> performs the following sequence of operations:
-                </p>
-<ol>
-                <li>b<sub>0</sub>( [0,5) )</li>
-
-                <li>b<sub>0</sub>.<samp class="codeph">join</samp>()( b<sub>1</sub> ) where b<sub>1</sub> has
-                    already processed [5,10)</li>
-
-                <li>b<sub>0</sub>( [10,15) )</li>
-
-                <li>b<sub>0</sub>( [15,20) )</li>
-
-            </ol>
-<p>In other words, body b<sub>0</sub> gathers information about all the leaf
-                subranges in left to right order, either by directly processing each leaf, or by a
-                join operation on a body that gathered information about one or more leaves in a
-                similar way. When no worker threads are available, <samp class="codeph">parallel_reduce</samp>
-                executes sequentially from left to right in the same sense as for
-                    <samp class="codeph">parallel_for</samp> . Sequential execution never invokes the splitting
-                constructor or method join.</p>
-<p>All overloads can be passed a<samp class="codeph">
-                    task_group_context</samp> object so that the algorithm’s tasks are executed in
-                this group. By default the algorithm is executed in a bound group of its
-                    own.</p>
-<p><strong>Complexity</strong></p>
-<p>If the range and body take O(1) space, and
-                the range splits into nearly equal pieces, then the space complexity is O(P log(N)),
-                where N is the size of the range and P is the number of threads.</p>
-
-        </div>
-
-    <div class="section"><h2 class="sectiontitle">Example (Imperative Form)</h2> 
-         
-<p>The following code sums the values in an array.</p>
-
-        <p>
-            <pre>
-#include "tbb/parallel_reduce.h"
-#include "tbb/blocked_range.h"
-
-using namespace tbb;
-
-struct Sum {
-    float value;
-    Sum() : value(0) {}
-    Sum( Sum& s, split ) {value = 0;}
-    void operator()( const blocked_range<float*>& r ) {
-        float temp = value;
-        for( float* a=r.begin(); a!=r.end(); ++a ) {
-            temp += *a;
-        }
-        value = temp;
-    }
-    void join( Sum& rhs ) {value += rhs.value;}
-};
-
-float ParallelSum( float array[], size_t n ) {
-    Sum total;
-    parallel_reduce( blocked_range<float*>( array, array+n ), 
-                     total );
-    return total.value;
-}
-</pre></p>
-<p>The example generalizes to reduction for any associative
-operation <em>op</em> as follows:</p>
-
-<ul type="disc"><li> Replace
-occurrences of 0 with the identity element for <em>op</em>
-</li>
-<li> Replace
-occurrences of  += with <em>op</em>= or its logical
-equivalent.</li>
-<li> Change the name <samp class="codeph">Sum</samp> to something more appropriate for <em>op</em>.</li>
-</ul>
-<p>The operation may be noncommutative. For example, <em>op</em> could be matrix multiplication.</p>
-
-    </div>
-
-    <div class="section"><h2 class="sectiontitle">Example with Lambda Expressions</h2> 
- 
-        <p>The following is analogous to the previous example, but written using
-                lambda expressions and the functional form of <samp class="codeph">parallel_reduce</samp>.</p>
-<p><pre>
-#include "tbb/parallel_reduce.h"
-#include "tbb/blocked_range.h"
-
-using namespace tbb;
-
-float ParallelSum( float array[], size_t n ) {
-    return parallel_reduce( 
-        blocked_range<float*>( array, array+n ), 
-        0.f, 
-        [](const blocked_range<float*>& r, float init)->float {
-            for( float* a=r.begin(); a!=r.end(); ++a ) 
-                init += *a;
-            return init;
-        },
-        []( float x, float y )->float {
-            return x+y;
-        }
-    );                    
-}
-</pre></p>
-<p>STL generalized numeric operations and functions objects can be used to write the example more compactly as follows:</p>
-
-<p><pre>
-#include <numeric>
-#include <functional>
-#include "tbb/parallel_reduce.h"
-#include "tbb/blocked_range.h"
-
-using namespace tbb;
-
-float ParallelSum( float array[], size_t n ) {
-    return parallel_reduce(
-        blocked_range<float*>( array, array+n ),
-        0.f,
-        [](const blocked_range<float*>& r, float value)->float {
-            return std::accumulate(r.begin(),r.end(),value);
-        },
-        std::plus<float>()
-    );
-}
-</pre></p>
-
-</div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init 
-		  class</a></div></div>
-</div>
- 
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_scan_func.htm b/doc/help/reference/algorithms/parallel_scan_func.htm
deleted file mode 100755
index 1fa7803..0000000
--- a/doc/help/reference/algorithms/parallel_scan_func.htm
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_scan Template Function">
-<meta name="DC.subject" content="parallel_scan Template Function">
-<meta name="keywords" content="parallel_scan Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm">
-<meta name="DC.Relation" scheme="URI" content="parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm#pre_scan_tag_and_final_scan_tag_clses">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_scan_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_scan Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_scan_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_scan_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_scan Template Function</h1>
-
-  
- <div>
-  <div class="section"><h2 class="sectiontitle">Summary</h2> Template function that computes parallel prefix. </div>
-
-  <div class="section"><h2 class="sectiontitle">Header</h2> 
-<pre>#include "tbb/parallel_scan.h"</pre>
- </div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> <pre>
-template<typename Range, typename Body> 
-void parallel_scan( const Range& range, Body& body );
-
-template<typename Range, typename Body> 
-void parallel_scan( const Range& range, Body& body, const auto_partitioner& );
-
-template<typename Range, typename Body> 
-void parallel_scan( const Range& range, Body& body, const simple_partitioner& );
-</pre>
-</div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2><p>A <samp class="codeph">parallel_scan</samp>(<em>range</em>,<em>body</em>)
-    computes a parallel prefix, also known as parallel scan. This computation is an advanced concept
-    in parallel computing that is sometimes useful in scenarios that appear to have inherently
-    serial dependences.</p>
-<p>A mathematical definition of the parallel prefix is as follows. Let
-    × be an associative operation with left-identity element id<sub>×</sub>. 
-    The parallel prefix of × over a sequence <em>z</em><sub>0</sub>, <em>z</em><sub>1</sub>, ...<em>z</em><sub>n-1</sub> 
-    is a sequence <em>y</em><sub>0</sub>, <em>y</em><sub>1</sub>, <em>y</em><sub>2</sub>, ...<em>y</em><sub>n-1</sub> 
-    where:</p>
-<ul type="disc"> <li> y<sub>0</sub> = id<sub>×</sub> × z<sub>0</sub>
-    </li>
-
-    <li> y<sub>i</sub> = y<sub>i-1</sub> × z<sub>i</sub>
-    </li>
-
-   </ul>
-<p>For example, if × is addition, the parallel prefix corresponds a running sum. A
-    serial implementation of parallel prefix
-    is:</p>
-<pre>
-T temp = id<sub>×</sub>;
-for( int i=1; i<=n; ++i ) {
-    temp = temp × z[i];
-    y[i] = temp;
-}
-</pre><p>Parallel
-    prefix performs this in parallel by reassociating the application of × and using two
-    passes. It may invoke × up to twice as many times as the serial prefix algorithm. Given
-    the right grain size and sufficient hardware threads, it can out perform the serial prefix
-    because even though it does more work, it can distribute the work across more than one hardware
-    thread.</p>
-<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-    <p> Because <samp class="codeph">parallel_scan</samp> needs two passes, systems with only two hardware
-     threads tend to exhibit small speedup. <samp class="codeph">parallel_scan</samp> is best considered a
-     glimpse of a technique for future systems with more than two cores. It is nonetheless of
-     interest because it shows how a problem that appears inherently sequential can be
-     parallelized.</p>
-
-    <p>The template <samp class="codeph">parallel_scan<Range,Body></samp> implements parallel prefix
-     generically. It requires the signatures described in the table below.</p>
-
-   </div>
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">parallel_scan Requirements</span></caption>
-     
-     
-     <thead align="left">
-      <tr>
-       <th class="cellrowborder" valign="top" width="50.24875621890548%" id="d7237e170">
-        <p>Pseudo-Signature </p>
-
-       </th>
-
-       <th class="row-nocellborder" valign="top" width="49.75124378109454%" id="d7237e176">
-        <p>Semantics </p>
-
-       </th>
-
-      </tr>
-
-     </thead>
-
-     <tbody>
-      <tr valign="top">
-       <td class="cellrowborder" valign="top" width="50.24875621890548%" headers="d7237e170 ">
-        <p><samp class="codeph">void Body::operator()( const Range& r, pre_scan_tag )
-         </samp>
-        </p>
-
-       </td>
-
-       <td class="row-nocellborder" valign="top" width="49.75124378109454%" headers="d7237e176 ">
-        <p> Accumulate summary for range <samp class="codeph">r</samp> . </p>
-
-       </td>
-
-      </tr>
-
-      <tr valign="top">
-       <td class="cellrowborder" valign="top" width="50.24875621890548%" headers="d7237e170 ">
-        <p><samp class="codeph">void Body::operator()( const Range& r, final_scan_tag )
-         </samp>
-        </p>
-
-       </td>
-
-       <td class="row-nocellborder" valign="top" width="49.75124378109454%" headers="d7237e176 ">
-        <p> Compute scan result and summary for range<samp class="codeph"> r</samp>.</p>
-
-       </td>
-
-      </tr>
-
-      <tr valign="top">
-       <td class="cellrowborder" valign="top" width="50.24875621890548%" headers="d7237e170 ">
-        <p><samp class="codeph">Body::Body( Body& b, split )</samp>
-        </p>
-
-       </td>
-
-       <td class="row-nocellborder" valign="top" width="49.75124378109454%" headers="d7237e176 ">
-        <p>Split <samp class="codeph">b</samp> so that <samp class="codeph">this</samp> and <samp class="codeph">b</samp> can
-         accumulate summaries separately. Body <samp class="codeph">*this</samp> is object <samp class="codeph">a</samp> in the table row
-         below.</p>
-
-       </td>
-
-      </tr>
-
-      <tr valign="top">
-       <td class="cellrowborder" valign="top" width="50.24875621890548%" headers="d7237e170 ">
-        <p><samp class="codeph"> void Body::reverse_join( Body& a )</samp>
-        </p>
-
-       </td>
-
-       <td class="row-nocellborder" valign="top" width="49.75124378109454%" headers="d7237e176 ">
-        <p> Merge summary accumulated by <samp class="codeph">a</samp> into summary accumulated by
-          <samp class="codeph">this</samp>, where <samp class="codeph">this</samp> was created earlier from <samp class="codeph">a</samp> by <samp class="codeph">a</samp>'s
-         splitting constructor. Body <samp class="codeph">*this</samp> is object <samp class="codeph">b</samp> in the table row above.</p>
-
-       </td>
-
-      </tr>
-
-      <tr valign="top">
-       <td class="cellrowborder" valign="top" width="50.24875621890548%" headers="d7237e170 ">
-        <p><samp class="codeph"> void Body::assign( Body& b )</samp></p>
-
-       </td>
-
-       <td class="row-nocellborder" valign="top" width="49.75124378109454%" headers="d7237e176 ">
-        <p>Assign summary of <samp class="codeph">b</samp> to <samp class="codeph">this</samp>.</p>
-
-       </td>
-
-      </tr>
-
-     </tbody>
-
-    </table>
-</div>
-<p>A summary contains enough information such that for two consecutive subranges <em>r</em>
-    and <em>s</em>:</p>
-<ul type="disc">
-    <li> If <em>r</em> has no preceding subrange, the scan result for <em>s</em> can be computed from
-     knowing <em>s</em> and the summary for <em>r</em>.</li>
-
-    <li> A summary of <em>r</em> concatenated with <em>s</em> can be computed from the summaries of <em>r</em>
-     and <em>s</em>.</li>
-
-   </ul>
-<p>For example, if computing a running sum of an array, the summary for a range <em>r</em> is
-    the sum of the array elements corresponding to <em>r</em>.</p>
-<p>The figure below shows one way that
-     <samp class="codeph">parallel_scan</samp> might compute the running sum of an array containing the
-    integers 1-16. Time flows downwards in the diagram. Each color denotes a separate <samp class="codeph">Body</samp> object.
-    Summaries are shown in brackets.</p>
-<ol>
-    <li> The first two steps split the original blue body into the pink and yellow bodies. Each body
-     operates on a quarter of the input array in parallel. The last quarter is processed later in
-     step 5.</li>
-
-    <li> The blue body computes the final scan and summary for 1-4. The pink and yellow bodies
-     compute their summaries by prescanning 5-8 and 9-12 respectively. </li>
-
-    <li> The pink body computes its summary for 1-8 by performing a reverse_join with the blue body. </li>
-
-    <li> The yellow body computes its summary for 1-12 by performing a reverse_join with the pink
-     body. </li>
-
-    <li> The blue, pink, and yellow bodies compute final scans and summaries for portions of the
-     array. </li>
-
-    <li> The yellow summary is assigned to the blue body. The pink and yellow bodies are destroyed.
-    </li>
-
-   </ol>
-<p>Note that two quarters of the array were not prescanned. The
-     <samp class="codeph">parallel_scan</samp> template makes an effort to avoid prescanning where possible, to
-    improve performance when there are only a few or no extra worker threads. If no other workers
-    are available, <samp class="codeph">parallel_scan</samp> processes the subranges without any pre_scans, by processing the
-    subranges from left to right using final scans. That's why final scans must compute a summary as
-    well as the final scan result. The summary might be needed to process the next subrange if no
-    worker thread has prescanned it yet.</p>
-<p><strong>Example Execution of
-     parallel_scan</strong></p>
-<img src="../Resources/parll_scan.jpg"><p>The following code demonstrates how the
-    signatures could be implemented to use <samp class="codeph">parallel_scan</samp> to compute the same result as the earlier
-    sequential example involving ×.
-    </p>
-<pre>
-using namespace tbb;
-
-class Body {
-    T sum;
-    T* const y;
-    const T* const z;
-public:
-    Body( T y_[], const T z_[] ) : sum(id<sub>×</sub>), z(z_), y(y_) {}
-    T get_sum() const {return sum;}
-
-    template<typename Tag>
-    void operator()( const blocked_range<int>& r, Tag ) {
-        T temp = sum;
-        for( int i=r.begin(); i<r.end(); ++i ) {
-            temp = temp × z[i];
-            if( Tag::is_final_scan() )
-                y[i] = temp;
-        }
-        sum = temp;
-    }
-    Body( Body& b, split ) : z(b.z), y(b.y), sum(id<sub>×</sub>) {}
-    void reverse_join( Body& a ) { sum = a.sum ןƒ… sum;}
-    void assign( Body& b ) {sum = b.sum;}
-};
-
-float DoParallelScan( T y[], const T z[], int n ) {
-    Body body(y,z);
-    parallel_scan( blocked_range<int>(0,n), body );
-    return body.get_sum();
-}
-</pre><p>The
-    definition of <samp class="codeph">operator()</samp> demonstrates typical patterns when using
-     <samp class="codeph">parallel_scan</samp>.</p>
-<ul type="disc">
-    <li> A single template defines both versions. Doing so is not required, but usually saves coding
-     effort, because the two versions are usually similar. The library defines static method
-      <samp class="codeph">is_final_scan(</samp>) to enable differentiation between the versions.</li>
-
-      <li> The prescan variant computes the × reduction, but does not update
-      <samp class="codeph">y</samp>. The prescan is used by <samp class="codeph">parallel_scan</samp> to generate
-     look-ahead partial reductions.</li>
-
-      <li> The final scan variant computes the × reduction and updates
-      <samp class="codeph">y</samp>.</li>
-
-   </ul>
-<p>The operation <samp class="codeph">reverse_join</samp> is similar to the operation
-     <samp class="codeph">join</samp> used by <samp class="codeph">parallel_reduce</samp>, except that the arguments are
-    reversed. That is, <samp class="codeph">this</samp> is the <em>right</em> argument of ×.
-    Template function <samp class="codeph">parallel_scan</samp> decides if and when to generate parallel work.
-    It is thus crucial that × is associative and that the methods of Body faithfully represent it.
-    Operations such as floating-point addition that are somewhat associative can be used, with the
-    understanding that the results may be rounded differently depending upon the association used by
-     <samp class="codeph">parallel_scan</samp>. The reassociation may differ between runs even on the same
-    machine. However, if there are no worker threads available, execution associates identically to
-    the serial form shown at the beginning of this section.</p>
-<p>If you change the example to use a
-     <samp class="codeph">simple_partitioner</samp>, be sure to provide a grainsize. The code below shows the
-    how to do this for a grainsize of
-   1000:</p>
-<pre>parallel_scan(blocked_range<int>(0,n,1000), total, 
-                                     simple_partitioner() );
-</pre></div>
-
-
-</div>
-
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm">pre_scan_tag and final_scan_tag Classes</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm#pre_scan_tag_and_final_scan_tag_clses">pre_scan_tag and final_scan_tag Classes</a> </div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm b/doc/help/reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm
deleted file mode 100755
index 231fba8..0000000
--- a/doc/help/reference/algorithms/parallel_scan_func/pre_scan_tag_and_final_scan_tag_clses.htm
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="pre_scan_tag and final_scan_tag Classes">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/parallel_scan_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="pre_scan_tag_and_final_scan_tag_clses">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>pre_scan_tag and final_scan_tag Classes</title>
-</head>
-<body id="pre_scan_tag_and_final_scan_tag_clses">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="pre_scan_tag_and_final_scan_tag_clses"><!-- --></a>
-
- 
-  <h1 class="topictitle1">pre_scan_tag and final_scan_tag Classes</h1>
-
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Types that distinguish the phases of 
-		<samp class="codeph">parallel_scan</samp>. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre> #include "tbb/parallel_scan.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>struct pre_scan_tag; 
-struct final_scan_tag;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>Types 
-		  <samp class="codeph">pre_scan_tag</samp> and 
-		  <samp class="codeph">final_scan_tag</samp> are dummy types used in conjunction
-		  with 
-		  <samp class="codeph">parallel_scan</samp>. See the example in the parallel_scan
-		  Template Function section for how they are used in the signature of 
-		  <samp class="codeph">operator()</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-
-    struct pre_scan_tag {
-        static bool is_final_scan();
-    };
-
-    struct final_scan_tag {
-        static bool is_final_scan();
-    };
-
-}
-</pre> 
-	 </div>
- 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the member
-			 of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d8383e85">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d8383e88">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d8383e85 "><span class="keyword">bool is_final_scan()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d8383e88 "> 
-					 <p>True for a 
-						<samp class="codeph">final_scan_tag</samp>, otherwise false. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/parallel_scan_func.htm">parallel_scan Template Function</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/parallel_sort_func.htm b/doc/help/reference/algorithms/parallel_sort_func.htm
deleted file mode 100755
index 58be72c..0000000
--- a/doc/help/reference/algorithms/parallel_sort_func.htm
+++ /dev/null
@@ -1,171 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_sort Template Function">
-<meta name="DC.subject" content="parallel_sort Template Function">
-<meta name="keywords" content="parallel_sort Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_sort_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>parallel_sort Template Function</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_sort_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_sort_func"><!-- --></a>
-
-
-<h1 class="topictitle1">parallel_sort Template Function</h1>
-
-  
-
-<div>
- <div class="section"><h2 class="sectiontitle">Summary</h2> Sort a sequence. </div>
-
- <div class="section"><h2 class="sectiontitle">Header</h2> 
-<pre>#include "tbb/parallel_sort.h"</pre>
- </div>
-
- <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-<pre>template<typename RandomAccessIterator> 
-void parallel_sort(RandomAccessIterator begin, RandomAccessIterator end);
-
-template<typename RandomAccessIterator, typename Compare>
-void parallel_sort(RandomAccessIterator begin, 
-                   RandomAccessIterator end, 
-                   const Compare& comp );
-</pre></div>
-
- <div class="section"><h2 class="sectiontitle">Description</h2> <p> Performs an <em>unstable</em> sort of sequence [<em>begin1</em>, <em>end1</em>). An unstable sort
-    might not preserve the relative ordering of elements with equal keys. The sort is deterministic;
-    sorting the same sequence will produce the same result each time. The requirements on the
-    iterator and sequence are the same as for<samp class="codeph"> std::sort</samp> . Specifically,
-     <samp class="codeph">RandomAccessIterator</samp> must be a random access iterator, and its value type
-     <em>T</em> must model the requirements in the table below.</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Requirements on Value Type T of RandomAccessIterator
-     for parallel_sort</span></caption> 
-			 <thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" id="d8660e85"> 
-					 <p>Pseudo-Signature 
-					 </p>
- 
-				  </th>
- 
-				  <th class="row-nocellborder" valign="top" id="d8660e91"> 
-					 <p>Semantics 
-					 </p>
- 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d8660e85 "> 
-					 <p><samp class="codeph">  void swap( T& x, T& y )</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d8660e91 "> 
-					 <p> Swap <samp class="codeph">x</samp> and <samp class="codeph">y</samp> .</p>
-
- 
-				  </td>
- 
-				</tr>
- 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d8660e85 "> 
-					 <p><samp class="codeph">  bool Compare::operator()(
-const T& x, const T& y
-)</samp> 
-					  </p>
-
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d8660e91 "> 
-					 <p> True if <samp class="codeph">x</samp> comes before <samp class="codeph">y</samp> ; false
-         otherwise.</p>
-
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-<p>A call <samp class="codeph">parallel_sort(i,j,comp)</samp> sorts the <samp class="codeph">sequence [i,j)</samp> using
-    the argument <samp class="codeph">comp</samp> to determine relative orderings. If
-     <samp class="codeph">comp(x,y)</samp> returns <samp class="codeph">true</samp> then <samp class="codeph">x</samp> appears before <samp class="codeph">y</samp> in the sorted
-    sequence.</p>
-
-<p>A call <samp class="codeph">parallel_sort(i,j)</samp> is equivalent to
-     <samp class="codeph">parallel_sort(i,j,std::less<T>)</samp>.</p>
-
-<p> <strong>Complexity</strong></p>
-
-<p><samp class="codeph"> parallel_sort</samp> is comparison sort with an average time complexity of <em>O(N
-     log (N))</em>, where <em>N</em> is the number of elements in the sequence. When
-    worker threads are available, <samp class="codeph">parallel_sort</samp> creates subtasks that may be
-    executed concurrently, leading to improved execution times.</p>
-
-<p><strong>Example</strong></p>
-<p>The following example shows two sorts. The sort of array <samp class="codeph">a</samp> uses the default
-    comparison, which sorts in ascending order. The sort of array <samp class="codeph">b</samp> sorts in descending order by
-    using <samp class="codeph">std::greater<float></samp> for comparison.</p>
-<pre>#include "tbb/parallel_sort.h"
-#include <math.h>
-
-using namespace tbb;
-
-const int N = 100000;
-float a[N];
-float b[N];
-
-void SortExample() {
-    for( int i = 0; i < N; i++ ) {
-       a[i] = sin((double)i);
-       b[i] = cos((double)i);
-    }
-    parallel_sort(a, a + N);
-    parallel_sort(b, b + N, std::greater<float>());
-}
-</pre></div>
-
-
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init 
-		  class</a></div></div>
-</div>
- 
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/partitioners.htm b/doc/help/reference/algorithms/partitioners.htm
deleted file mode 100755
index 3acb0c3..0000000
--- a/doc/help/reference/algorithms/partitioners.htm
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Partitioners">
-<meta name="DC.subject" content="Partitioners">
-<meta name="keywords" content="Partitioners">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/partitioners/auto_partitioner_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/partitioners/affinity_partitioner.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/partitioners/simple_partitioner_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="parallel_for_func.htm#parallel_for_func">
-<meta name="DC.Relation" scheme="URI" content="parallel_reduce_func.htm#parallel_reduce_func">
-<meta name="DC.Relation" scheme="URI" content="parallel_scan_func.htm#parallel_scan_func">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="partitioners">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Partitioners</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="partitioners">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="partitioners"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Partitioners</h1>
- 
-	 
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A partitioner specifies how a loop template should partition its work
-		  among threads. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Description</h2> 
-		 
-		<p>The default behavior of the loop templates<samp class="codeph"> parallel_for</samp>,
-					<samp class="codeph">parallel_reduce</samp>, and <samp class="codeph">parallel_scan</samp> tries to
-				recursively split a range into enough parts to keep processors busy, not necessarily
-				splitting as finely as possible. An optional partitioner parameter enables other
-				behaviors to be specified, as shown in the table below. The first column of the table shows
-				how the formal parameter is declared in the loop templates. An<samp class="codeph">
-					affinity_partitioner</samp> is passed by non-const reference because it is
-				updated to remember where loop iterations run. </p>
- 
-		<p> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Partitioners</span></caption> 
-			 <thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" id="d9145e71"> 
-					 <p> Partitioner 
-					 </p>
- 
-				  </th>
- 
-				  <th class="row-nocellborder" valign="top" id="d9145e77"> 
-					 <p> Loop Behavior 
-					 </p>
- 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d9145e71 "> 
-					 <p><samp class="codeph">const auto_partitioner&
-						  (default)</samp> 
-					 </p>
- 
-					  
-						<div class="Note"><h3 class="NoteTipHead">
-					Note</h3><p>In Intel® Threading Building Blocks (Intel® TBB) 2.1, <samp class="codeph">simple_partitioner</samp> was the default. Intel®
-											TBB 2.2 changed the default to
-												<samp class="codeph">auto_partitioner</samp> to simplify common
-											usage of the loop templates. To get the old default,
-											compile with the preprocessor symbol
-												<samp class="codeph">TBB_DEPRECATED=1</samp>. </p>
-</div> 
-					  
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d9145e77 "> 
-					 <p>Performs sufficient splitting to balance load, not necessarily splitting
-										as finely as <samp class="codeph">Range::is_divisible</samp> permits.
-										When used with classes such as
-											<samp class="codeph">blocked_range</samp>, the selection of an
-										appropriate grainsize is less important, and often
-										acceptable performance can be achieved with the default
-										grain size of 1. </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d9145e71 "> 
-					 <p><samp class="codeph">affinity_partitioner&</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d9145e77 "> 
-					 <p> Similar to <samp class="codeph">auto_partitioner</samp>, but improves cache
-										affinity by its choice of mapping subranges to worker
-										threads. It can improve performance significantly when a
-										loop is re-executed over the same data set, and the data set
-										fits in cache. </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr valign="top"> 
-				  <td class="cellrowborder" valign="top" headers="d9145e71 "> 
-					 <p><samp class="codeph">const simple_partitioner& 
-						</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="row-nocellborder" valign="top" headers="d9145e77 "> 
-					 <p>Recursively splits a range until it is no longer divisible. The
-											<samp class="codeph">Range::is_divisible</samp> function is wholly
-										responsible for deciding when recursive splitting halts.
-										When used with classes such as
-											<samp class="codeph">blocked_range</samp>, the selection of an
-										appropriate grainsize is critical to enabling concurrency
-										while limiting overheads (see the discussion in the blocked_range Template Class section). </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/partitioners/auto_partitioner_cls.htm">auto_partitioner Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/partitioners/affinity_partitioner.htm">affinity_partitioner</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/partitioners/simple_partitioner_cls.htm">simple_partitioner Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="parallel_for_func.htm#parallel_for_func">parallel_for Template Function
-		  </a></div>
-<div><a href="parallel_reduce_func.htm#parallel_reduce_func">parallel_reduce Template Function
-		  </a></div>
-<div><a href="parallel_scan_func.htm#parallel_scan_func">parallel_scan Template Function
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/partitioners/affinity_partitioner.htm b/doc/help/reference/algorithms/partitioners/affinity_partitioner.htm
deleted file mode 100755
index e23c752..0000000
--- a/doc/help/reference/algorithms/partitioners/affinity_partitioner.htm
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="affinity_partitioner">
-<meta name="DC.subject" content="affinity_partitioner">
-<meta name="keywords" content="affinity_partitioner">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/partitioners.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="affinity_partitioner">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>affinity_partitioner</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="affinity_partitioner">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="affinity_partitioner"><!-- --></a>
-
-
-  <h1 class="topictitle1">affinity_partitioner</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Hint that loop iterations should be assigned to threads in a way that
-		  optimizes for cache affinity.
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		
-		<pre>#include "tbb/partitioner.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		
-		<pre> class affinity_partitioner;</pre>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>An 
-		  <samp class="codeph">affinity_partitioner</samp> hints that execution of a loop
-		  template should assign iterations to the same processors as another execution
-		  of the loop (or another loop) with the same 
-		  <samp class="codeph">affinity_partitioner</samp> object.
-		</p>
-
-		<p>Unlike the other partitioners, it is important that the same 
-		  <samp class="codeph">affinity_partitioner</samp> object be passed to the loop
-		  templates to be optimized for affinity. The Tutorial section on "Bandwidth and
-		  Cache Affinity" discusses affinity effects in detail. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p> The affinity_partitioner generally improves performance only when: 
-		  </p>
-
-		  <ul type="disc">
-			 <li>The computation does a few operations per data access.
-			 </li>
-
-			 <li>The data acted upon by the loop fits in cache.
-			 </li>
-
-			 <li> The loop, or a similar loop, is re-executed over the same data. 
-			 </li>
-
-			 <li>There are more than two hardware threads available.
-			 </li>
-
-		  </ul>
-
-		</div>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		
-		<pre>
-namespace tbb {
-    class affinity_partitioner {
-    public:
-        affinity_partitioner();
-        ~affinity_partitioner();
-    }
-}
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		
-		<p>The following example can benefit from cache
-		  affinity. The example simulates a one dimensional additive automaton.
-		</p>
-
-		<p> 
-		  <pre>
-#include "tbb/blocked_range.h"
-#include "tbb/parallel_for.h"
-#include "tbb/partitioner.h"
-
-using namespace tbb;
-
-const int N = 1000000;
-typedef unsigned char Cell;
-Cell Array[2][N];
-int FlipFlop;
-
-struct TimeStepOverSubrange {
-    void operator()( const blocked_range<int>& r ) const {
-        int j = r.end();
-        const Cell* x = Array[FlipFlop];
-        Cell* y = Array[!FlipFlop];
-        for( int i=r.begin(); i!=j; ++i ) 
-            y[i] = x[i]^x[i+1];
-    }
-};
-
-
-void DoAllTimeSteps( int m ) {
-    affinity_partitioner ap;
-    for( int k=0; k<m; ++k ) {
-        parallel_for( blocked_range<int>(0,N-1), 
-                      TimeStepOverSubrange(),
-                      ap );
-        FlipFlop ^= 1;
-    }
-}
-</pre>
-		</p>
-
-		<p>For each time step, the old state of the automaton is read from 
-		  <samp class="codeph">Array[FlipFlop]</samp>, and the new state is written into 
-		  <samp class="codeph">Array[!FlipFlop]</samp>. Then 
-		  <samp class="codeph">FlipFlop</samp> flips to make the new state become the old
-		  state. The aggregate size of both states is about 2 MByte, which fits in most
-		  modern processors' cache. Improvements ranging from 50%-200% have been observed
-		  for this example on 8 core machines, compared with using an 
-		  <samp class="codeph">auto_partitioner</samp> instead.
-		</p>
-
-		<p>The<samp class="codeph"> affinity_partitioner</samp> must live between loop
-		  iterations. The example accomplishes this by declaring it outside the loop that
-		  executes all iterations. An alternative would be to declare the 
-		  <samp class="codeph">affinity partitioner</samp> at the file scope, which works as
-		  long as 
-		  <samp class="codeph">DoAllTimeSteps</samp> itself is not invoked concurrently. The
-		  same instance of 
-		  <samp class="codeph">affinity_partitioner</samp> should not be passed to two
-		  parallel algorithm templates that are invoked concurrently. Use separate
-		  instances instead.
-		</p>
- 
-	 </div>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d9558e163">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d9558e166">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d9558e163 "><span class="keyword">affinity_partitioner()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d9558e166 "> 
-				  <p> Construct an 
-					 <samp class="codeph">affinity_partitioner</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d9558e163 "><span class="keyword">~affinity_partitioner()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d9558e166 "> 
-				  <p>Destroy this 
-					 <samp class="codeph">affinity_partitioner</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/partitioners.htm">Partitioners</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/partitioners/auto_partitioner_cls.htm b/doc/help/reference/algorithms/partitioners/auto_partitioner_cls.htm
deleted file mode 100755
index 6d6b247..0000000
--- a/doc/help/reference/algorithms/partitioners/auto_partitioner_cls.htm
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="auto_partitioner Class">
-<meta name="DC.subject" content="auto_partitioner Class">
-<meta name="keywords" content="auto_partitioner Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/partitioners.htm">
-<meta name="DC.Relation" scheme="URI" content="../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="auto_partitioner_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>auto_partitioner Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="auto_partitioner_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="auto_partitioner_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">auto_partitioner Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p> Specify that a parallel loop should optimize its range subdivision
-		  based on work-stealing events. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/partitioner.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class auto_partitioner;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A loop template with an 
-		  <samp class="codeph">auto_partitioner</samp> attempts to minimize range splitting
-		  while providing ample opportunities for work-stealing. 
-		</p>
- 
-		<p>The range subdivision is initially limited to S subranges, where S is
-		  proportional to the number of threads specified by the 
-		  <samp class="codeph">task_scheduler_init</samp>. Each of these subranges is not
-		  divided further unless it is stolen by an idle thread. If stolen, it is further
-		  subdivided to create additional subranges. Thus a loop template with an 
-		  <samp class="codeph">auto_partitioner</samp> creates additional subranges only
-		  when necessary to balance load. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p> When using 
-			 <samp class="codeph">auto_partitioner</samp> and a 
-			 <samp class="codeph">blocked_range</samp> for a parallel loop, the body may be
-			 passed a subrange larger than the 
-			 <samp class="codeph">blocked_range</samp>'s grainsize. Therefore do not assume
-			 that the grainsize is an upper bound on the size of the subrange. Use a<samp class="codeph">
-				simple_partitioner</samp> if an upper bound is required. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> 
-namespace tbb {
-    class auto_partitioner {
-    public:
-        auto_partitioner();
-        ~auto_partitioner();
-    }
-}
-</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d10004e113">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d10004e116">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10004e113 "><span class="keyword">auto_partitioner()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10004e116 "> 
-					 <p> Construct an 
-						<samp class="codeph">auto_partitioner</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10004e113 "><span class="keyword">~auto_partitioner()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10004e116 "> 
-					 <p>Destroy this 
-						<samp class="codeph">auto_partitioner</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/partitioners.htm">Partitioners</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">task_scheduler_init Class
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/partitioners/simple_partitioner_cls.htm b/doc/help/reference/algorithms/partitioners/simple_partitioner_cls.htm
deleted file mode 100755
index 8e9f994..0000000
--- a/doc/help/reference/algorithms/partitioners/simple_partitioner_cls.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="simple_partitioner Class">
-<meta name="DC.subject" content="simple_partitioner Class">
-<meta name="keywords" content="simple_partitioner Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/partitioners.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="simple_partitioner_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>simple_partitioner Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="simple_partitioner_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="simple_partitioner_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">simple_partitioner Class</h1>
- 
-   
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Specify that a parallel loop should recursively split its range until
-		  it cannot be subdivided further.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/partitioner.h"</pre>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class simple_partitioner;</pre>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">simple_partitioner</samp> specifies that a loop template
-		  should recursively divide its range until for each subrange 
-		  <em>r</em>, the condition 
-		  <samp class="codeph">!r.is_divisible()</samp> holds. This is the default behavior
-		  of the loop templates that take a range argument.
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>When using 
-			 <samp class="codeph">simple_partitioner</samp> and a 
-			 <samp class="codeph">blocked_range</samp> for a parallel loop, be careful to
-			 specify an appropriate grainsize for the 
-			 <samp class="codeph"></samp>blocked_range. The default grainsize is 1, which may make
-			 the subranges much too small for efficient execution.
-		  </p>
-
-		</div>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> 
-namespace tbb {
-    class simple_partitioner {
-    public:
-        simple_partitioner();
-        ~simple_partitioner();
-    }
-}
-</pre> 
-	 </div>
-
-	 <div class="section">
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d10360e110">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d10360e113">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10360e110 "><span class="keyword">simle_partitioner()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10360e113 "> 
-					 <p> Construct an 
-						<samp class="codeph">simple_partitioner</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10360e110 "><span class="keyword">~simple_partitioner()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10360e113 "> 
-					 <p>Destroy this 
-						<samp class="codeph">simple_partitioner</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
-
-	 <div class="section">
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/partitioners.htm">Partitioners</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/pipeline_cls.htm b/doc/help/reference/algorithms/pipeline_cls.htm
deleted file mode 100755
index a31533d..0000000
--- a/doc/help/reference/algorithms/pipeline_cls.htm
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="pipeline Class">
-<meta name="DC.subject" content="pipeline Class">
-<meta name="keywords" content="pipeline Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/pipeline_cls/filter_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="pipeline_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>pipeline Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="pipeline_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="pipeline_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">pipeline Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Class that performs pipelined execution. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/pipeline.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class pipeline; </pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">pipeline</samp> represents pipelined application of a series
-		  of filters to a stream of items. Each filter operates in a particular mode:
-		  parallel, serial in-order, or serial out-of-order (MacDonald 2004). 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">pipeline</samp> contains one or more filters, denoted here as
-		  
-		  <em>f<sub>i</sub></em> , where 
-		  <em>i</em> denotes the position of the filter in the pipeline. The
-		  pipeline starts with filter 
-		  <em>f</em><sub>0</sub>, followed by 
-		  <em>f</em><sub>1</sub>, 
-		  <em>f</em><sub>2</sub>, etc. The following steps describe how to use
-		  class pipeline. 
-		</p>
- 
-		<ol> 
-		  <li>Derive each class 
-			 <em>f<sub>i</sub></em> from 
-			 <span class="keyword">filter</span>. The constructor for 
-			 <em>f<sub>i</sub></em> specifies its mode as a parameter to the
-			 constructor for base class 
-			 <span class="keyword">filter</span> 
-		  </li>
- 
-		  <li>Override virtual method 
-			 <span class="keyword">filter::operator()</span> to perform the filter's action
-			 on the item, and return a pointer to the item to be processed by the next
-			 filter. The first filter 
-			 <em>f</em><sub>0</sub> generates the stream. It should return NULL if
-			 there are no more items in the stream. The return value for the last filter is
-			 ignored. 
-		  </li>
- 
-		  <li>Create an instance of class 
-			 <span class="keyword">pipeline</span>. 
-		  </li>
- 
-		  <li>Create instances of the filters 
-			 <em>f<sub>i</sub></em> and add them to the pipeline, in order from
-			 first to last. An instance of a filter can be added at most once to a pipeline.
-			 A filter should never be a member of more than one pipeline at a time. 
-		  </li>
- 
-		  <li>Call method 
-			 <span class="keyword">pipeline::run</span> . The parameter 
-			 <samp class="codeph">max_number_of_live_tokens</samp> puts an upper bound on the
-			 number of stages that will be run concurrently. Higher values may increase
-			 concurrency at the expense of more memory consumption from having more items in
-			 flight. See the Tutorial, in the section on class 
-			 <span class="keyword">pipeline</span>, for more about effective use of 
-			 <samp class="codeph">max_number_of_live_tokens</samp>. 
-		  </li>
- 
-		</ol>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p> Given sufficient processors and tokens, the throughput of the
-			 pipeline is limited to the throughput of the slowest serial filter. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>Function 
-			 <samp class="codeph">parallel_pipeline</samp> provides a strongly typed
-			 lambda-friendly way to build and run pipelines. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-    class pipeline {
-     public:
-        pipeline();
-        ~pipeline();
-        void add_filter( filter& f );
-        void run( size_t max_number_of_live_tokens <em>[,</em> task_group_context& group<em> ]</em> );
-        void clear();
-    };
-}</pre> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>Though the current implementation declares the destructor virtual,
-			 do not rely on this detail. The virtual nature is deprecated and may disappear
-			 in future versions of Intel® Threading Building Blocks (Intel® TBB). 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d10716e203">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d10716e206">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10716e203 "><span class="keyword">pipeline()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10716e206 "> 
-					 <p> Constructs pipeline with no filters. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10716e203 "><span class="keyword">~pipeline()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10716e206 "> 
-					 <p>Removes all filters from the pipeline and
-						destroys the pipeline. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10716e203 "><span class="keyword">void add_filter( filter& f
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10716e206 "> 
-					 <p> Appends filter 
-						<samp class="codeph"><em>f</em></samp> to sequence of filters in the
-						pipeline. The filter 
-						<samp class="codeph"><em>f</em></samp> must not already be in a pipeline. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10716e203 "><span class="keyword">void run( size_t
-						max_number_of_live_tokens[, task_group_context& group] ) 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10716e206 "> 
-					 <p> Runs the pipeline until the first filter returns NULL and
-						each subsequent filter has processed all items from its predecessor. The number
-						of items processed in parallel depends upon the structure of the pipeline and
-						number of available threads. At most 
-						<samp class="codeph">max_number_of_live_tokens</samp> are in flight at
-						any given time. 
-					 </p>
- 
-					 <p> A pipeline can be run multiple times. It is safe to add
-						stages between runs. Concurrent invocations of run on the same instance of
-						pipeline are prohibited. 
-					 </p>
- 
-					 <p> If the 
-						<samp class="codeph">group</samp> argument is specified, pipeline’s
-						tasks are executed in this group. By default the algorithm is executed in a
-						bound group of its own. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d10716e203 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d10716e206 "> 
-					 <p> Removes all filters from the pipeline. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/pipeline_cls/filter_cls.htm">filter Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm">thread_bound_filter Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init class 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/pipeline_cls/filter_cls.htm b/doc/help/reference/algorithms/pipeline_cls/filter_cls.htm
deleted file mode 100755
index ee00f62..0000000
--- a/doc/help/reference/algorithms/pipeline_cls/filter_cls.htm
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="filter Class">
-<meta name="DC.subject" content="filter Class">
-<meta name="keywords" content="filter Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/pipeline_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../appendices/compatibility_features.htm#compatibility_features">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="filter_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>filter Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="filter_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="filter_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">filter Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Abstract base class that represents a filter in a
-		pipeline. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/pipeline.h" </pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class filter;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">filter</samp> represents a filter in a 
-		  <samp class="codeph">pipeline</samp>(0).There are three modes of filters: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> A 
-			 <samp class="codeph">parallel</samp> filter can process multiple items in
-			 parallel and in no particular order. 
-		  </li>
- 
-		  <li> A 
-			 <samp class="codeph">serial_out_of_order</samp> filter processes items one at a
-			 time, and in no particular order. 
-		  </li>
- 
-		  <li> A 
-			 <samp class="codeph">serial_in_order</samp> filter processes items one at a
-			 time. All 
-			 <samp class="codeph">serial_in_order</samp> filters in a pipeline process items
-			 in the same order. 
-		  </li>
- 
-		</ul>
- 
-		<p>The mode of 
-		  <samp class="codeph">filter</samp> is specified by an argument to the constructor.
-		  Parallel filters are preferred when practical because they permit parallel
-		  speedup. If a filter must be serial, the out of order variant is preferred when
-		  practical because it puts less contraints on processing order. 
-		</p>
- 
-		<p> Class 
-		  <samp class="codeph">filter</samp> should only be used in conjunction with class 
-		  <samp class="codeph">pipeline</samp>(0). 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p><strong> 
-				<em> 
-				</em></strong> Use a 
-			 <samp class="codeph">serial_in_order</samp> input filter if there are any
-			 subsequent 
-			 <samp class="codeph">serial_in_order</samp> stages that should process items in
-			 their input order. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p><strong> 
-				<em> 
-				</em></strong>Intel® Threading Building Blocks (Intel® TBB) 2.0 and prior treated parallel input stages as
-			 serial. Later versions of Intel® TBB can execute a parallel input stage in
-			 parallel, so if you specify such a stage, ensure that its 
-			 <samp class="codeph">operator()</samp> is thread safe. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-    class filter {
-    public:
-        enum mode {
-            parallel = <em>implementation-defined</em>,
-            serial_in_order = <em>implementation-defined</em>,
-            serial_out_of_order = <em>implementation-defined</em>
-        };
-        bool is_serial() const;
-        bool is_ordered() const;
-        virtual void* operator()( void* item ) = 0;
-        virtual void finalize( void* item ) {}
-        virtual ~filter();
-    protected:
-        filter( mode );
-    };
-} 
-</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d11466e164">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d11466e167">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword"> filter( mode filter_mode
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p>Constructs a filter of the specified
-						mode. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>Intel® TBB 2.1 and prior had a similar constructor with a
-						  bool argument 
-						  <samp class="codeph">is_serial</samp>. That constructor exists but is
-						  deprecated (see Compatibility Features in the Appendices). 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword">~filter()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p>Destroys the filter. If the filter is in
-						a 
-						<samp class="codeph">pipeline</samp>, it is automatically removed from
-						that pipeline. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword"> bool is_serial() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p><strong>Returns</strong>: False if filter mode is 
-						<samp class="codeph">parallel</samp>; true otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword">bool is_ordered() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p><strong>Returns</strong>: True if filter mode is 
-						<samp class="codeph">serial_in_order</samp>, false otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword">virtual void* operator()( void *
-						item )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p>The derived filter should override this
-						method to process an item and return a pointer to an item to be processed by
-						the next 
-						<samp class="codeph">filter</samp>. The item parameter is NULL for the
-						first filter in the pipeline. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The first filter in a 
-						<samp class="codeph">pipeline</samp> should return NULL if there are no
-						more items to process. The result of the last filter in a pipeline is ignored. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d11466e164 "><span class="keyword">virtual void finalize( void * item
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d11466e167 "> 
-					 <p>A pipeline can be cancelled by user
-						demand or because of an exception. When a pipeline is cancelled, there may be
-						items returned by a filter's operator() that have not yet been processed by the
-						next filter. When a pipeline is cancelled, the next filter invokes 
-						<samp class="codeph">finalize()</samp> on each item instead of 
-						<samp class="codeph">operator()</samp>. In contrast to 
-						<samp class="codeph">operator()</samp>, method 
-						<samp class="codeph">finalize()</samp> does not return an item for
-						further processing. A derived filter should override 
-						<samp class="codeph">finalize()</samp> to perform proper cleanup for an
-						item. A pipeline will not invoke any further methods on the item. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The default definition
-						has no effect. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
-
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"> 
-		 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/pipeline_cls.htm">pipeline Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../appendices/compatibility_features.htm#compatibility_features">Compatibility Features 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm b/doc/help/reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm
deleted file mode 100755
index fdc096a..0000000
--- a/doc/help/reference/algorithms/pipeline_cls/thread_bound_filter_cls.htm
+++ /dev/null
@@ -1,339 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="thread_bound_filter Class">
-<meta name="DC.subject" content="thread_bound_filter Class">
-<meta name="keywords" content="thread_bound_filter Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/pipeline_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_bound_filter_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>thread_bound_filter Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="thread_bound_filter_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_bound_filter_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">thread_bound_filter Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Abstract base class that represents a filter in a
-		pipeline that a thread must service explicitly. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/pipeline.h" </pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre> class thread_bound_filter;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">thread_bound_filter</samp> is a special kind of 
-		  <samp class="codeph">filter</samp> that is explicitly serviced by a particular
-		  thread. It is useful when a filter must be executed by a particular thread. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>Use 
-			 <samp class="codeph">thread_bound_filter</samp> only if you need a filter to be
-			 executed on a particular thread. The thread that services a 
-			 <samp class="codeph">thread_bound_filter</samp> must not be the thread that
-			 calls 
-			 <samp class="codeph">pipeline::run()</samp>. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-    class thread_bound_filter: public filter {
-    protected:
-        thread_bound_filter(mode filter_mode);
-    public:
-        enum result_type {
-            success,
-            item_not_available,
-            end_of_stream
-        };
-        result_type try_process_item();
-        result_type process_item();
-    };
-} 
-
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example below shows a pipeline with two filters
-		  where the second filter is a<samp class="codeph"> thread_bound_filter</samp> serviced by
-		  the main thread. 
-		</p>
- 
-		<pre>#include <iostream>
-#include "tbb/pipeline.h"
-#include "tbb/compat/thread"
-#include "tbb/task_scheduler_init.h"
-
-using namespace tbb;
-
-char InputString[] = "abcdefg\n";
-
-class InputFilter: public filter {
-    char* my_ptr;
-public:
-    void* operator()(void*) {
-        if (*my_ptr)
-            return my_ptr++;
-        else
-            return NULL;
-    }
-    InputFilter() : 
-        filter( serial_in_order ), my_ptr(InputString) 
-    {}
-};
-
-class OutputFilter: public thread_bound_filter {
-public:
-    void* operator()(void* item) {
-        std::cout << *(char*)item;
-        return NULL;
-    }
-    OutputFilter() : thread_bound_filter(serial_in_order) {}
-};
-
-void RunPipeline(pipeline* p) {
-    p->run(8);
-}
-
-int main() {
-    // Construct the pipeline
-    InputFilter f;
-    OutputFilter g;
-    pipeline p;
-    p.add_filter(f);
-    p.add_filter(g);
-
-    // Another thread initiates execution of the pipeline
-    std::thread t(RunPipeline,&p);
-
-    // Process the thread_bound_filter with the current thread.
-    while (g.process_item()!=thread_bound_filter::end_of_stream)
-        continue;
-
-    // Wait for pipeline to finish on the other thread.
-    t.join();    
-    return 0;
-}
-</pre> 
-		<p>The main thread does the following after
-		  constructing the pipeline: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li>Start the pipeline on another thread. 
-		  </li>
- 
-		  <li>Service the<samp class="codeph"> thread_bound_filter</samp> until it reaches 
-			 <samp class="codeph">end_of_stream</samp>. 
-		  </li>
- 
-		  <li>Wait for the other thread to finish. 
-		  </li>
- 
-		</ul>
- 
-		<p>The pipeline is run on a separate thread because the main thread is
-		  responsible for servicing the 
-		  <samp class="codeph">thread_bound_filter</samp> 
-		  <samp class="codeph">g</samp>. The roles of the two threads can be reversed. A
-		  single thread cannot do both roles. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="29.940119760479046%" id="d12241e148">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="70.05988023952095%" id="d12241e151">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="29.940119760479046%" headers="d12241e148 "><span class="keyword">thread_bound_filter(mode
-						filter_mode)()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="70.05988023952095%" headers="d12241e151 "> 
-					 <p>Constructs a filter of the specified mode. The pipeline
-						Class section describes the modes. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="29.940119760479046%" headers="d12241e148 "><span class="keyword">result_type
-						try_process_item()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="70.05988023952095%" headers="d12241e151 "> 
-					 <p>If an item is available and it can be processed without
-						exceeding the token limit, process the item with 
-						<samp class="codeph">filter::operator()</samp>. The return values are
-						detailed in the following table.
-					 </p>
- 
-					 <p> 
-					 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"> 
-						  <thead align="left"> 
-							 <tr> 
-								<th class="cellrowborder" valign="top" id="d12241e198"> 
-								  <p>Return Value 
-								  </p>
- 
-								</th>
- 
-								<th class="row-nocellborder" valign="top" id="d12241e204"> 
-								  <p> Description 
-								  </p>
- 
-								</th>
- 
-							 </tr>
-</thead>
- 
-						  <tbody> 
-							 <tr valign="top"> 
-								<td class="cellrowborder" valign="top" headers="d12241e198 ">success 
-								</td>
- 
-								<td class="row-nocellborder" valign="top" headers="d12241e204 "> 
-								  <p>Applied 
-									 <samp class="codeph">filter::operator()</samp> to one item. 
-								  </p>
- 
-								</td>
- 
-							 </tr>
- 
-							 <tr valign="top"> 
-								<td class="cellrowborder" valign="top" headers="d12241e198 "> 
-								  <p>item_not_available 
-								  </p>
- 
-								</td>
- 
-								<td class="row-nocellborder" valign="top" headers="d12241e204 "> 
-								  <p> No item is currently available
-									 to process, or the token limit would be exceeded. 
-								  </p>
- 
-								</td>
- 
-							 </tr>
- 
-							 <tr valign="top"> 
-								<td class="cellrowborder" valign="top" headers="d12241e198 "> 
-								  <p>end_of_stream 
-								  </p>
- 
-								</td>
- 
-								<td class="row-nocellborder" valign="top" headers="d12241e204 "> 
-								  <p>No more items will ever arrive
-									 at this filter. 
-								  </p>
- 
-								</td>
- 
-							 </tr>
- 
-						  </tbody>
- 
-						</table>
-</div>
- 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="29.940119760479046%" headers="d12241e148 "> 
-					 <span class="keyword">result_type process_item()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="70.05988023952095%" headers="d12241e151 "> 
-					 <p> Like 
-						<samp class="codeph">try_process_item</samp>, but waits until it can
-						process an item or the end of the stream is reached. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Either 
-						<samp class="codeph">success</samp> or 
-						<samp class="codeph">end_of_stream</samp>. See the table above for
-						details. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>The current implementation spin waits until it can process
-						  an item or reaches the end of the stream. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/pipeline_cls.htm">pipeline Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept.htm b/doc/help/reference/algorithms/range_concept.htm
deleted file mode 100755
index 4237d8a..0000000
--- a/doc/help/reference/algorithms/range_concept.htm
+++ /dev/null
@@ -1,267 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Range Concept">
-<meta name="DC.subject" content="Range Concept">
-<meta name="keywords" content="Range Concept">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/range_concept/blocked_range_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/range_concept/blocked_range2d_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/range_concept/blocked_range3d_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="parallel_for_func.htm#parallel_for_func">
-<meta name="DC.Relation" scheme="URI" content="parallel_reduce_func.htm#parallel_reduce_func">
-<meta name="DC.Relation" scheme="URI" content="parallel_scan_func.htm#parallel_scan_func">
-<meta name="DC.Relation" scheme="URI" content="../containers_overview/container_range_concept.htm#container_range_concept">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="range_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Range Concept</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="range_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="range_concept"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Range Concept</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Requirements for type representing a recursively divisible set of
-		  values. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2> 
-		 
-		<p>The following table lists the requirements for a
-		  Range type 
-		  <samp class="codeph">R</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl8"><!-- --></a><table cellpadding="4" summary="" id="tbl8" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Range Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d12945e60"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" id="d12945e66"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d12945e60 "> 
-				  <p><samp class="codeph"> R::R( const R& )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d12945e66 "> 
-				  <p> Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d12945e60 "> 
-				  <p><samp class="codeph"> R::~R()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d12945e66 "> 
-				  <p> Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d12945e60 "> 
-				  <p><samp class="codeph"> bool R::empty() const</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d12945e66 "> 
-				  <p> True if range is empty. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d12945e60 "> 
-				  <p><samp class="codeph"> bool R::is_divisible()
-						const</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d12945e66 "> 
-				  <p> True if range can be partitioned into two
-					 subranges. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d12945e60 "> 
-				  <p><samp class="codeph"> R::R( R& r, split )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d12945e66 "> 
-				  <p> Split 
-					 <samp class="codeph">r</samp> into two subranges. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Description</h2> 
-		 
-		<p>A Range can be recursively subdivided into two parts. It is
-		  recommended that the division be into nearly equal parts, but it is not
-		  required. Splitting as evenly as possible typically yields the best
-		  parallelism. Ideally, a range is recursively splittable until the parts
-		  represent portions of work that are more efficient to execute serially rather
-		  than split further. The amount of work represented by a Range typically depends
-		  upon higher level context, hence a typical type that models a Range should
-		  provide a way to control the degree of splitting. For example, the template
-		  class 
-		  <samp class="codeph">blocked_range</samp> has a 
-		  <em>grainsize</em> parameter that specifies the biggest range considered
-		  indivisible. 
-		</p>
- 
-		<p>The constructor that implements splitting is called a 
-		  <em>splitting constructor</em>. If the set of values has a sense of
-		  direction, then by convention the splitting constructor should construct the
-		  second part of the range, and update the argument to be the first half.
-		  Following this convention causes the<samp class="codeph">parallel_for</samp>, 
-          <samp class="codeph">parallel_reduce</samp> and <samp class="codeph">parallel_scan</samp> algorithms, 
-          when running sequentially, to work across a range in the increasing order typical 
-          of an ordinary sequential loop. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Example</h2> 
-		 
-		<p>The following code defines a type 
-		  <samp class="codeph">TrivialIntegerRange</samp> that models the Range concept. It
-		  represents a half-open interval [lower,upper) that is divisible down to a
-		  single integer. 
-		</p>
- 
-		<pre> 
-struct TrivialIntegerRange {
-    int lower;
-    int upper;
-    bool empty() const {return lower==upper;}
-    bool is_divisible() const {return upper>lower+1;}
-    TrivialIntegerRange( TrivialIntegerRange& r, split ) {
-        int m = (r.lower+r.upper)/2;  
-        lower = m;
-        upper = r.upper;
-        r.upper = m;
-    }
-};
-</pre> 
-		<p> 
-		  <samp class="codeph">TrivialIntegerRange</samp> is for demonstration and not very
-		  practical, because it lacks a grainsize parameter. Use the library class 
-		  <samp class="codeph">blocked_range</samp> instead. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Model Types</h2> 
-		 
-		<p>Type 
-		  <samp class="codeph">blocked_range</samp> models a one-dimensional range. 
-		</p>
- 
-		<p>Type 
-		  <samp class="codeph">blocked_range2</samp>d models a two-dimensional range. 
-		</p>
- 
-		<p>Type 
-		  <samp class="codeph">blocked_range3d</samp> models a three-dimensional range. 
-		</p>
- 
-		<p>The Container Range Concept models a container as a range. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/range_concept/blocked_range_cls.htm">blocked_range Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/range_concept/blocked_range2d_cls.htm">blocked_range2d Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/algorithms/range_concept/blocked_range3d_cls.htm">blocked_range3d Template Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="parallel_for_func.htm#parallel_for_func">parallel_for Template Function 
-		  </a></div>
-<div><a href="parallel_reduce_func.htm#parallel_reduce_func">parallel_reduce Template Function 
-		  </a></div>
-<div><a href="parallel_scan_func.htm#parallel_scan_func">parallel_scan Template Function 
-		  </a></div>
-<div><a href="../containers_overview/container_range_concept.htm#container_range_concept">Container Range Concept 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept/blocked_range2d_cls.htm b/doc/help/reference/algorithms/range_concept/blocked_range2d_cls.htm
deleted file mode 100755
index 70e12eb..0000000
--- a/doc/help/reference/algorithms/range_concept/blocked_range2d_cls.htm
+++ /dev/null
@@ -1,365 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="blocked_range2d Template Class">
-<meta name="DC.subject" content="blocked_range2d Template Class">
-<meta name="keywords" content="blocked_range2d Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/range_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="blocked_range2d_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>blocked_range2d Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="blocked_range2d_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="blocked_range2d_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">blocked_range2d Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		 Template class that represents recursively
-		divisible two-dimensional half-open interval. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Header</h2> 
-		 
-		<p>
-		  <pre>#include "tbb/blocked_range2d.h"</pre>
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle"> Syntax</h2> 
-		 
-		<pre>template<typename RowValue, typename ColValue> class blocked_range2d;</pre>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">blocked_range2d<<em>RowValue</em> ,<em>ColValue</em>
-			 ></samp> represents a half-open two dimensional range<samp class="codeph"> [<em>i</em> 
-			 <sub>0</sub>,<em>j</em> 
-			 <sub>0</sub>)×[<em>i</em> 
-			 <sub>1</sub>,<em>j</em> 
-			 <sub>1</sub>)</samp>. Each axis of the range has its own splitting
-		  threshold. The 
-		  <em>RowValue</em> and 
-		  <em>ColValue</em> must meet the requirements in the table in the
-		  blocked_range Template Class section. A 
-		  <samp class="codeph">blocked_range</samp> is splittable if either axis is
-		  splittable. A<samp class="codeph"> blocked_range</samp> models the Range concept.
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Members</h2> 
-		 
-		<pre> 
-namespace tbb {
-template<typename RowValue, typename ColValue=RowValue>
-    class blocked_range2d {
-    public:
-        // Types
-        typedef blocked_range<RowValue> row_range_type;
-        typedef blocked_range<ColValue> col_range_type;
-
-        // Constructors
-        blocked_range2d( 
-            RowValue row_begin, RowValue row_end, 
-            typename row_range_type::size_type row_grainsize,
-            ColValue col_begin, ColValue col_end, 
-            typename col_range_type::size_type col_grainsize);
-        blocked_range2d( RowValue row_begin, RowValue row_end, 
-                         ColValue col_begin, ColValue col_end);
-        blocked_range2d( blocked_range2d& r, split );
-
-        // Capacity
-        bool empty() const;
-
-        // Access
-        bool is_divisible() const;
-        const row_range_type& rows() const;
-        const col_range_type& cols() const;
-    };
-}
-</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle"> Example</h2> 
-		 
-		<p>The code that follows shows a serial matrix
-		  multiply, and the corresponding parallel matrix multiply that uses a 
-		  <samp class="codeph">blocked_range2d</samp> to specify the iteration space.
-		</p>
- 
-		<pre>
-const size_t L = 150;
-const size_t M = 225;
-const size_t N = 300;
-
-void SerialMatrixMultiply( float c[M][N], float a[M][L], float b[L][N] ) {
-    for( size_t i=0; i<M; ++i ) {
-        for( size_t j=0; j<N; ++j ) {
-            float sum = 0;
-            for( size_t k=0; k<L; ++k )
-                sum += a[i][k]*b[k][j];
-            c[i][j] = sum;
-        }
-    }
-}
-</pre> 
-		<pre>
-#include "tbb/parallel_for.h"
-#include "tbb/blocked_range2d.h"
-
-using namespace tbb;
-
-const size_t L = 150;
-const size_t M = 225;
-const size_t N = 300;
-
-class MatrixMultiplyBody2D {
-    float (*my_a)[L];
-    float (*my_b)[N];
-    float (*my_c)[N];
-public:
-    void operator()( const blocked_range2d<size_t>& r ) const {
-        float (*a)[L] = my_a;
-        float (*b)[N] = my_b;
-        float (*c)[N] = my_c;
-        for( size_t i=r.rows().begin(); i!=r.rows().end(); ++i ){
-            for( size_t j=r.cols().begin(); j!=r.cols().end(); ++j ) {
-                float sum = 0;
-                for( size_t k=0; k<L; ++k )
-                    sum += a[i][k]*b[k][j];
-                c[i][j] = sum;
-            }
-        }
-    }
-    MatrixMultiplyBody2D( float c[M][N], float a[M][L], float b[L][N] ) :
-        my_a(a), my_b(b), my_c(c)
-    {}
-};
-
-void ParallelMatrixMultiply(float c[M][N], float a[M][L], float b[L][N]){
-    parallel_for( blocked_range2d<size_t>(0, M, 16, 0, N, 32),     
-                  MatrixMultiplyBody2D(c,a,b) );
-}
-</pre> 
-		<p>The<samp class="codeph"> blocked_range2d</samp> enables the
-		  two outermost loops of the serial version to become parallel loops. The<samp class="codeph">
-			 parallel_for</samp> recursively splits the 
-		  <samp class="codeph">blocked_range2d 
-		  </samp>until the pieces are no larger than 16x32. It invokes 
-		  <samp class="codeph">MatrixMultiplyBody2D::operator(</samp>) on each piece.
-		</p>
-
-		<p>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d13569e170">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d13569e173">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">row_range_type</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 "> 
-					 <p> A 
-						<samp class="codeph">blocked_range<RowValue></samp>. That is, the
-						type of the row values. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">col_range_type</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 "> 
-					 <p>A<samp class="codeph">
-						  blocked_range<ColValue></samp>. That is, the type of the column values.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">blocked_range2d<RowValue,ColValue>( RowValue
-						row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize,
-						ColValue col_begin, ColValue col_end, typename col_range_type::size_type
-						col_grainsize )</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">
-					 <p><strong>Effects: 
-						</strong> Constructs a 
-						<samp class="codeph">blocked_range2d</samp> representing a two
-						dimensional space of values. The space is the half-open Cartesian
-						product<samp class="codeph"> [ row_begin, row_end) x [ col_begin, col_end)</samp>, with
-						the given grain sizes for the rows and columns.
-					 </p>
- 
-					 <p> 
-						<strong>Example: 
-						</strong> The statement 
-						<samp class="codeph">" blocked_range2d<char,int> r('a', 'z'+1, 3, 0,
-						  10, 2 );"</samp> constructs a two-dimensional space that contains all value
-						pairs of the form 
-						<samp class="codeph">(i, j)</samp>, where<samp class="codeph"> i 
-						</samp>ranges from 
-						<samp class="codeph">'a</samp>' to 
-						<samp class="codeph">'z</samp>' with a grain size of 3, and<samp class="codeph">
-						  j</samp> ranges from 0 to 9 with a grain size of 2.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">blocked_range2d<RowValue,ColValue>( RowValue
-						row_begin, RowValue row_end, ColValue col_begin, ColValue col_end )</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">Same as 
-					 <samp class="codeph">blocked_range2d(row_begin,row_end,1,col_begin,col_end,1)</samp>.
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">blocked_range2d<RowValue,ColValue> (
-						blocked_range2d& range, split )</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">Partitions range into two subranges. The
-					 newly constructed 
-					 <samp class="codeph">blocked_range2d</samp> is approximately the second
-					 half of the original 
-					 <samp class="codeph">range</samp>, and 
-					 <samp class="codeph">range</samp> is updated to be the remainder. Each
-					 subrange has the same grain size as the original 
-					 <samp class="codeph">range</samp>. The split is either by rows or columns.
-					 The choice of which axis to split is intended to cause, after repeated
-					 splitting, the subranges to approach the aspect ratio of the respective row and
-					 column grain sizes. For example, if the 
-					 <samp class="codeph">row_grainsize</samp> is twice 
-					 <samp class="codeph">col_grainsize</samp>, the subranges will tend towards
-					 having twice as many rows as columns.
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">bool empty() const</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">
-					 <p> Determines if range is empty. 
-					 </p>
-
-					 <p><strong>Returns: 
-						</strong> 
-						<samp class="codeph"> rows().empty()||cols().empty()</samp>
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">bool is_divisible()
-						const</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">
-					 <p> Determines if range can be split into subranges..
-					 </p>
-
-					 <p><strong>Returns:</strong> 
-						<samp class="codeph">
-						  rows().is_divisible()||cols().is_divisible()</samp>
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">const row_range_type& rows()
-						const</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">
-					 <p><strong>Returns: 
-						</strong> Range containing the rows of the value space.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d13569e170 "><span class="keyword">const col_range_type& cols()
-						const</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d13569e173 ">
-					 <p><strong>Returns: 
-						</strong> Range containing the columns of the value space.
-					 </p>
-
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-		</p>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/range_concept.htm">Range Concept</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept/blocked_range3d_cls.htm b/doc/help/reference/algorithms/range_concept/blocked_range3d_cls.htm
deleted file mode 100755
index 25ec216..0000000
--- a/doc/help/reference/algorithms/range_concept/blocked_range3d_cls.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="blocked_range3d Template Class">
-<meta name="DC.subject" content="blocked_range3d Template Class">
-<meta name="keywords" content="blocked_range3d Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/range_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="blocked_range3d_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>blocked_range3d Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="blocked_range3d_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="blocked_range3d_cls"><!-- --></a>
-
-
-<h1 class="topictitle1">blocked_range3d Template Class</h1>
-
-    
-<div>
-    <div class="section"><h2 class="sectiontitle">Summary</h2> Template class that represents recursively divisible three-dimensional half-open interval. </div>
-
-    <div class="section"><h2 class="sectiontitle">Header</h2> 
-         
-<p><pre>#include "tbb/blocked_range3d.h"</pre></p>
-
-</div>
-
-<div class="section"><h2 class="sectiontitle">Syntax</h2> 
-         
-        <pre>template<typename PageValue, typename RowValue, typename ColValue> class blocked_range3d;</pre>
-</div>
-
-
-<div class="section"><h2 class="sectiontitle">Description</h2> 
-     
-<p>A <samp class="codeph">blocked_range3d<<em>PageValue,RowValue</em>,<em>ColValue</em>></samp> is the three-dimensional extension of <samp class="codeph">blocked_range2d</samp>.</p>
-
-</div>
-
-
-<div class="section"><h2 class="sectiontitle">Members</h2> 
-         
-<pre>
-namespace tbb {
-template<typename PageValue, typename RowValue=PageValue, typename ColValue=RowValue>
-    class blocked_range3d {
-    public:
-        // Types
-        typedef blocked_range<PageValue> page_range_type;
-        typedef blocked_range<RowValue> row_range_type;
-        typedef blocked_range<ColValue> col_range_type;
-
-        // Constructors
-        blocked_range3d( 
-            PageValue page_begin, PageValue page_end,  
-            typename page_range_type::size_type page_grainsize,
-            RowValue row_begin, RowValue row_end, 
-            typename row_range_type::size_type row_grainsize,
-            ColValue col_begin, ColValue col_end, 
-            typename col_range_type::size_type col_grainsize);
-        blocked_range3d( PageValue page_begin, PageValue page_end,  
-                         RowValue row_begin, RowValue row_end, 
-                         ColValue col_begin, ColValue col_end);
-        blocked_range3d( blocked_range3d& r, split );
-
-        // Capacity
-        bool empty() const;
-
-        // Access
-        bool is_divisible() const;
-        const page_range_type& pages() const;
-        const row_range_type& rows() const;
-        const col_range_type& cols() const;
-    };
-}
-</pre>
-
-</div>
-
-</div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/range_concept.htm">Range Concept</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept/blocked_range_cls.htm b/doc/help/reference/algorithms/range_concept/blocked_range_cls.htm
deleted file mode 100755
index 6b1d80c..0000000
--- a/doc/help/reference/algorithms/range_concept/blocked_range_cls.htm
+++ /dev/null
@@ -1,520 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="blocked_range Template Class">
-<meta name="DC.subject" content="blocked_range Template Class">
-<meta name="keywords" content="blocked_range Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/range_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm">
-<meta name="DC.Relation" scheme="URI" content="../parallel_for_func.htm#parallel_for_func">
-<meta name="DC.Relation" scheme="URI" content="../parallel_reduce_func.htm#parallel_reduce_func">
-<meta name="DC.Relation" scheme="URI" content="../parallel_scan_func.htm#parallel_scan_func">
-<meta name="DC.Relation" scheme="URI" content="../../environment/enabling_debugging_features.htm#enabling_debugging_features">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="blocked_range_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>blocked_range Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="blocked_range_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="blocked_range_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">blocked_range Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 Template class for a recursively divisible
-		half-open interval. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/blocked_range.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename Value> class blocked_range;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">blocked_range<Value></samp> represents a half-open
-		  range [<em>i</em>,<em>j</em>) that can be recursively split. The types of 
-		  <em>i</em> and 
-		  <em>j</em> must model the requirements in the following table. In the
-		  table, type 
-		  <samp class="codeph">D</samp> is the type of the expression 
-		  <samp class="codeph">"j-i"</samp>. It can be any integral type that is convertible
-		  to 
-		  <samp class="codeph">size_t</samp>. Examples that model the Value requirements are
-		  integral types, pointers, and STL random-access iterators whose difference can
-		  be implicitly converted to a 
-		  <samp class="codeph">size_t</samp>. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">blocked_range</samp> models the Range concept. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Value Concept for blocked_range</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d14709e109"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" id="d14709e115"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> Value::Value( const Value&
-						)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p> Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> Value::~Value()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p> Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> void operator=( const Value&
-						)</samp> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> The return type 
-						  <samp class="codeph">void</samp> in the pseudo-signature denotes that 
-						  <samp class="codeph">operator=</samp> is not required to return a
-						  value. The actual 
-						  <samp class="codeph">operator=</samp> can return a value, which will
-						  be ignored by 
-						  <samp class="codeph">blocked_range</samp> . 
-						</p>
- 
-					 </div> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p> Assignment 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> bool operator<( const
-						Value& i, const Value& j )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p> Value 
-					 <em>i</em> precedes value<em> j</em>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> D operator-( const Value& i,
-						const Value& j )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p> Number of values in range 
-					 <samp class="codeph">[i,j)</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr valign="top"> 
-				<td class="cellrowborder" valign="top" headers="d14709e109 "> 
-				  <p><samp class="codeph"> Value operator+( const Value&
-						i, D k )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" headers="d14709e115 "> 
-				  <p><em>k</em>th value after 
-					 <em>i</em>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>A 
-		  <samp class="codeph">blocked_range<Value></samp> specifies a 
-		  <em>grainsize</em> of type 
-		  <samp class="codeph">size_t</samp>. A 
-		  <samp class="codeph">blocked_range</samp> is splittable into two subranges if the
-		  size of the range exceeds 
-		  <em>grain size</em>. The ideal grain size depends upon the context of the
-		  
-		  <samp class="codeph">blocked_range<Value></samp>, which is typically as the
-		  range argument to the loop templates 
-		  <samp class="codeph">parallel_for</samp>, 
-		  <samp class="codeph">parallel_reduce</samp>, or 
-		  <samp class="codeph">parallel_scan</samp>. A too small grainsize may cause
-		  scheduling overhead within the loop templates to swamp speedup gained from
-		  parallelism. A too large grainsize may unnecessarily limit parallelism. For
-		  example, if the grain size is so large that the range can be split only once,
-		  then the maximum possible parallelism is two. 
-		</p>
- 
-		<p>Here is a suggested procedure for choosing 
-		  <em>grainsize</em>: 
-		</p>
- 
-		<ol> 
-		  <li>Set the grainsize parameter to 10,000. This
-			 value is high enough to amortize scheduler overhead sufficiently for
-			 practically all loop bodies, but may be unnecessarily limit parallelism. 
-		  </li>
- 
-		  <li>Run your algorithm on 
-			 <em>one</em> processor. 
-		  </li>
- 
-		  <li>Start halving the grainsize parameter and see
-			 how much the algorithm slows down as the value decreases. 
-		  </li>
- 
-		</ol>
- 
-		<p>A slowdown of about 5-10% is a good setting for
-		  most purposes. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>For a 
-			 <samp class="codeph">blocked_range [i,j)</samp> where<samp class="codeph"> j<i</samp>,
-			 not all methods have specified behavior. However, enough methods do have
-			 specified behavior that 
-			 <samp class="codeph">parallel_for</samp>, 
-			 <samp class="codeph">parallel_reduce</samp>, and 
-			 <samp class="codeph">parallel_scan</samp> iterate over the same iteration space
-			 as the serial loop 
-			 <samp class="codeph">for( Value index=i; index<j; ++index )...</samp>, even
-			 when 
-			 <samp class="codeph">j<i</samp>. If 
-			 <samp class="codeph">TBB_USE_ASSERT</samp> is nonzero, methods with unspecified
-			 behavior raise an assertion failure. 
-		  </p>
- 
-		</div> 
-		<p><strong>Example</strong> 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">blocked_range<Value></samp> typically appears as a
-		  range argument to a loop template. See the examples for 
-		  <samp class="codeph">parallel_for</samp>,<samp class="codeph"> parallel_reduce</samp>, and 
-		  <samp class="codeph">parallel_scan</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> 
-namespace tbb {
-    template<typename Value>
-    class blocked_range {
-    public:
-        // types
-        typedef size_t size_type;
-        typedef Value const_iterator;
-
-        // constructors
-        blocked_range( Value begin, Value end, 
-                       size_type grainsize=1 );
-        blocked_range( blocked_range& r, split );
-
-        // capacity
-        size_type size() const;
-        bool empty() const;
-    
-        // access
-        size_type grainsize() const;
-        bool is_divisible() const;
-
-        // iterators
-        const_iterator begin() const;
-        const_iterator end() const;
-    };
-}
-</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class.
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d14709e390">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d14709e393">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">size_type 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p>The type for measuring the size of a 
-						<samp class="codeph">blocked_range</samp>. The type is always a 
-						<samp class="codeph">size_t</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">const_iterator</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 ">The type of a value in the range. Despite
-					 its name, the type 
-					 <samp class="codeph">const_iterator</samp> is not necessarily an STL
-					 iterator; it merely needs to meet the Value requirements in the table above.
-					 However, it is convenient to call it 
-					 <samp class="codeph">const_iterator</samp> so that if it is a
-					 const_iterator, then the<samp class="codeph"> blocked_range</samp> behaves like a
-					 read-only STL container. 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">blocked_range( Value begin, Value
-						end, size_t grainsize=1 ) 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "><a href="blocked_range_cls/blocked_range.htm">More Info</a> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">blocked_range( blocked_range&
-						range, split ) 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "><a href="blocked_range_cls/blocked_range_1.htm">More Info</a> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">size_type size() const 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Requirements</strong> :<samp class="codeph"> end()<begin()</samp> is
-						false. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Determines size of range. 
-					 </p>
- 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p><samp class="codeph"> end()-begin()</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">bool empty() const 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Effects</strong>: Determines if range is empty. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">!(begin()<end())</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">size_type grainsize() const 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Returns</strong>: Grain size of range. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">bool is_divisible() const 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Requirements</strong>: 
-						<samp class="codeph"> !(end()<begin())</samp> 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Determines if range can be split into
-						subranges. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if 
-						<samp class="codeph">size()>grainsize();</samp> false otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Returns</strong>: Inclusive lower bound on range. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d14709e390 "><span class="keyword">const_iterator end() const 
-					 </span>
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d14709e393 "> 
-					 <p><strong>Returns</strong>: Exclusive upper bound on range. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/range_concept.htm">Range Concept</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm">blocked_range( Value begin, Value end, size_t grainsize=1 )</a><br>
-</li>
-<li class="ulchildlink"><a href="../../../reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm">blocked_range( blocked_range& range, split )</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../parallel_for_func.htm#parallel_for_func">parallel_for Template Function 
-		  </a></div>
-<div><a href="../parallel_reduce_func.htm#parallel_reduce_func">parallel_reduce Template Function 
-		  </a></div>
-<div><a href="../parallel_scan_func.htm#parallel_scan_func">parallel_scan Template Function 
-		  </a></div>
-<div><a href="../../environment/enabling_debugging_features.htm#enabling_debugging_features">TBB_USE_ASSERT Macro 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm b/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm
deleted file mode 100755
index 4f95cac..0000000
--- a/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="blocked_range( Value begin, Value end, size_t grainsize=1 )">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/algorithms/range_concept/blocked_range_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="blocked_range">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>blocked_range( Value begin, Value end, size_t grainsize=1 )</title>
-</head>
-<body id="blocked_range">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="blocked_range"><!-- --></a>
-
- 
-  <h1 class="topictitle1">blocked_range( Value begin, Value end, size_t grainsize=1 )</h1>
- 
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2> 
-		 
-		<p>The parameter <samp class="codeph">grainsize</samp> must be positive. The debug version of the library
-				raises an assertion failure if this requirement is not met. </p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Effects</h2> 
-		
-		<p>Constructs a <samp class="codeph">blocked_range</samp> representing the half-open interval <samp class="codeph">[
-					begin, end)</samp> with the given <samp class="codeph">grainsize</samp>. </p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Example</h2> 
-		 
-		<p>The statement <samp class="codeph">" blocked_range<int> r( 5, 14, 2 );"</samp> constructs a range of
-				int that contains the values 5 through 13 inclusive, with a grainsize of 2.
-					Afterwards,<samp class="codeph"> r.begin()==5</samp> and <samp class="codeph">r.end()==14</samp>. </p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/algorithms/range_concept/blocked_range_cls.htm">blocked_range Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm b/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm
deleted file mode 100755
index efa2128..0000000
--- a/doc/help/reference/algorithms/range_concept/blocked_range_cls/blocked_range_1.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="blocked_range( blocked_range& range, split )">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/algorithms/range_concept/blocked_range_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="blocked_range_1">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>blocked_range( blocked_range& range, split )</title>
-</head>
-<body id="blocked_range_1">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="blocked_range_1"><!-- --></a>
-
- 
-  <h1 class="topictitle1">blocked_range( blocked_range& range, split )</h1>
- 
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2> 
-		 
-		<p>
-				<samp class="codeph">is_divisible()</samp> is true. </p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Effects</h2> 
-		 
-		<p>Partitions <samp class="codeph">range</samp> into two subranges. The newly constructed<samp class="codeph">
-					blocked_range </samp>is approximately the second half of the original
-					<samp class="codeph">range</samp>, and <samp class="codeph">range</samp> is updated to be the
-				remainder. Each subrange has the same <samp class="codeph">grainsize</samp> as the original
-				range. </p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Example</h2> 
-		 
-		<p>Let<samp class="codeph"> i</samp> and<samp class="codeph"> j</samp> be integers that define a half-open interval
-					<samp class="codeph">[ i, j)</samp> and let <samp class="codeph">g</samp> specifiy a grain size. The
-				statement <samp class="codeph">blocked_range<int> r(i,j,g)</samp> constructs a
-					<samp class="codeph">blocked_range<int></samp> that represents<samp class="codeph"> [ i,
-					j)</samp> with grain size<samp class="codeph"> g</samp>. Running the statement<samp class="codeph">
-					blocked_range<int> s(r,split);</samp> subsequently causes r to
-					represent<samp class="codeph"> [ i, i +( j - i)/2)</samp> and <samp class="codeph">s</samp> to
-					represent<samp class="codeph"> [ i +( j - i)/2, j)</samp>, both with grain size<samp class="codeph">
-					g</samp>. </p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/algorithms/range_concept/blocked_range_cls.htm">blocked_range Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/splittable_concept.htm b/doc/help/reference/algorithms/splittable_concept.htm
deleted file mode 100755
index c10cf67..0000000
--- a/doc/help/reference/algorithms/splittable_concept.htm
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Splittable Concept">
-<meta name="DC.subject" content="Splittable Concept">
-<meta name="keywords" content="Splittable Concept">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms/splittable_concept/split_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="range_concept/blocked_range_cls.htm#blocked_range_cls">
-<meta name="DC.Relation" scheme="URI" content="range_concept/blocked_range2d_cls.htm#blocked_range2d_cls">
-<meta name="DC.Relation" scheme="URI" content="parallel_reduce_func.htm#parallel_reduce_func">
-<meta name="DC.Relation" scheme="URI" content="parallel_scan_func.htm#parallel_scan_func">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="splittable_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Splittable Concept</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="splittable_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="splittable_concept"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Splittable Concept</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Requirements for a type whose instances can be split into two pieces. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2> 
-		 
-		<p>The following table lists the requirements for a
-		  splittable type 
-		  <samp class="codeph">X</samp> with instance 
-		  <samp class="codeph">x</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl7"><!-- --></a><table cellpadding="4" summary="" id="tbl7" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Splittable Concept</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d16663e65"> 
-				  <p><strong>Pseudo-Signature 
-					 </strong>
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d16663e73"> 
-				  <p><strong>Semantics 
-					 </strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-          </thead>
-
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d16663e65 "> 
-				  <p><samp class="codeph">X::X(X& x, Split)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d16663e73 "> 
-				  <p>Split 
-					 <samp class="codeph">x</samp> into 
-					 <samp class="codeph">x</samp> and newly constructed object. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Description</h2> 
-		 
-		<p>A type is splittable if it has a 
-		  <em>splitting constructor</em> that allows an instance to be split into
-		  two pieces. The splitting constructor takes as arguments a reference to the
-		  original object, and a dummy argument of type 
-		  <samp class="codeph">Split</samp>, which is defined by the library. The dummy
-		  argument distinguishes the splitting constructor from a copy constructor. After
-		  the constructor runs, 
-		  <samp class="codeph"><em>x</em></samp> and the newly constructed object should
-		  represent the two pieces of the original 
-		  <samp class="codeph"><em>x.</em></samp> The library uses splitting constructors in
-		  two contexts: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <em>Partitioning</em> a range into two subranges that can be processed
-			 concurrently. 
-		  </li>
- 
-		  <li> 
-			 <em>Forking</em> a body (function object) into two bodies that can run
-			 concurrently. 
-		  </li>
- 
-		</ul>
- 
-		<p>The following model types provide examples. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> Model Types</h2> 
-		 
-		<p> 
-		  <samp class="codeph">blocked_range</samp> and 
-		  <samp class="codeph">blocked_range2d</samp> represent splittable ranges. For each
-		  of these, splitting partitions the range into two subranges. See the 
-		  <samp class="codeph">blocked_range</samp> Template Class section for an example of
-		  the splitting constructor for 
-		  <samp class="codeph">blocked_range</samp>. 
-		</p>
- 
-		<p>The bodies for 
-		  <samp class="codeph">parallel_reduce</samp> and 
-		  <samp class="codeph">parallel_scan</samp> must be splittable. For each of these,
-		  splitting results in two bodies that can be run concurrently. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/algorithms/splittable_concept/split_cls.htm">split Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="range_concept/blocked_range_cls.htm#blocked_range_cls">blocked_range Template Class 
-		  </a></div>
-<div><a href="range_concept/blocked_range2d_cls.htm#blocked_range2d_cls">blocked_range2d Template Class 
-		  </a></div>
-<div><a href="parallel_reduce_func.htm#parallel_reduce_func">parallel_reduce Template Function 
-		  </a></div>
-<div><a href="parallel_scan_func.htm#parallel_scan_func">parallel_scan Template Function 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/algorithms/splittable_concept/split_cls.htm b/doc/help/reference/algorithms/splittable_concept/split_cls.htm
deleted file mode 100755
index d1b18dd..0000000
--- a/doc/help/reference/algorithms/splittable_concept/split_cls.htm
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="split Class">
-<meta name="DC.subject" content="split Class">
-<meta name="keywords" content="split Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/algorithms/splittable_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="split_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>split Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="split_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="split_cls"><!-- --></a>
-
-
-<h1 class="topictitle1">split Class</h1>
-
-     
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Type for dummy argument of a splitting constructor.</p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Header</h2>
-     <p> <pre>#include "tbb/tbb_stddef.h"</pre></p>
-</div>
-
-    <div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class split;</pre>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Description</h2>
-    <p>An argument of type <samp class="codeph">split</samp> is used to distinguish a splitting constructor from a copy constructor.</p>
-
-
-</div>
-
-
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre> 
-namespace tbb {
-    class split {
-    };
-}
-</pre>
-
-</div>
-
-</div>
-
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/algorithms/splittable_concept.htm">Splittable Concept</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices.htm b/doc/help/reference/appendices.htm
deleted file mode 100755
index 576a7b0..0000000
--- a/doc/help/reference/appendices.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Appendices">
-<meta name="DC.subject" content="known issues, compatibility">
-<meta name="keywords" content="known issues, compatibility">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/appendices/ppl_compatibility.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/appendices/known_issues.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/appendices/community_preview_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="appendices">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Appendices</title>
-</head>
-<body id="appendices">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="appendices"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Appendices</h1>
- 
-   
-  <div> 
-	 <p>This section describes the appendices related to this document. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/appendices/compatibility_features.htm">Compatibility Features</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/appendices/ppl_compatibility.htm">PPL Compatibility</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/appendices/known_issues.htm">Known Issues</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/appendices/community_preview_features.htm">Community Preview Features</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features.htm b/doc/help/reference/appendices/community_preview_features.htm
deleted file mode 100755
index 9f716ff..0000000
--- a/doc/help/reference/appendices/community_preview_features.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Community Preview Features">
-<meta name="DC.subject" content="Community Preview Features">
-<meta name="keywords" content="Community Preview Features">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/flow_graph_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/run_time_loader.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/scalable_memory_pools.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/serial_subset.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/aggregator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/community_preview_features/task_arena_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="community_preview_features">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Community Preview Features</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="community_preview_features">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="community_preview_features"><!-- --></a>
-
-
-<h1 class="topictitle1">Community Preview Features</h1>
-
-
-<div>
-<p>This section provides documentation for Community Preview (CP) features.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/appendices.htm">Appendices</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm">What is a Community Preview Feature?</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm">Enabling a Community Preview Feature</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/flow_graph_features.htm">Flow Graph</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/run_time_loader.htm">Run-time loader</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/scalable_memory_pools.htm">Scalable Memory Pools</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/serial_subset.htm">Serial subset</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm">concurrent_lru_cache Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/aggregator_cls.htm">aggregator Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/community_preview_features/task_arena_cls.htm">task_arena Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm">speculative_spin_rw_mutex Class (Community Preview Feature)</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/aggregator_cls.htm b/doc/help/reference/appendices/community_preview_features/aggregator_cls.htm
deleted file mode 100755
index 790b396..0000000
--- a/doc/help/reference/appendices/community_preview_features/aggregator_cls.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="aggregator Class">
-<meta name="DC.subject" content="aggregator Class">
-<meta name="keywords" content="aggregator Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm">
-<meta name="DC.Relation" scheme="URI" content="../../synchronization/mutexes/mutex_concept.htm#mutex_concept">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="aggregator_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>aggregator Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="aggregator_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="aggregator_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">aggregator Class</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p> Class for mutual exclusion that does not model the
-		  Mutex Concept. 
-		</p>
-
-	 </div>
-
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm">aggregator Class Basic Interface</a><br>
-</li>
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm">aggregator Class Expert Interface</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../synchronization/mutexes/mutex_concept.htm#mutex_concept">Mutex Concept
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm b/doc/help/reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm
deleted file mode 100755
index 91d6b4c..0000000
--- a/doc/help/reference/appendices/community_preview_features/aggregator_cls/basic_interface.htm
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="aggregator Class Basic Interface">
-<meta name="DC.subject" content="aggregator Class Basic Interface">
-<meta name="keywords" content="aggregator Class Basic Interface">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/aggregator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="expert_interface.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="basic_interface">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>aggregator Class Basic Interface</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="basic_interface">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="basic_interface"><!-- --></a>
-
- 
-  <h1 class="topictitle1">aggregator Class Basic Interface</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class aggregator;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_AGGREGATOR 1
-#include "tbb/aggregator.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>An <samp class="codeph">aggregator</samp> is similar to a <samp class="codeph">mutex</samp> in that it allows for mutually 
-           exclusive execution of operations, however the interface is quite different.  In particular, operations 
-           (in the form of function bodies or lambda functions) are passed to an <samp class="codeph">aggregator</samp> for 
-           execution via an <samp class="codeph">execute</samp> method on the <samp class="codeph">aggregator</samp> object.  Operations 
-           passed to the same <samp class="codeph">aggregator</samp> object will be executed mutually exclusively.  
-           The <samp class="codeph">execute</samp> method returns after the function passed to it has completed execution.
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  class aggregator {
-  public:
-    aggregator();
-    template<typename Body> 
-    void execute(const Body& b);
-  };
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span>
-             <thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d17477e97">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d17477e100">Description 
-				  </th>
- 
-				</tr>
-
-             </thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17477e97 "><span class="keyword">aggregator()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17477e100 "> 
-					 <p>Constructs an <span class="keyword">aggregator</span> object.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17477e97 "><span class="keyword">template<typename Body> void execute(const Body& b)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17477e100 "> 
-					 <p>Submits <samp class="codeph">b</samp> to <span class="keyword">aggregator</span> to be executed in a mutually 
-                     exclusive fashion.  Returns after <samp class="codeph">b</samp> has been executed.</p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-  </div>
- 
-  <div class="section"><h2 class="sectiontitle">Example</h2> 
-   
-  <p>The following example uses an <samp class="codeph">aggregator</samp> to safely operate on a non-concurrent <samp class="codeph">std::priority_queue</samp> container.</p>
-
- <pre>typedef priority_queue<value_type, vector<value_type>, compare_type> pq_t;
-pq_t my_pq;
-aggregator my_aggregator;
-value_type elem = 42;
-
-// push elem onto the priority queue
-my_aggregator.execute( [&my_pq, &elem](){ my_pq.push(elem); } );
-
-// pop an elem from the priority queue
-bool result = false;
-my_aggregator.execute( [&my_pq, &elem, &result](){
-  if (!my_pq.empty()) {
-    result = true;
-    elem = my_pq.top();
-    my_pq.pop();
-  }
-} );</pre>
-  </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/aggregator_cls.htm">aggregator Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="expert_interface.htm">aggregator Class Expert Interface
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm b/doc/help/reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm
deleted file mode 100755
index ab0a55f..0000000
--- a/doc/help/reference/appendices/community_preview_features/aggregator_cls/expert_interface.htm
+++ /dev/null
@@ -1,275 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="aggregator Class Expert Interface">
-<meta name="DC.subject" content="aggregator Class Expert Interface">
-<meta name="keywords" content="aggregator Class Expert Interface">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/aggregator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="basic_interface.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="expert_interface">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>aggregator Class Expert Interface</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="expert_interface">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="expert_interface"><!-- --></a>
-
- 
-  <h1 class="topictitle1">aggregator Class Expert Interface</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename handler_type>
-class aggregator_ext;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_AGGREGATOR 1
-#include "tbb/aggregator.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>The extended <samp class="codeph">aggregator</samp> interface is provided for expert-level use of the <samp class="codeph">aggregator</samp>.  
-        It gives the user more control over the operations that are passed to the <samp class="codeph">aggregator</samp> and how those operations 
-        are handled by the <samp class="codeph">aggregator</samp>.  Specifically, instead of an <samp class="codeph">execute</samp> method to pass in a 
-        particular function, there is a <samp class="codeph">process</samp> method to which any sort of data (derived from <samp class="codeph">aggregator_operation</samp>, 
-        see below) can be passed.  In addition, the user must specify a custom function object that performs the operations specified 
-        by the data passed in through the <samp class="codeph">process</samp> method.
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  class aggregator_operation {
-   public:
-    enum aggregator_operation_status {agg_waiting=0,agg_finished};
-    aggregator_operation();
-    void start();
-    void finish();
-    aggregator_operation* next();
-    void set_next(aggregator_operation* n);
-  };
-
-  template<typename handler_type>
-  class aggregator_ext {
-   public:
-    aggregator_ext(const handler_type& h);
-    void process(aggregator_operation *op);
-  };
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span>
-             <thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d17856e100">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d17856e103">Description 
-				  </th>
- 
-				</tr>
-
-             </thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">aggregator_ext(const handler_type& h)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Constructs an <span class="keyword">aggregator_ext</span> object that uses 
-                     handler <span class="keyword">h</span> to handle operations.</p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">void process(aggregator_operation* op)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Submits data about an operation in <span class="keyword">op</span> to <span class="keyword">aggregator_ext</span> 
-                     to be executed in a mutually exclusive fashion.  Returns after <span class="keyword">op</span> has been handled.
-                     </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">aggregator_operation::aggregator_operation()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Constructs a base <span class="keyword">aggregator_operation</span> object.</p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">void aggregator_operation::start()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Prepares the <span class="keyword">aggregator_operation</span> object to be handled.</p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">void aggregator_operation::finish()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Prepares the <span class="keyword">aggregator_operation</span> object to be released to its originating thread.</p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">aggregator_operation* aggregator_operation::next()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>The next <span class="keyword">aggregator_operation</span> following <span class="keyword">this</span>.
-                     </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d17856e100 "><span class="keyword">void aggregator_operation::set_next(aggregator_operation* n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d17856e103 "> 
-					 <p>Makes <span class="keyword">n</span> the next <span class="keyword">aggregator_operation</span> following <span class="keyword">this</span>.
-                     </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-  </div>
- 
-  <div class="section"><h2 class="sectiontitle">Example</h2> 
-   
-  <p>The following example again uses an <samp class="codeph">aggregator_ext</samp> to safely operate on a non-concurrent <samp class="codeph">std::priority_queue</samp> container.</p>
-
- <pre>typedef priority_queue<value_type, vector<value_type>, compare_type> pq_t;
-pq_t my_pq;
-value_type elem = 42;
-
-// The operation data, derived from aggregator_node
-class op_data : public aggregator_node
- public:
-  value_type* elem;
-  bool success, is_push;
-  op_data(value_type* e, bool push=false) : 
-    elem(e), success(false), is_push(push) {}
-};
-
-// A handler to pass in the aggregator_ext template
-class my_handler_t {
-  pq_t *pq;
- public:
-  my_handler_t() {}
-  my_handler_t(pq_t *pq_) : pq(pq_) {}
-  void operator()(aggregator_node* op_list) {
-    op_data* tmp;
-    while (op_list) {
-      tmp = (op_data*)op_list;
-      op_list = op_list->next();
-      tmp->start();
-      if (tmp->is_push) pq->push(*(tmp->elem));
-      else {
-        if (!pq->empty()) {
-          tmp->success = true;
-          *(tmp->elem) = pq->top();
-          pq->pop();
-        }
-      }
-      tmp->finish();
-    }
-  }
-};
-
-// create the aggregator_ext and initialize with handler instance
-aggregator_ext<my_handler_t> my_aggregator(my_handler_t(my_pq));
-
-// push elem onto the priority queue
-op_data my_push_op(&elem, true);
-my_aggregator.process(&my_push_op);
-
-// pop an elem from the priority queue
-bool result;
-op_data my_pop_op(&elem);
-my_aggregator.process(&my_pop_op);
-result = my_pop_op.success;</pre>
-
-<p>There are several important things to note in this example.  Most importantly is the handler 
-algorithm, which must conform to what is shown above.  Specifically, the handler must receive a 
-linked list of <samp class="codeph">aggregator_nodes</samp>, and it must process all the nodes in the list.  The ordering of 
-this processing is up to the user, but all the nodes must be processed before the handler returns.  
-The <samp class="codeph">next</samp> and <samp class="codeph">set_next</samp> methods on <samp class="codeph">aggregator_node</samp> should be used 
-for all manipulations of nodes in the list.</p>
-
-
-<p>Further, to process an <samp class="codeph">aggregator_node</samp>, the user must first call the method <samp class="codeph">start</samp> on the node.  
-Then, the user can handle the operation associated with the node in whatever way necessary.  When 
-this is complete, the user must call the method <samp class="codeph">finish</samp> on the node.  The <samp class="codeph">finish</samp> method releases the 
-node to its originating thread, causing that thread's invocation of the <samp class="codeph">process</samp> method to return.</p>
-
-
-<p>The <samp class="codeph">handler</samp> function in the example above illustrates this process in the simplest fashion: 
-loop over the list handling each operation in turn, call <samp class="codeph">start</samp> before working with the information 
-contained in the node, call <samp class="codeph">finish</samp> when done with the node.</p>
-
-  </div>
- 
-  </div>
- 
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/aggregator_cls.htm">aggregator Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="basic_interface.htm">aggregator Class Basic Interface
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm b/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm
deleted file mode 100755
index e5492d7..0000000
--- a/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_lru_cache Template Class">
-<meta name="DC.subject" content="concurrent_lru_cache Template Class">
-<meta name="keywords" content="concurrent_lru_cache Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_lru_cache_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>concurrent_lru_cache Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="concurrent_lru_cache_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_lru_cache_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_lru_cache Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for Least Recently Used cache with
-		  concurrent operations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename key_type, typename value_type, typename value_functor_type = value_type (*)(key_type) >
- class concurrent_lru_cache;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_CONCURRENT_LRU_CACHE 1
- #include "tbb/concurrent_lru_cache.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">concurrent_lru_cache</span> container maps keys to values
-		  with the ability to limit the number of stored unused objects. There is at most
-		  one element in the container for each key. 
-		</p>
- 
-		<p>The container permits multiple threads to
-		  concurrently retrieve items from it. 
-		</p>
- 
-		<p>The container tracks the lifetime of retrieved
-		  items by returning a proxy object instead of a real value. 
-		</p>
- 
-		<p>The container stores all the items that are
-		  currently in use and a limited number of unused items. Extra items are removed
-		  in a least recently used manner. 
-		</p>
- 
-		<p>When no item is found for a key, the container
-		  calls the user provided function object to get a needed value and inserts it.
-		  The functor object must be thread safe. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
- template <typename key_type,
- typename value_type,
- typename value_functor_type = value_type (*)(key_type) >
- class concurrent_lru_cache{
- private:
- class handle_object;
- public:
- typedef handle_object handle;
- public:
- concurrent_lru_cache(value_functor_type f,<u>std::size_t</u> number_of_lru_history_items);
- handle_object operator()(key_type k);
- private:
- struct handle_move_t;
- class handle_object {
- public:
- handle_object(handle_move_t m);
- operator handle_move_t();
- value_type& value();
- ~handle_object();
- friend handle_move_t move(handle_object& h);
- private:
- void operator=(handle_object&);
- handle_object(handle_object &);
- };
-<u>};</u>
- }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d18666e159">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d18666e162">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d18666e159 "><span class="keyword"></span>concurrent_lru_cache(value_function_type f,<u>std::size_t</u> number_of_lru_history_items); 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d18666e162 "> 
-					 <p>Constructs an empty cache with a 
-						<samp class="codeph">number_of_lru_history_items</samp> maximum
-						number of stored unused objects, and 
-						<samp class="codeph">f</samp> function
-						object returning new values. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d18666e159 "><span class="keyword">handle_object operator[](key_type
-						k)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d18666e162 "> 
-					 <p>Search the container for a pair with
-						given key. If the pair is not found, the user provided function object is
-						called to get the value and insert it into the container. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">handle_object</samp> pointing to the matching
-						value. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d18666e159 "><span class="keyword">~ concurrent_lru_cache
-						()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d18666e162 "> 
-					 <p>Destroys all items in the container, and
-						the container itself, so that it can no longer be used. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d18666e159 "><span class="keyword">handle_object class</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d18666e162 "><a href="concurrent_lru_cache_cls/handle_object_cls.htm">More Info</a> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d18666e159 "><span class="keyword">handle_move_t class</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d18666e162 "> 
-					 <p>This is an instrumental class to allow
-						certain conversions that allow ownership transfer between instances of 
-						<samp class="codeph">handle_object</samp> objects. As well it
-						allows 
-						<samp class="codeph">handle_object</samp> objects to be passed to
-						and returned from functions. The class has no members other than holding a
-						reference to value object in LRU cache container and a pointer to the container
-						itself. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm">handle_object class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm b/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm
deleted file mode 100755
index ea30629..0000000
--- a/doc/help/reference/appendices/community_preview_features/concurrent_lru_cache_cls/handle_object_cls.htm
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="handle_object class">
-<meta name="DC.subject" content="handle_object class">
-<meta name="keywords" content="handle_object class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="handle_object_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>handle_object class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="handle_object_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="handle_object_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">handle_object class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class that provides read and write access to value
-		  in a 
-		  <samp class="codeph">concurrent_lru_cache</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename key_type,
- typename value_type,
- typename value_functor_type = value_type (*)(key_type) >
- class concurrent_lru_cache::handle_object {</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_lru_cache.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">handle_object</samp> is a
-		  (smart handle) proxy object returned by the cache container allowing getting
-		  reference to the value. 
-		</p>
- 
-		<p>Live object of this type prevents the container
-		  from erasing values while they are being used. 
-		</p>
- 
-		<p>The 
-		  <samp class="codeph">handle_object</samp> does not
-		  have copy semantics; instead it only allows transfer of ownership i.e. it
-		  semantics is similar to one of 
-		  <samp class="codeph">std::auto_ptr</samp> or move
-		  semantics from C++11. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members and free standing functions</h2> 
-		
-		
-		<pre>namespace tbb {
- template <typename key_type,
- typename value_type,
- typename value_functor_type = value_type (*)(key_type) >
- class concurrent_lru_cache::handle_object {
- public:
- handle_object(handle_move_t m);
- operator handle_move_t();
- value_type& value();
- ~handle_object();
- private:
- void operator=(handle_object&);
- handle_object(handle_object &);
- };
-<u>};</u>
- handle_move_t move(handle_object& h);
- }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d19211e139">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d19211e142">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19211e139 "><span class="keyword">handle_object(handle_move_t
-						m)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19211e142 "> 
-					 <p>Constructs an 
-						<samp class="codeph">handle_object</samp> object from a pointer or
-						from another 
-						<samp class="codeph">handle_object</samp> (through implicit
-						conversion to 
-						<samp class="codeph">handle_move_t</samp> object). 
-					 </p>
- 
-					 <p>Since 
-						<samp class="codeph">handle_object</samp> objects owns a reference
-						to a value object of LRU cache, when a new 
-						<samp class="codeph">handle_object</samp> is constructed from
-						another 
-						<samp class="codeph">handle_object</samp>, the former owner
-						releases the reference ownership (i.e. no longer refers to any value) . 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19211e139 "><span class="keyword">operator handle_move_t()</span>
-					 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19211e142 "> 
-					 <p>This method should not be called
-						directly, instead use free standing 
-						<samp class="codeph">move</samp>
-						function. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Transfer reference
-						ownership from 
-						<samp class="codeph">handle_object</samp> objects to temporary 
-						<samp class="codeph">handle_move_t</samp> object. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">handle_move_t</samp> object pointing to the
-						same value object of LRU cache 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19211e139 "><span class="keyword">value_type& value()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19211e142 "> 
-					 <p>Return a reference to value object of LRU
-						cache container. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to 
-						<samp class="codeph">value_type</samp>
-						object inside the LRU cache container. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19211e139 "><span class="keyword">~handle_object()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19211e142 "> 
-					 <p>Release a reference to value object of
-						LRU cache container. It it was the last reference to the value object the
-						container is allowed to evict the value. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/concurrent_lru_cache_cls.htm">concurrent_lru_cache Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm b/doc/help/reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm
deleted file mode 100755
index 8d0270b..0000000
--- a/doc/help/reference/appendices/community_preview_features/enabling_a_community_preview_feature.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Enabling a Community Preview Feature">
-<meta name="DC.subject" content="Enabling a Community Preview Feature">
-<meta name="keywords" content="Enabling a Community Preview Feature">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="enabling_a_community_preview_feature">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Enabling a Community Preview Feature</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="enabling_a_community_preview_feature">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="enabling_a_community_preview_feature"><!-- --></a>
-
-
-<h1 class="topictitle1">Enabling a Community Preview Feature</h1>
-
-
-<div>
-<p>A Community Preview feature may be defined completely in header files or it may require some additional support defined in a library.</p>
-
-<p>For a CP feature that is contained completely in header files, a feature-specific macro must be defined before inclusion of the header files.</p>
-
-<p>Example</p>
-<pre>#define TBB_PREVIEW_FOO 1
- #include "tbb/foo.h"</pre>
-<p>If a CP feature requires support from a library, then an additional library must be linked with the application.</p>
-
-<p>The use of separate headers, feature-specific macros and separate libraries mitigates the impact of Community Preview features on other product features.</p>
-<div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-<p>Unless a CP feature is explicitly enabled using the above mechanisms, it will have no impact on the application.</p>
-</div></div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/flow_graph/or_node_cls.htm b/doc/help/reference/appendices/community_preview_features/flow_graph/or_node_cls.htm
deleted file mode 100755
index 741c9de..0000000
--- a/doc/help/reference/appendices/community_preview_features/flow_graph/or_node_cls.htm
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="or_node Template Class">
-<meta name="DC.subject" content="or_node Template Class">
-<meta name="keywords" content="or_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/flow_graph_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../flow_graph/message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="or_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>or_node Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="or_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="or_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">or_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A node that broadcasts messages received at its
-		  input ports to all of its successors. Each input port p<sub>i</sub> is a 
-		  <samp class="codeph">receiver<T<sub>i</sub>></samp>. The messages are broadcast
-		  individually as they are received at each port. The output message type is a
-		  struct that contains an index number that identifies the port on which the
-		  message arrived and a tuple of the input types where the value is stored. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename InputTuple>
- class or_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_GRAPH_NODES 1
- #include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>An or_node is a 
-		  <samp class="codeph">graph_node</samp> and 
-		  <samp class="codeph">sender<
-			 or_node<InputTyple>::output_type ></samp>. It contains a tuple of
-		  input ports, each of which is a 
-		  <samp class="codeph">receiver<Ti></samp> for
-		  each of the 
-		  <samp class="codeph">T0 .. TN in
-			 InputTuple</samp>. It supports multiple input receivers with distinct types
-		  and broadcasts each received message to all of its successors. Unlike a 
-		  <samp class="codeph">join_node</samp>, each
-		  message is broadcast individually to all successors of the 
-		  <samp class="codeph">or_node</samp> as it arrives
-		  at an input port. The incoming messages are wrapped in a struct that contains
-		  the index of the port number on which the message arrived and a tuple of the
-		  input types where the received value is stored. 
-		</p>
- 
-		<p>The function template 
-		  <samp class="codeph">input_port</samp> described
-		  in 6.19 simplifies the syntax for getting a reference to a specific input port.
-		  
-		</p>
- 
-		<p>Rejection of messages by successors of the 
-		  <samp class="codeph">or_node</samp> is handled
-		  using the protocol in the Message Passing Protocol, see link below. The input
-		  ports never reject incoming messages. 
-		</p>
- 
-		<p><samp class="codeph">InputTuple</samp> must be a 
-		  <samp class="codeph">flow::tuple<T0,T1,...></samp> where each
-		  element is copy-constructible and assignable. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<pre>#include<cstdio>
-#define TBB_PREVIEW_GRAPH_NODES 1
-#include "tbb/flow_graph.h"
-
-using namespace tbb::flow;
-
-int main() {
-  graph g;
-  function_node<int,int> f1( g, unlimited,
-                               [](const int &i) { return 2*i; } );
-  function_node<float,float> f2( g, unlimited,
-                               [](const float &f) { return f/2; } );
-
-  or_node< flow::tuple<int,float> > my_or_type;
-  my_or_type o(g);
-
-  function_node< my_or_type::output_type >
-    f3( g, unlimited,
-        []( const my_or_type::output_type &v ) {
-            if (v.indx == 0) {
-              printf("Received an int %d\n", 
-                     std::get<0>(v.result));
-            } else {
-              printf("Received a float %f\n", 
-                     std::get<1>(v.result));
-           }
-        }
-    );
-  make_edge( f1, input_port<0>(o) );
-  make_edge( f2, input_port<1>(o) );
-  make_edge( o, f3 );
-
-  f1.try_put( 3 );
-  f2.try_put( 3 );
-  g.wait_for_all();
-  return 0;
- }</pre> 
-		<p>In the example above, three 
-		  <samp class="codeph">function_node</samp> objects
-		  are created: 
-		  <samp class="codeph">f1</samp> multiplies an int i
-		  by 2, 
-		  <samp class="codeph">f2</samp> divides a 
-		  <samp class="codeph">float f</samp> by 2, and 
-		  <samp class="codeph">f3</samp> prints the values
-		  from 
-		  <samp class="codeph">f1</samp> and 
-		  <samp class="codeph">f2</samp> as they arrive. The
-		  
-		  <samp class="codeph">or_node j</samp> wraps the
-		  output of 
-		  <samp class="codeph">f1</samp> and 
-		  <samp class="codeph">f2</samp> and forwards each
-		  result to 
-		  <samp class="codeph">f3</samp>. This example is
-		  purely a syntactic demonstration since there is very little work in the nodes. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
-  template<typename InputTuple>
-  class or_node : public graph_node,
-  public sender<<var>impl-dependent-output-type</var> > {
-  public:
-    typedef struct { size_t indx; InputTuple result; } output_type;
-    typedef receiver<output_type> successor_type;
-    implementation-dependent-tuple input_ports_tuple_type;
-
-    or_node(graph &g);
-    or_node(const or_node &src);
-    input_ports_type &input_ports();
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type & );
-    bool try_release( );
-    bool try_consume( );
-  };
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d19826e178">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d19826e181">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">or_node(graph &g)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>Constructs an 
-						<samp class="codeph">or_node</samp> that
-						belongs to the 
-						<samp class="codeph">graph g</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">or_node( const or_node &src
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>Constructs an 
-						<samp class="codeph">or_node</samp>. The
-						list of predecessors, messages in the input ports, and successors are NOT
-						copied.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">input_ports_type&
-						input_ports()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p><strong>Returns</strong>: A 
-						<samp class="codeph">flow::tuple</samp>
-						of receivers. Each element inherits from 
-						<samp class="codeph">tbb::receiver<T></samp> where T is the
-						type of message expected at that input. Each tuple element can be used like any
-						other 
-						<samp class="codeph">flow::receiver<T></samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool register_successor(
-						successor_type & r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>Adds 
-						<samp class="codeph">r</samp> to the set
-						of successors.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool remove_successor(
-						successor_type & r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>Removes 
-						<samp class="codeph">r</samp> from the
-						set of successors.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>An 
-						<samp class="codeph">or_node</samp>
-						contains no buffering and therefore does not support gets.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">false</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool try_reserve( output_type &
-						)</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>An 
-						<samp class="codeph">or_node</samp>
-						contains no buffering and therefore cannot be reserved.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">false</samp>.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>An 
-						<samp class="codeph">or_node</samp>
-						contains no buffering and therefore cannot be reserved.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">false</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d19826e178 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d19826e181 ">
-					 <p>An 
-						<samp class="codeph">or_node</samp>
-						contains no buffering and therefore cannot be reserved.
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">false</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/flow_graph_features.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../../flow_graph/message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/flow_graph_features.htm b/doc/help/reference/appendices/community_preview_features/flow_graph_features.htm
deleted file mode 100755
index 2a703e1..0000000
--- a/doc/help/reference/appendices/community_preview_features/flow_graph_features.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Flow Graph">
-<meta name="DC.subject" content="Flow Graph">
-<meta name="keywords" content="Flow Graph">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/flow_graph/or_node_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="flow_graph_features">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Flow Graph</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="flow_graph_features">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="flow_graph_features"><!-- --></a>
-
-
-<h1 class="topictitle1">Flow Graph</h1>
-
-
-<div>
-<p>This section describes Flow Graph nodes that are available as Community Preview features.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/flow_graph/or_node_cls.htm">or_node Template Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/run_time_loader.htm b/doc/help/reference/appendices/community_preview_features/run_time_loader.htm
deleted file mode 100755
index e8b66a5..0000000
--- a/doc/help/reference/appendices/community_preview_features/run_time_loader.htm
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Run-time loader">
-<meta name="DC.subject" content="Run-time loader">
-<meta name="keywords" content="Run-time loader">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="run_time_loader">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Run-time loader</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="run_time_loader">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="run_time_loader"><!-- --></a>
-
-
-<h1 class="topictitle1">Run-time loader</h1>
-
-
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-
-<p>The run-time loader is a mechanism that provides additional run-time control over the version of the Intel® Threading Building Blocks (Intel® TBB) dynamic library used by an application, plug-in, or another library.</p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Header</h2>
-<pre>#define TBB_PREVIEW_RUNTIME_LOADER 1
- #include "tbb/runtime_loader.h"</pre></div>
-
-<div class="section"><h2 class="sectiontitle">Library</h2>
-
-
-<div class="tablenoborder"><a name="tbl_library"><!-- --></a><table cellpadding="4" summary="" id="tbl_library" frame="border" border="1" cellspacing="0" rules="all">
-<thead align="left">
-<tr>
-<th class="cellrowborder" align="left" valign="top" width="20%" id="d20923e56">
-<p>OS</p>
-</th>
-
-<th class="cellrowborder" align="left" valign="top" width="40%" id="d20923e61">
-<p>Release build</p>
-</th>
-
-<th class="cellrowborder" align="left" valign="top" width="40%" id="d20923e66">
-<p>Debug build</p>
-</th>
-</tr>
-</thead>
-
-<tbody>
-<tr>
-<td class="cellrowborder" align="left" valign="top" width="20%" headers="d20923e56 ">
-<p>Windows</p>
-</td>
-
-<td class="cellrowborder" align="left" valign="top" width="40%" headers="d20923e61 ">
-<p>tbbproxy.lib</p>
-</td>
-
-<td class="cellrowborder" align="left" valign="top" width="40%" headers="d20923e66 ">
-<p>tbbproxy_debug.lib</p>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Description</h2>
-
-<p>The run-time loader consists of a class and a static library that can be linked with an application, library, or plug-in to provide better run-time control over the version of Intel® TBB used. The class allows loading a desired version of the dynamic library at run time with explicit list of directories for library search. The static library provides stubs for functions and methods to resolve link-time dependencies, which are then dynamically substituted with the proper functions  [...]
-
-<p>All instances of <samp class="codeph">class runtime loader</samp> in the same module (i.e. exe or dll) share certain global state. The most noticeable piece of this state is the loaded Intel® TBB library. The implications of that are:</p>
-
-<p>Only one Intel® TBB library per module can be loaded.</p>
-
-<p>If one <samp class="codeph">runtime_loader</samp> instance has already loaded a library, another one created by the same module will not load another one. If the loaded library is suitable for the second instance, both will use it cooperatively, otherwise an error will be reported (details below).</p>
-
-<p>If different versions of the library are requested by different modules, those can be loaded, but may result in processor oversubscription.</p>
-
-<p><samp class="codeph">runtime_loader</samp> objects are not thread-safe and may work incorrectly if used concurrently.</p>
-
-<ul type="disc">
-<li>
-<p>If an application or a library uses <samp class="codeph">runtime_loader</samp>, it should be linked with one of the above specified libraries instead of a normal Intel® TBB library.</p>
-</li>
-</ul>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Example</h2>
-<pre>#define TBB_PREVIEW_RUNTIME_LOADER 1
- #include "tbb/runtime_loader.h"
- #include "tbb/parallel_for.h"
- #include <iostream>
- char const * path[] = { "c:\\myapp\\lib\\ia32", NULL };
- int main() {
- tbb::runtime_loader loader( path );
- if( loader.status()!=tbb::runtime_loader::ec_ok )
- return -1;
- // The loader does not impact how the library is used
- tbb::parallel_for(0, 10, ParallelForBody());
- return 0;
- }</pre>
-<p>In this example, the Intel® Threading Building Blocks (Intel®) library will be loaded from the c:\myapp\lib\ia32 directory. No explicit requirements for a version are specified, so the minimal suitable version is the version used to compile the example, and any higher version is suitable as well. If the library is successfully loaded, it can be used in the normal way.</p>
-</div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm">runtime_loader Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm b/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm
deleted file mode 100755
index db727fc..0000000
--- a/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm
+++ /dev/null
@@ -1,198 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="runtime_loader Class">
-<meta name="DC.subject" content="runtime_loader Class">
-<meta name="keywords" content="runtime_loader Class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/run_time_loader.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="runtime_loader_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>runtime_loader Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="runtime_loader_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="runtime_loader_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">runtime_loader Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class for run time control over the loading of an
-		  Intel® Threading Building Blocks dynamic library. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class runtime_loader;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
- class runtime_loader {
- // Error codes.
- enum error_code {
- ec_ok, // No errors.
- ec_bad_call, // Invalid function call.
- ec_bad_arg, // Invalid argument passed.
- ec_bad_lib, // Invalid library found.
- ec_bad_ver, // The library found is not suitable.
- ec_no_lib // No library found.
- };
- // Error mode constants.
- enum error_mode {
- em_status, // Save status of operation and continue.
- em_throw, // Throw an exception of error_code type.
- em_abort // Print message to stderr, and abort().
- };
- runtime_loader( error_mode mode = em_abort );
- runtime_loader(
- char const *path[],
- // List of directories to search in.
- int min_ver = TBB_INTERFACE_VERSION,
- // Minimal suitable version
- int max_ver = INT_MAX,
- // Maximal suitable version
- error_mode mode = em_abort
- // Error mode for this instance.
- );
- ~runtime_loader();
- error_code load(
- char const * path[],
- int min_ver = TBB_INTERFACE_VERSION,
- int max_ver = INT_MAX
- );
- error_code status();
- };
- }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d21286e134">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d21286e137">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d21286e134 "><span class="keyword">runtime_loader( error_mode mode =
-						em_abort )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d21286e137 "> 
-					 <p>Initialize 
-						<samp class="codeph">runtime_loader</samp> but do not load a
-						library. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d21286e134 "><span class="keyword">runtime_loader(char const *
-						path[], int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX, error_mode
-						mode = em_abort )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d21286e137 "> 
-					 <p><strong>Requirements</strong>: The last element of 
-						<samp class="codeph">path[]</samp> must
-						be 
-						<samp class="codeph">NULL</samp>. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Initialize 
-						<samp class="codeph">runtime_loader</samp> and load Intel® Threading Building Blocks (Intel® TBB) 
-						(<samp class="codeph">see load()</samp> for details). If 
-						<samp class="codeph">error mode</samp>
-						equals to em_status, the method 
-						<samp class="codeph">status()</samp> can
-						be used to check whether the library was loaded or not. If 
-						<samp class="codeph">error mode</samp>
-						equals to 
-						<samp class="codeph">em_throw</samp>, in
-						case of a failure an exception of type 
-						<samp class="codeph">error_code</samp>
-						will be thrown. If 
-						<samp class="codeph">error mode</samp>
-						equals to 
-						<samp class="codeph">em_abort</samp>, in
-						case of a failure a message will be printed to stderr, and execution aborted. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d21286e134 "><span class="keyword">error_code load(char const *
-						path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d21286e137 "><a href="runtime_loader_cls/error_code_load.htm">More Info</a> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d21286e134 "><span class="keyword">error_code status()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d21286e137 "> 
-					 <p><strong>Returns</strong>: If error mode is 
-						<samp class="codeph">em_status</samp>,
-						the function returns status of the last operation. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/run_time_loader.htm">Run-time loader</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm">error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm b/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm
deleted file mode 100755
index ab8a261..0000000
--- a/doc/help/reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls/error_code_load.htm
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)">
-<meta name="DC.subject" content="error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)">
-<meta name="keywords" content="error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)">
-<meta name="DC.Relation" scheme="URI" content="../../../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="error_code_load">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../../intel_css_styles.css">
-<title>error_code load(char const * path[],int min_ver = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="error_code_load">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(5);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="error_code_load"><!-- --></a>
-
- 
-  <h1 class="topictitle1">error_code load(char const * path[],int min_ver
-	 = TBB_INTERFACE_VERSION, int max_ver = INT_MAX)</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2> 
-		 
-		<p>The last element of 
-		  <samp class="codeph">path[]</samp> must be 
-		  <samp class="codeph">NULL</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Effects</h2> 
-		 
-		<p>Load a suitable version of an Intel® Threading Building Blocks (Intel® TBB) dynamic
-		  library from one of the specified directories. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>The method searches for a library in directories
-			 specified in the 
-			 <samp class="codeph">path[]</samp> array. When a
-			 library is found, it is loaded and its interface version (as returned by 
-			 <samp class="codeph">TBB_runtime_interface_version())</samp> is
-			 checked. If the version does not meet the requirements specified by 
-			 <samp class="codeph">min_ver</samp> and 
-			 <samp class="codeph">max_ver</samp>, the library
-			 is unloaded. The search continues in the next specified path, until a suitable
-			 version of the Intel® TBB library is found or the array of paths ends with 
-			 <samp class="codeph">NULL</samp>. It is
-			 recommended to use default values for 
-			 <samp class="codeph">min_ver</samp> and 
-			 <samp class="codeph">max_ver</samp>. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>For security reasons, avoid using relative
-			 directory names such as current ("."), parent ("..") or any
-			 other relative directory (like "lib") when searching for a library.
-			 Use only absolute directory names (as shown in the example above); if
-			 necessary, construct absolute names at run time. Neglecting these rules may
-			 cause your program to execute 3-rd party malicious code. (See
-			 http://www.microsoft.com/technet/security/advisory/2269637.mspx for details.) 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Returns</h2> 
-		 
-		<p><samp class="codeph">ec_ok</samp> - a suitable version was
-		  successfully loaded. 
-		</p>
- 
-		<p><samp class="codeph">ec_bad_call</samp> - this runtime_loader
-		  instance has already been used to load a library. 
-		</p>
- 
-		<p><samp class="codeph">ec_bad_lib</samp> - A library was found but
-		  it appears invalid. 
-		</p>
- 
-		<p><samp class="codeph">ec_bad_arg</samp> - min_ver and/or max_ver is
-		  negative or zero, or min_ver > max_ver. 
-		</p>
- 
-		<p><samp class="codeph">ec_bad_ver</samp> - unsuitable version has
-		  already been loaded by another instance. 
-		</p>
- 
-		<p><samp class="codeph">ec_no_lib</samp> - No suitable version was
-		  found. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../../reference/appendices/community_preview_features/run_time_loader/runtime_loader_cls.htm">runtime_loader Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools.htm b/doc/help/reference/appendices/community_preview_features/scalable_memory_pools.htm
deleted file mode 100755
index 753cfc7..0000000
--- a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools.htm
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Scalable Memory Pools">
-<meta name="DC.subject" content="Scalable Memory Pools">
-<meta name="keywords" content="Scalable Memory Pools">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="scalable_memory_pools">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Scalable Memory Pools</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="scalable_memory_pools">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="scalable_memory_pools"><!-- --></a>
-
-
-  <h1 class="topictitle1">Scalable Memory Pools</h1>
-
-  
-  <div>
-	 <p>Memory pools allocate and free memory from a
-		specified region or underlying allocator providing thread-safe, scalable
-		operations. The following table summarizes the memory pool concept. Here, P
-		represents an instance of the memory pool class.
-	 </p>
-
-	 
-<div class="tablenoborder"><a name="tbl52"><!-- --></a><table cellpadding="4" summary="" id="tbl52" frame="border" border="1" cellspacing="0" rules="rows"><caption><span class="tablecap">Memory Pool Concept</span></caption>
-	 <thead align="left">
-		<tr>
-		  <th class="cellrowborder" align="center" valign="top" width="50%" id="d21966e40">
-			 <p>Pseudo-Signature
-			 </p>
-
-		  </th>
-
-		  <th class="cellrowborder" align="center" valign="top" width="50%" id="d21966e46">
-			 <p>Semantics
-			 </p>
-
-		  </th>
-
-		</tr>
-</thead>
-
-	 <tbody>
-		<tr>
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e40 ">
-			 <p><samp class="codeph">~P()
-				  throw();</samp>
-			 </p>
-
-		  </td>
-
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e46 ">
-			 <p>Destructor. Frees all the memory of allocated
-				objects.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-		<tr>
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e40 ">
-			 <p><samp class="codeph">void
-				  P::recycle();</samp>
-			 </p>
-
-		  </td>
-
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e46 ">
-			 <p>Frees all the memory of allocated objects.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-		<tr>
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e40 ">
-			 <p><samp class="codeph">void*
-				  P::malloc(size_t n);</samp>
-			 </p>
-
-		  </td>
-
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e46 ">
-			 <p>Returns pointer to 
-				<var>n</var> bytes
-				allocated from memory pool.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-		<tr>
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e40 ">
-			 <p><samp class="codeph">void
-				  P::free(void* ptr);</samp>
-			 </p>
-
-		  </td>
-
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e46 ">
-			 <p>Frees memory object specified via 
-				<var>ptr</var>
-				pointer.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-		<tr>
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e40 ">
-			 <p><samp class="codeph">void*
-				  P::realloc(void* ptr, size_t n);</samp>
-			 </p>
-
-		  </td>
-
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d21966e46 ">
-			 <p>Reallocates memory object pointed by 
-				<var>ptr</var> to 
-				<var>n</var> bytes.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-	 </tbody>
-
-  </table>
-</div>
-
-  <div class="section"><h2 class="sectiontitle">Model Types</h2>
-	 
-	 <p>Template class memory_pool and class fixed_pool model
-		the Memory Pool concept.
-	 </p>
-
-  </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm">memory_pool Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm">fixed_pool Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm">memory_pool_allocator Template Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm b/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm
deleted file mode 100755
index e37b1bb..0000000
--- a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/fixed_pool_cls.htm
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="fixed_pool Class">
-<meta name="DC.subject" content="fixed_pool Class">
-<meta name="keywords" content="fixed_pool Class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="fixed_pool">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>fixed_pool Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="fixed_pool">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="fixed_pool"><!-- --></a>
-
- 
-  <h1 class="topictitle1">fixed_pool Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for scalable memory allocation from
-		  a buffer of fixed size. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class fixed_pool;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">fixed_pool</samp> allocates
-		  and frees memory in a way that scales with the number of processors. All the
-		  memory available for the allocation is initially passed through arguments of
-		  the constructor. A 
-		  <samp class="codeph">fixed_pool</samp> models the
-		  Memory Pool concept described in Table 52. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"
- ...
- char buf[1024*1024];
- tbb::fixed_pool my_pool(buf, 1024*1024);
- void* my_ptr = my_pool.malloc(10);
- my_pool.free(my_ptr);}</pre> 
-		<p>The code above provides a simple example of
-		  allocation from a fixed pool. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
- class fixed_pool : no_copy {
- public:
- fixed_pool(void *buffer, size_t size) throw(std::bad_alloc);
- ~fixed_pool();
- void recycle();
- void *malloc(size_t size);
- void free(void* ptr);
- void *realloc(void* ptr, size_t size);
- };
- }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the member
-			 of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d22425e133">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d22425e136">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d22425e133 "><span class="keyword">fixed_pool(void *buffer, size_t
-						size)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d22425e136 "> 
-					 <p>Constructs memory pool to manage the
-						memory pointed by buffer and of size. 
-					 </p>
- 
-					 <p>Throws 
-						<samp class="codeph">bad_alloc</samp>
-						exception if runtime fails to construct an instance of the class. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">Scalable Memory Pools</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm b/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm
deleted file mode 100755
index 1567b9c..0000000
--- a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_allocator_cls.htm
+++ /dev/null
@@ -1,197 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="memory_pool_allocator Template Class">
-<meta name="DC.subject" content="memory_pool_allocator Template Class">
-<meta name="keywords" content="memory_pool_allocator Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="memory_pool_allocator_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>memory_pool_allocator Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="memory_pool_allocator_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="memory_pool_allocator_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">memory_pool_allocator Template Class</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>Template class that provides the C++ allocator
-		  interface for memory pools.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>template<typename T> class memory_pool_allocator;</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		
-		<p>A 
-		  <samp class="codeph">memory_pool_allocator</samp>
-		  models the allocator requirements described in Table 29 except for default
-		  constructor which is excluded from the class. Instead, it provides a
-		  constructor, which links with an instance of 
-		  <samp class="codeph">memory_pool</samp> or 
-		  <samp class="codeph">fixed_pool</samp> classes,
-		  that actually allocates and deallocates memory. The class is mainly intended to
-		  enable memory pools within STL containers.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Example</h2>
-		
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"
- ...
- typedef tbb::memory_pool_allocator<int>
- pool_allocator_t;
- std::list<int, pool_allocator_t>
- my_list(pool_allocator_t( my_pool ));</pre>
-		<p>The code above provides a simple example of
-		  cnostruction of a container that uses a memory pool.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb {
- template<typename T>
- class memory_pool_allocator {
- public:
- typedef T value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- template<typename U> struct rebind {
- typedef memory_pool_allocator<U> other;
- };
- memory_pool_allocator(memory_pool &pool) throw();
- memory_pool_allocator(fixed_pool &pool) throw();
- memory_pool_allocator(const memory_pool_allocator& src) throw();
- template<typename U>
- memory_pool_allocator(const memory_pool_allocator<U,P>& src) throw();
- pointer address(reference x) const;
- const_pointer address(const_reference x) const;
- pointer allocate( size_type n, const void* hint=0);
- void deallocate( pointer p, size_type );
- size_type max_size() const throw();
- void construct( pointer p, const T& value );
- void destroy( pointer p );
- };
- template<>
- class memory_pool_allocator<void> {
- public:
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
- template<typename U> struct rebind {
- typedef memory_pool_allocator<U> other;
- };
- memory_pool_allocator(memory_pool &pool) throw();
- memory_pool_allocator(fixed_pool &pool) throw();
- memory_pool_allocator(const memory_pool_allocator& src) throw();
- template<typename U>
- memory_pool_allocator(const memory_pool_allocator<U>& src) throw();
- };
- template<typename T, typename U>
- inline bool operator==( const memory_pool_allocator<T>& a,
-              const memory_pool_allocator<U>& b);
- template<typename T, typename U>
- inline bool operator!=( const memory_pool_allocator<T>& a,
-              const memory_pool_allocator<U>& b);
- }</pre>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d22705e212">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d22705e215">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d22705e212 "><span class="keyword">memory_pool_allocator(memory_pool
-						&pool)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d22705e215 ">
-					 <p>Constructs memory pool allocator serviced
-						by 
-						<samp class="codeph">memory_pool</samp>
-						instance pool.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d22705e212 "><span class="keyword">memory_pool_allocator(fixed_pool
-						&pool)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d22705e215 ">
-					 <p>Constructs memory pool allocator serviced
-						by 
-						<samp class="codeph">fixed_pool</samp>
-						instance pool.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">Scalable Memory Pools</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm b/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm
deleted file mode 100755
index a8cc5cb..0000000
--- a/doc/help/reference/appendices/community_preview_features/scalable_memory_pools/memory_pool_cls.htm
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="memory_pool Template Class">
-<meta name="DC.subject" content="memory_pool Template Class">
-<meta name="keywords" content="memory_pool Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="memory_pool_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>memory_pool Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="memory_pool_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="memory_pool_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">memory_pool Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for scalable memory allocation from
-		  memory blocks provided by an underlying allocator. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>If the underlying allocator refers to another
-			 scalable memory pool, the inner pool (or pools) must be destroyed before the
-			 outer pool is destroyed or recycled. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename Alloc> class memory_pool;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">memory_pool</samp> allocates
-		  and frees memory in a way that scales with the number of processors. The memory
-		  is obtained as big chunks from an underlying allocator specified by the
-		  template argument. The latter must satisfy the subset of requirements described
-		  in Table 29 with 
-		  <samp class="codeph">allocate</samp>, 
-		  <samp class="codeph">deallocate</samp>, and 
-		  <samp class="codeph">value_type</samp> valid for 
-		  <samp class="codeph">sizeof(value_type)>0</samp>. A 
-		  <samp class="codeph">memory_pool</samp> models the
-		  Memory Pool concept described in Table 52. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<pre>#define TBB_PREVIEW_MEMORY_POOL 1
- #include "tbb/memory_pool.h"
- ...
- tbb::memory_pool<std::allocator<char> > my_pool;
- void* my_ptr = my_pool.malloc(10);
- my_pool.free(my_ptr);</pre> 
-		<p>The code above provides a simple example of
-		  allocation from an extensible memory pool. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
- template <typename Alloc>
- class memory_pool : no_copy {
- public:
- memory_pool(const Alloc &src = Alloc()) throw(std::bad_alloc);
- ~memory_pool();
- void recycle();
- void *malloc(size_t size);
- void free(void* ptr);
- void *realloc(void* ptr, size_t size);
- };
- }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the member
-			 of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d23045e152">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d23045e155">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23045e152 "><span class="keyword">memory_pool(const Alloc &src =
-						Alloc())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23045e155 "> 
-					 <p>Constructs memory pool with an instance
-						of underlying memory allocator of type 
-						<samp class="codeph">Alloc</samp> copied
-						from 
-						<samp class="codeph">src</samp>. Throws 
-						<samp class="codeph">bad_alloc</samp>
-						exception if runtime fails to construct an instance of the class. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/scalable_memory_pools.htm">Scalable Memory Pools</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/serial_subset.htm b/doc/help/reference/appendices/community_preview_features/serial_subset.htm
deleted file mode 100755
index 1ddd9cd..0000000
--- a/doc/help/reference/appendices/community_preview_features/serial_subset.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Serial subset">
-<meta name="DC.subject" content="Serial subset">
-<meta name="keywords" content="Serial subset">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="serial_subset">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Serial subset</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="serial_subset">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="serial_subset"><!-- --></a>
-
-
-<h1 class="topictitle1">Serial subset</h1>
-
-
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-
-<p>A subset of the parallel algorithms is provided for modeling serial execution. Currently only a serial version of <samp class="codeph">tbb::parallel_for()</samp> is available.</p>
-</div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm">tbb::serial::parallel_for()</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm b/doc/help/reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm
deleted file mode 100755
index 869cb40..0000000
--- a/doc/help/reference/appendices/community_preview_features/serial_subset/tbb_serial_parallel_for.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tbb::serial::parallel_for()">
-<meta name="DC.subject" content="tbb::serial::parallel_for()">
-<meta name="keywords" content="tbb::serial::parallel_for()">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/serial_subset.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_serial_parallel_for">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>tbb::serial::parallel_for()</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tbb_serial_parallel_for">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_serial_parallel_for"><!-- --></a>
-
-
-  <h1 class="topictitle1">tbb::serial::parallel_for()</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<p>#define TBB_PREVIEW_SERIAL_SUBSET 1
-		</p>
-
-		<p>#include "tbb/ parallel_for.h"
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Motivation</h2>
-		
-		<p>Sometimes it is useful, for example while
-		  debugging, to execute certain 
-		  <samp class="codeph">parallel_for()</samp>
-		  invocations serially while having other invocations of 
-		  <samp class="codeph">parallel_for()</samp>executed
-		  in parallel.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		
-		<p>The 
-		  <samp class="codeph">tbb::serial::parallel_for</samp> function
-		  implements the 
-		  <samp class="codeph">tbb::parallel_for</samp> API
-		  using a serial implementation underneath. Users who want sequential execution
-		  of a certain 
-		  <samp class="codeph">parallel_for()</samp>
-		  invocation will need to define the 
-		  <samp class="codeph">TBB_PREVIEW_SERIAL_SUBSET</samp> macro before
-		  parallel_for.h and prefix the selected 
-		  <samp class="codeph">parallel_for()</samp> with 
-		  <samp class="codeph">tbb::serial::</samp>.
-		  Internally, the serial implementation uses the same principle of recursive
-		  decomposition, but instead of spawning tasks, it does recursion "for real",
-		  i.e. the body function calls itself twice with two halves of its original
-		  range.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Example</h2>
-		
-		<pre>#define TBB_PREVIEW_SERIAL_SUBSET 1
-#include <tbb/parallel_for.h>
-#include <tbb/parallel_for.h>
-#include <tbb/parallel_for.h>
-Foo()
-{
-  // . . .
-  tbb::serial::parallel_for( . . . );
-  tbb::parallel_for( . . . );
-  // . . . 
-}</pre>
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/serial_subset.htm">Serial subset</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/task_arena_cls.htm b/doc/help/reference/appendices/community_preview_features/task_arena_cls.htm
deleted file mode 100755
index 2d3d911..0000000
--- a/doc/help/reference/appendices/community_preview_features/task_arena_cls.htm
+++ /dev/null
@@ -1,416 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_arena Class">
-<meta name="DC.subject" content="task_arena Class">
-<meta name="keywords" content="task_arena Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="task_arena_cls/task_scheduler_observer_ext_cls.htm#task_scheduler_observer_ext_cls">
-<meta name="DC.Relation" scheme="URI" content="../../task_groups.htm#taskgroups">
-<meta name="DC.Relation" scheme="URI" content="../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_arena_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task_arena Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="task_arena_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_arena_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_arena Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p> Explicit, user-managed task scheduler arena
-		  representation. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class task_arena;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#define TBB_PREVIEW_TASK_ARENA 1
-#include “tbb/task_arena.h”</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p> A 
-		  <samp class="codeph">task_arena</samp> class represents an internal task scheduler
-		  object where a number of threads, limited by a maximal concurrency level, share
-		  and execute tasks. 
-		</p>
- 
-		<p> The concurrency level of a 
-		  <samp class="codeph">task_arena</samp> is isolated and not affected by previous 
-		  <samp class="codeph">task_scheduler_init</samp> specifications. 
-		</p>
- 
-		<p> 
-		  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>The total number of threads created for a process is limited by
-			 whichever is largest: the default number of threads for the machine or the
-			 value specified by the first 
-			 <samp class="codeph">task_scheduler_init</samp> object. Therefore the number of
-			 threads assigned to a task_arena will never exceed that maximum value,
-			 regardless of the concurrency level. 
-		  </div> 
-		</p>
- 
-		<p> 
-		  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>A task_arena may get fewer workers and never get the specified
-			 number of threads, even if the specified concurrency level is lower than the
-			 allowed maximum. 
-		  </div> 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">task_arena</samp> object keeps a reference to its internal
-		  representation, but does not fully control its lifetime. It cannot be destroyed
-		  until it contains tasks and/or other worker threads reference it. 
-		</p>
- 
-		<p> 
-		  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>The 
-			 <samp class="codeph">task_arena</samp> constructors do not create the internal
-			 arena objects. They are created lazily on first use, or by explicit call
-			 to <samp class="codeph">task_arena::initialize</samp>.
-		  </div> 
-		</p>
- 
-		<p> Each user thread that explicitly or implicitly creates a 
-		  <samp class="codeph">task_scheduler_init 
-		  </samp>object contains an implicit internal task arena object. The
-		  tasks spawned or enqueued in an arena cannot be executed in a different arena. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-class task_arena {
-public:
-    static const int automatic = <em>implementation-defined</em>;
-    static int current_slot();
-    task_arena(int max_concurrency = automatic, unsigned reserved_for_masters = 1);
-    task_arena(const task_arena &s);
-    ~task_arena();
-    void initialize();
-    void initialize(int max_concurrency, unsigned reserved_for_masters = 1);
-    void terminate();
-    bool is_active();
-    template<typename F> void enqueue( const F& f );
-    template<typename F> void enqueue( const F& f, priority_t p );
-    template<typename F> void execute(F& f);
-    template<typename F> void execute(const F& f);
-};
-}</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Examples</h2> 
-		 
-		<p>The following example runs two 
-		  <samp class="codeph">parallel_for</samp> loops concurrently; one that is scalable
-		  and one that is not. The non-scalable loop is limited to at most 2 threads so
-		  that the majority of the threads can be saved for the more scalable loop.
-		  It uses <samp class="codeph">task_group</samp> to wait for a specific subset of tasks.
-		</p>
- 
-		<pre>tbb::task_scheduler_init def_init; // Use the default number of threads
-tbb::task_arena limited(2);// no more than 2 threads in this arena
-tbb::task_group tg;
-
-limited.enqueue([&]{ // use at most 2 threads
-    tg.run([]{ // run in task group
-        tbb::parallel_for(1, N, unscalable_work());
-    });
-}); 
-
-// Run another job concurrently with the loop above
-// It can use the default number of threads:
-tbb::parallel_for(1, M, scalable_work());
-
-// Put the wait for the task group inside execute()
-// This will wait only for the tasks that are in
-// this task group.
-arena.execute([&]{ tg.wait(); });</pre> 
-	 </div>
- 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc"> 
-			 <p>The following table provides additional information on the members
-				of this template class. 
-			 </p>
- 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d23587e161">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d23587e164">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">task_arena(int max_concurrency = automatic,
-						unsigned reserved_for_masters = 1) 
-					 </samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>Creates a <samp class="codeph">task_arena</samp>
-						 with certain concurrency limit and some portion of it reserved 
-						 for application threads.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>For the community preview implementation of <samp class="codeph">task_arena</samp>,
-						 the only valid values for <samp class="codeph">reserved_for_masters</samp> are 0 and 1.
-					 </div>
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "> 
-					 <p><samp class="codeph">static const int
-						  automatic</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>When passed as <samp class="codeph">max_concurrency</samp>
-						to the above constructor, arena concurrency will be automatically set
-						based on the hardware configuration. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">task_arena(const
-						task_arena&)</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>Copies settings from another 
-						<samp class="codeph">task_arena</samp> instance. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">~task_arena()</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>Removes the reference to the internal
-						arena representation, and destroys the <samp class="codeph">task_arena()</samp> instance.
-						Not thread safe w.r.t. concurrent invocations of other methods. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 ">
-						<samp class="codeph">void initialize();</samp>
-						<p></p>
-
-						<p><samp class="codeph">void initialize(int max_concurrency,
-							unsigned reserved_for_masters = 1);</samp>
-						</p>
-
-						<p></p>
-
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 ">Performs actual initialization of internal
-					 arena representation. If arguments are specified, overrides previous concurrency settings.
-					 Has no effect when called on already initialized arena.
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>After the call to <samp class="codeph">initialize</samp>, the arena concurrency
-						is fixed and cannot be changed.
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">void terminate()</samp>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 ">Removes the reference to the internal arena representation
-					 without destroying the task_arena object, which can then be re-used.
-					 Not thread safe w.r.t. concurrent invocations of other methods.
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">bool is_active()</samp>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 ">Returns <samp class="codeph">true</samp> if the arena
-					 has been initialized, <samp class="codeph">false</samp> otherwise.
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">template<F> void
-						enqueue(const F&)</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>Enqueues a task into the arena to process specified functor
-						and immediately returns. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>Does not require the calling thread to join the arena;
-						i.e. any number of threads outside of the arena can submit work to the arena
-						without blocking. 
-					 </div> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>There is no guarantee that tasks enqueued
-						in an arena execute concurrently with respect to any other arena’s tasks. 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">template<F> void
-						enqueue(const F&, priority_t)</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>Enqueues a task with specified task priority. Is similar to 
-						<samp class="codeph">enqueue( const F& )</samp> in all other ways. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">template<F> void
-						execute(F&)</samp> 
-					 <p> 
-					 </p>
- 
-					 <p><samp class="codeph">template<F> void execute(const
-						  F&)</samp> 
-					 </p>
- 
-					 <p> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p>If possible, the calling thread joins the arena and executes
-						the specified functor, then leaves the arena and returns to previous task
-						scheduler state. 
-					 </p>
- 
-					 <p>If not possible to join, the call wraps the functor into a
-						task, enqueues it in the arena and waits on an OS kernel synchronization object
-						for task completion. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>Any number of threads outside of the arena can submit
-						work to the arena and be blocked. However, only the maximal number of threads
-						specified for the arena can participate in executing tasks. 
-					 </div> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>May decrement the arena's demand for worker threads,
-						causing a worker to leave, and thereby freeing a slot for the calling thread. 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d23587e161 "><samp class="codeph">static int current_slot()</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d23587e164 "> 
-					 <p><strong>Returns:</strong> The index of the slot that the calling
-						thread is assigned to in its current arena (if any).
-						If the thread is not initialized with TBB, returns -1.
-						This method can be used, for example, by a
-						<samp class="codeph">task_scheduler_observer</samp> to pin threads
-						entering an arena to specific hardware. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../../reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm">task_scheduler_observer Class extensions</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_arena_cls/task_scheduler_observer_ext_cls.htm#task_scheduler_observer_ext_cls">task_scheduler_observer Class extensions
-		  </a></div>
-<div><a href="../../task_groups.htm#taskgroups">Task Groups
-		  </a></div>
-<div><a href="../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">task_scheduler_init Class
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm b/doc/help/reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm
deleted file mode 100755
index 968130a..0000000
--- a/doc/help/reference/appendices/community_preview_features/task_arena_cls/task_scheduler_observer_ext_cls.htm
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_scheduler_observer Class extensions">
-<meta name="DC.subject" content="task_scheduler_observer Class extensions">
-<meta name="keywords" content="task_scheduler_observer Class extensions">
-<meta name="DC.Relation" scheme="URI" content="../../../../reference/appendices/community_preview_features/task_arena_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../../task_scheduler/task_scheduler_observer.htm#task_scheduler_observer_member">
-<meta name="DC.Relation" scheme="URI" content="../../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_observer_ext_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../../intel_css_styles.css">
-<title>task_scheduler_observer Class extensions</title>
-</head>
-<body id="task_scheduler_observer_ext_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(4);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_observer_ext_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_scheduler_observer Class
-	 extensions</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>The 
-		  <samp class="codeph">task_scheduler_observer 
-		  </samp>Class is extended to support local semantics and to observe
-		  when worker threads join and leave a task scheduler arena. Before these
-		  extensions, a 
-		  <samp class="codeph">task_scheduler_observer</samp> would only observe when a
-		  worker thread would join and exit the global task scheduler. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class task_scheduler_observer;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#define TBB_PREVIEW_LOCAL_OBSERVER 1
-#include "tbb/task_scheduler_observer.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  class task_scheduler_observer {
-  public:
-    task_scheduler_observer( bool local = false );
-
-    // See task_scheduler_observer for the methods
-    // not related to local observer ...
-
-#if TBB_PREVIEW_TASK_ARENA
-    task_scheduler_observer( task_arena & a)
-#endif
-
-    virtual bool on_scheduler_leaving() { return true; }
-  };
-}</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The following example sketches the code of an observer used to pin
-		  worker threads to hardware threads and to prevent workers from sleeping. 
-		</p>
- 
-		<pre>class pinning_observer: public tbb::task_scheduler_observer {
-public:
-  affinity_mask_t m_mask; // HW affinity mask to be used with an arena
-  pinning_observer( affinity_mask_t mask ) : m_mask(mask) { }
-  pinning_observer( tbb::task_arena &a, affinity_mask_t mask )
-    : tbb::task_scheduler_observer(a), m_mask(mask) {
-    observe(true); // activate the observer
-  }
-  /*override*/ void on_scheduler_entry( bool worker ) {
-    set_thread_affinity(tbb::task_arena::current_slot(), m_mask); 
-  }
-  /*override*/ bool on_scheduler_leaving( ) {
-    // Return false to trap the thread in the arena
-    return /*bool*/ !is_more_work_available_soon();
-  }
-  /*override*/ void on_scheduler_exit( bool worker ) { }
-};</pre> 
-	 </div>
- 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc"> 
-			 <p>The following table provides additional information on the members
-				of this template class. 
-			 </p>
- 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d24630e92">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d24630e95">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d24630e92 "><samp class="codeph">task_scheduler_observer( bool local
-						= false ) 
-					 </samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d24630e95 "> 
-					 <p>Constructs a 
-						<samp class="codeph">task_scheduler_observer</samp> object in an
-						inactive state (observation is disabled). If 
-						<samp class="codeph">local</samp> is 
-						<samp class="codeph">false</samp>, it does not differ from the global
-						semantics described for 
-						<samp class="codeph">task_scheduler_observer</samp>. If 
-						<samp class="codeph">local</samp> is true, and the observer has been
-						activated, the entry notifications is invoked only for threads in current arena.
-						Correspondently, a thread receives exit notifications when it leaves this arena.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d24630e92 "><samp class="codeph">task_scheduler_observer( task_arena
-						& ) 
-					 </samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d24630e95 "> 
-					 <p>Constructs a 
-						<samp class="codeph">task_scheduler_observer</samp> object in the
-						inactive state (observation is disabled) tied to the specified 
-						<samp class="codeph">task_arena</samp>. It receives notifications related
-						only to this specified arena.
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>Invocation of observe(true) for such an object can force
-						initialization of the internal arena representation of the specified 
-						<samp class="codeph">task_arena</samp> object 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d24630e92 "><samp class="codeph">virtual bool on_scheduler_leaving()
-						
-					 </samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d24630e95 "> 
-					 <p>The callback is invoked in a worker
-						thread before it leaves an arena. If it returns false, the thread remains in
-						the arena trying to find more work.
-						It will not be called for master threads or if a worker thread
-						leaves the arena due to rebalancing, priority changes, etc. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>The application must be linked against the Community
-						Preview library for this method to take effect. 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../../reference/appendices/community_preview_features/task_arena_cls.htm">task_arena Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../../task_scheduler/task_scheduler_observer.htm#task_scheduler_observer_member">task_scheduler_observer
-		  </a></div>
-<div><a href="../../../task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">task_scheduler_init Class
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm b/doc/help/reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm
deleted file mode 100755
index a2b95f3..0000000
--- a/doc/help/reference/appendices/community_preview_features/what_is_a_community_preview_feature.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="What is a Community Preview Feature?">
-<meta name="DC.subject" content="What is a Community Preview Feature?">
-<meta name="keywords" content="What is a Community Preview Feature?">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="what_is_a_community_preview_feature">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>What is a Community Preview Feature?</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="what_is_a_community_preview_feature">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="what_is_a_community_preview_feature"><!-- --></a>
-
-
-  <h1 class="topictitle1">What is a Community Preview Feature?</h1>
-
-  
-  <div>
-	 <p>A Community Preview feature is a component of Intel®
-		Threading Building Blocks (Intel® TBB) that is being introduced to gain early
-		feedback from developers. Comments, questions and suggestions related to
-		Community Preview features are encouraged and should be submitted to the forums
-		at www.threadingbuildingblocks.org.
-	 </p>
-
-	 <p>The key properties of a CP feature are:
-	 </p>
-
-	 <ul type="disc">
-		<li>
-		  <p>It must be explicitly enabled. It is off by
-			 default.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>It is intended to have a high quality
-			 implementation.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>There is no guarantee of future existence or
-			 compatibility.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>It may have limited or no support in tools such
-			 as correctness analyzers, profilers and debuggers.
-		  </p>
-
-		</li>
-
-	 </ul>
-
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		<p>A CP feature is subject to change in the future. It
-		  may be removed or radically altered in future releases of the library. Changes
-		  to a CP feature do NOT require the usual deprecation and deletion process.
-		  Using a CP feature in a production code base is therefore strongly discouraged.
-		</p>
-
-	 </div>
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features.htm b/doc/help/reference/appendices/compatibility_features.htm
deleted file mode 100755
index 779d2e3..0000000
--- a/doc/help/reference/appendices/compatibility_features.htm
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Compatibility Features">
-<meta name="DC.subject" content="Compatibility Features">
-<meta name="keywords" content="Compatibility Features">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/parallel_while_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/debugging_macros.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/interface_for_concurrent_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/interface_for_cls_task.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/compatibility_features/tbb_thread_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="compatibility_features">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Compatibility Features</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="compatibility_features">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="compatibility_features"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Compatibility Features</h1>
- 
-   
-  <div> 
-	 <p>This appendix describes features of Intel Threading
-		Building Blocks (Intel® TBB) that remain for compatibility with previous
-		versions. These features are deprecated and may disappear in future versions of
-		Intel® TBB. Some of these features are available only if the preprocessor
-		symbol TBB_DEPRECATED is non-zero. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/appendices.htm">Appendices</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/parallel_while_cls.htm">parallel_while Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm">Interface for constructing a pipeline filter</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/debugging_macros.htm">Debugging Macros</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm">tbb::deprecated::concurrent_queue<T,Alloc> Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm">Task Enqueuing Flow Graph</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/interface_for_concurrent_vector.htm">Interface for concurrent_vector</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/interface_for_cls_task.htm">Interface for class task</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/appendices/compatibility_features/tbb_thread_cls.htm">tbb_thread Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/debugging_macros.htm b/doc/help/reference/appendices/compatibility_features/debugging_macros.htm
deleted file mode 100755
index 2ae6862..0000000
--- a/doc/help/reference/appendices/compatibility_features/debugging_macros.htm
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Debugging Macros">
-<meta name="DC.subject" content="Debugging Macros">
-<meta name="keywords" content="Debugging Macros">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../environment/enabling_debugging_features.htm#enabling_debugging_features">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="debugging_macros">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Debugging Macros</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="debugging_macros">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="debugging_macros"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Debugging Macros</h1>
- 
-   
-  <div> 
-	 <p>The names of the debugging macros have changed as
-		shown in Table 45. If you define the old macros, the Intel® Threading Building Blocks (Intel® TBB) 
-        library sets each undefined new macro in a way that duplicates the behavior the old macro settings. 
-	 </p>
- 
-	 <p>The old 
-		<span class="keyword">TBB_DO_ASSERT</span>
-		enabled assertions, full support for Intel® Threading Tools, and performance
-		warnings. These three distinct capabilities are now controlled by three
-		separate macros as described in Enabling Debugging Features. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		<p>To enable all three capabilities with a single
-		  macro, define 
-		  <span class="keyword">TBB_USE_DEBUG</span>
-		  to be 1. If you had code under 
-		  <samp class="codeph">"#if TBB_DO_ASSERT"</samp>
-		  that should be conditionally included only when assertions are enabled, use 
-		  <samp class="codeph">"#if TBB_USE_ASSERT"</samp>
-		  instead. 
-		</p>
- 
-	 </div> 
-	 
-<div class="tablenoborder"><a name="tbl45"><!-- --></a><table cellpadding="4" summary="" id="tbl45" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Deprecated Macros</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" align="left" valign="top" width="45%" id="d25273e61"> 
-			 <p>Deprecated Macro 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" align="left" valign="top" width="55.00000000000001%" id="d25273e67"> 
-			 <p>New Macro 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="middle" width="45%" headers="d25273e61 "> 
-			 <p><span class="keyword">TBB_DO_ASSERT</span> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="middle" width="55.00000000000001%" headers="d25273e67 "> 
-			 <p><span class="keyword">TBB_USE_DEBUG</span> or 
-				<samp class="codeph">TBB_USE_ASSERT</samp>,
-				depending on context. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="middle" width="45%" headers="d25273e61 "> 
-			 <p><samp class="codeph">TBB_DO_THREADING_TOOLS</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="middle" width="55.00000000000001%" headers="d25273e67 "> 
-			 <p><samp class="codeph">TBB_USE_THREADING_TOOLS</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../environment/enabling_debugging_features.htm#enabling_debugging_features">Enabling Debugging Features
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/interface_for_cls_task.htm b/doc/help/reference/appendices/compatibility_features/interface_for_cls_task.htm
deleted file mode 100755
index 98c54ef..0000000
--- a/doc/help/reference/appendices/compatibility_features/interface_for_cls_task.htm
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Interface for class task">
-<meta name="DC.subject" content="Interface for class task">
-<meta name="keywords" content="Interface for class task">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="interface_for_cls_task">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Interface for class task</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="interface_for_cls_task">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="interface_for_cls_task"><!-- --></a>
-
-
-  <h1 class="topictitle1">Interface for class task</h1>
-
-  
-  <div>
-	 <p>Some methods of class 
-		<samp class="codeph">task</samp> are deprecated
-		because they have obsolete or redundant functionality.
-	 </p>
-
-	 <div class="section"><h2 class="sectiontitle">Deprecated Members of class task</h2>
-		
-		<pre>namespace tbb {
- class task {
- public:
- ...
- void recycle_to_reexecute();
- // task depth
- typedef implementation-defined-signed-integral-type depth_type;
- depth_type depth() const {return 0;}
- void set_depth( depth_type new_depth ) {}
- void add_to_depth( int delta ){}
- ...
- };
- }</pre>
-	 </div>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d25551e75">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d25551e78">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d25551e75 "><span class="keyword">void recycle
-					 _to_reexecute()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d25551e78 ">
-				  <p>Intel® Threading Building Blocks (Intel® TBB) 3.0 deprecated method 
-					 <samp class="codeph">recycle_to_reexecute</samp> because it is
-					 redundant. Replace a call 
-					 <samp class="codeph"><var>t</var>->recycle_to_reexecute()</samp>with
-					 the following sequence:
-				  </p>
-
-				  <pre><var>t</var>->set_refcount(1);
-<var>t</var>->recycle_as_safe_continuation();</pre> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d25551e75 "><span class="keyword">Depth interface for class
-					 task</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d25551e78 ">
-				  <p>Intel® TBB 2.2 eliminated the notion of
-					 task depth that was present in prior versions of Intel® TBB. The members of
-					 class task that related to depth have been retained under 
-					 <samp class="codeph">TBB_DEPRECATED</samp>, but do nothing.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/interface_for_concurrent_vector.htm b/doc/help/reference/appendices/compatibility_features/interface_for_concurrent_vector.htm
deleted file mode 100755
index 1a28bc1..0000000
--- a/doc/help/reference/appendices/compatibility_features/interface_for_concurrent_vector.htm
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Interface for concurrent_vector">
-<meta name="DC.subject" content="Interface for concurrent_vector">
-<meta name="keywords" content="Interface for concurrent_vector">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../containers_overview/concurrent_vector/whole_vector_operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../../containers_overview/concurrent_vector/concurrent_growth.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="interface_for_concurrent_vector">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Interface for concurrent_vector</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="interface_for_concurrent_vector">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="interface_for_concurrent_vector"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Interface for concurrent_vector</h1>
- 
-   
-  <div> 
-	 <p>The return type of methods 
-		<samp class="codeph">grow_by</samp> and 
-		<samp class="codeph">grow_to_at_least</samp> changed
-		in Intel® Threading Building Blocks (Intel® TBB) 2.2. Compile with the preprocessor symbol 
-		<samp class="codeph">TBB_DEPRECATED</samp> set to
-		nonzero to get the old methods. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl47"><!-- --></a><table cellpadding="4" summary="" id="tbl47" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Change in Return Types</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" align="center" valign="top" width="50%" id="d25814e50"> 
-			 <p>Method 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" align="center" valign="top" width="25%" id="d25814e56"> 
-			 <p>Deprecated Return Type 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" align="center" valign="top" width="25%" id="d25814e62"> 
-			 <p>New Return Type 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d25814e50 "> 
-			 <p><samp class="codeph">grow_by</samp> See Concurrent Growth. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e56 "> 
-			 <p><samp class="codeph">size_type</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e62 "> 
-			 <p><samp class="codeph">iterator</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d25814e50 "> 
-			 <p><samp class="codeph">grow_to_at_least</samp> See Concurrent
-				Growth. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e56 "> 
-			 <p><samp class="codeph">void</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e62 "> 
-			 <p><samp class="codeph">iterator</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="50%" headers="d25814e50 "> 
-			 <p><samp class="codeph">push_back</samp> See Concurrent Growth. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e56 "> 
-			 <p><samp class="codeph">size_type</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="25%" headers="d25814e62 "> 
-			 <p><samp class="codeph">iterator</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members of
-		this template class. 
-	 </span><thead align="left"> 
-		  <tr> 
-			 <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d25814e167">Member 
-			 </th>
- 
-			 <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d25814e170">Description 
-			 </th>
- 
-		  </tr>
-</thead>
- 
-		<tbody> 
-		  <tr> 
-			 <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d25814e167 "><span class="keyword">void compact()</span>. 
-			 </td>
- 
-			 <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d25814e170 "> 
-				<p>Same as 
-				  <samp class="codeph">shrink_to_fit()</samp>
-				  See Whole Vector Operations. 
-				</p>
- 
-			 </td>
- 
-		  </tr>
- 
-		</tbody>
- 
-	 </table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../containers_overview/concurrent_vector/whole_vector_operations.htm">Whole Vector Operations 
-		  </a></div>
-<div><a href="../../containers_overview/concurrent_vector/concurrent_growth.htm">Concurrent Growth 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm b/doc/help/reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm
deleted file mode 100755
index 8e44315..0000000
--- a/doc/help/reference/appendices/compatibility_features/interface_for_constructing_a_pipeline_filter.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Interface for constructing a pipeline filter">
-<meta name="DC.subject" content="Interface for constructing a pipeline filter">
-<meta name="keywords" content="Interface for constructing a pipeline filter">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../algorithms/pipeline_cls/filter_cls.htm#filter_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="interface_for_constructing_a_pipeline_filter">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Interface for constructing a pipeline filter</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="interface_for_constructing_a_pipeline_filter">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="interface_for_constructing_a_pipeline_filter"><!-- --></a>
-
-
-  <h1 class="topictitle1">Interface for constructing a pipeline
-	 filter</h1>
-
-  
-  <div>
-	 <p>The interface for constructing a filter evolved over
-		several releases of Intel® Threading Building Blocks (Intel® TBB).
-	 </p>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table describe obsolete aspects of the interface. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d26363e39">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d26363e42">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26363e39 "><span class="keyword">filter::filter( bool is_serial
-					 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26363e42 ">
-				  <p>Constructs a serial in-order filter if 
-					 <samp class="codeph">is_serial</samp> is
-					 true, or a parallel filter if 
-					 <samp class="codeph">is_serial</samp> is
-					 false. This deprecated constructor is superseded by the constructor 
-					 <samp class="codeph">filter( filter::mode
-						)</samp>
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26363e39 "><span class="keyword">filter::serial</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26363e42 ">
-				  <p>The filter mode value 
-					 <samp class="codeph">filter::serial</samp>
-					 is now named filter::serial_in_order. The new name distinguishes it more
-					 clearly from the mode 
-					 <samp class="codeph">filter::serial_out_of_order</samp>.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../algorithms/pipeline_cls/filter_cls.htm#filter_cls">filter Class
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/parallel_while_cls.htm b/doc/help/reference/appendices/compatibility_features/parallel_while_cls.htm
deleted file mode 100755
index 7ecb908..0000000
--- a/doc/help/reference/appendices/compatibility_features/parallel_while_cls.htm
+++ /dev/null
@@ -1,350 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="parallel_while Template Class">
-<meta name="DC.subject" content="parallel_while Template Class">
-<meta name="keywords" content="parallel_while Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_while_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>parallel_while Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="parallel_while_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_while_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">parallel_while Template Class</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>Template class that processes work items.
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>This class is deprecated. Use parallel_do (4.7)
-			 instead.
-		  </p>
-
-		</div>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>template<typename Body>
- class parallel_while;</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#include "tbb/parallel_while.h"</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		
-		<p>A 
-		  <samp class="codeph">parallel_while<Body></samp> performs
-		  parallel iteration over items. The processing to be performed on each item is
-		  defined by a function object of type Body. The items are specified in two ways:
-		</p>
-
-		<ul type="disc">
-		  <li>
-			 <p>A stream of items.
-			 </p>
-
-		  </li>
-
-		  <li>
-			 <p>Additional items that are added while the
-				stream is being processed.
-			 </p>
-
-		  </li>
-
-		</ul>
-
-		<p><a href="#tbl44">Table 44</a> shows the
-		  requirements on the stream and body.
-		</p>
-
-		
-<div class="tablenoborder"><a name="tbl44"><!-- --></a><table cellpadding="4" summary="" id="tbl44" frame="border" border="1" cellspacing="0" rules="rows"><caption><span class="tablecap">Table 44: parallel_while Requirements for
-		  Stream S and Body B</span></caption>
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="60%" id="d26597e104">
-				  <p>Pseudo-Signature
-				  </p>
-
-				</th>
-
-				<th class="cellrowborder" align="left" valign="top" width="40%" id="d26597e110">
-				  <p>Semantics
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
-
-		  <tbody>
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="60%" headers="d26597e104 ">
-				  <p><samp class="codeph">bool S::pop_if_present( B::argument_type&
-						item )</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d26597e110 ">
-				  <p>Get next stream item. 
-					 <samp class="codeph">parallel_while</samp>
-					 does not concurrently invoke the method on the same this.
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="60%" headers="d26597e104 ">
-				  <p><samp class="codeph">B::operator()( B::argument_type& item )
-						const</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d26597e110 ">
-				  <p>Process 
-					 <samp class="codeph">item.
-						parallel_while</samp> may concurrently invoke the operator for the same 
-					 <span class="keyword">this</span> but different 
-					 <span class="keyword">item</span>.
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="60%" headers="d26597e104 ">
-				  <p><samp class="codeph">B::argument_type()</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d26597e110 ">
-				  <p>Default constructor.
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="60%" headers="d26597e104 ">
-				  <p><samp class="codeph">B::argument_type( const B::argument_type&
-						)</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d26597e110 ">
-				  <p>Copy constructor.
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="60%" headers="d26597e104 ">
-				  <p><samp class="codeph">~B::argument_type()</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d26597e110 ">
-				  <p>Destructor.
-				  </p>
-
-				</td>
-
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
-
-		<p>For example, a unary function object, as defined in
-		  Section 20.3 of the C++ standard, models the requirements for B. A 
-		  <samp class="codeph">concurrent_queue</samp> (5.5)
-		  models the requirements for S.
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>To achieve speedup, the 
-			 <samp class="codeph">grainsize of
-				B::operator()</samp> needs to be on the order of at least ~10,000
-			 instructions. Otherwise, the internal overheads of parallel_while swamp the
-			 useful work. The parallelism in 
-			 <samp class="codeph">parallel_while</samp> is
-			 not scalable if all the items come from the input stream. To achieve scaling,
-			 design your algorithm such that method add often adds more than one piece of
-			 work.
-		  </p>
-
-		</div>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb {
- template<typename Body>
- class parallel_while {
- public:
- parallel_while();
- ~parallel_while();
- typedef typename Body::argument_type value_type;
- template<typename Stream>
- void run( Stream& stream, const Body& body );
- void add( const value_type& item );
- };
- }</pre>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d26597e281">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d26597e284">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26597e281 "><span class="keyword">parallel_while<Body>()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26597e284 ">
-					 <p>Constructs a 
-						<samp class="codeph">parallel_while</samp> that is not yet
-						running.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26597e281 "><span class="keyword">~parallel_while<Body>()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26597e284 ">
-					 <p>Destroys a 
-						<samp class="codeph">parallel_while</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26597e281 "><span class="keyword">Template <typename Stream>
-						void run( Stream& stream, const Body& body )</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26597e284 ">
-					 <p>Applies 
-						<var>body</var>
-						to each item in 
-						<var>stream</var> and any other items that
-						are added by method add. Terminates when both of the following conditions
-						become true:
-					 </p>
-
-					 <ul type="disc">
-						<li>
-						  <p><samp class="codeph">stream.pop_if_present</samp> returned false.
-						  </p>
-
-						</li>
-
-						<li>
-						  <p><samp class="codeph">body(x)</samp> returned for all items 
-							 <var>x</var> generated from the stream or
-							 method add.
-						  </p>
-
-						</li>
-
-					 </ul>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d26597e281 "><span class="keyword">void add( const value_type&
-						item )</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d26597e284 ">
-					 <p><strong>Requirements</strong>: Must be called from
-						a call to 
-						<samp class="codeph"><var>body</var>.operator()</samp>
-						created by 
-						<samp class="codeph">parallel_while</samp>. Otherwise, the
-						termination semantics of method 
-						<span class="keyword">run</span>
-						are undefined.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Adds item to collection
-						of items to be processed.
-					 </p>
-
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm b/doc/help/reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm
deleted file mode 100755
index 5d40807..0000000
--- a/doc/help/reference/appendices/compatibility_features/task_enqueuing_flow_graph.htm
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Task Enqueuing Flow Graph">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../task_scheduler/scheduling_algorithm.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_enqueuing_flow_graph">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Task Enqueuing Flow Graph</title>
-</head>
-<body id="task_enqueuing_flow_graph">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_enqueuing_flow_graph"><!-- --></a>
-
-
-  <h1 class="topictitle1">Task Enqueuing Flow Graph</h1>
-
-  <div>
-
-<p>
-The implementation of the flow graph that enqueues its tasks has been deprecated.  There are limitations on the
-nesting of calls to <span class="keyword">wait_for_all</span> on enqueued tasks.  These limitations restrict the composability
-of flow graphs, preventing their use in some interesting cases.  We therefore modified the flow graph to spawn tasks
-instead.  See the Scheduling Algorithm section for a discussion of the differences between enqueued and spawned tasks.
-</p>
-
-
-<p>
-To use the deprecated implementation that enqueues tasks, the preprocessor symbol <span class="keyword">TBB_DEPRECATED_FLOW_ENQUEUE</span>
-must be non-zero.</p>
-
-
-<p>
-If an application relies on the fire-and-forget nature of enqueued tasks, it may still be possible to avoid using 
-the deprecated implementation.  This might be done, for example, by enqueueing a task that in turn constructs
-and executes a spawning flow graph.  The outer enqueued task will be serviced even if there are no worker threads
-available, and any thread created to service it will then also be availble to execute tasks spawned by its flow
-graph.
-</p>
-
-</div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../task_scheduler/scheduling_algorithm.htm">Scheduling Algorithm
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm b/doc/help/reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm
deleted file mode 100755
index 474501d..0000000
--- a/doc/help/reference/appendices/compatibility_features/tbb_deprecated_concurrent_queue_cls.htm
+++ /dev/null
@@ -1,254 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tbb::deprecated::concurrent_queue<T,Alloc> Template Class">
-<meta name="DC.subject" content="tbb::deprecated::concurrent_queue<T,Alloc> Template Class">
-<meta name="keywords" content="tbb::deprecated::concurrent_queue<T,Alloc> Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_deprecated_concurrent_queue_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>tbb::deprecated::concurrent_queue<T,Alloc> Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tbb_deprecated_concurrent_queue_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_deprecated_concurrent_queue_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">tbb::deprecated::concurrent_queue<T,Alloc>
-	 Template Class</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>Template class for queue with concurrent
-		  operations. This is the 
-		  <samp class="codeph">concurrent_queue</samp>
-		  supported in Intel® Threading Building Blocks (Intel® TBB) 2.1 and prior. New code should use the Intel® TBB 2.2
-		  unbounded 
-		  <samp class="codeph">concurrent_queue</samp> or 
-		  <samp class="codeph">concurrent_bounded_queue</samp>.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>template<typename T, typename Alloc=cache_aligned_allocator<T> > class concurrent_queue;</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#include "tbb/concurrent_queue.h"</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		
-		<p>A 
-		  <samp class="codeph">tbb::deprecated::concurrent_queue</samp> is a
-		  bounded first-in first-out data structure that permits multiple threads to
-		  concurrently push and pop items. The default bounds are large enough to make
-		  the queue practically unbounded, subject to memory limitations on the target
-		  machine.
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>Compile with 
-			 <samp class="codeph">TBB_DEPRECATED=1</samp> to
-			 inject 
-			 <samp class="codeph">tbb::deprecated::concurrent_queue</samp> into
-			 namespace 
-			 <samp class="codeph">tbb</samp>. Consider
-			 eventually migrating to the new queue classes.
-		  </p>
-
-		  <ul type="disc">
-			 <li>
-				<p>Use the new 
-				  <samp class="codeph">tbb::concurrent_queue</samp> if you need only
-				  the non-blocking operations (<samp class="codeph">push</samp> and 
-				  <samp class="codeph">try_pop</samp>) for
-				  modifying the queue.
-				</p>
-
-			 </li>
-
-			 <li>
-				<p>Otherwise use the new 
-				  <samp class="codeph">tbb::concurrent_bounded_queue</samp>. It
-				  supports both blocking operations (<samp class="codeph">push</samp> and 
-				  <samp class="codeph">try_pop</samp>) and
-				  non-blocking operations.
-				</p>
-
-			 </li>
-
-		  </ul>
-
-		</div>
-		<p>In both cases, use the new method names in the
-		  following table
-		</p>
-
-		
-<div class="tablenoborder"><a name="tbl46"><!-- --></a><table cellpadding="4" summary="" id="tbl46" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Method Name Changes for Concurrent
-		  Queues</span></caption>
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="50%" id="d27636e135">
-				  <p>Method in tbb::deprecated::concurrent_queue
-				  </p>
-
-				</th>
-
-				<th class="cellrowborder" align="left" valign="top" width="50%" id="d27636e141">
-				  <p>Equivalent method in tbb::concurrent_queue
-					 or tbb::concurrent_bounded_queue
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
-
-		  <tbody>
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e135 ">
-				  <p><samp class="codeph">pop_if_present</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e141 ">
-				  <p><samp class="codeph">try_pop</samp>
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e135 ">
-				  <p><samp class="codeph">push_if_not_full</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e141 ">
-				  <p><samp class="codeph">try_push</samp> (not available in 
-					 <samp class="codeph">tbb::concurrent_queue)</samp>
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e135 ">
-				  <p><samp class="codeph">begin</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e141 ">
-				  <p><samp class="codeph">unsafe_begin</samp>
-				  </p>
-
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e135 ">
-				  <p><samp class="codeph">end</samp>
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d27636e141 ">
-				  <p><samp class="codeph">unsafe_end</samp>
-				  </p>
-
-				</td>
-
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb {
- namespace deprecated {
- template<typename T,
- typename Alloc=cache_aligned_allocator<T> >
- class concurrent_queue {
- public:
- // types
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef std::ptrdiff_t size_type;
- typedef std::ptrdiff_t difference_type;
- concurrent_queue(const Alloc& a = Alloc());
- concurrent_queue(const concurrent_queue& src,
- const Alloc& a = Alloc());
- template<typename InputIterator>
- concurrent_queue(InputIterator first, InputIterator last,
- const Alloc& a = Alloc());
- ~concurrent_queue();
- void push(const T& source);
- bool push_if_not_full(const T& source);
- void pop(T& destination);
- bool pop_if_present(T& destination);
- void clear();
- size_type size() const;
- bool empty() const;
- size_t capacity() const;
- void set_capacity(size_type capacity);
- Alloc get_allocator() const;
- typedef <var>implementation-defined</var> iterator;
- typedef <var>implementation-defined</var> const_iterator;
- // iterators (these are slow and intended only for debugging)
- iterator begin();
- iterator end();
- const_iterator begin() const;
- const_iterator end() const;
- };
- }
- #if TBB_DEPRECATED
- using deprecated::concurrent_queue;
- #else
- using strict_ppl::concurrent_queue;
- #endif
- }</pre>
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/compatibility_features/tbb_thread_cls.htm b/doc/help/reference/appendices/compatibility_features/tbb_thread_cls.htm
deleted file mode 100755
index 734280f..0000000
--- a/doc/help/reference/appendices/compatibility_features/tbb_thread_cls.htm
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="tbb_thread Class">
-<meta name="DC.subject" content="tbb_thread Class">
-<meta name="keywords" content="tbb_thread Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/compatibility_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../../general_conventions/namespaces.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_thread_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>tbb_thread Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tbb_thread_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_thread_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">tbb_thread Class</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) 3.0 introduces a header 
-		<samp class="codeph">tbb/compat/thread</samp> that
-		defines class 
-		<samp class="codeph">std::thread</samp>. Prior
-		versions had a header 
-		<span class="filepath">tbb/tbb_thread.h</span>
-		that defined class 
-		<samp class="codeph">tbb_thread</samp>. The old
-		header and names are still available, but deprecated in favor of the
-		replacements shown in Table 48. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl48"><!-- --></a><table cellpadding="4" summary="" id="tbl48" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Table 48: Replacements for Deprecated
-	 Names</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" align="center" valign="top" width="20%" id="d28212e53"> 
-			 <p>Entity 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" align="center" valign="top" width="40%" id="d28212e59"> 
-			 <p>Deprecated 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" align="center" valign="top" width="40%" id="d28212e65"> 
-			 <p>Replacement 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="20%" headers="d28212e53 "> 
-			 <p>Header 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">tbb/tbb_thread.h</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e65 "> 
-			 <p><samp class="codeph">tbb/compat/thread</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" rowspan="3" valign="middle" width="20%" headers="d28212e53 "> 
-			 <p>Identifiers 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">tbb::tbb_thread</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e65 "> 
-			 <p><samp class="codeph">std::thread</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">tbb::this_tbb_thread</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">std::this_thread</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">tbb::this_tbb_thread::sleep</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" align="left" valign="top" width="40%" headers="d28212e59 "> 
-			 <p><samp class="codeph">std::this_tbb_thread::sleep_for</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <p>Most of the changes reflect a change in the way that
-	 the library implements C++11 features (std namespace). The change from 
-	 <samp class="codeph">sleep</samp> to 
-	 <samp class="codeph">sleep_for</samp> reflects a
-	 change in the C++11 working draft. 
-  </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/compatibility_features.htm">Compatibility Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../general_conventions/namespaces.htm">std Namespace 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/known_issues.htm b/doc/help/reference/appendices/known_issues.htm
deleted file mode 100755
index 1b51fc9..0000000
--- a/doc/help/reference/appendices/known_issues.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Known Issues">
-<meta name="DC.subject" content="Known Issues">
-<meta name="keywords" content="Known Issues">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices/known_issues/windows_os.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="known_issues">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Known Issues</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="known_issues">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="known_issues"><!-- --></a>
-
-
-<h1 class="topictitle1">Known Issues</h1>
-
-
-<div>
-<p>This section explains known issues with using Intel® Threading Building Blocks (Intel® TBB).</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/appendices.htm">Appendices</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/appendices/known_issues/windows_os.htm">Windows* OS</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/known_issues/windows_os.htm b/doc/help/reference/appendices/known_issues/windows_os.htm
deleted file mode 100755
index 7b232d0..0000000
--- a/doc/help/reference/appendices/known_issues/windows_os.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Windows* OS">
-<meta name="DC.subject" content="Windows* OS">
-<meta name="keywords" content="Windows* OS">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/known_issues.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="windows_os">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Windows* OS</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="windows_os">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="windows_os"><!-- --></a>
-
-
-<h1 class="topictitle1">Windows* OS</h1>
-
-
-<div>
-<p>Some Intel® Threading Building Blocks (Intel® TBB) header files necessarily include the header file <windows.h>, which by default defines the macros min and max, and consequently breaks the ISO C++ header files <samp class="codeph"><limits></samp> and <samp class="codeph"><algorithm></samp>. Defining the preprocessor symbol <samp class="codeph">NOMINMAX</samp> causes <samp class="codeph"><windows.h></samp> to not define the offending macros. Thus progra [...]
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/known_issues.htm">Known Issues</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/appendices/ppl_compatibility.htm b/doc/help/reference/appendices/ppl_compatibility.htm
deleted file mode 100755
index a1dafbc..0000000
--- a/doc/help/reference/appendices/ppl_compatibility.htm
+++ /dev/null
@@ -1,228 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="PPL Compatibility">
-<meta name="DC.subject" content="PPL Compatibility">
-<meta name="keywords" content="PPL Compatibility">
-<meta name="DC.Relation" scheme="URI" content="../../reference/appendices.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="ppl_compatibility">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>PPL Compatibility</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="ppl_compatibility">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="ppl_compatibility"><!-- --></a>
-
- 
-  <h1 class="topictitle1">PPL Compatibility</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) 2.2
-		introduces features based on joint discussions between the Microsoft
-		Corporation and Intel Corporation. The features establish some degree of
-		compatibility between Intel® TBB and Microsoft Parallel Patterns Library (PPL)
-		development software. 
-	 </p>
- 
-	 <p>Each feature appears in namespace 
-		<samp class="codeph">tbb</samp>. Each feature can be
-		injected into namespace Concurrency by including the file "<span class="filepath">tbb/compat/ppl.h</span>".
-		Following is the list of features: 
-	 </p>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table lists the features and provides links to
-		  additional information. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="46.08294930875576%" id="d28812e48">Feature 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="53.91705069124424%" id="d28812e51">Link 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword"></span>parallel_for(<var>first</var>,<var>last</var>,<var>f</var>) 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../algorithms/parallel_for_func.htm" class="underlined">parallel_for Template
-					 Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword"></span>parallel_for(<var>first</var>,<var>last</var>,<var>step</var>,<var>f</var>) 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../algorithms/parallel_for_func.htm" class="underlined">parallel_for Template
-					 Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">parallel_for_each</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../algorithms/parallel_for_each_func.htm" class="underlined">parallel_for_each Template Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">parallel_invoke</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../algorithms/parallel_invoke_func.htm" class="underlined">parallel_invoke Template Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">critical_section</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../synchronization/ppl_compatibility/critical_section.htm" class="underlined">critical_section</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">reader_writer_lock</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../synchronization/ppl_compatibility/reader_writer_lock_cls.htm" class="underlined">reader_writer_lock Class</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">task_handle</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/task_handle_cls.htm" class="underlined">task_handle Template
-					 Class</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">task_group_status</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/task_group_status_enum.htm" class="underlined">task_group_status Enum</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">task_group</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/task_group_cls.htm" class="underlined">task_group Class</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">make_task</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/make_task_func.htm" class="underlined">make_task Template
-					 Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">structured_task_group</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/structured_task_group_cls.htm" class="underlined">structured_task_group Class</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">is_current_task_group_cancelling</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../task_groups/is_current_task_group_canceling_func.htm" class="underlined">is_current_task_group_canceling Function</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">improper_lock</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../exceptions/specific_exceptions.htm" class="underlined">Specific Exceptions</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">invalid_multiple_scheduling</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../exceptions/specific_exceptions.htm" class="underlined">Specific Exceptions</a> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="46.08294930875576%" headers="d28812e48 "><span class="keyword">missing_wait</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="53.91705069124424%" headers="d28812e51 "><a href="../exceptions/specific_exceptions.htm" class="underlined">Specific Exceptions</a> 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 <p>For 
-		<samp class="codeph">parallel_for</samp>, only the
-		variants listed in the table are injected into namespace Concurrency. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>Because of different environments and evolving
-		  specifications, the behavior of the features can differ between the Intel® TBB
-		  and PPL implementations. 
-		</p>
- 
-	 </div> 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/appendices.htm">Appendices</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview.htm b/doc/help/reference/containers_overview.htm
deleted file mode 100755
index 49cdf49..0000000
--- a/doc/help/reference/containers_overview.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Containers Overview">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/container_range_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_queue_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_bounded_queue_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_priority_queue_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="container_ovrvw">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Containers Overview</title>
-</head>
-<body id="container_ovrvw">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="container_ovrvw"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Containers Overview</h1>
- 
-  <div> 
-	 <div class="section"> 
-		<p>The container classes permit multiple threads to
-		  simultaneously invoke certain methods on the same container. 
-		</p>
- 
-		<p>Like STL, Intel® Threading Building Blocks (Intel®
-		  TBB) containers are templated with respect to an 
-		  <samp class="codeph">allocator</samp> argument. Each container uses its 
-		  <samp class="codeph">allocator</samp> to allocate memory for user-visible items. A
-		  container may use a different allocator for strictly internal structures.
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/containers_overview/container_range_concept.htm">Container Range Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_queue_cls.htm">concurrent_queue Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_bounded_queue_cls.htm">concurrent_bounded_queue Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_priority_queue_cls.htm">concurrent_priority_queue Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_bounded_queue_cls.htm b/doc/help/reference/containers_overview/concurrent_bounded_queue_cls.htm
deleted file mode 100755
index dcd38d4..0000000
--- a/doc/help/reference/containers_overview/concurrent_bounded_queue_cls.htm
+++ /dev/null
@@ -1,343 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_bounded_queue Template Class">
-<meta name="DC.subject" content="concurrent_bounded_queue Template Class">
-<meta name="keywords" content="concurrent_bounded_queue Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_queue_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_bounded_queue_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_bounded_queue Template Class</title>
-</head>
-<body id="concurrent_bounded_queue_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_bounded_queue_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_bounded_queue Template Class</h1>
-
-  
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for bounded dual queue with
-		  concurrent operations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename T, class Alloc=cache_aligned_allocator<T> >
-            class concurrent_bounded_queue;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_queue.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_bounded_queue</samp> is similar to a 
-		  <samp class="codeph">concurrent_queue</samp> , but with the following differences:
-		  
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Adds the ability to specify a capacity. The
-				default capacity makes the queue practically unbounded. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Changes the 
-				<samp class="codeph">push</samp> operation so that it waits until it can
-				complete without exceeding the capacity. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Adds a waiting 
-				<samp class="codeph">pop</samp> operation that waits until it can pop an item.
-				
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Changes the 
-				<samp class="codeph">size_type</samp> to a 
-				<em>signed</em> type. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Changes the 
-				<samp class="codeph">size()</samp> operation to return the number of push
-				operations minus the number of pop operations. For example, if there are 3 pop
-				operations waiting on an empty queue, 
-				<samp class="codeph">size()</samp> returns -3. 
-			 </p>
- 
-		  </li>
- 
-		  <li> Adds an 
-			 <samp class="codeph">abort</samp> operation that causes any waiting 
-			 <samp class="codeph">push</samp> or 
-			 <samp class="codeph">pop</samp> operation to abort and throw an exception. 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<p>To aid comparison, the parts that differ from 
-		  <samp class="codeph">concurrent_queue</samp> are in bold and annotated. 
-		</p>
- 
-		<pre>namespace tbb {
-           template<typename T, typename 
-                    Alloc=cache_aligned_allocator<T> >
-           class concurrent_bounded_queue {
-           public:
-               <em>// types</em>
-               typedef T value_type;
-               typedef T& reference;
-               typedef const T& const_reference;
-               typedef Alloc allocator_type;
-               <em>// size_type is signed type</em>
-               typedef std::ptrdiff_t size_type;
-               typedef std::ptrdiff_t difference_type;
- 
-               explicit concurrent_bounded_queue(const allocator_type& a = allocator_type());
-               concurrent_bounded_queue( const concurrent_bounded_queue& src, const allocator_type& a = allocator_type());
-               template<typename InputIterator>
-               concurrent_bounded_queue( InputIterator begin, InputIterator end, const allocator_type& a = allocator_type());
-               ~concurrent_bounded_queue();
- 
-               <em>// waits until it can push without exceeding capacity.</em>
-               void push( const T& source );
-               <em>// waits if *this is empty</em>
-               void pop( T& destination );
-  
-               <em>// skips push if it would exceed capacity.</em>
-               bool try_push( const T& source );
-               bool try_pop( T& destination );
-               void abort();
-				
-               void clear();
- 
-               <em>// safe to call during concurrent modification, can return negative size.</em>
-               size_type size() const;
-               bool empty() const;
-               size_type capacity() const;
-               void set_capacity( size_type capacity );
-               allocator_type get_allocator() const;
- 
-               typedef <em>implementation-defined</em> iterator;
-               typedef <em>implementation-defined</em> const_iterator;
-
-               <em>// iterators (these are slow an intended only for debugging)</em>
-               iterator unsafe_begin();
-               iterator unsafe_end();
-               const_iterator unsafe_begin() const;
-               const_iterator unsafe_end() const;
-        };
-    }</pre> 
-		<p> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">Because 
-			 <samp class="codeph">concurrent_bounded_queue</samp> is similar to 
-			 <samp class="codeph">concurrent_queue</samp>, the following table describes only
-			 methods that differ. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d29901e185">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d29901e188">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">void push( const T& source
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p> Waits until size()<capacity, and then pushes a copy of
-						source onto back of the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">void pop( T& destination
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p>Waits until a value becomes available and pops it from the
-						queue. Assigns it to destination. Destroys the original value. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">void abort()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p>Wakes up any threads that are waiting on the queue via the 
-						<samp class="codeph">push</samp> and 
-						<samp class="codeph">pop</samp> operations and raises the 
-						<samp class="codeph">tbb::user_abort</samp> exception on those threads.
-						This feature is unavailable if 
-						<samp class="codeph">TBB_USE_EXCEPTIONS</samp> is not set. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">bool try_push( const T& source
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p>If size()<capacity, pushes a copy of source onto back of
-						the queue. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if a copy was pushed; false otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">bool try_pop( T& destination
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p>If a value is available, pops it from the queue, assigns it
-						to destination, and destroys the original value. Otherwise does nothing. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if a value was popped; false otherwise.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">size_type size() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p><strong>Returns</strong>: Number of pushes minus number of pops. The
-						result is negative if there are pop operations waiting for corresponding
-						pushes. The result can exceed capacity() if the queue is full and there are
-						push operations waiting for corresponding pops. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">bool empty() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">size()<=0</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">size_type capacity()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p>Maximum number of values that the queue can hold. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d29901e185 "><span class="keyword">void set_capacity( size_type
-						capacity )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d29901e188 "> 
-					 <p>Sets the maximum number of values that the queue can hold. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="concurrent_queue_cls.htm">concurrent_queue 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls.htm
deleted file mode 100755
index fc3f7a0..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls.htm
+++ /dev/null
@@ -1,385 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_hash_map Template Class">
-<meta name="DC.subject" content="concurrent_hash_map Template Class">
-<meta name="keywords" content="concurrent_hash_map Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_hash_map_cls/concurrent_operations.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_hash_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_hash_map Template Class</title>
-</head>
-<body id="concurrent_hash_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_hash_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_hash_map Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for associative container with
-		  concurrent access. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename Key, typename T, 
-         typename HashCompare=tbb_hash_compare<Key>, 
-         typename A=tbb_allocator<std::pair < Key, T> > >
-         class concurrent_hash_map;
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_hash_map.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_hash_map</samp> maps keys to values in a way that
-		  permits multiple threads to concurrently access values. The keys are unordered.
-		  There is at most one element in a 
-		  <samp class="codeph">concurrent_hash_map</samp> for each key. The key may have
-		  other elements in flight but not in the map, as described in Concurrent
-		  Operations. The interface resembles typical STL associative containers, but
-		  with some differences critical to supporting concurrent access. It meets the
-		  Container Requirements of the ISO C++ standard. Types 
-		  <samp class="codeph">Key</samp> and 
-		  <samp class="codeph">T</samp> must model the CopyConstructible concept. Type 
-		  <samp class="codeph">HashCompare</samp> specifies how keys are hashed and compared
-		  for equality. It must model the HashCompare concept in the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl1"><!-- --></a><table cellpadding="4" summary="" id="tbl1" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">HashCompare Concept</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d30873e82"> 
-				  <p><strong>Pseudo-Signature</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d30873e90"> 
-				  <p><strong>Semantics</strong> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d30873e82 "> 
-				  <p><samp class="codeph">HashCompare::HashCompare( const
-						HashCompare& )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d30873e90 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d30873e82 "> 
-				  <p><samp class="codeph">HashCompare::~HashCompare
-						()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d30873e90 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d30873e82 "> 
-				  <p><samp class="codeph">bool HashCompare::equal( const
-						Key& j, const Key& k ) const 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d30873e90 "> 
-				  <p>True if keys are equal. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d30873e82 "> 
-				  <p><samp class="codeph">size_t HashCompare::hash( const
-						Key& k ) const 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d30873e90 "> 
-				  <p>Hashcode for key. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>As for most hash tables, if two keys are equal,
-			 they must hash to the same hash code. That is for a given HashCompare h and any
-			 two keys 
-			 <samp class="codeph">j 
-			 </samp>and 
-			 <samp class="codeph">k</samp>, the following assertion must hold: 
-			 <samp class="codeph">"!h.equal(j,k) || h.hash(j)==h.hash(k)"</samp>. The
-			 importance of this property is the reason that 
-			 <samp class="codeph">concurrent_hash_map</samp> makes key equality and hashing
-			 function travel together in a single object instead of being separate objects.
-			 The hash code of a key must not change while the hash table is non-empty. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>Good performance depends on having good
-			 pseudo-randomness in the low-order bits of the hash code. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>When keys are pointers, simply casting the pointer to a hash code may
-		  cause poor performance because the low-order bits of the hash code will be
-		  always zero if the pointer points to a type with alignment restrictions. A way
-		  to remove this bias is to divide the casted pointer by the size of the type, as
-		  indicated below in 
-		  <samp class="codeph"><span style="color:blue"><strong><em>bold italic
-					 font</em></strong></span></samp>. 
-		</p>
- 
-		<pre>
-           size_t MyHashCompare::hash( Key* key ) const {
-            return reinterpret_cast<size_t>(key)<span style="color:blue"><strong><em>/sizeof(Key)</em></strong></span>;        
-           }   
-          </pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		
-		<p> In the following synopsis, methods shown in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>
-		  may be concurrently invoked.
-		</p>
- 
-		<pre>
-        namespace tbb {
-    template<typename Key, typename T, typename HashCompare, 
-             typename Alloc=tbb_allocator<std::pair<Key,T> > >
-    class concurrent_hash_map {
-    public:
-        <em>// types</em>
-        typedef Key key_type;
-        typedef T mapped_type;
-        typedef std::pair<const Key,T> value_type;
-        typedef size_t size_type;
-        typedef ptrdiff_t difference_type;
-        typedef value_type* pointer;
-        typedef const value_type* const_pointer;
-        typedef value_type& reference;
-        typedef Alloc allocator_type;
-
-        <em>// whole-table operations</em>
-        concurrent_hash_map( 
-            const allocator_type& a=allocator_type() );
-        concurrent_hash_map( 
-            size_type n, 
-            const allocator_type &a = allocator_type() );
-        concurrent_hash_map( 
-            const concurrent_hash_map&, 
-            const allocator_type& a=allocator_type() );
-        template<typename InputIterator>
-            concurrent_hash_map(
-                InputIterator first, InputIterator last, 
-                const allocator_type& a = allocator_type())
-        <em>//C++11 specific</em> 
-        concurrent_hash_map(const std::initializer_list<value_type> &il, const allocator_type &a = allocator_type())
-        ~concurrent_hash_map();
-        concurrent_hash_map operator=(const concurrent_hash_map&);
-        <em>//C++11 specific</em> 
-        concurrent_hash_map operator=(const std::initializer_list<value_type> &il)
-        void rehash( size_type n=0 );
-        void clear();
-        allocator_type get_allocator() const;
-
-        <em>// concurrent access</em>
-        class const_accessor;
-        class accessor;
-
-        <em>// concurrent operations on a table</em>
-        bool <span style="color:blue"><strong>find</strong></span>( const_accessor& result, const Key& key ) const;
-        bool <span style="color:blue"><strong>find</strong></span>( accessor& result, const Key& key );
-        bool <span style="color:blue"><strong>insert</strong></span>( const_accessor& result, const Key& key );
-        bool <span style="color:blue"><strong>insert</strong></span>( accessor& result, const Key& key );
-        bool <span style="color:blue"><strong>insert</strong></span>( const_accessor& result, const value_type& value );
-        bool <span style="color:blue"><strong>insert</strong></span>( accessor& result, const value_type& value );
-        bool <span style="color:blue"><strong>insert</strong></span>( const value_type& value );
-        template<typename I> void insert( I first, I last );
-        bool <span style="color:blue"><strong>erase</strong></span>( const Key& key );
-        bool <span style="color:blue"><strong>erase</strong></span>( const_accessor& item_accessor );
-        bool <span style="color:blue"><strong>erase</strong></span>( accessor& item_accessor );
-
-        <em>// parallel iteration</em>
-        typedef <em>implementation-defined</em> range_type;
-        typedef <em>implementation-defined</em> const_range_type;
-        range_type range( size_t grainsize=1 );
-        const_range_type range( size_t grainsize=1 ) const;
-
-        <em>// capacity</em>
-        size_type size() const;
-        bool empty() const;
-        size_type max_size() const;
-        size_type bucket_count() const;
-
-        <em>// iterators</em>
-        typedef <em>implementation-defined</em> iterator;
-        typedef <em>implementation-defined</em> const_iterator;
-        iterator begin();
-        iterator end();
-        const_iterator begin() const;
-        const_iterator end() const;
-        std::pair<iterator, iterator> equal_range( const Key& key );
-        std::pair<const_iterator, const_iterator> 
-            equal_range( const Key& key ) const;
-    };
-
-    template<typename Key, typename T, typename HashCompare, 
-             typename A1, typename A2>
-    bool operator==(
-        const concurrent_hash_map<Key,T,HashCompare,A1> &a, 
-        const concurrent_hash_map<Key,T,HashCompare,A2> &b);
-
-    template<typename Key, typename T, typename HashCompare, 
-             typename A1, typename A2>
-    bool operator!=(const    
-        concurrent_hash_map<Key,T,HashCompare,A1> &a, 
-        const concurrent_hash_map<Key,T,HashCompare,A2> &b);
-
-    template<typename Key, typename T, typename HashCompare, 
-             typename A>
-    void swap(concurrent_hash_map<Key,T,HashCompare,A>& a,    
-              concurrent_hash_map<Key,T,HashCompare,A>& b)
-}
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Exception Safety</h2> 
-		 The following
-		functions must not throw exceptions: 
-		<ul type="disc"> 
-		  <li>The hash function 
-		  </li>
- 
-		  <li>The destructors for types 
-			 <samp class="codeph">Key</samp> and 
-			 <samp class="codeph">T</samp>. 
-		  </li>
- 
-		</ul>
- The following hold true: 
-		<ul type="disc"> 
-		  <li>If an exception happens during an insert operation, the operation
-			 has no effect. 
-		  </li>
- 
-		  <li>If an exception happens during an assignment operation, the
-			 container may be in a state where only some of the items were assigned, and
-			 methods 
-			 <samp class="codeph">size()</samp> and 
-			 <samp class="codeph">empty()</samp> may return invalid answers. 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm">Whole Table Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm">Concurrent Access</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm">Concurrent Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm">Parallel Iteration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm">Capacity</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm">Iterators</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm">Global Functions</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm">tbb_hash_compare Class</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="concurrent_hash_map_cls/concurrent_operations.htm">Concurrent Operations 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm
deleted file mode 100755
index d381ba3..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/capacity_map_cls.htm
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Capacity">
-<meta name="DC.subject" content="Capacity">
-<meta name="keywords" content="Capacity">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../concurrent_unordered_map_cls/hash_policy_map_cls.htm#hash_policy_map_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="capacity_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Capacity</title>
-</head>
-<body id="capacity_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="capacity_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Capacity</h1>
- 
-   
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d31764e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d31764e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d31764e29 "><span class="keyword">size_type size() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d31764e32 "> 
-				  <p><strong>Returns</strong>: Number of key-value pairs
-					 in the table. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-					 <p>This method takes constant time, but is
-						slower than for most STL containers. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d31764e29 "><span class="keyword">bool empty() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d31764e32 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">size()==0.</samp> 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-					 <p>This method takes constant time, but is
-						slower than for most STL containers. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d31764e29 "><span class="keyword">size_type max_size() const</span>
-				  
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d31764e32 "> 
-				  <p><strong>Returns</strong>: Inclusive upper bound on
-					 number of key-value pairs that the table can hold. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d31764e29 "><span class="keyword">size_type bucket_count()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d31764e32 "> 
-				  <p><strong>Returns</strong>: Current number of internal
-					 buckets. See method 
-					 <samp class="codeph">rehash</samp> for discussion of buckets. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../concurrent_unordered_map_cls/hash_policy_map_cls.htm#hash_policy_map_cls">Hash Policy 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm
deleted file mode 100755
index 6c692de..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_access.htm
+++ /dev/null
@@ -1,413 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Concurrent Access">
-<meta name="DC.subject" content="Concurrent Access">
-<meta name="keywords" content="Concurrent Access">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_access">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Concurrent Access</title>
-</head>
-<body id="concurrent_access">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_access"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Concurrent Access</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Member classes 
-		  <samp class="codeph">const_accessor</samp> and 
-		  <samp class="codeph">accessor</samp> are called 
-		  <em>accessors</em>. Accessors allow multiple threads to concurrently
-		  access pairs in a shared 
-		  <samp class="codeph">concurrent_hash_map</samp>. An 
-		  <em>accessor</em> acts as a smart pointer to a pair in a 
-		  <samp class="codeph">concurrent_hash_map</samp>. It holds an implicit lock on a
-		  pair until the instance is destroyed or method 
-		  <samp class="codeph">release</samp> is called on the accessor. 
-		</p>
- 
-		<p>Classes 
-		  <samp class="codeph">const_accessor</samp> and 
-		  <samp class="codeph">accessor</samp> differ in the kind of access that they
-		  permit. 
-		</p>
- 
-		<p></p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Differences Between const_accessor and
-		  accessor</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d32112e72"> 
-				  <p>Class 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d32112e78"> 
-				  <p><samp class="codeph">value_type</samp> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d32112e86"> 
-				  <p>Implied Lock on 
-					 <samp class="codeph">pair</samp> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d32112e72 "> 
-				  <p><samp class="codeph">const_accessor</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d32112e78 "> 
-				  <p><samp class="codeph">const std::pair<const
-						Key,T></samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d32112e86 "> 
-				  <p>Reader lock – permits shared access with
-					 other readers. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d32112e72 "> 
-				  <p><samp class="codeph">accessor</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d32112e78 "> 
-				  <p><samp class="codeph">std::pair<const
-						Key,T></samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d32112e86 "> 
-				  <p>Writer lock – permits exclusive access by a
-					 thread. Blocks access by other threads. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>Accessors cannot be assigned or copy-constructed,
-		  because allowing such would greatly complicate the locking semantics. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">const_accessor</samp></h2> 
-		 
-		<p><strong>Summary</strong> 
-		</p>
- 
-		<p>Provides read-only access to a pair in a 
-		  <samp class="codeph">concurrent_hash_map</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename Key, typename T, typename HashCompare, typename A> 
-class concurrent_hash_map<Key,T,HashCompare,A>::const_accessor;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_hash_map.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">const_accessor</samp> permits read-only access to a key-value
-		  pair in a 
-		  <samp class="codeph">concurrent_hash_map</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-        template<typename Key, typename T, typename HashCompare, typename A>
-        class concurrent_hash_map<Key,T,HashCompare,A>::const_accessor {
-        public:
-            // types
-            typedef const std::pair<const Key,T> value_type;
-     
-            // construction and destruction
-            const_accessor();
-            ~const_accessor();
-            
-            // inspection
-            bool empty() const;
-            const value_type& operator*() const;
-            const value_type* operator->() const;
-     
-            // early release
-            void release();
-        }; 
-    }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d32112e228">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d32112e231">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">bool empty() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p><strong>Returns</strong>: True if instance points
-						to nothing; false if instance points to a key-value pair. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">void release()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p>If 
-						<samp class="codeph">!empty()</samp>, releases the implied lock on the
-						pair, and sets instance to point to nothing. Otherwise does nothing. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">const value_type& operator*()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p>Raises assertion failure if 
-						<samp class="codeph">empty()</samp> and 
-						<samp class="codeph">TBB_USE_ASSERT</samp> is defined as nonzero. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Const reference to
-						key-value pair. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">const value_type* operator->()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">&operator*()</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">const_accessor()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p>Constructs 
-						<samp class="codeph">const_accessor</samp> that points to nothing. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e228 "><span class="keyword">~const_accessor</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e231 "> 
-					 <p>If pointing to key-value pair, releases
-						the implied lock on the pair. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">accessor</samp></h2> 
-		 
-		<p><strong>Summary</strong> 
-		</p>
- 
-		<p> Class that provides read and write access to a
-		  pair in a 
-		  <samp class="codeph">concurrent_hash_map</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre> template<typename Key, typename T, typename HashCompare,
-    typename Alloc>
- class concurrent_hash_map<Key,T,HashCompare,A>::accessor;</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_hash_map.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>An 
-		  <samp class="codeph">accessor</samp> permits read and write access to a key-value
-		  pair in a 
-		  <samp class="codeph">concurrent_hash_map</samp>. It is derived from a 
-		  <samp class="codeph">const_accessor</samp>, and thus can be implicitly cast to a 
-		  <samp class="codeph">const_accessor</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-        template<typename Key, typename T, typename HashCompare, typename Alloc>
-        class concurrent_hash_map<Key,T,HashCompare,Alloc>::accessor:
-            concurrent_hash_map<Key,T,HashCompare,Alloc>::const_accessor {
-        public:
-            typedef std::pair<const Key,T> value_type;
-            value_type& operator*() const;
-            value_type* operator->() const;
-        };
-    }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d32112e427">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d32112e430">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e427 "><span class="keyword">value_type& operator*()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e430 "> 
-					 <p>Raises assertion failure if 
-						<samp class="codeph">empty()</samp> and 
-						<samp class="codeph">TBB_USE_ASSERT</samp> is defined as non-zero. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to key-value
-						pair. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d32112e427 "><span class="keyword">value_type* operator->()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d32112e430 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">&operator*()</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm
deleted file mode 100755
index cf7dfe0..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/concurrent_operations.htm
+++ /dev/null
@@ -1,474 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Concurrent Operations">
-<meta name="DC.subject" content="TestMetaData">
-<meta name="keywords" content="TestMetaData">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_operations">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Concurrent Operations</title>
-</head>
-<body id="concurrent_operations">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_operations"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Concurrent Operations </h1>
- 
-  
-  
-  <div>
-	 <div class="section">
-		<p>The operations 
-		  <samp class="codeph">count</samp>, 
-		  <samp class="codeph">find</samp>, 
-		  <samp class="codeph">insert</samp>, and 
-		  <samp class="codeph">erase</samp> are the only operations that may be concurrently
-		  invoked on the same 
-		  <samp class="codeph">concurrent_hash_map</samp>. These operations search the table
-		  for a key-value pair that matches a given key. The 
-		  <samp class="codeph">find</samp> and 
-		  <samp class="codeph">insert</samp> methods each have two variants. One takes a 
-		  <samp class="codeph">const_accessor</samp> argument and provides read-only access
-		  to the desired key-value pair. The other takes an accessor argument and
-		  provides write access. Additionally, 
-		  <samp class="codeph">insert</samp> has a variant without any accessor. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		  <p> The concurrent operations
-			 (<samp class="codeph">count</samp>, 
-			 <samp class="codeph">find</samp>, 
-			 <samp class="codeph">insert</samp>, and 
-			 <samp class="codeph">erase</samp>) invalidate any iterators pointing into the
-			 affected instance even with a 
-			 <samp class="codeph">const</samp> qualifier. It is unsafe to use these
-			 operations concurrently with any other operation. An exception to this rule is
-			 that 
-			 <samp class="codeph">count</samp> and 
-			 <samp class="codeph">find</samp> do not invalidate iterators if no insertions or
-			 erasures have occurred after the most recent call to method 
-			 <samp class="codeph">rehash</samp>.
-		  </p>
-
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>In serial code, use the 
-			 <samp class="codeph">equal_range</samp> method instead of the 
-			 <samp class="codeph">find</samp> method for lookup, since 
-			 <samp class="codeph">equal_range</samp> is faster and does not invalidate
-			 iterators.
-		  </p>
-
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>If the 
-			 <samp class="codeph">nonconst</samp> variant succeeds in finding the key, the
-			 consequent write access blocks any other thread from accessing the key until
-			 the accessor object is destroyed. Where possible, use the const variant to
-			 improve concurrency.
-		  </p>
-
-		</div> 
-		<p>Each map operation in this section returns true if
-		  the operation succeeds, false otherwise.
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		  <p>Though there can be at most one occurrence of a
-			 given key in the map, there may be other key-value pairs in flight with the
-			 same key. These arise from the semantics of the 
-			 <samp class="codeph">insert</samp> and 
-			 <samp class="codeph">erase</samp> methods. The 
-			 <samp class="codeph">insert</samp> methods can create and destroy a temporary
-			 key-value pair that is not inserted into a map. The erase methods remove a
-			 key-value pair from the map before destroying it, thus permitting another
-			 thread to construct a similar key before the old one is destroyed.
-		  </p>
-
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>To guarantee that only one instance of a resource
-			 exists simultaneously for a given key, use the following technique:
-		  </p>
- 
-		  <ul type="disc"> 
-			 <li>
-				<p>To construct the resource: Obtain an 
-				  <samp class="codeph">accessor</samp> to the key in the map before
-				  constructing the resource. 
-				</p>
-
-			 </li>
- 
-			 <li>
-				<p>To destroy the resource: Obtain an 
-				  <samp class="codeph">accessor</samp> to the key, destroy the resource, and
-				  then erase the key using the accessor. 
-				</p>
-
-			 </li>
- 
-		  </ul>
-
-		</div> 
-		<p>Below is a sketch of how this can be done. 
-		</p>
-
-		<pre>        extern tbb::concurrent_hash_map<Key,Resource,HashCompare> Map;
- 
-    void ConstructResource( Key key ) {
-           accessor acc;
-           if( Map.insert(acc,key) ) {
-                   // Current thread inserted key and has exclusive access.
-                   <em>...construct the resource here...</em>
-           }
-           // Implicit destruction of acc releases lock
-    }
-  
-    void DestroyResource( Key key ) {
-           accessor acc;
-           if( Map.find(acc,key) ) {
-                   // Current thread found key and has exclusive access.
-                   <em>...destroy the resource here...</em>
-                   // Erase key using accessor.
-                   Map.erase(acc);
-           }
-    }</pre>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d33398e180">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d33398e183">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">size_type count( const Key&
-						key ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>This method may invalidate previously
-						  obtained iterators. In serial code, you can use 
-						  <samp class="codeph">equal_range</samp> that does not have such
-						  problems.
-						</p>
-
-					 </div>
-					 <p><strong>Returns</strong>: 1 if map contains key; 0
-						otherwise.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool find( const_accessor&
-						result, const Key& key ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If key is found, sets result to provide read-only access to the matching pair.
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>This method may invalidate previously
-						  obtained iterators. In serial code, you can use 
-						  <samp class="codeph">equal_range</samp> that does not have such
-						  problems.
-						</p>
-
-					 </div> 
-					 <p><strong>Returns</strong>: True if key was found;
-						false if key was not found.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool find( accessor& result,
-						const Key& key )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If key is found, sets result to provide write access to the matching pair 
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>This method may invalidate previously
-						  obtained iterators. In serial code, you can use 
-						  <samp class="codeph">equal_range</samp> that does not have such
-						  problems.
-						</p>
-
-					 </div>
-					 <p><strong>Returns</strong>: True if key was found;
-						false if key was not found.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool insert( const_accessor&
-						result, const Key& key )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If not present, inserts new 
-						<samp class="codeph">pair(key,T())</samp> into the table. Sets 
-						<samp class="codeph"><em>result</em></samp> to provide read-only access to
-						the matching pair.
-					 </p>
- 
-					 <p><strong>Returns</strong> True if new pair was
-						inserted; false if key was already in the map.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool insert( accessor& result,
-						const Key& key )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If not present, inserts new 
-						<samp class="codeph">pair(key,T())</samp> into the table. Sets 
-						<samp class="codeph"><em>result</em></samp> to provide write access to the
-						matching pair.
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if new pair was
-						inserted; false if key was already in the map.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool insert( const_accessor&
-						result, const value_type& value )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If not present, inserts new pair copy-constructed from 
-						<em>value</em> into the table. Sets 
-						<em>result</em> to provide read-only access to the matching
-						pair.
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if new pair was
-						inserted; false if key was already in the map.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool insert( accessor& result,
-						const value_type& value )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If not present, inserts new pair copy-constructed from 
-						<samp class="codeph"><em>value</em></samp> into the table. Sets 
-						<samp class="codeph"><em>result</em></samp> to provide write access to the
-						matching pair.
-					 </p>
- 
-					 <p><strong>Returns</strong>
-					 </p>
- 
-					 <p>True if new pair was inserted; false if
-						key was already in the map.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool insert( const value_type&
-						value )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						If not present, inserts new pair copy-constructed from 
-						<samp class="codeph"><em>value</em></samp> into the table. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if new pair was
-						inserted; false if key was already in the map.
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-						<p> If you do not need to access the data after insertion,
-						  use the form of insert that does not take an accessor; it may work faster and
-						  use fewer locks.
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">template<typename
-						InputIterator> void insert( InputIterator first, InputIterator last
-						)</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>For each pair 
-						<samp class="codeph"><em>p</em></samp> in the half-open interval
-						[<samp class="codeph"><em>first,last</em></samp>), does 
-						<samp class="codeph">insert(<em>p</em>)</samp>. The order of the
-						insertions, or whether they are done concurrently, is unspecified.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>The current implementation processes
-						  the insertions in order. Future implementations may do the insertions
-						  concurrently. If duplicate keys exist in [<samp class="codeph"><em>first,last</em></samp>),
-						  be careful to not depend on their insertion order.
-						</p>
-
-					 </div>
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool erase( const Key& key
-						)</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p>Searches table for pair with given key.
-						Removes the matching pair if it exists. If there is an accessor pointing to the
-						pair, the pair is nonetheless removed from the table but its destruction is
-						deferred until all accessors stop pointing to it.
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if pair was removed
-						by the call; false if key was not found in the map.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool erase( const_accessor&
-						item_accessor )</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p><strong>Requirements</strong>: 
-						<samp class="codeph"><em>item_accessor</em>.empty()==false</samp>
-					 </p>
- 
-					 <p><strong>Effects</strong>
-					 </p>
- 
-					 <p>Removes pair referenced by 
-						<samp class="codeph"><em>item_accessor</em></samp>.  If there is another <span class="keyword">const_accessor</span> 
-                        pointing to the <span class="keyword">pair</span>, the <span class="keyword">pair</span> is nonetheless 
-                        removed from the table but its destruction is deferred until all <span class="keyword">accessors</span> 
-                        stop pointing to it.  Concurrent insertion of the same key creates a new <span class="keyword">pair</span> 
-                        in the table, which can temporarily co-exist with the one being destroyed.
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if pair was removed
-						by this thread; false if pair was removed by another thread.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d33398e180 "><span class="keyword">bool erase( accessor&
-						item_accessor )</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d33398e183 ">
-					 <p><strong>Requirements</strong>: 
-						<samp class="codeph"><em>item_accessor</em>.empty()==false</samp>
-					 </p>
- 
-					 <p><strong>Effects</strong> Removes pair referenced by
-						<samp class="codeph"><em>item_accessor</em></samp> from the table and destroys it. 
-                        Concurrent insertion of the same key creates a new <span class="keyword">pair</span> 
-                        in the table, which can temporarily co-exist with the one being destroyed.
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if pair was removed
-						by this thread; false if pair was removed by another thread.
-					 </p>
-
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm
deleted file mode 100755
index f89497c..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/global_funcs.htm
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Global Functions">
-<meta name="DC.subject" content="Global Functions">
-<meta name="keywords" content="Global Functions">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="global_funcs">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Global Functions</title>
-</head>
-<body id="global_funcs">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="global_funcs"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Global Functions</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>These functions in namespace 
-		  <samp class="codeph">tbb</samp> improve the STL compatibility of 
-		  <samp class="codeph">concurrent_hash_map</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="52.38095238095239%" id="d34799e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="47.61904761904761%" id="d34799e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="52.38095238095239%" headers="d34799e37 "><span class="keyword">template<typename Key, typename
-						T, typename HashCompare, typename A1, typename A2> bool operator==( const
-						concurrent_hash_map<Key,T,HashCompare,A1>& a, const
-						concurrent_hash_map<Key,T,HashCompare,A2>& b);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="47.61904761904761%" headers="d34799e40 "> 
-					 <p><strong>Returns</strong>: True if<samp class="codeph">a</samp>
-						and 
-						<samp class="codeph">b</samp> contain equal sets of keys and for each
-						pair<samp class="codeph"> (k,v<sub>1</sub>)<span>∈</span></samp>a and 
-						<samp class="codeph">(k,v<sub>2</sub>)<span>∈</span>b</samp>, the expression<samp class="codeph"> bool(v<sub>1</sub>==v<sub>2</sub>)</samp> is true. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="52.38095238095239%" headers="d34799e37 "><span class="keyword">template<typename Key, typename
-						T, typename HashCompare, typename A1, typename A2> bool operator!=(const
-						concurrent_hash_map<Key,T,HashCompare,A1> &a, const
-						concurrent_hash_map<Key,T,HashCompare,A2> &b);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="47.61904761904761%" headers="d34799e40 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">!(a==b)</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="52.38095238095239%" headers="d34799e37 "><span class="keyword">template<typename Key, typename
-						T, typename HashCompare, typename A> void swap(concurrent_hash_map<Key,
-						T, HashCompare, A> &a, concurrent_hash_map<Key, T, HashCompare, A>
-						&b)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="47.61904761904761%" headers="d34799e40 "> 
-					 <p><samp class="codeph">a.swap(b)</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm
deleted file mode 100755
index bea213e..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/iterators_hash_map_cls.htm
+++ /dev/null
@@ -1,192 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="iterators_hash_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="iterators_hash_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="iterators_hash_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Template class 
-		  <samp class="codeph">concurrent_hash_map</samp> supports forward iterators; that
-		  is, iterators that can advance only forwards across a table. Reverse iterators
-		  are not supported. Concurrent operations (<samp class="codeph">count</samp>, 
-		  <samp class="codeph">find</samp>, 
-		  <samp class="codeph">insert</samp>, and 
-		  <samp class="codeph">erase</samp>) invalidate any existing iterators that point
-		  into the table, An exception to this rule is that 
-		  <samp class="codeph">count</samp> and 
-		  <samp class="codeph">find</samp> do not invalidate iterators if no insertions or
-		  erasures have occurred after the most recent call to method 
-		  <samp class="codeph">rehash</samp>. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>Do not call concurrent operations, including 
-			 <samp class="codeph">count</samp> and 
-			 <samp class="codeph">find</samp> while iterating the table. Use 
-			 <samp class="codeph">concurrent_unordered_map</samp> if concurrent traversal and
-			 insertion are required. 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d35160e74">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d35160e77">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">iterator begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to beginning of key-value
-						sequence. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">iterator end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 "> 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p><samp class="codeph">iterator</samp> pointing to end
-						of key-value sequence. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the beginning of
-						key-value sequence. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">const_iterator end()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the end of
-						key-value sequence. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">std::pair<iterator,
-						iterator> equal_range( const Key& key );</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 "> 
-					 <p><strong>Returns</strong>: Pair of iterators 
-						<samp class="codeph">(<em>i,j</em>)</samp> such that the half-open range 
-						<samp class="codeph">[<em>i,j</em>)</samp> contains all pairs in the map
-						(and only such pairs) with keys equal to 
-						<samp class="codeph">key</samp>. Because the map has no duplicate keys,
-						the half-open range is either empty or contains a single pair. 
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-						<p>This method is serial alternative to concurrent 
-						  <samp class="codeph">count</samp> and 
-						  <samp class="codeph">find</samp> methods. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35160e74 "><span class="keyword">std::pair<const_iterator,
-						const_iterator> equal_range( const Key& key ) const;</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35160e77 ">
-					 <p>See 
-						<samp class="codeph">std::pair<iterator, iterator> equal_range(
-						  const Key& key )</samp>. 
-					 </p>
- 
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../concurrent_unordered_map_cls.htm">concurrent_unordered_map 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm
deleted file mode 100755
index 7ccc580..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/parallel_iteration_container.htm
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Parallel Iteration">
-<meta name="DC.subject" content="Parallel Iteration">
-<meta name="keywords" content="Parallel Iteration">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_literation_container">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Parallel Iteration</title>
-</head>
-<body id="parallel_literation_container">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_literation_container"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallel Iteration</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p>Types 
-		  <samp class="codeph">const_range_type</samp> and 
-		  <samp class="codeph">range_type</samp> model the Container Range concept. The
-		  types differ only in that the bounds for a 
-		  <samp class="codeph">const_range_type</samp> are of type 
-		  <samp class="codeph">const_iterator</samp>, whereas the bounds for a 
-		  <samp class="codeph">range_type</samp> are of type iterator.
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-		  <p>Do not call concurrent operations, including 
-			 <samp class="codeph">count</samp> and 
-			 <samp class="codeph">find</samp> while iterating the table. Use 
-			 <samp class="codeph">concurrent_unordered_map</samp> if concurrent traversal and
-			 insertion are required.
-		  </p>
-
-		</div>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d35770e64">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d35770e67">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35770e64 "><span class="keyword">const_range_type range( size_t
-						grainsize=1 ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35770e67 "> 
-					 <p>Constructs a 
-						<samp class="codeph">const_range_type</samp> representing all keys in
-						the table. The parameter 
-						<samp class="codeph">grainsize</samp> is in units of hash table buckets.
-						Each bucket typically has on average about one key-value pair.
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_range_type</samp> object for the table. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d35770e64 "><span class="keyword">range_type range( size_t
-						grainsize=1 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d35770e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">range_type</samp> object for the table.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../concurrent_unordered_map_cls.htm">concurrent_unordered_map
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm
deleted file mode 100755
index 826fa07..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/tbb_hash_compare_cls.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tbb_hash_compare Class">
-<meta name="DC.subject" content="tbb_hash_compare Class">
-<meta name="keywords" content="tbb_hash_compare Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_hash_compare_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>tbb_hash_compare Class</title>
-</head>
-<body id="tbb_hash_compare_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_hash_compare_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">tbb_hash_compare Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        
-            <p>Default <samp class="codeph">HashCompare</samp> for
-                    <samp class="codeph">concurrent_hash_map</samp>.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <p><pre>template<typename Key> struct tbb_hash_compare;</pre></p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <p><pre>#include "tbb/concurrent_hash_map.h"</pre></p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">tbb_hash_compare<Key></samp> is the default for
-                the <samp class="codeph">HashCompare</samp> argument of template class<samp class="codeph">
-                    concurrent_hash_map</samp>. The built-in definition relies on
-                    <samp class="codeph">operator==</samp> and <samp class="codeph">tbb_hasher</samp> as shown in the
-                Members description. For your own types, you can define a template specialization of
-                    <samp class="codeph">tbb_hash_compare</samp> or define an overload of
-                    <samp class="codeph">tbb_hasher</samp>.</p>
-
-                <p>There are built-in definitions of <samp class="codeph">tbb_hasher</samp> for the following Key types:</p>
-
-            <ul type="disc">
-                <li><p>Types that are convertible to a <samp class="codeph">size_t</samp> by <samp class="codeph">static_cast<T></samp></p>
-</li>
-
-                <li><p>Pointer types</p>
-</li>
-
-                <li><p><samp class="codeph">std::basic_string</samp></p>
-</li>
-
-                <li><p><samp class="codeph">std::pair<<em>K1,K2</em>></samp> where
-                            <samp class="codeph"><em>K1</em></samp> and <samp class="codeph"><em>K2</em></samp> are hashed
-                        using <samp class="codeph">tbb_hasher</samp>.</p>
-</li>
-
-            </ul>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre> namespace tbb {
-        template<typename Key>
-        struct tbb_hash_compare {
-            static size_t hash(const Key& a) {
-                return tbb_hasher(a);
-            }
-            static bool equal(const Key& a, const Key& b) {
-                return a==b;
-            }
-        };
-     
-        template<typename T> 
-        size_t tbb_hasher(const T&);
-     
-        template<typename T> 
-        size_t tbb_hasher(T*);
-     
-        template<typename T, typename Traits, typename Alloc>
-        size_t tbb_hasher(const std::basic_string<T, Traits,Alloc>&);
-     
-        template<typename T1, typename T2>
-        size_t tbb_hasher(const std::pair<T1,T2>& );
-            };</pre>
-            </div>
-</div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm b/doc/help/reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm
deleted file mode 100755
index 4110d25..0000000
--- a/doc/help/reference/containers_overview/concurrent_hash_map_cls/whole_table_operations.htm
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Whole Table Operations">
-<meta name="DC.subject" content="Whole Table Operations">
-<meta name="keywords" content="Whole Table Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="whole_table_operations">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Whole Table Operations</title>
-</head>
-<body id="whole_table_operations">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="whole_table_operations"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Whole Table Operations</h1>
- 
-  
-  <div> 
-	 <div class="section">
-		<p>These operations affect an entire table. Do not
-		  concurrently invoke them on the same table.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d36398e34">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d36398e37">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map( const
-						allocator_type& a = allocator_type()  )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Constructs empty table.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map( size_type n,
-						const allocator_type& a = allocator_type() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Constructs empty table with preallocated
-						buckets for at least 
-						<samp class="codeph"><em>n</em></samp> items.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>In general, thread contention for
-						  buckets is inversely related to the number of buckets. If memory consumption is
-						  not an issue and 
-						  <em>P</em> threads will be accessing the 
-						  <samp class="codeph">concurrent_hash_map</samp>, set 
-						  <samp class="codeph"><em>n</em>>=4P</samp>. 
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map( const
-						concurrent_hash_map& table, const allocator_type& a = allocator_type()
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Copies a table. The table being copied
-						may have 
-						<samp class="codeph">const</samp> operations running on it concurrently.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">template<typename 
-						InputIterator> concurrent_hash_map( InputIterator first, InputIterator
-						last,  const allocator_type& a = allocator_type() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Constructs table containing copies of
-						elements in the iterator half-open interval [<em>first,last</em>).
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map(
-                        const std::initializer_list<value_type> &il
-                        , const allocator_type &a = allocator_type() )</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-                     <p>C++11 specific; Equivalent to 
-                        <samp class="codeph">concurrent_hash_map(<em>il</em>.begin(), 
-                          <em>il</em>.end(), 
-                          <em>a</em>)</samp>.
-                     </p>
- 
-                  </td>
- 
-                </tr>
- 
-				 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">~concurrent_hash_map()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Invokes 
-						<samp class="codeph">clear()</samp>. This method is not safe to execute
-						concurrently with other methods on the same 
-						<samp class="codeph">concurrent_hash_map</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map& operator=
-						( concurrent_hash_map& source )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>If source and destination
-						(<samp class="codeph">this</samp>) table are distinct, clears the destination table and
-						copies all key-value pairs from the source table to the destination table.
-						Otherwise, does nothing.
-					 </p>
- 
-					 <p><strong>Returns</strong>
-					 </p>
- 
-					 <p>Reference to the destination table.
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">concurrent_hash_map& operator=
-                        ( const std::initializer_list<value_type> &il )</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-                     <p>C++11 specific; Sets 
-                        <samp class="codeph">*<em>this</em></samp> 
-                        to contain data from
-                        <samp class="codeph">il</samp>.
-                     </p>
- 
-                     <p><strong>Returns</strong>
-                     </p>
- 
-                     <p>Reference to the destination table.
-                     </p>
- 
-                  </td>
- 
-                </tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">void swap(
-						concurrent_hash_map& table )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Swaps contents and allocators of 
-						<samp class="codeph">this</samp> and 
-						<samp class="codeph">table</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">void rehash( size_type n=0
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Internally, the table is partitioned into
-						buckets. Method 
-						<samp class="codeph">rehash</samp> reorgnizes these internal buckets in
-						a way that may improve performance of future lookups. Raises number of internal
-						buckets to 
-						<samp class="codeph"><em>n</em></samp> if 
-						<samp class="codeph"><em>n</em>>0</samp> and 
-						<samp class="codeph"><em>n</em></samp> exceeds the current number of
-						buckets.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>The current implementation never
-						  reduces the number of buckets. A future implementation might reduce the number
-						  of buckets if 
-						  <samp class="codeph"><em>n</em></samp> is less than the current number
-						  of buckets.
-						</p>
-
-					 </div> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>The ratio of items to buckets affects
-						  time and space usage by a table. A high ratio saves space at the expense of
-						  time. A low ratio does the opposite. The default ratio is 0.5 to 1 items per
-						  bucket on average.
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">void clear()</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p>Erases all key-value pairs from the
-						table. Does not hash or compare any keys.
-					 </p>
-
-					 <p>If 
-						<samp class="codeph">TBB_USE_PERFORMANCE_WARNINGS</samp> is nonzero,
-						issues a performance warning if the randomness of the hashing is poor enough to
-						significantly impact performance. 
-					 </p>
- 
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d36398e34 "><span class="keyword">allocator_type get_allocator()
-						const</span>
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d36398e37 ">
-					 <p><strong>Returns</strong>: Copy of allocator used to
-						construct table.
-					 </p>
-
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_hash_map_cls.htm">concurrent_hash_map Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_priority_queue_cls.htm b/doc/help/reference/containers_overview/concurrent_priority_queue_cls.htm
deleted file mode 100755
index 9e99c21..0000000
--- a/doc/help/reference/containers_overview/concurrent_priority_queue_cls.htm
+++ /dev/null
@@ -1,573 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_priority_queue Template Class">
-<meta name="DC.subject" content="concurrent_priority_queue Template Class">
-<meta name="keywords" content="concurrent_priority_queue Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_priority_queue_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_priority_queue Template Class</title>
-</head>
-<body id="concurrent_priority_queue_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_priority_queue_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_priority_queue Template
-	 Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for priority queue with concurrent
-		  operations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>template<typename T, typename Alloc=cache_aligned_allocator<T> > class concurrent_priority_queue;</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/concurrent_priority_queue.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_priority_queue</samp> is a container that permits
-		  multiple threads to concurrently push and pop items. Items are popped in
-		  priority order as determined by a template parameter. The capacity of the queue
-		  is unbounded, subject to memory limitations on the target machine. 
-		</p>
- 
-		<p>The interface is similar to STL 
-		  <samp class="codeph">std::priority_queue</samp> except where it must differ to
-		  make concurrent modification safe. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Differences Between STL queue and Intel®
-		  Threading Building Blocks concurrent_priority_queue</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d37381e84"> 
-				  <p>Feature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d37381e90"> 
-				  <p>STL std::priority_queue 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d37381e96"> 
-				  <p>concurrent_priority_queue 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e84 "> 
-				  <p>Choice of underlying container 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e90 "> 
-				  <p>Sequence template parameter 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d37381e96 "> 
-				  <p>No choice of underlying container;
-					 allocator choice is provided instead 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e84 "> 
-				  <p>Access to highest priority item 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e90 "> 
-				  <p><samp class="codeph">const value_type& top()
-						const</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d37381e96 "> 
-				  <p>Not available. Unsafe for concurrent
-					 container 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e84 "> 
-				  <p>Copy and pop item if present 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e90 "> 
-				  <p><samp class="codeph">bool b=!q.empty(); if(b) {
-						x=q.top(); q.pop(); }</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d37381e96 "> 
-				  <p><samp class="codeph">bool b = q.try_pop(x);</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e84 "> 
-				  <p>Get number of items in queue 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e90 "> 
-				  <p><samp class="codeph">size_type size() const</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d37381e96 "> 
-				  <p>Same, but may be inaccurate due to pending
-					 concurrent push or pop operations 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e84 "> 
-				  <p>Check if there are items in queue 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d37381e90 "> 
-				  <p><samp class="codeph">bool empty() const</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d37381e96 "> 
-				  <p>Same, but may be inaccurate due to pending concurrent push or
-					 pop operations 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  template <typename T, typename Compare=std::less<T>,   
-            typename A=cache_aligned_allocator<T> >
-  class concurrent_priority_queue {
-    typedef T value_type;
-    typedef T& reference;
-    typedef const T& const_reference;
-    typedef size_t size_type;
-    typedef ptrdiff_t difference_type;
-    typedef A allocator_type;
-
-    //Constructors
-    concurrent_priority_queue(const allocator_type& a = allocator_type());  
-    concurrent_priority_queue(size_type init_capacity, const allocator_type& a = allocator_type());
-    template<typename InputIterator>
-    concurrent_priority_queue(InputIterator begin, InputIterator end, const allocator_type& a = allocator_type());
-    concurrent_priority_queue(const concurrent_priority_queue& src, const allocator_type& a = allocator_type());
-    //C++11 specific 
-    concurrent_priority_queue(const std::initializer_list<T> & il, const allocator_type &a = allocator_type());
-    
-    //Assignment
-    concurrent_priority_queue& operator=(const concurrent_priority_queue& src);
-    template<typename InputIterator>
-    void assign(InputIterator begin, InputIterator end);
-    //C++11 specific 
-    concurrent_priority_queue& operator=(const std::initializer_list<T> & il);
-    void assign(const std::initializer_list<T> & il);
-
-    void swap(concurrent_priority_queue& other);
-    
-    ~concurrent_priority_queue();
-
-    allocator_type get_allocator() const;
-    
-    bool empty() const;
-    size_type size() const;
-    
-    void push(const_reference elem);
-    bool try_pop(reference elem);
-    
-    void clear();
-  };
-}
-</pre> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>In Intel® Threading Building Blocks (Intel® TBB) 2.1, a 
-			 <samp class="codeph">concurrent_queue</samp> could be bounded. Intel® TBB 2.2
-			 moves this functionality to 
-			 <samp class="codeph">concurrent_bounded_queue</samp>. Compile with 
-			 <samp class="codeph">TBB_DEPRECATED=1</samp> to restore the old functionality,
-			 or (recommended) use 
-			 <samp class="codeph">concurrent_bounded_queue</samp> instead. 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d37381e263">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d37381e266">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue(const
-						allocator_type& a = allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Constructs empty queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue(size_type init_capacity,
-						const allocator_type& a = allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Constructs an empty queue with an initial capacity. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">template <typename InputIterator> concurrent_priority_queue(InputIterator begin,
-						InputIterator end, const allocator_type& a = allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Constructs a queue containing copies of elements in the
-						iterator half-open interval 
-						<samp class="codeph">[begin, end)</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue(const std::initializer_list<T> & il,
-                     const allocator_type &a = allocator_type())</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-                     <p>C++11 specific; Equivalent to <samp class="codeph">concurrent_priority_queue(<em>il</em>.begin(), <em>il</em>.end(), <em>a</em>)</samp>. 
-                     </p>
- 
-                  </td>
- 
-                </tr>
- 				
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue (const
-						concurrent_priority_queue& src, const allocator_type& a =
-						allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Constructs a copy of 
-						<samp class="codeph">src</samp>. This operation is not thread-safe and
-						may result in an error or an invalid copy of 
-						<samp class="codeph">src</samp> if another thread is concurrently
-						modifying 
-						<samp class="codeph">src.</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue&
-						operator=(const concurrent_priority_queue& src)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Assign contents of 
-						<samp class="codeph">src</samp> to 
-						<samp class="codeph">*this</samp>. This operation is not thread-safe and
-						may result in an error or an invalid copy of 
-						<samp class="codeph">src</samp> if another thread is concurrently
-						modifying 
-						<samp class="codeph">src</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">concurrent_priority_queue&
-                        operator=(const std::initializer_list<T> & il)</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-                     <p>C++11 specific; Sets 
-                        <samp class="codeph">*<em>this</em></samp> 
-                        to contain data from
-                        <samp class="codeph">il</samp>. 
-                        <strong>Returns</strong>: reference to <samp class="codeph">*this</samp>.
-                     </p>
- 
-                  </td>
- 
-                </tr>
-
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">template <typename InputIterator> void assign(InputIterator begin,
-                        InputIterator end, const allocator_type&)</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-                     <p>Assign contents of the
-                        iterator half-open interval 
-                        <samp class="codeph">[begin, end)</samp> to <samp class="codeph">*this</samp>. 
-                     </p>
- 
-                  </td>
- 
-                </tr>
- 
-                <tr> 
-                  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">void assign(const std::initializer_list<T> & il)</span> 
-                  </td>
- 
-                  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-                     <p>C++11 specific; Equivalent to <samp class="codeph">assign(<em>il</em>.begin(), <em>il</em>.end())</samp>. 
-                     </p>
- 
-                  </td>
- 
-                </tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">~concurrent_priority_queue()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Destroys all items in the queue, and the container itself,
-						so that it can no longer be used. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">bool empty() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp> if queue has no items; 
-						<samp class="codeph">false</samp> otherwise. May be inaccurate when
-						concurrent 
-						<samp class="codeph">push</samp> or 
-						<samp class="codeph">try_pop</samp> operations are pending. This
-						operation reads shared data and may trigger a race condition in race detection
-						tools when used concurrently. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">size_type size() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p><strong>Returns</strong>: Number of items in the queue. May be
-						inaccurate when concurrent 
-						<samp class="codeph">push</samp> or 
-						<samp class="codeph">try_pop</samp> operations are pending. This
-						operation reads shared data and may trigger a race condition in race detection
-						tools when used concurrently. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword">void push(const_reference
-						elem)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Pushes a copy of 
-						<samp class="codeph">elem</samp> into the queue. This operation is
-						thread-safe with other 
-						<samp class="codeph">push</samp> and 
-						<samp class="codeph">try_pop</samp> operations. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword"> bool try_pop(reference
-						elem)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>If the queue is not empty, copies the highest priority item
-						from the queue and assigns it to 
-						<samp class="codeph">elem</samp>, and destroys the popped item in the
-						queue; otherwise, does nothing. This operation is thread-safe with other 
-						<samp class="codeph">push</samp> and 
-						<samp class="codeph">try_pop</samp> operations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp> if an item was popped; 
-						<samp class="codeph">false</samp> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword"> void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Clears the queue; results in 
-						<samp class="codeph">size()==0</samp>. This operation is not
-						thread-safe. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword"> void
-						swap(concurrent_priority_queue& other)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p>Swaps the queue contents with those of other. This operation
-						is not thread-safe. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d37381e263 "><span class="keyword"> allocator_type get_allocator()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d37381e266 "> 
-					 <p><strong>Returns</strong>: Copy of allocator used to construct the
-						queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_queue_cls.htm b/doc/help/reference/containers_overview/concurrent_queue_cls.htm
deleted file mode 100755
index 0495bbe..0000000
--- a/doc/help/reference/containers_overview/concurrent_queue_cls.htm
+++ /dev/null
@@ -1,572 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_queue Template Class">
-<meta name="DC.subject" content="concurrent_queue Template Class">
-<meta name="keywords" content="concurrent_queue Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_queue_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_queue Template Class</title>
-</head>
-<body id="concurrent_queue_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_queue_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_queue Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for queue with concurrent
-		  operations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>template<typename T, typename Alloc=cache_aligned_allocator<T> > class concurrent_queue;</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/concurrent_queue.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_queue</samp> is a first-in first-out data
-		  structure that permits multiple threads to concurrently push and pop items. Its
-		  capacity is unbounded, subject to memory limitations on the target machine. 
-		</p>
- 
-		<p>The interface is similar to STL 
-		  <samp class="codeph">std::queue</samp> except where it must differ to make
-		  concurrent modification safe. 
-		</p>
- 
-		<p> 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Differences Between STL queue and Intel®
-		  Threading Building Blocks concurrent_queue</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d39293e87"> 
-				  <p><strong>Feature</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d39293e95"> 
-				  <p><strong>STL std::queue</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d39293e103"> 
-				  <p><strong>concurrent_queue</strong> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e87 "> 
-				  <p>Access to front and back 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e95 "> 
-				  <p>Methods 
-					 <samp class="codeph">front</samp> and 
-					 <samp class="codeph">back</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d39293e103 "> 
-				  <p>Not present. They would be unsafe while
-					 concurrent operations are in progress. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e87 "> 
-				  <p><samp class="codeph">size_type</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e95 "> 
-				  <p>unsigned integral type 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d39293e103 "> 
-				  <p><samp class="codeph"><em>signed</em></samp> integral
-					 type 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e87 "> 
-				  <p><samp class="codeph">unsafe_size()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e95 "> 
-				  <p>Returns number of items in queue 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d39293e103 "> 
-				  <p>Returns number of items in queue. May
-					 return incorrect value if any 
-					 <samp class="codeph">push</samp> or 
-					 <samp class="codeph">try_pop</samp> operations are concurrently in flight.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e87 "> 
-				  <p>Copy and pop item unless queue q is empty. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d39293e95 "> 
-				  <p>bool b=!q.empty(); 
-				  </p>
- 
-				  <p>if(b) { 
-				  </p>
- 
-				  <p>    x=q.front(); 
-				  </p>
- 
-				  <p>    q.pop(); 
-				  </p>
- 
-				  <p>} 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d39293e103 "> 
-				  <p>bool b = 
-					 <em>q</em>.try_pop (x) 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-                    template<typename T, 
-                 typename Alloc=cache_aligned_allocator<T> >
-        class concurrent_queue {
-        public:
-            <em>// types</em>
-            typedef T value_type;
-            typedef T& reference;
-            typedef const T& const_reference;
-            typedef std::ptrdiff_t size_type;
-            typedef std::ptrdiff_t difference_type;
-            typedef Alloc allocator_type;
-     
-            explicit concurrent_queue(const Alloc& a = Alloc ());
-            concurrent_queue(const concurrent_queue& src,
-                             const Alloc& a = Alloc());
-            template<typename InputIterator>
-            concurrent_queue(InputIterator first, InputIterator last,
-                             const Alloc& a = Alloc());
-            ~concurrent_queue();
-     
-            void push( const T& source );
-            bool try_pop T& destination );
-            void clear() ;
-     
-            size_type unsafe_size() const;
-            bool empty() const;
-            Alloc get_allocator() const;
-     
-            typedef implementation-defined iterator;
-            typedef implementation-defined const_iterator;
-     
-            // iterators (these are slow and intended only for debugging)
-            iterator unsafe_begin();
-            iterator unsafe_end();
-            const_iterator unsafe_begin() const;
-            const_iterator unsafe_end() const;
-        };
-    }</pre> 
-		<p>In Intel® Threading Building Blocks (Intel® TBB) 2.1, a 
-		  <samp class="codeph">concurrent_queue</samp> could be bounded. Intel® TBB 2.2
-		  moves this functionality to 
-		  <samp class="codeph">concurrent_bounded_queue</samp>. Compile with 
-		  <samp class="codeph">TBB_DEPRECATED=1</samp> to restore the old functionality, or
-		  (recommended) use 
-		  <samp class="codeph">concurrent_bounded_queue</samp> instead. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d39293e275">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d39293e278">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">concurrent_queue( const Alloc&
-						a = Alloc () )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Constructs empty queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">concurrent_queue( const
-						concurrent_queue& src, const Alloc& a = Alloc() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Constructs a copy of 
-						<em>src</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">template<typename
-						InputIterator> concurrent_queue( InputIterator first, InputIterator last,
-						const Alloc& a = Alloc() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Constructs a queue containing copies of elements in the
-						iterator half-open interval [<em>first,last</em>). 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">~concurrent_queue()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Destroys all items in the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">void push( const T& source
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Pushes a copy of 
-						<samp class="codeph">source</samp> onto back of the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">bool try_pop ( T& destination
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>If value is available, pops it from the queue, assigns it to
-						destination, and destroys the original value. Otherwise does nothing. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: True if value was popped; false otherwise. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p><samp class="codeph">try_pop</samp> was called 
-						  <samp class="codeph">pop_if_present</samp> in Intel® TBB 2.1. Compile
-						  with 
-						  <samp class="codeph">TBB_DEPRECATED=1</samp> to use the old name. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p>Clears the queue. Afterwards 
-						<samp class="codeph">size()==0</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">size_type unsafe_size()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p>Number of items in the queue. If there are concurrent
-						modifications in flight, the value might not reflect the actual number of items
-						in the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">bool empty() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp> if queue has no items; false otherwise.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e275 "><span class="keyword">Alloc get_allocator()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e278 "> 
-					 <p><strong>Returns</strong>: Copy of allocator used to construct the
-						queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Iterators</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_queue</samp> provides limited iterator support
-		  that is intended solely to allow programmers to inspect a queue during
-		  debugging. It provides iterator and const_iterator types. Both follow the usual
-		  STL conventions for forward iterators. The iteration order is from least
-		  recently pushed to most recently pushed. Modifying a 
-		  <samp class="codeph">concurrent_queue</samp> invalidates any iterators that
-		  reference it. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The iterators are relatively slow. They should be used only for
-			 debugging. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The following program builds a queue with the integers 0..9, and then
-		  dumps the queue to standard output. Its overall effect is to print 0 1 2 3 4 5
-		  6 7 8 9. 
-		</p>
- 
-		<pre>#include "tbb/concurrent_queue.h"
-#include <iostream>
- 
-using namespace std;
-using namespace tbb;
- 
-int main() {
-    concurrent_queue<int> queue;
-    for( int i=0; i<10; ++i )
-        queue.push(i);
-    typedef concurrent_queue<int>::iterator iter;
-    for(iter i(queue.unsafe_begin()); i!=queue.unsafe_end(); ++i)
-        cout << *i << " ";
-    cout << endl;
-    return 0;
- 
-}
-
-</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d39293e517">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d39293e520">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e517 "><span class="keyword">iterator unsafe_begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e520 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to beginning of the queue.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e517 "><span class="keyword">iterator unsafe_end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e520 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to end of the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e517 "><span class="keyword">const_iterator unsafe_begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e520 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> with pointing to beginning of
-						the queue. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d39293e517 "><span class="keyword"></span><samp class="codeph">const_iterator</samp> unsafe_end()
-					 const 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d39293e520 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to end of the queue.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls.htm
deleted file mode 100755
index 8c8dbfd..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls.htm
+++ /dev/null
@@ -1,472 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_unordered_map and concurrent_unordered_multimap Template Classes">
-<meta name="DC.subject" content="concurrent_unordered_map, concurrent_unordered_multimap">
-<meta name="keywords" content="concurrent_unordered_map, concurrent_unordered_multimap">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_unordered_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_unordered_map and concurrent_unordered_multimap Template Classes</title>
-</head>
-<body id="concurrent_unordered_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_unordered_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1"><samp class="codeph">concurrent_unordered_map</samp> and 
-	 <samp class="codeph">concurrent_unordered_multimap</samp> Template Classes</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template classes for associative containers that
-		  supports concurrent insertion and traversal. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename Key, 
-         typename Element, 
-         typename Hasher = tbb_hash<Key>, 
-         typename Equality = std::equal_to<Key >, 
-         typename Allocator = tbb::tbb_allocator<std::pair<const Key, Element > > > 
-class concurrent_unordered_map;</pre> 
-		<pre>template <typename Key, 
-         typename Element, 
-         typename Hasher = tbb_hash<Key>, 
-         typename Equality = std::equal_to<Key >, 
-         typename Allocator = tbb::tbb_allocator<std::pair<const Key, Element > > > 
-class concurrent_unordered_multimap;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_unordered_map.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p><samp class="codeph">concurrent_unordered_map</samp> and 
-		  <samp class="codeph">concurrent_unordered_multimap</samp> support concurrent
-		  insertion and traversal, but not concurrent erasure. The interfaces have no
-		  visible locking. They may hold locks internally, but never while calling
-		  user-defined code. They have semantics similar to the C++11 
-		  <samp class="codeph">std::unordered_map</samp> and 
-		  <samp class="codeph">std::unordered_multimap</samp> respectively, except as
-		  follows: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Some methods requiring C++11 language features (such
-				as rvalue references and 
-				<samp class="codeph">std::initializer_list</samp>) are omitted. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The 
-				<samp class="codeph">erase</samp> methods are prefixed with 
-				<samp class="codeph">unsafe_</samp>, to indicate that they are not concurrency
-				safe. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Bucket methods are prefixed with 
-				<samp class="codeph">unsafe_</samp> as a reminder that they are not
-				concurrency safe with respect to insertion. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The insert methods may create a temporary pair
-				that is destroyed if another thread inserts the same key concurrently. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Like 
-				<samp class="codeph">std::list</samp>, insertion of new items does 
-				<em>not</em> invalidate any iterators, nor change the order of items
-				already in the map. Insertion and traversal may be concurrent. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The iterator types 
-				<samp class="codeph">iterator</samp> and 
-				<samp class="codeph">const_iterator</samp> are of the forward iterator
-				category. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Insertion does not invalidate or update the
-				iterators returned by 
-				<samp class="codeph">equal_range</samp>, so insertion may cause non-equal
-				items to be inserted at the end of the range. However, the first iterator will
-				nonethless point to the equal item even after an insertion operation. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The following table lists the key differences between classes 
-		  <samp class="codeph">concurrent_unordered_map</samp> and 
-		  <samp class="codeph">concurrent_hash_map</samp> and 
-		  <samp class="codeph">concurrent_unordered_multimap</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="37.453183520599254%" id="d41040e170"> 
-					 <p>Class 
-					 </p>
- 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="62.546816479400746%" id="d41040e176">Key Difference 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="37.453183520599254%" headers="d41040e170 "> 
-					 <p><samp class="codeph">concurrent_hash_map</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="62.546816479400746%" headers="d41040e176 "> 
-					 <p>Permits concurrent erasure, and has built-in locking 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="37.453183520599254%" headers="d41040e170 "> 
-					 <p><samp class="codeph">concurrent_unordered_map</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="62.546816479400746%" headers="d41040e176 "> 
-					 <ul type="disc"> 
-						<li> 
-						  <p>Permits concurrent traversal and insertion, no visible
-							 locking, closely resembles the C++11 unordered_map. 
-						  </p>
- 
-						</li>
- 
-						<li> 
-						  <p> Has the 
-							 <samp class="codeph">[ ]</samp> and 
-							 <samp class="codeph">at</samp> accessors. 
-						  </p>
- 
-						</li>
- 
-					 </ul>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="37.453183520599254%" headers="d41040e170 "> 
-					 <p><samp class="codeph">concurrent_unordered_multimap</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="62.546816479400746%" headers="d41040e176 "> 
-					 <ul type="disc"> 
-						<li> 
-						  <p> More than one 
-							 <samp class="codeph"><key,value></samp> pair with the same 
-							 <samp class="codeph">key</samp> value may be inserted in 
-							 <samp class="codeph">concurrent_unordered_multimap</samp>. 
-						  </p>
- 
-						</li>
- 
-						<li> 
-						  <p><samp class="codeph">find</samp> will return the
-							 first 
-							 <samp class="codeph"><key,value></samp> pair with a matching
-							 key at the point the search is made, though concurrent accesses to the
-							 container may insert other pairs with the same key before the one returned. 
-						  </p>
- 
-						</li>
- 
-					 </ul>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>As with any form of hash table, keys that are
-			 equal must have the same hash code, and the ideal hash function distributes
-			 keys uniformly across the hash code space. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of both concurrent_unordered_map
-		  and concurrent_unordered_multimap</h2> 
-		 
-		<p>In the following synopsis, methods shown in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>
-		  may be concurrently invoked. For example, three different threads can
-		  concurrently call methods 
-		  <samp class="codeph">insert</samp>, 
-		  <samp class="codeph">begin</samp>, and 
-		  <samp class="codeph">size</samp>. Their results might be non-deterministic. For
-		  example, the result from size might correspond to before or after the
-		  insertion. 
-		</p>
- 
-		<pre>
-public:
-    <em>// types</em>
-    typedef Key key_type;
-    typedef std::pair<const Key, T> value_type;
-    typedef Element mapped_type;
-    typedef Hash hasher;
-    typedef Equality key_equal;
-    typedef Alloc allocator_type;
-    typedef typename allocator_type::pointer pointer;
-    typedef typename allocator_type::const_pointer const_pointer;
-    typedef typename allocator_type::reference reference;
-    typedef typename allocator_type::const_reference const_reference;
-    typedef <em>implementation-defined</em> size_type;
-    typedef <em>implementation-defined</em> difference_type;
-    typedef <em>implementation-defined</em> iterator;
-    typedef <em>implementation-defined</em> const_iterator;
-    typedef <em>implementation-defined</em> local_iterator;
-    typedef <em>implementation-defined</em> const_local_iterator;
-    
-    allocator_type get_allocator() const;
-    
-    <em>// size and capacity</em>
-    bool <span style="color:blue"><strong>empty()</strong></span> const;     <em>// May take linear time!</em>
-    size_type <span style="color:blue"><strong>size()</strong></span> const; <em>// May take linear time!</em>
-    size_type max_size() const;
-    
-    <em>// iterators</em> 
-    iterator <span style="color:blue"><strong>begin()</strong></span>;
-    const_iterator <span style="color:blue"><strong>begin()</strong></span> const;
-    iterator <span style="color:blue"><strong>end()</strong></span>;
-    const_iterator <span style="color:blue"><strong>end()</strong></span> const;
-    const_iterator <span style="color:blue"><strong>cbegin()</strong></span> const;
-    const_iterator <span style="color:blue"><strong>cend()</strong></span> const;
-    
-    <em>// modifiers</em>
-    std::pair<iterator, bool> <span style="color:blue"><strong>insert</strong></span>(const value_type& x);
-    iterator <span style="color:blue"><strong>insert</strong></span>(const_iterator hint, const value_type& x);
-    template<class InputIterator> void <span style="color:blue"><strong>insert</strong></span>(InputIterator first, 
-                                                    InputIterator last);
- 
-    iterator unsafe_erase(const_iterator position);
-    size_type unsafe_erase(const key_type& k);
-    iterator unsafe_erase(const_iterator first, const_iterator last);
-    void clear();
- 
-    <em>// observers</em>
-    hasher hash_function() const;
-    key_equal key_eq() const;
- 
-    <em>// lookup</em>
-    iterator <span style="color:blue"><strong>find</strong></span>(const key_type& k);
-    const_iterator <span style="color:blue"><strong>find</strong></span>(const key_type& k) const;
-    size_type <span style="color:blue"><strong>count</strong></span>(const key_type& k) const;
-    std::pair<iterator, iterator> <span style="color:blue"><strong>equal_range</strong></span>(const key_type& k);
-    std::pair<const_iterator, const_iterator> <span style="color:blue"><strong>equal_range</strong></span>(const key_type& k) const;
- 
-    <em>// parallel iteration</em>
-    typedef <em>implementation-defined</em> range_type;
-    typedef <em>implementation-defined</em> const_range_type;
-    range_type range();
-    const_range_type range() const;
-
-    <em>// bucket interface - for debugging</em> 
-    size_type unsafe_bucket_count() const;
-    size_type unsafe_max_bucket_count() const;
-    size_type unsafe_bucket_size(size_type n);
-    size_type unsafe_bucket(const key_type& k) const;
-    local_iterator unsafe_begin(size_type n);
-    const_local_iterator unsafe_begin(size_type n) const;
-    local_iterator unsafe_end(size_type n);
-    const_local_iterator unsafe_end(size_type n) const;
-    const_local_iterator unsafe_cbegin(size_type n) const;
-    const_local_iterator unsafe_cend(size_type n) const;
- 
-    <em>// hash policy</em>
-    float load_factor() const;
-    float max_load_factor() const;
-    void max_load_factor(float z);
-    void rehash(size_type n);
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of concurrent_unordered_map</h2> 
-		
-		
-		<p>In the following synopsis, methods in bold may be
-		  concurrently invoked. 
-		</p>
- 
-		<pre>
-public:
-    <em>// construct/destroy/copy</em>
-    explicit concurrent_unordered_map(size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    template <typename InputIterator>
-    concurrent_unordered_map(
-                       InputIterator first, InputIterator last,
-                       size_type n = <em>implementation-defined</em>,
-                       const hasher& hf = hasher(),
-                       const key_equal& eql = key_equal(),
-                       const allocator_type& a = allocator_type());
-    concurrent_unordered_map(const concurrent_unordered_map&);
-    concurrent_unordered_map(const Alloc&);
-    concurrent_unordered_map(const concurrent_unordered_map&, const Alloc&);
-    <em>//C++11 specific</em> 
-    concurrent_unordered_map(const std::initializer_list<value_type> &il, 
-               size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    ~concurrent_unordered_map();
-    
-    concurrent_unordered_map& operator=( const concurrent_unordered_map&);
-    <em>//C++11 specific</em>
-    concurrent_unordered_map& operator=( const std::initializer_list<value_type> &il);
-    
-    void swap(concurrent_unordered_map&);
- 
-    mapped_type& <span style="color:blue"><strong>operator[]</strong></span>(const key_type& k);
-    mapped_type& <span style="color:blue"><strong>at</strong></span>( const key_type& k );
-    const mapped_type& <span style="color:blue"><strong>at</strong></span>(const key_type& k) const;
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of
-		  concurrent_unordered_multimap</h2> 
-		 
-		<pre>
-public:
-    <em>// construct/destroy/copy</em>
-    explicit concurrent_unordered_multimap(size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    template <typename InputIterator>
-    concurrent_unordered_multimap(
-                       InputIterator first, InputIterator last,
-                       size_type n = <em>implementation-defined</em>,
-                       const hasher& hf = hasher(),
-                       const key_equal& eql = key_equal(),
-                       const allocator_type& a = allocator_type());
-    concurrent_unordered_multimap(const concurrent_unordered_multimap&);
-    concurrent_unordered_multimap(const Alloc&);
-    concurrent_unordered_multimap(const concurrent_unordered_multimap&, const Alloc&);
-    <em>//C++11 specific</em> 
-    concurrent_unordered_multimap(const std::initializer_list<value_type> &il, 
-               size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    ~concurrent_unordered_multimap();
-    
-    concurrent_unordered_multimap& operator=( const concurrent_unordered_multimap&);
-    <em>//C++11 specific</em>
-    concurrent_unordered_multimap& operator=( const std::initializer_list<value_type> &il);
-    
-    void swap(concurrent_unordered_multimap&);
-</pre> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm">Construct, Destroy, Copy</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm">Size and capacity</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm">Iterators</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm">Modifiers</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm">Observers</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm">Lookup</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm">Parallel Iteration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm">Bucket Interface</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm">Hash Policy</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="concurrent_hash_map_cls.htm">concurrent_hash_map 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm
deleted file mode 100755
index a13571b..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/bucket_interface_map_cls.htm
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Bucket Interface">
-<meta name="DC.subject" content="Bucket Interface">
-<meta name="keywords" content="Bucket Interface">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="bucket_interface_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Bucket Interface</title>
-</head>
-<body id="bucket_interface_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="bucket_interface_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Bucket Interface</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p> The bucket interface is similar to the bucket
-		  interface for the C++11 class 
-		  <samp class="codeph">unordered_map</samp> and 
-		  <samp class="codeph">unordered_multimap</samp>, except that the prefix 
-		  <samp class="codeph">unsafe_</samp> has been added as a reminder that the methods
-		  are unsafe to use during concurrent insertion. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The bucket interface is intended for debugging.
-			 It is not concurrency safe. 
-		  </p>
-
-		  <p>The mapping of keys to buckets is implementation specific.
-		  </p>
-
-		</div> 
-		<p>Buckets are numbered from 0 to<samp class="codeph">
-			 unsafe_bucket_count()-1</samp>. To iterate over a bucket use a 
-		  <samp class="codeph">local_iterator</samp> or 
-		  <samp class="codeph">const_local_iterator</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d42223e64">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d42223e67">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">size_type unsafe_bucket_count()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: Number of buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">size_type
-						unsafe_max_bucket_count() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: Upper bound on possible
-						number of buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">size_type
-						unsafe_bucket_size(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: Number of items in bucket
-						
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">size_type unsafe_bucket(const
-						key_type& k) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: Index of bucket where
-						item with key 
-						<em>k</em> would be placed. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">local_iterator
-						unsafe_begin(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">local_iterator</samp> pointing to first item in
-						bucket 
-						<em>n</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">const_local_iterator
-						unsafe_begin(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to first item
-						in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">local_iterator
-						unsafe_end(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">local_iterator</samp> pointing to immediately after
-						the last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">const_local_iterator
-						unsafe_end(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong> 
-						<samp class="codeph">const_local_iterator</samp> pointing to immediately
-						after the last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">const_local_iterator
-						unsafe_cbegin(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to first item
-						in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d42223e64 "><span class="keyword">const_local_iterator
-						unsafe_cend(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d42223e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to immediately
-						past last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm
deleted file mode 100755
index af0c025..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/construct_destroy_copy_map_cls.htm
+++ /dev/null
@@ -1,399 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Construct, Destroy, Copy">
-<meta name="DC.subject" content="Construct, Destroy, Copy">
-<meta name="keywords" content="Construct, Destroy, Copy">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="construct_destroy_copy_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Construct, Destroy, Copy</title>
-</head>
-<body id="construct_destroy_copy_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="construct_destroy_copy_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Construct, Destroy, Copy</h1>
- 
-   
-  <div> 
-  <div class="section">
-		The following tables provide information on the members of the <samp class="codeph">concurrent_unordered_map</samp>
-                and <samp class="codeph">concurrent_unordered_multimap</samp> template classes. 
-  </div>
-
-  <div class="section"><h2 class="sectiontitle"> <samp class="codeph">concurrent_unordered_map</samp> </h2>
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="50.632911392405056%" id="d43089e42">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="49.36708860759494%" id="d43089e45">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">explicit concurrent_unordered_map
-					 (size_type n = <em><implementation-defined></em>, const hasher& hf = hasher(),const
-					 key_equal& eql = key_equal(), const allocator_type& a =
-					 allocator_type())</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Construct table with 
-					 <samp class="codeph">n</samp> buckets. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">template <typename
-					 InputIterator> concurrent_unordered_map (InputIterator first, InputIterator
-					 last, size_type n = <em><implementation-defined></em>, const hasher& hf =
-					 hasher(), const key_equal& eql = key_equal(), const allocator_type& a =
-					 allocator_type())</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Construct table with 
-					 <samp class="codeph">n</samp> buckets initialized with 
-					 <samp class="codeph">value_type(*<em>i</em>)</samp> where 
-					 <samp class="codeph"><em>i</em></samp> is in the half open interval
-					 <samp class="codeph">[first,last)</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map(const
-					 concurrent_unordered_map& m)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Construct copy of concurrent_unordered_map 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map(const
-					 Alloc& a)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Construct empty concurrent_unordered_map using allocator 
-					 <samp class="codeph">a</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map(const
-					 concurrent_unordered_map&, const Alloc& a)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Construct copy of concurrent_unordered_map 
-					 <samp class="codeph">m</samp> using allocator 
-					 <samp class="codeph">a</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-             <tr> 
-                <td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map(
-                    const std::initializer_list<value_type> &il, 
-                    size_type n = <em>implementation-defined</em>,
-                    const Hasher& hf = hasher(),
-                    const key_equal& eql = key_equal(),
-                    const allocator_type& a = allocator_type())</samp> 
-                </td>
- 
-                <td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-                  <p>C++11 specific; Equivalent to 
-                        <samp class="codeph">concurrent_unordered_map(<em>il</em>.begin(), 
-                          <em>il</em>.end(), 
-                          <em>a</em>)</samp>. 
-                  </p>
- 
-                </td>
- 
-             </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">~concurrent_unordered_map()</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Destroy the concurrent_unordered_map. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map&
-					 operator=(const concurrent_unordered_map& m);</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Set 
-					 <samp class="codeph">*this</samp> to a copy of concurrent_unordered_map 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-             <tr> 
-                <td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">concurrent_unordered_map&
-                     operator=(const std::initializer_list<value_type> &il);</samp> 
-                </td>
- 
-                <td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-                  <p>C++11 specific; Sets 
-                        <samp class="codeph">*<em>this</em></samp> 
-                        to contain data from
-                        <samp class="codeph">il</samp>.
-                  </p>
- 
-                </td>
- 
-             </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e42 "><samp class="codeph">allocator_type get_allocator()
-					 const; 
-				  </samp>
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e45 "> 
-				  <p>Get copy of the allocator associated with 
-					 <samp class="codeph">*this</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-         </div>
-
-      <div class="section"><h2 class="sectiontitle"> <samp class="codeph">concurrent_unordered_multimap</samp> </h2>
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="50.632911392405056%" id="d43089e281">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="49.36708860759494%" id="d43089e284">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">explicit concurrent_unordered_multimap
-					 (size_type n = <em><implementation-defined></em>, const hasher& hf = hasher(),const
-					 key_equal& eql = key_equal(), const allocator_type& a =
-					 allocator_type())</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Construct table with 
-					 <samp class="codeph">n</samp> buckets. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">template <typename
-					 InputIterator> concurrent_unordered_multimap (InputIterator first, InputIterator
-					 last, size_type n = <em><implementation-defined></em>, const hasher& hf =
-					 hasher(), const key_equal& eql = key_equal(), const allocator_type& a =
-					 allocator_type())</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Construct table with 
-					 <samp class="codeph">n</samp> buckets initialized with 
-					 <samp class="codeph">value_type(*<em>i</em>)</samp> where 
-					 <samp class="codeph"><em>i</em></samp> is in the half open interval
-					 <samp class="codeph">[first,last)</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap(const
-					 concurrent_unordered_multimap& m)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Construct copy of concurrent_unordered_multimap 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap(const
-					 Alloc& a)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Construct empty concurrent_unordered_multimap using allocator 
-					 <samp class="codeph">a</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap(const
-					 concurrent_unordered_multimap&, const Alloc& a)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Construct copy of concurrent_unordered_multimap 
-					 <samp class="codeph">m</samp> using allocator 
-					 <samp class="codeph">a</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-             <tr> 
-                <td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap(
-                    const std::initializer_list<value_type> &il, 
-                    size_type n = <em>implementation-defined</em>,
-                    const Hasher& hf = hasher(),
-                    const key_equal& eql = key_equal(),
-                    const allocator_type& a = allocator_type())</samp> 
-                </td>
- 
-                <td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-                  <p>C++11 specific; Equivalent to 
-                        <samp class="codeph">concurrent_unordered_multimap(<em>il</em>.begin(), 
-                          <em>il</em>.end(), 
-                          <em>a</em>)</samp>. 
-                  </p>
- 
-                </td>
- 
-             </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">~concurrent_unordered_multimap()</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Destroy the concurrent_unordered_multimap. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap&
-					 operator=(const concurrent_unordered_multimap& m);</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Set 
-					 <samp class="codeph">*this</samp> to a copy of concurrent_unordered_multimap 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-             <tr> 
-                <td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">concurrent_unordered_multimap&
-                     operator=(const std::initializer_list<value_type> &il);</samp> 
-                </td>
- 
-                <td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-                  <p>C++11 specific; Sets 
-                        <samp class="codeph">*<em>this</em></samp> 
-                        to contain data from
-                        <samp class="codeph">il</samp>. 
-                  </p>
- 
-                </td>
- 
-             </tr>
- 			 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50.632911392405056%" headers="d43089e281 "><samp class="codeph">allocator_type get_allocator()
-					 const; 
-				  </samp>
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="49.36708860759494%" headers="d43089e284 "> 
-				  <p>Get copy of the allocator associated with 
-					 <samp class="codeph">*this</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-         </div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm
deleted file mode 100755
index 5b5874a..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/container_iterators_map_cls.htm
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="container_iterators_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="container_iterators_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="container_iterators_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>The template classes
-		  <samp class="codeph">concurrent_unordered_map</samp> and
-		  <samp class="codeph">concurrent_unordered_multimap</samp>
-                  support forward iterators;
-		  that is, iterators that can advance only forwards across a table. Reverse
-		  iterators are not supported. Concurrent operations (<samp class="codeph">count, find,
-			 insert</samp>) do 
-		  <em>not</em> invalidate any existing iterators that point into the table.
-		  Note that an iterator obtained via 
-		  <samp class="codeph">begin()</samp> will no longer point to the first item if 
-		  <samp class="codeph">insert</samp> inserts an item before it. 
-		  Erasure (<samp class="codeph">unsafe_erase</samp>) does <em>not</em> invalidate iterators
-		  other than those pointing to erased elements.
-		</p>
- 
-		<p>Methods 
-		  <samp class="codeph">cbegin</samp> and 
-		  <samp class="codeph">cend</samp> follow C++11 conventions. They return 
-		  <samp class="codeph">const_iterator</samp> even if the object is non-const. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d44622e71">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d44622e74">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">iterator begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to first item in the map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to first item in the
-						map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">iterator end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p><samp class="codeph">iterator</samp> pointing to
-						immediately past last item in the map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">const_iterator end()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to immediately past
-						last item in the map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">const_iterator cbegin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to first item in the
-						map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d44622e71 "><span class="keyword">const_iterator cend()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d44622e74 "> 
-					 <p><strong>Returns</strong> 
-					 </p>
- 
-					 <p><samp class="codeph">const_iterator</samp> pointing
-						to immediately after the last item in the map. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm
deleted file mode 100755
index c686ed5..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/hash_policy_map_cls.htm
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Hash Policy">
-<meta name="DC.subject" content="Hash policy">
-<meta name="keywords" content="Hash policy">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="hash_policy_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Hash Policy</title>
-</head>
-<body id="hash_policy_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="hash_policy_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Hash Policy</h1>
- 
-   
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d45200e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d45200e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45200e29 "><span class="keyword">float load_factor() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45200e32 "> 
-				  <p><strong>Returns</strong>: Average number of elements per bucket. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45200e29 "><span class="keyword">float max_load_factor()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45200e32 "> 
-				  <p><strong>Returns</strong>: Maximum size of a bucket. If insertion of an
-					 item causes a bucket to be bigger, the implementation may repartition or
-					 increase the number of buckets. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45200e29 "><span class="keyword">void max_load_factor(float
-					 z)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45200e32 "> 
-				  <p>Set maximum size for a bucket to 
-					 <samp class="codeph"><em>z</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45200e29 "><span class="keyword">void rehash(size_type n)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45200e32 "> 
-				  <p><strong>Requirements</strong>: 
-					 <samp class="codeph"><em>n</em></samp> must be a power of two. 
-				  </p>
- 
-				  <p><strong>Effects</strong>: No effect if current number of buckets is at
-					 least 
-					 <samp class="codeph"><em>n</em></samp>. Otherwise increases number of
-					 buckets to 
-					 <samp class="codeph"><em>n</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 <div class="section"> 
-		 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm
deleted file mode 100755
index 193f77f..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/lookup_map_cls.htm
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Lookup">
-<meta name="DC.subject" content="Lookup">
-<meta name="keywords" content="Lookup">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="lookup_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Lookup</title>
-</head>
-<body id="lookup_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="lookup_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Lookup</h1>
- 
-   
-  <div> 
-        <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of the template classes
-                  <samp class="codeph">concurrent_unordered_map</samp> and
-                  <samp class="codeph">concurrent_unordered_multimap</samp>
-                  . 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d45586e37">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d45586e40">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e37 "><samp class="codeph">iterator find(const key_type&
-					 k)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e40 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">iterator</samp> pointing to item with key equivalent
-					 to 
-					 <samp class="codeph">k</samp>, or 
-					 <samp class="codeph">end()</samp> if no such item exists. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e37 "><samp class="codeph">const_iterator find(const
-					 key_type& k) const</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e40 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to item with key
-					 equivalent to 
-					 <samp class="codeph">k</samp>, or 
-					 <samp class="codeph">end()</samp> if no such item exists. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e37 "><samp class="codeph">size_type count(const key_type&
-					 k) const</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e40 "> 
-				  <p><strong>Returns</strong>: Number of items with keys
-					 equivalent to 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e37 "><samp class="codeph">std::pair<iterator, iterator>
-					 equal_range(const key_type& k)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e40 "> 
-				  <p><strong>Returns</strong>: Range containing all keys
-					 in the map that are equivalent to 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e37 "><samp class="codeph">std::pair<const_iterator,
-					 const_iterator> equal_range(const key_type& k) const</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e40 "> 
-				  <p><strong>Returns</strong> 
-				  </p>
- 
-				  <p>Range containing all keys in the map that
-					 are equivalent to 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-         </div>
-
-         <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-                  only available in the <samp class="codeph">concurrent_unordered_map</samp> template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d45586e177">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d45586e180">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-                 <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e177 "><samp class="codeph">mapped_type& operator[](const
-					 key_type& k)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e180 "> 
-				  <p>Inserts a new item if item with key
-					 equivalent to 
-					 <samp class="codeph">k</samp> is not already present. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: Reference to 
-					 <samp class="codeph">x.second</samp> , where 
-					 <samp class="codeph">x</samp> is item in map with key equivalent to
-					 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e177 "><samp class="codeph">mapped_type& at( const
-					 key_type& k )</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e180 "> 
-				  <p>Throws exception if item with key
-					 equivalent to 
-					 <samp class="codeph">k</samp> is not already present. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: Reference to 
-					 <samp class="codeph">x.second</samp>, where 
-					 <samp class="codeph">x</samp> is the item in map with key equivalent to 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d45586e177 "><samp class="codeph">const mapped_type& at(const
-					 key_type& k) const</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d45586e180 "> 
-				  <p>Throws exception if item with key
-					 equivalent to 
-					 <samp class="codeph">k</samp> is not already present. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: Const reference to 
-					 <samp class="codeph">x.second</samp>, where 
-					 <samp class="codeph">x</samp> is the item in map with key
-					 equivalent to 
-					 <samp class="codeph">k</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-         </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm
deleted file mode 100755
index 0da50fb..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/modifiers_map_cls.htm
+++ /dev/null
@@ -1,279 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Modifiers">
-<meta name="DC.subject" content="Modifiers">
-<meta name="keywords" content="Modifiers">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="modifiers_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Modifiers</title>
-</head>
-<body id="modifiers_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="modifiers_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Modifiers</h1>
- 
-   
-  <div> 
-      <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of the 
-                  <samp class="codeph">concurrent_unordered_map</samp> and
-                  <samp class="codeph">concurrent_unordered_multimap</samp>
-                  template classes. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d46377e37">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d46377e40">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph"> std::pair<iterator, bool>
-					 insert(const value_type& x)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Constructs copy of 
-					 <samp class="codeph">x</samp> and attempts to insert it into the
-					 map. Destroys the copy if the attempt fails because there was already an item
-					 with the same key. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">std::pair(iterator,success)</samp>. The value 
-					 <samp class="codeph">iterator</samp> points to an item in the map with a matching
-					 key. The value of 
-					 <samp class="codeph">success</samp> is true if the item was inserted; false
-					 otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">iterator insert(const_iterator hint,
-					 const value_type& x)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Same as 
-					 <samp class="codeph">insert(x)</samp>. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-					 <p>The current implementation ignores the
-						hint argument. Other implementations might not ignore it. It exists for
-						similarity with the C++11 class 
-						<samp class="codeph">unordered_map</samp>. It hints to the
-						implementation about where to start searching. Typically it should point to an
-						item adjacent to where the item will be inserted. 
-					 </p>
- 
-				  </div> 
-				  <p><strong>Returns</strong>: Iterator pointing to
-					 inserted item, or item already in the map with the same key. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">template<class InputIterator>
-					 void insert(InputIterator first, InputIterator last)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Does 
-					 <samp class="codeph">insert(*<em>i</em>)</samp> where 
-					 <samp class="codeph">i</samp> is in the half-open interval
-					 <samp class="codeph">[first,last)</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">iterator unsafe_erase(const_iterator
-					 position)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Removes the item pointed to by 
-					 <samp class="codeph">position</samp> from the map. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: Iterator pointing to item
-					 that was immediately after the erased item, or 
-					 <samp class="codeph">end()</samp> if erased item was the last item in the
-					 map. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">size_type unsafe_erase(const
-					 key_type& k)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Removes item with key 
-					 <samp class="codeph">k</samp> if such an item exists. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 1 if an item was removed; 0
-					 otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">iterator unsafe_erase(const_iterator
-					 first, const_iterator last)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Removes 
-					 <samp class="codeph">*i</samp> where 
-					 <samp class="codeph">i</samp> is in the half-open interval<samp class="codeph">
-						[first,last)</samp> .
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">last</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e37 "><samp class="codeph">void clear()</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e40 "> 
-				  <p>Remove all items from the map. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-      </div>
-
-      <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on 
-		  the <samp class="codeph">concurrent_unordered_map</samp> template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d46377e248">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d46377e251">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e248 "><samp class="codeph">void
-					 swap(concurrent_unordered_map& m)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e251 "> 
-				  <p>Swaps contents of 
-					 <samp class="codeph">*this</samp> and 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-      </div>
-
-      <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on 
-		  the <samp class="codeph">concurrent_unordered_multimap</samp> template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d46377e298">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d46377e301">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d46377e298 "><samp class="codeph">void
-					 swap(concurrent_unordered_multimap& m)</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d46377e301 "> 
-				  <p>Swaps contents of 
-					 <samp class="codeph">*this</samp> and 
-					 <samp class="codeph">m</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-      </div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm
deleted file mode 100755
index 993818d..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/observers_map_cls.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Observers">
-<meta name="DC.subject" content="Observers">
-<meta name="keywords" content="Observers">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="observers_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Observers</title>
-</head>
-<body id="observers_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="observers_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Observers</h1>
- 
-  
-  <div> 
-      <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of the
-                  <samp class="codeph">concurrent_unordered_map</samp> and
-                  <samp class="codeph">concurrent_unordered_multimap</samp>
-                  template classes. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d47277e37">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d47277e40">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47277e37 "><samp class="codeph">hasher hash_function()
-					 const()</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47277e40 "> 
-				  <p><strong>Returns</strong>: Hashing functor associated
-					 with the map.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47277e37 "><samp class="codeph">key_equal key_eq() const</samp> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47277e40 "> 
-				  <p><strong>Returns</strong>: Key equivalence functor
-					 associated with the map.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-      </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm
deleted file mode 100755
index 5acc66f..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/parallel_iteration_map_cls.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Parallel Iteration">
-<meta name="DC.subject" content="Parallel Iteration">
-<meta name="keywords" content="Parallel Iteration">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../container_range_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_literation_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Parallel Iteration</title>
-</head>
-<body id="parallel_literation_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_literation_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallel Iteration</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p>Types 
-		  <samp class="codeph">const_range_type</samp> and 
-		  <samp class="codeph">range_type</samp> model the Container Range concept. The
-		  types differ only in that the bounds for a 
-		  <samp class="codeph">const_range_type</samp> are of type 
-		  <samp class="codeph">const_iterator</samp>, whereas the bounds for a 
-		  <samp class="codeph">range_type</samp> are of type iterator.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d47499e49">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d47499e52">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47499e49 "><samp class="codeph">const_range_type range()
-						const</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47499e52 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_range_type</samp> object representing all
-						keys in the table. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47499e49 "><samp class="codeph">range_type range()</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47499e52 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">range_type</samp> object representing all keys in
-						the table.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../container_range_concept.htm">Container Range
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm
deleted file mode 100755
index 73b5ecf..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_map_cls/size_and_capacity_map_cls.htm
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Size and capacity">
-<meta name="DC.subject" content="Size and Capacity">
-<meta name="keywords" content="Size and Capacity">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="size_and_capacity_map_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Size and capacity</title>
-</head>
-<body id="size_and_capacity_map_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="size_and_capacity_map_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Size and capacity</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of the 
-			 <samp class="codeph">concurrent_unordered_map</samp> and 
-			 <samp class="codeph">concurrent_unordered_multimap</samp> template classes. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d47765e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d47765e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47765e37 "><samp class="codeph">bool empty() const</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47765e40 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">size()!=0.</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47765e37 "><samp class="codeph">size_type size() const</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47765e40 "> 
-					 <p><strong>Returns</strong>: Number of items in 
-						<samp class="codeph">*this</samp>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>Though the current implementation takes
-						  time 
-						  <samp class="codeph">O(1)</samp>, possible future implementations
-						  might take time 
-						  <samp class="codeph">O(P)</samp>, where 
-						  <samp class="codeph">P</samp> is the number of hardware threads. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d47765e37 "><samp class="codeph">size_type max_size() const</samp>
-					 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d47765e40 "> 
-					 <p><strong>Returns</strong>: Upper bound on number of
-						items that 
-						<samp class="codeph">*this</samp> can hold. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>The upper bound may be much higher than
-						  what the container can actually hold. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_map_cls.htm">concurrent_unordered_map and concurrent_unordered_multimap Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls.htm
deleted file mode 100755
index 038f5b8..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls.htm
+++ /dev/null
@@ -1,430 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_unordered_set and concurrent_unordered_multiset Template Classes">
-<meta name="DC.subject" content="concurrent_unordered_set, concurrent_unordered_multiset">
-<meta name="keywords" content="concurrent_unordered_set, concurrent_unordered_multiset">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_hash_map_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_unordered_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_unordered_set and concurrent_unordered_multiset Template Classes</title>
-</head>
-<body id="concurrent_unordered_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_unordered_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1"> 
-	 <samp class="codeph">concurrent_unordered_set</samp> and 
-	 <samp class="codeph">concurrent_unordered_multiset</samp> Template Classes</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template classes for set containers that supports
-		  concurrent insertion and traversal. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename Key, 
-          typename Hasher = tbb_hash<Key>, 
-          typename Equality = std::equal_to<Key>, 
-          typename Allocator = tbb::tbb_allocator<Key>
-class concurrent_unordered_set;</pre> 
-		<pre>template <typename Key, 
-          typename Hasher = tbb_hash<Key>, 
-          typename Equality = std::equal_to<Key>, 
-          typename Allocator = tbb::tbb_allocator<Key>
-class concurrent_unordered_multiset;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/concurrent_unordered_set.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p> 
-		  <samp class="codeph">concurrent_unordered_set</samp> and 
-		  <samp class="codeph">concurrent_unordered_multiset</samp> support concurrent
-		  insertion and traversal, but not concurrent erasure. The interfaces have no
-		  visible locking. They may hold locks internally, but never while calling
-		  user-defined code. They have semantics similar to the C++11 
-		  <samp class="codeph">std::unordered_set</samp> and 
-		  <samp class="codeph">std::unordered_multiset</samp> respectively except as
-		  follows: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Some methods requiring C++11 language features (such
-				as rvalue references and 
-				<samp class="codeph">std::initializer_list</samp>) are omitted. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The erase methods are prefixed with 
-				<samp class="codeph">unsafe_</samp>, to indicate that they are not concurrency
-				safe. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Bucket methods are prefixed with 
-				<samp class="codeph">unsafe_</samp> as a reminder that they are not
-				concurrency safe with respect to insertion. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>For 
-				<samp class="codeph">concurrent_unordered_set</samp>, 
-				<samp class="codeph">insert</samp> methods may create a temporary item that is
-				destroyed if another thread inserts the same item concurrently. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Like 
-				<samp class="codeph">std::list</samp>, insertion of new items does 
-				<em>not</em> invalidate any iterators, nor change the order of items
-				already in the map. Insertion and traversal may be concurrent. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The iterator types 
-				<samp class="codeph">iterator</samp> and 
-				<samp class="codeph">const_iterator</samp> are of the forward iterator
-				category. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Insertion does not invalidate or update the
-				iterators returned by 
-				<samp class="codeph">equal_range</samp>, so insertion may cause non-equal
-				items to be inserted at the end of the range. However, the first iterator will
-				nonetheless point to the found item even after an insertion operation. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="37.453183520599254%" id="d48088e163"> 
-					 <p>Class 
-					 </p>
- 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="62.546816479400746%" id="d48088e169">Key Difference 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="37.453183520599254%" headers="d48088e163 "> 
-					 <p><samp class="codeph">concurrent_unordered_set</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="62.546816479400746%" headers="d48088e169 "> 
-					 <p> An item may be inserted in 
-						<samp class="codeph">concurrent_unordered_set</samp> only once. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="37.453183520599254%" headers="d48088e163 "> 
-					 <p><samp class="codeph">concurrent_unordered_multiset</samp> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="62.546816479400746%" headers="d48088e169 "> 
-					 <ul type="disc"> 
-						<li> 
-						  <p> An item may be inserted in 
-							 <samp class="codeph">concurrent_unordered_multiset</samp> more than
-							 once. 
-						  </p>
- 
-						</li>
- 
-						<li> 
-						  <p><samp class="codeph">find</samp> will return the
-							 first item in the table with a matching search key, though concurrent accesses
-							 to the container may insert other other occurrences of the same item before the
-							 one returned. 
-						  </p>
- 
-						</li>
- 
-					 </ul>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>As with any form of hash table, keys that are
-			 equal must have the same hash code, and the ideal hash function distributes
-			 keys uniformly across the hash code space. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of 
-		  <samp class="codeph">concurrent_unordered_set</samp> and 
-		  <samp class="codeph">concurrent_unordered_multiset</samp></h2> 
-		 
-		<p>In the following synopsis, methods shown in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>
-		  may be concurrently invoked. For example, three different threads can
-		  concurrently call methods 
-		  <samp class="codeph">insert</samp>, 
-		  <samp class="codeph">begin</samp>, and 
-		  <samp class="codeph">size</samp>. Their results might be non-deterministic. For
-		  example, the result from size might correspond to before, or after the
-		  insertion. 
-		</p>
- 
-		<pre>
-public:
-    <em>// types</em>
-    typedef Key key_type;
-    typedef Key value_type;
-    typedef Key mapped_type;
-    typedef Hash hasher;
-    typedef Equality key_equal;
-    typedef Alloc allocator_type;
-    typedef typename allocator_type::pointer pointer;
-    typedef typename allocator_type::const_pointer const_pointer;
-    typedef typename allocator_type::reference reference;
-    typedef typename allocator_type::const_reference const_reference;
-    typedef <em>implementation-defined</em> size_type;
-    typedef <em>implementation-defined</em> difference_type;
-    typedef <em>implementation-defined</em> iterator;
-    typedef <em>implementation-defined</em> const_iterator;
-    typedef <em>implementation-defined</em> local_iterator;
-    typedef <em>implementation-defined</em> const_local_iterator;
-
-    allocator_type get_allocator() const;
-
-    <em>// size and capacity</em>
-    bool <span style="color:blue"><strong>empty()</strong></span> const;     <em>// May take linear time!</em>
-    size_type <span style="color:blue"><strong>size()</strong></span> const; <em>// May take linear time!</em>
-    size_type max_size() const;
-
-    <em>// iterators</em> 
-    iterator <span style="color:blue"><strong>begin</strong></span>();
-    const_iterator <span style="color:blue"><strong>begin</strong></span>() const;
-    iterator <span style="color:blue"><strong>end</strong></span>();
-    const_iterator <span style="color:blue"><strong>end</strong></span>() const;
-    const_iterator <span style="color:blue"><strong>cbegin</strong></span>() const;
-    const_iterator <span style="color:blue"><strong>cend</strong></span>() const;
-
-    <em>// modifiers</em>
-    std::pair<iterator, bool> <span style="color:blue"><strong>insert</strong></span>(const value_type& x);
-    iterator <span style="color:blue"><strong>insert</strong></span>(const_iterator hint, const value_type& x);
-    template<class InputIterator> void <span style="color:blue"><strong>insert</strong></span>(InputIterator first, 
-                                              InputIterator last);
-    
-    iterator unsafe_erase(const_iterator position);
-    size_type unsafe_erase(const key_type& k);
-    iterator unsafe_erase(const_iterator first, const_iterator last);
-    void clear();
-
-    <em>// observers</em>
-    hasher hash_function() const;
-    key_equal key_eq() const;
-
-    <em>// lookup</em>
-    iterator <span style="color:blue"><strong>find</strong></span>(const key_type& k);
-    const_iterator <span style="color:blue"><strong>find</strong></span>(const key_type& k) const;
-    size_type <span style="color:blue"><strong>count</strong></span>(const key_type& k) const;
-    std::pair<iterator, iterator> <span style="color:blue"><strong>equal_range</strong></span>(const key_type& k);
-    std::pair<const_iterator, const_iterator> <span style="color:blue"><strong>equal_range</strong></span>(const key_type& k) const;
-
-    <em>// parallel iteration</em>
-    typedef <em>implementation defined</em> range_type;
-    typedef <em>implementation defined</em> const_range_type;
-    range_type range();
-    const_range_type range() const;
-    
-    <em>// bucket interface - for debugging</em> 
-    size_type unsafe_bucket_count() const;
-    size_type unsafe_max_bucket_count() const;
-    size_type unsafe_bucket_size(size_type n);
-    size_type unsafe_bucket(const key_type& k) const;
-    local_iterator unsafe_begin(size_type n);
-    const_local_iterator unsafe_begin(size_type n) const;
-    local_iterator unsafe_end(size_type n);
-    const_local_iterator unsafe_end(size_type n) const;
-    const_local_iterator unsafe_cbegin(size_type n) const;
-    const_local_iterator unsafe_cend(size_type n) const;
-
-    <em>// hash policy</em>
-    float load_factor() const;
-    float max_load_factor() const;
-    void max_load_factor(float z);
-    void rehash(size_type n);
-};
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of 
-		  <samp class="codeph">concurrent_unordered_set</samp></h2> 
-		 
-		<pre>
-public:
-    <em>// construct/destroy/copy</em>
-    explicit concurrent_unordered_set(size_type n = <em>implementation-defined</em>,
-        const Hasher& hf = hasher(),
-        const key_equal& eql = key_equal(),
-        const allocator_type& a = allocator_type());
-    template <typename InputIterator>
-    concurrent_unordered_set(
-            InputIterator first, InputIterator last,
-            size_type n = <em>implementation-defined</em>,
-            const hasher& hf = hasher(),
-            const key_equal& eql = key_equal(),
-            const allocator_type& a = allocator_type());
-    concurrent_unordered_set(const concurrent_unordered_set&);
-    concurrent_unordered_set(const Alloc&);
-    concurrent_unordered_set(const concurrent_unordered_set&, const Alloc&);
-    <em>//C++11 specific</em> 
-    concurrent_unordered_set(const std::initializer_list<value_type> &il, 
-               size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    ~concurrent_unordered_set();
-
-    concurrent_unordered_set& operator=( const concurrent_unordered_set&);
-    <em>//C++11 specific</em>
-    concurrent_unordered_set& operator=( const std::initializer_list<value_type> &il);
-
-    void swap(concurrent_unordered_set&);
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members of 
-		  <samp class="codeph">concurrent_unordered_multiset</samp></h2> 
-		 
-		<pre>
-public:
-    <em>// construct/destroy/copy</em>
-    explicit concurrent_unordered_multiset(size_type n = <em>implementation-defined</em>,
-        const Hasher& hf = hasher(),
-        const key_equal& eql = key_equal(),
-        const allocator_type& a = allocator_type());
-    template <typename InputIterator>
-    concurrent_unordered_multiset(
-            InputIterator first, InputIterator last,
-            size_type n = <em>implementation-defined</em>,
-            const hasher& hf = hasher(),
-            const key_equal& eql = key_equal(),
-            const allocator_type& a = allocator_type());
-    concurrent_unordered_multiset(const concurrent_unordered_multiset&);
-    concurrent_unordered_multiset(const Alloc&);
-    concurrent_unordered_multiset(const concurrent_unordered_multiset&, const Alloc&);
-        <em>//C++11 specific</em> 
-    concurrent_unordered_multiset(const std::initializer_list<value_type> &il, 
-               size_type n = <em>implementation-defined</em>,
-               const Hasher& hf = hasher(),
-               const key_equal& eql = key_equal(),
-               const allocator_type& a = allocator_type());
-    ~concurrent_unordered_multiset();
-
-    concurrent_unordered_multiset& operator=( const concurrent_unordered_multiset&);
-    <em>//C++11 specific</em>
-    concurrent_unordered_multiset& operator=( const std::initializer_list<value_type> &il);
-
-    void swap(concurrent_unordered_multiset&);
-</pre> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm">Construct, Destroy, Copy</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm">Size and Capacity</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm">Iterators</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm">Modifiers</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm">Observers</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm">Lookup</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm">Parallel Iteration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm">Bucket Interface</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm">Hash Policy</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="concurrent_hash_map_cls.htm">concurrent_hash_map 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm
deleted file mode 100755
index 4fbcc00..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/bucket_interface_set_cls.htm
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Bucket Interface">
-<meta name="DC.subject" content="Bucket Interface">
-<meta name="keywords" content="Bucket Interface">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="bucket_interface_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Bucket Interface</title>
-</head>
-<body id="bucket_interface_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="bucket_interface_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Bucket Interface</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>The bucket interface is similar to the bucket
-		  interface for the C++11 class 
-		  <samp class="codeph">unordered_set</samp> and 
-		  <samp class="codeph">unordered_multiset</samp>, except that the prefix 
-		  <samp class="codeph">unsafe_</samp> has been added as a reminder that the methods
-		  are unsafe to use during concurrent insertion. 
-		</p>
-
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The bucket interface is intended for debugging.
-			 It is not concurrency safe. 
-		  </p>
-
-		  <p>The mapping of keys to buckets is implementation specific.
-		  </p>
-
-		</div> 
-		<p>Buckets are numbered from 0 to<samp class="codeph">
-			 unsafe_bucket_count()-1</samp>. To iterate over a bucket use a 
-		  <samp class="codeph">local_iterator</samp> or 
-		  <samp class="codeph">const_local_iterator</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d49136e64">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d49136e67">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">size_type unsafe_bucket_count()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: Number of buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">size_type
-						unsafe_max_bucket_count() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: Upper bound on possible
-						number of buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">size_type
-						unsafe_bucket_size(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: Number of items in bucket
-						
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">size_type unsafe_bucket(const
-						key_type& k) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: Index of bucket where
-						item with key 
-						<em>k</em> would be placed. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">local_iterator
-						unsafe_begin(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">local_iterator</samp> pointing to first item in
-						bucket 
-						<em>n</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">const_local_iterator
-						unsafe_begin(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to first item
-						in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">local_iterator
-						unsafe_end(size_type n)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">local_iterator</samp> pointing to immediately after
-						the last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">const_local_iterator
-						unsafe_end(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong> 
-						<samp class="codeph">const_local_iterator</samp> pointing to immediately
-						after the last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">const_local_iterator
-						unsafe_cbegin(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to first item
-						in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d49136e64 "><span class="keyword">const_local_iterator
-						unsafe_cend(size_type n) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d49136e67 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_local_iterator</samp> pointing to immediately
-						past last item in bucket 
-						<samp class="codeph"><em>n</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm
deleted file mode 100755
index 62f18d9..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/construct_destroy_copy_set_cls.htm
+++ /dev/null
@@ -1,406 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Construct, Destroy, Copy">
-<meta name="DC.subject" content="Construct, Destroy, Copy">
-<meta name="keywords" content="Construct, Destroy, Copy">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="construct_destroy_copy_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Construct, Destroy, Copy</title>
-</head>
-<body id="construct_destroy_copy_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="construct_destroy_copy_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Construct, Destroy, Copy</h1>
- 
-   
-  <div> 
-	 <div class="section"> The following tables provides information on the members of the 
-		<samp class="codeph">concurrent_unordered_set</samp> and 
-		<samp class="codeph">concurrent_unordered_multiset</samp> template classes. 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> 
-		  <samp class="codeph">concurrent_unordered_set</samp> </h2> 
-		 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="50%" id="d50002e43">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="50%" id="d50002e46">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">explicit concurrent_unordered_set
-						(size_type n = implementation-defined, const hasher& hf = hasher(),const
-						key_equal& eql = key_equal(), const allocator_type& a =
-						allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Construct table with 
-						<samp class="codeph">n</samp> buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">template <typename
-						InputIterator> concurrent_unordered_set (InputIterator first, InputIterator
-						last, size_type n = <implementation-defined>, const hasher& hf =
-						hasher(), const key_equal& eql = key_equal(), const allocator_type& a =
-						allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Construct table with 
-						<samp class="codeph">n</samp> buckets initialized with 
-						<samp class="codeph">value_type(*<em>i</em>)</samp> where 
-						<samp class="codeph"><em>i</em></samp> is in the half open interval
-						[<samp class="codeph"><em>first,last</em></samp>). 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">concurrent_unordered_set(const
-						unordered_set& m)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Construct copy of set 
-						<samp class="codeph"><em>m</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">concurrent_unordered_set(const
-						Alloc& a)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Construct empty set using allocator 
-						<em>a</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">concurrent_unordered_set(const
-						unordered_set&, const Alloc& a)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Construct copy of set 
-						<em>m</em> using allocator 
-						<samp class="codeph"><em>a</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr> 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><samp class="codeph">concurrent_unordered_set(
-						const std::initializer_list<value_type> &il, 
-						size_type n = <em>implementation-defined</em>,
-						const Hasher& hf = hasher(),
-						const key_equal& eql = key_equal(),
-						const allocator_type& a = allocator_type())</samp> 
-					</td>
- 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-						<p>C++11 specific; Equivalent to 
-							<samp class="codeph">concurrent_unordered_set(<em>il</em>.begin(), 
-							  <em>il</em>.end(), 
-							  <em>a</em>)</samp>. 
-						</p>
- 
-					</td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">~concurrent_unordered_set()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Destroy the set. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">concurrent_unordered_set&
-						operator=(const concurrent_unordered_set& m);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Set 
-						<samp class="codeph">*this</samp> to a copy of set 
-						<samp class="codeph"><em>m</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><samp class="codeph">concurrent_unordered_set&
-					   operator=(const std::initializer_list<value_type> &il);</samp> 
-					</td>
- 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-						<p>C++11 specific; Sets 
-						<samp class="codeph">*<em>this</em></samp> 
-						to contain data from
-						<samp class="codeph">il</samp>. 
-						</p>
- 
-					</td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e43 "><span class="keyword">allocator_type get_allocator()
-						const; 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e46 "> 
-					 <p>Get copy of the allocator associated with
-						
-						<samp class="codeph">*this</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> 
-		  <samp class="codeph">concurrent_unordered_multiset</samp> </h2> 
-		 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="50%" id="d50002e281">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="50%" id="d50002e284">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">explicit
-						concurrent_unordered_multiset (size_type n = implementation-defined, const
-						hasher& hf = hasher(),const key_equal& eql = key_equal(), const
-						allocator_type& a = allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Construct table with 
-						<samp class="codeph">n</samp> buckets. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">template <typename
-						InputIterator> concurrent_unordered_multiset (InputIterator first,
-						InputIterator last, size_type n = <implementation-defined>, const
-						hasher& hf = hasher(), const key_equal& eql = key_equal(), const
-						allocator_type& a = allocator_type())</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Construct table with 
-						<samp class="codeph">n</samp> buckets initialized with 
-						<samp class="codeph">value_type(*<em>i</em>)</samp> where 
-						<samp class="codeph"><em>i</em></samp> is in the half open interval
-						[<samp class="codeph"><em>first,last</em></samp>). 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">concurrent_unordered_multiset(const
-						unordered_multiset& m)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Construct copy of set 
-						<samp class="codeph"><em>m</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">concurrent_unordered_multiset(const Alloc&
-						a)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Construct empty set using allocator 
-						<em>a</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">concurrent_unordered_multiset(const
-						unordered_multiset&, const Alloc& a)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Construct copy of set 
-						<em>m</em> using allocator 
-						<samp class="codeph"><em>a</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr> 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><samp class="codeph">concurrent_unordered_multiset(
-						const std::initializer_list<value_type> &il, 
-						size_type n = <em>implementation-defined</em>,
-						const Hasher& hf = hasher(),
-						const key_equal& eql = key_equal(),
-						const allocator_type& a = allocator_type())</samp> 
-					</td>
- 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-						<p>C++11 specific; Equivalent to 
-							<samp class="codeph">concurrent_unordered_multiset(<em>il</em>.begin(), 
-							  <em>il</em>.end(), 
-							  <em>a</em>)</samp>. 
-						</p>
- 
-					</td>
- 
-				</tr>
- 				 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">~concurrent_unordered_multiset()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Destroy the set. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">concurrent_
-						unordered_multiset& operator=(const concurrent_unordered_multiset&
-						m);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Set 
-						<samp class="codeph">*this</samp> to a copy of set 
-						<samp class="codeph"><em>m</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><samp class="codeph">concurrent_unordered_multiset&
-					   operator=(const std::initializer_list<value_type> &il);</samp> 
-					</td>
- 
-					<td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-						<p>C++11 specific; Sets 
-						<samp class="codeph">*<em>this</em></samp> 
-						to contain data from
-						<samp class="codeph">il</samp>. 
-						</p>
- 
-					</td>
- 
-				</tr>
- 				
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e281 "><span class="keyword">allocator_type get_allocator()
-						const; 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="50%" headers="d50002e284 "> 
-					 <p>Get copy of the allocator associated with
-						
-						<samp class="codeph">*this</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm
deleted file mode 100755
index f5d785d..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/container_iterators_set_cls.htm
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="container_iterators_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="container_iterators_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="container_iterators_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Template classes
-		  <samp class="codeph">concurrent_unordered_set</samp> and
-		  <samp class="codeph">concurrent_unordered_multiset</samp>
-                  support forward iterators;
-		  that is, iterators that can advance only forwards across a table. Reverse
-		  iterators are not supported. Concurrent operations (<samp class="codeph">count, find,
-			 insert</samp>) do 
-		  <em>not</em> invalidate any existing iterators that point into the table.
-		  Note that an iterator obtained via 
-		  <samp class="codeph">begin()</samp> will no longer point to the first item if 
-		  <samp class="codeph">insert</samp> inserts an item before it. 
-		  Erasure (<samp class="codeph">unsafe_erase</samp>) does <em>not</em> invalidate iterators
-		  other than those pointing to erased elements.
-		</p>
- 
-		<p>Methods 
-		  <samp class="codeph">cbegin</samp> and 
-		  <samp class="codeph">cend</samp> follow C++11 conventions. They return 
-		  <samp class="codeph">const_iterator</samp> even if the object is non-const. 
-		</p>
- 
-	 </div>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d51575e72">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d51575e75">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">iterator begin()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">iterator</samp> pointing to first item in the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">const_iterator begin()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to first item in the
-					 set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">iterator end()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">iterator</samp> pointing to immediately past last
-					 item in the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">const_iterator end() const</span>
-				  
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to immediately past
-					 last item in the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">const_iterator cbegin()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to the first item in
-					 the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d51575e72 "><span class="keyword">const_iterator cend()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d51575e75 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to immediately after
-					 the last item in the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm
deleted file mode 100755
index d1ecfbb..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/hash_policy_set_cls.htm
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Hash Policy">
-<meta name="DC.subject" content="Hash policy">
-<meta name="keywords" content="Hash policy">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="hash_policy_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Hash Policy</title>
-</head>
-<body id="hash_policy_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="hash_policy_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Hash Policy</h1>
- 
-  
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d52141e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d52141e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52141e29 "><span class="keyword">float load_factor() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52141e32 "> 
-				  <p><strong>Returns</strong>: Average number of elements per bucket. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52141e29 "><span class="keyword">float max_load_factor()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52141e32 "> 
-				  <p><strong>Returns</strong>: Maximum size of a bucket. If insertion of an
-					 item causes a bucket to be bigger, the implementation may repartition or
-					 increase the number of buckets. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52141e29 "><span class="keyword">void max_load_factor(float
-					 z)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52141e32 "> 
-				  <p>Set maximum size for a bucket to 
-					 <samp class="codeph"><em>z</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52141e29 "><span class="keyword">void rehash(size_type n)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52141e32 "> 
-				  <p><strong>Requirements</strong>: 
-					 <samp class="codeph"><em>n</em></samp> must be a power of two. 
-				  </p>
- 
-				  <p><strong>Effects</strong>: No effect if current number of buckets is at
-					 least 
-					 <samp class="codeph"><em>n</em></samp>. Otherwise increases number of
-					 buckets to 
-					 <samp class="codeph"><em>n</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm
deleted file mode 100755
index 56d1302..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/lookup_set_cls.htm
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Lookup">
-<meta name="DC.subject" content="Lookup">
-<meta name="keywords" content="Lookup">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="lookup_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Lookup</title>
-</head>
-<body id="lookup_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="lookup_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Lookup</h1>
- 
-   
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d52517e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d52517e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52517e29 "><span class="keyword">iterator find(const key_type&
-					 k)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52517e32 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">iterator</samp> pointing to item with key equivalent
-					 to 
-					 <samp class="codeph"><em>k</em></samp>, or 
-					 <samp class="codeph">end()</samp> if no such item exists. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52517e29 "><span class="keyword">const_iterator find(const
-					 key_type& k) const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52517e32 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">const_iterator</samp> pointing to item with key
-					 equivalent to 
-					 <samp class="codeph"><em>k</em></samp>, or 
-					 <samp class="codeph">end()</samp> if no such item exists. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52517e29 "><span class="keyword">size_type count(const key_type&
-					 k) const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52517e32 "> 
-				  <p><strong>Returns</strong>: Number of items with keys
-					 equivalent to 
-					 <samp class="codeph"><em>k</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52517e29 "><span class="keyword">std::pair<iterator, iterator>
-					 equal_range(const key_type& k)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52517e32 "> 
-				  <p><strong>Returns</strong>: Range containing all keys
-					 in the set that are equivalent to 
-					 <samp class="codeph"><em>k</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52517e29 "><span class="keyword">std::pair<const_iterator,
-					 const_iterator> equal_range(const key_type& k) const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52517e32 "> 
-				  <p><strong>Returns</strong>: Range containing all keys
-					 in the set that are equivalent to 
-					 <samp class="codeph"><em>k</em></samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm
deleted file mode 100755
index a5605a8..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/modifiers_set_cls.htm
+++ /dev/null
@@ -1,281 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Modifiers">
-<meta name="DC.subject" content="Modifiers">
-<meta name="keywords" content="Modifiers">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="modifiers_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Modifiers</title>
-</head>
-<body id="modifiers_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="modifiers_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Modifiers</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following tables provides additional information on the
-			 members of the 
-			 <samp class="codeph">concurrent_unordered_set</samp> and 
-			 <samp class="codeph">concurrent_unordered_multiset</samp> template classes. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d52983e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d52983e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword"> std::pair<iterator, bool>
-						insert(const value_type& x)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Constructs copy of 
-						<samp class="codeph"><em>x</em></samp> and attempts to insert it into the
-						set. Destroys the copy if the attempt fails because there was already an item
-						with the same key. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">std::pair(<em>iterator,success</em>)</samp>. The
-						value 
-						<em>iterator</em> points to an item in the set with a matching
-						key. The value of 
-						<em>success</em> is true if the item was inserted; false
-						otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">iterator insert(const_iterator
-						hint, const value_type& x)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Same as 
-						<samp class="codeph">insert(x)</samp>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>The current implementation ignores the
-						  hint argument. Other implementations might not ignore it. It exists for
-						  similarity with the C++11 classes 
-						  <samp class="codeph">unordered_set</samp> and 
-						  <samp class="codeph">unordered_multiset</samp>. It hints to the
-						  implementation about where to start searching. Typically it should point to an
-						  item adjacent to where the item will be inserted. 
-						</p>
- 
-					 </div> 
-					 <p><strong>Returns</strong>: Iterator pointing to
-						inserted item, or item already in the set with the same key. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">template<class
-						InputIterator> void insert(InputIterator first, InputIterator
-						last)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Does 
-						<samp class="codeph">insert(*<em>i</em>)</samp> where 
-						<samp class="codeph">i</samp> is in the half-open interval
-						[<samp class="codeph"><em>first,last</em></samp>). 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">iterator
-						unsafe_erase(const_iterator position)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Removes the item pointed to by 
-						<samp class="codeph"><em>position</em></samp> from the set. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Iterator pointing to item
-						that was immediately after the erased item, or 
-						<samp class="codeph">end()</samp> if erased item was the last item in
-						the set. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">size_type unsafe_erase(const
-						key_type& k)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Removes item with key 
-						<samp class="codeph"><em>k</em></samp> if such an item exists. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 1 if an item was removed;
-						0 otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">iterator
-						unsafe_erase(const_iterator first, const_iterator last)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Removes 
-						<samp class="codeph"><em>*i</em></samp> where 
-						<samp class="codeph"><em>i</em></samp> is in the half-open
-						interval<samp class="codeph"> [<em>first,last</em>).</samp> 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph"><em>last</em></samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e37 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e40 "> 
-					 <p>Removes all items from the set. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the 
-			 <samp class="codeph">concurrent_unordered_set</samp> template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d52983e264">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d52983e267">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e264 "><samp class="codeph">void
-						swap(concurrent_unordered_set& m)</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e267 "> 
-					 <p>Swaps contents of 
-						<samp class="codeph">*this</samp> and 
-						<samp class="codeph">m</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the 
-			 <samp class="codeph">concurrent_unordered_multiset</samp> template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d52983e314">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d52983e317">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d52983e314 "><samp class="codeph">void
-						swap(concurrent_unordered_multiset& m)</samp> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d52983e317 "> 
-					 <p>Swaps contents of 
-						<samp class="codeph">*this</samp> and 
-						<samp class="codeph">m</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm
deleted file mode 100755
index 94e5bcf..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/observers_set_cls.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Observers">
-<meta name="DC.subject" content="Observers">
-<meta name="keywords" content="Observers">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="observers_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Observers</title>
-</head>
-<body id="observers_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="observers_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Observers</h1>
- 
-  
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d53950e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d53950e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d53950e29 "><span class="keyword">hasher hash_function()
-					 const()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d53950e32 "> 
-				  <p><strong>Returns</strong>: Hashing functor associated
-					 with the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d53950e29 "><span class="keyword">key_equal key_eq() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d53950e32 "> 
-				  <p><strong>Returns</strong>: Key equivalence functor
-					 associated with the set. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm
deleted file mode 100755
index 16f4b67..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/parallel_iteration_set_cls.htm
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Parallel Iteration">
-<meta name="DC.subject" content="Parallel Iteration">
-<meta name="keywords" content="Parallel Iteration">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../container_range_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_literation_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Parallel Iteration</title>
-</head>
-<body id="parallel_literation_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_literation_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallel Iteration</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p>Types 
-		  <samp class="codeph">const_range_type</samp> and 
-		  <samp class="codeph">range_type</samp> model the Container Range concept. The
-		  types differ only in that the bounds for a 
-		  <samp class="codeph">const_range_type</samp> are of type 
-		  <samp class="codeph">const_iterator</samp>, whereas the bounds for a 
-		  <samp class="codeph">range_type</samp> are of type iterator.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d54152e49">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d54152e52">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d54152e49 "><span class="keyword">const_range_type range()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d54152e52 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_range_type</samp> object representing all
-						keys in the table. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d54152e49 "><span class="keyword">range_type range()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d54152e52 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">range_type</samp> object representing all keys in
-						the table. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../container_range_concept.htm">Container Range
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm b/doc/help/reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm
deleted file mode 100755
index a4d3443..0000000
--- a/doc/help/reference/containers_overview/concurrent_unordered_set_cls/size_and_capacity_set_cls.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Size and Capacity">
-<meta name="DC.subject" content="Size and Capacity">
-<meta name="keywords" content="Size and Capacity">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="size_and_capacity_set_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Size and Capacity</title>
-</head>
-<body id="size_and_capacity_set_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="size_and_capacity_set_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Size and Capacity</h1>
- 
-  
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d54420e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d54420e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d54420e29 "><span class="keyword">bool empty() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d54420e32 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">size()!=0.</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d54420e29 "><span class="keyword">size_type size() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d54420e32 "> 
-				  <p><strong>Returns</strong>: Number of items in 
-					 <samp class="codeph">*this</samp>. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-					 <p>Though the current implementation takes
-						time 
-						<samp class="codeph">O(1)</samp>, possible future implementations might
-						take time 
-						<samp class="codeph">O(P)</samp>, where 
-						<samp class="codeph">P</samp> is the number of hardware threads. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d54420e29 "><span class="keyword">size_type max_size() const</span>
-				  
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d54420e32 "> 
-				  <p><strong>Returns</strong>: Upper bound on number of
-					 items that 
-					 <samp class="codeph">*this</samp> can hold. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-					 <p>The upper bound may be much higher than
-						what the container can actually hold. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_unordered_set_cls.htm">concurrent_unordered_set and concurrent_unordered_multiset Template Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector.htm b/doc/help/reference/containers_overview/concurrent_vector.htm
deleted file mode 100755
index 00105f0..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector.htm
+++ /dev/null
@@ -1,417 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="concurrent_vector">
-<meta name="DC.subject" content="concurrent_vector">
-<meta name="keywords" content="concurrent_vector">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/whole_vector_operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/concurrent_growth.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/access.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/parallel_iteration.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/capacity_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview/concurrent_vector/iterators_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_vector">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>concurrent_vector</title>
-</head>
-<body id="concurrent_vector">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_vector"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_vector</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for vector that can be concurrently
-		  grown and accessed. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename T, class Alloc=cache_aligned_allocator<T> > 
-class concurrent_vector;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre> #include "tbb/concurrent_vector.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">concurrent_vector</samp> is a container with the following
-		  features: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Random access by index. The index of the first
-				element is zero. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Multiple threads can grow the container and
-				append new elements concurrently. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Growing the container does not invalidate
-				existing iterators or indices. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>A 
-		  <samp class="codeph">concurrent_vector</samp> meets all requirements for a
-		  Container and a Reversible Container as specified in the ISO C++ standard. It
-		  does not meet the Sequence requirements due to absence of methods 
-		  <samp class="codeph">insert()</samp> and 
-		  <samp class="codeph">erase()</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-        template<typename T, typename Alloc=cache_aligned_allocator<T> >
-        class concurrent_vector {
-        public:
-            typedef size_t size_type;
-            typedef <em>allocator-A-rebound-for-T</em> allocator_type;
-            typedef T value_type;
-            typedef ptrdiff_t difference_type;
-            typedef T& reference;
-            typedef const T& const_reference;
-            typedef T* pointer;
-            typedef const T *const_pointer;
-            typedef <em>implementation-defined</em> iterator;
-            typedef <em>implementation-defined</em> const_iterator;
-            typedef <em>implementation-defined</em> reverse_iterator;
-            typedef <em>implementation-defined</em> const_reverse_iterator;
-     
-            // Parallel ranges
-            typedef <em>implementation-defined</em> range_type;
-            typedef <em>implementation-defined</em> const_range_type;
-            range_type range( size_t grainsize );
-            const_range_type range( size_t grainsize ) const;
-     
-            // Constructors
-            explicit concurrent_vector( const allocator_type& a =
-                                        allocator_type() );
-            concurrent_vector( const concurrent_vector& x );
-            template<typename M>
-                concurrent_vector( const concurrent_vector<T, M>& x );
-     
-            explicit concurrent_vector( size_type n, 
-                const T& t=T(), 
-                const allocator_type& a = allocator_type() );
-            template<typename InputIterator>
-                concurrent_vector(InputIterator first, InputIterator last,
-               const allocator_type& a=allocator_type());
-            
-            //C++11 specific 
-            concurrent_vector(std::initializer_list<T> il, const allocator_type &a = allocator_type())
-     
-            // Assignment
-            concurrent_vector& operator=( const concurrent_vector& x );
-            template<class M>
-                concurrent_vector& operator=( const concurrent_vector<T, M>& x );
-            void assign( size_type n, const T& t );
-            template<class InputIterator >
-                void assign( InputIterator first, InputIterator last );
-     
-            //C++11 specific
-            concurrent_vector& operator=( const std::initializer_list<T> &il);
-            void assign(std::initializer_list<T> il);
-            
-            // Concurrent growth operations
-            iterator grow_by( size_type delta );
-            iterator grow_by( size_type delta, const T& t );
-            iterator grow_to_at_least( size_type n );
-            iterator push_back( const T& item );
-     
-            // Items access
-            reference operator[]( size_type index );
-            const_reference operator[]( size_type index ) const;
-            reference at( size_type index );
-            const_reference at( size_type index ) const;
-            reference front();
-            const_reference front() const;
-            reference back();
-            const_reference back() const;
-     
-            // Storage
-            bool empty() const;
-            size_type capacity() const;
-            size_type max_size() const;
-            size_type size() const;
-            allocator_type get_allocator() const;
-     
-            // Non-concurrent operations on whole container
-            void reserve( size_type n );
-            void compact();
-            void swap( concurrent_vector& vector );
-            void clear();
-            ~concurrent_vector();
-     
-            // Iterators
-            iterator begin();
-            iterator end();
-            const_iterator begin() const;
-            const_iterator end() const;
-            reverse_iterator rbegin();
-            reverse_iterator rend();
-            const_reverse_iterator rbegin() const;
-            const_reverse_iterator rend() const;
-     
-            // C++11 extensions
-            const_iterator cbegin() const;
-            const_iterator cend() const;
-            const_reverse_iterator crbegin() const;
-            const_reverse_iterator crend() const;      
-        };
-     
-        // Template functions
-        template<typename T, class A1, class A2>
-            bool operator==( const concurrent_vector<T, A1>& a, 
-                             const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A1, class A2>
-           bool operator!=( const concurrent_vector<T, A1>& a, 
-                            const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A1, class A2>
-       bool operator<( const concurrent_vector<T, A1>& a, 
-                       const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A1, class A2>
-           bool operator>( const concurrent_vector<T, A1>& a, 
-                           const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A1, class A2>
-           bool operator<=( const concurrent_vector<T, A1>& a, 
-                            const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A1, class A2>
-           bool operator>=(const concurrent_vector<T, A1>& a, 
-                           const concurrent_vector<T, A2>& b );
-     
-       template<typename T, class A>
-           void swap(concurrent_vector<T, A>& a, concurrent_vector<T, A>& b);
-     
-    }</pre> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The rebinding of 
-			 <samp class="codeph">allocator_type</samp> follows practice established by both
-			 the Microsoft and GNU implementations of 
-			 <samp class="codeph">std::vector</samp>. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The return types of the growth methods are
-			 different in Intel® Threading Building Blocks (Intel® TBB) 2.2 than in prior
-			 versions. See footnotes in the descriptions of the individual methods for
-			 details. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Exception Safety</h2> 
-		 
-		<p>Concurrent growing is fundamentally incompatible
-		  with ideal exception safety.   Nonetheless, 
-		  <samp class="codeph">concurrent_vector</samp> offers a practical level of
-		  exception safety. 
-		</p>
- 
-		<p>Element type T must meet the following
-		  requirements: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Its destructor must not throw an exception. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>If its default constructor can throw an
-				exception, its destructor must be non-virtual and work correctly on zero-filled
-				memory. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Otherwise the program's behavior is undefined. 
-		</p>
- 
-		<p>Growth and vector assignment append a sequence of
-		  elements to a vector. If an exception occurs, the impact on the vector  depends
-		  upon the cause of the exception: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>If the exception is thrown by the constructor
-				of an element, then all subsequent elements in the appended sequence will be
-				zero-filled. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Otherwise, the exception was thrown by the
-				vector's allocator. The vector becomes broken. Each element in the appended
-				sequence will be in one of three states: 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<ul type="disc" class="ul_2"> 
-		  <li class="li_2">constructed 
-		  </li>
- 
-		  <li class="li_2">zero-filled> 
-		  </li>
- 
-		  <li class="li_2">unallocated in memory  
-		  </li>
- 
-		</ul>
- 
-		<p>Once a vector becomes broken, care must be taken
-		  when accessing it: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Accessing an unallocated element with method at
-				causes an exception 
-				<samp class="codeph">std::range_error</samp>. Any other way of accessing an
-				unallocated element has undefined behavior. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The values of 
-				<samp class="codeph">capacity()</samp> and 
-				<samp class="codeph">size()</samp> may be less than expected. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Access to a broken vector via<samp class="codeph">
-				  back()</samp> has undefined behavior. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>However, the following guarantees hold for broken
-		  or unbroken vectors: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Let 
-				<samp class="codeph"><em>k</em></samp> be an index of an unallocated element.
-				Then<samp class="codeph"> size()<= capacity()<=<em>k</em> 
-				</samp> 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Growth operations never cause 
-				<samp class="codeph">size()</samp> or 
-				<samp class="codeph">capacity()</samp> to decrease. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>If a concurrent growth operation successfully
-		  completes, the appended sequence remains valid and accessible even if a
-		  subsequent growth operations fails. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Fragmentation</h2> 
-		 
-		<p>Unlike a 
-		  <samp class="codeph">std::vector</samp>, a 
-		  <samp class="codeph">concurrent_vector</samp> never moves existing elements when
-		  it grows. The container allocates a series of contiguous arrays. The first
-		  reservation, growth, or assignment operation determines the size of the first
-		  array. Using a small number of elements as initial size incurs fragmentation
-		  across cache lines that may increase element access time. The method 
-		  <samp class="codeph">shrink_to_fit()</samp>merges several smaller arrays into a
-		  single contiguous array, which may improve access time. 
-		</p>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm">Construction, Copy, and Assignment</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/whole_vector_operations.htm">Whole Vector Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/concurrent_growth.htm">Concurrent Growth</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/access.htm">Access</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/parallel_iteration.htm">Parallel Iteration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/capacity_vector.htm">Capacity</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/containers_overview/concurrent_vector/iterators_vector.htm">Iterators</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/access.htm b/doc/help/reference/containers_overview/concurrent_vector/access.htm
deleted file mode 100755
index 27adca2..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/access.htm
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Access">
-<meta name="DC.subject" content="Access">
-<meta name="keywords" content="Access">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="access">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Access</title>
-</head>
-<body id="access">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="access"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Access</h1>
- 
-   
-   
-  <div> 
-	 <div class="section"> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The methods described in this section may be
-			 concurrently invoked on the same vector as methods for concurrent growth.
-			 However, the returned reference may be to an element that is being concurrently
-			 constructed. 
-		  </p>
-
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d55360e42">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d55360e45">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword">reference operator[]( size_type
-						index )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: Reference to element with
-						the specified index. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword"> const_refrence operator[](
-						size_type index ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: Const reference to
-						element with the specified index. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword">reference at( size_type index
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: Reference to element at
-						specified index. 
-					 </p>
- 
-					 <p><strong>Throws</strong> : 
-						<samp class="codeph">std::out_of_range 
-						</samp>if 
-						<samp class="codeph">index >= size()</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword"> const_reference at( size_type
-						index ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: Const reference to
-						element at specified index. 
-					 </p>
- 
-					 <p><strong>Throws</strong>: 
-						<samp class="codeph">std::out_of_range</samp> if 
-						<samp class="codeph">index >= size()</samp> or 
-						<samp class="codeph">index</samp> is for broken portion of vector. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword"> reference front()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">(*this)[0]</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword"> const_reference front()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">(*this)[0]</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword"> reference back()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">(*this)[size()-1]</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d55360e42 "><span class="keyword">const_reference back()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d55360e45 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">(*this)[size()-1]</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/capacity_vector.htm b/doc/help/reference/containers_overview/concurrent_vector/capacity_vector.htm
deleted file mode 100755
index c006804..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/capacity_vector.htm
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Capacity">
-<meta name="DC.subject" content="Capacity">
-<meta name="keywords" content="Capacity">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="capacity_vector">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Capacity</title>
-</head>
-<body id="capacity_vector">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="capacity_vector"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Capacity</h1>
- 
-   
-  <div>
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d56013e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d56013e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56013e29 "><span class="keyword">size_type size() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56013e32 ">
-				  <p><strong>Returns</strong>: Number of elements in the
-					 vector. The result may include elements that are allocated but still under
-					 construction by concurrent calls to any of the growth methods.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56013e29 "><span class="keyword">bool empty() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56013e32 ">
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">size()==0 
-					 </samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56013e29 "><span class="keyword"> size_type capacity()
-					 const</span> 
-				</td>
-
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56013e32 ">
-				  <p><strong>Returns</strong>: Maximum size to which
-					 vector can grow without having to allocate more memory.
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-					 <p>Unlike an 
-						<samp class="codeph">std::vector</samp>, a 
-						<samp class="codeph">concurrent_vector</samp> does not move existing
-						elements if it allocates more memory. 
-					 </p>
-
-				  </div>
-				</td>
-
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56013e29 ">size_type max_size() const
-				</td>
-
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56013e32 ">
-				  <p><strong>Returns</strong>: The highest possible size
-					 of the vector could reach.
-				  </p>
-
-				</td>
-
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/concurrent_growth.htm b/doc/help/reference/containers_overview/concurrent_vector/concurrent_growth.htm
deleted file mode 100755
index 81fb6ab..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/concurrent_growth.htm
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Concurrent Growth">
-<meta name="DC.subject" content="Concurrent Growth">
-<meta name="keywords" content="Concurrent Growth">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_growth">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Concurrent Growth</title>
-</head>
-<body id="concurrent_growth">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_growth"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Concurrent Growth</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The methods described in the following table may be invoked
-			 concurrently on the same vector. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d56349e31">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d56349e34">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56349e31 "><span class="keyword"> iterator grow_by( size_type
-						delta, const_reference t=T() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56349e34 "> 
-					 <p>Appends a sequence comprising 
-						<em>delta</em> copies of t to the end of the vector. If 
-						<samp class="codeph"><em>t</em></samp> is not specified, the new elements
-						are default constructed. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Iterator pointing to
-						beginning of appended sequence. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> Return type was 
-						  <samp class="codeph">size_type</samp> in Intel® Threading Building
-						  Blocks (Intel® TBB) 2.1. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56349e31 "><span class="keyword"> iterator grow_to_at_least(
-						size_type n )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56349e34 "> 
-					 <p>Appends minimal sequence of elements such
-						that 
-						<samp class="codeph">vector.size()>=n</samp>. The new elements are
-						default constructed. Blocks until all elements in range 
-						<em>[0..n)</em> are allocated (but not necessarily constructed
-						if they are under construction by a different thread). 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-						<p>If a thread must know whether
-						  construction of an element has completed, consider the following technique.
-						  Instantiate the 
-						  <samp class="codeph">concurrent_vector</samp> using a 
-						  <samp class="codeph">zero_allocator</samp>. Define the constructor 
-						  <samp class="codeph">T()</samp> such that when it completes, it sets a
-						  field of 
-						  <samp class="codeph">T</samp> to non-zero. A thread can check whether
-						  an item in the 
-						  <samp class="codeph">concurrent_vector</samp> is constructed by
-						  checking whether the field is non-zero. 
-						</p>
- 
-					 </div> 
-					 <p><strong>Returns</strong>: Iterator that points to
-						beginning of appended sequence, or pointer to (*this)[n] if no elements were
-						appended. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> Return type was 
-						  <samp class="codeph">void</samp> in Intel® TBB 2.1. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56349e31 "><span class="keyword"> iterator push_back(
-						const_reference value )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56349e34 "> 
-					 <p>Appends copy of 
-						<samp class="codeph">value</samp> to the end of the vector. 
-					 </p>
- 
-					 <p><strong>Returns</strong> Iterator that points to
-						the copy. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> Return type was 
-						  <samp class="codeph">size_type</samp> in Intel® TBB 2.1. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm b/doc/help/reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm
deleted file mode 100755
index 4f863f3..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/construction_copy_and_assignment.htm
+++ /dev/null
@@ -1,257 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Construction, Copy, and Assignment">
-<meta name="DC.subject" content="Construction, Copy, and Assignment">
-<meta name="keywords" content="Construction, Copy, and Assignment">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="construction_copy_and_assignment">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Construction, Copy, and Assignment</title>
-</head>
-<body id="construction_copy_and_assignment">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="construction_copy_and_assignment"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Construction, Copy, and Assignment</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>These operations must not be invoked concurrently
-			 on the same vector. 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d56735e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d56735e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">concurrent_vector( const
-						allocator_type& a = allocator_type() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Constructs empty vector using optionally
-						specified allocator instance. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">concurrent_vector( size_type n,
-						const_reference t=T(), const allocator_type& a = allocator_type()
-						);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Constructs vector of 
-						<samp class="codeph"><em>n</em></samp> copies of 
-						<samp class="codeph"><em>t</em></samp>, using optionally specified
-						allocator instance. If 
-						<samp class="codeph"><em>t</em></samp> is not specified, each element is
-						default constructed instead of copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">template<typename
-						InputIterator> concurrent_vector( InputIterator first, InputIterator last,
-						const allocator_type& a = allocator_type() )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Constructs vector that is copy of the
-						sequence 
-						<samp class="codeph">[<em>first,last</em>)</samp>, making only 
-						<samp class="codeph">N</samp> calls to the copy constructor of 
-						<samp class="codeph">T</samp>, where 
-						<samp class="codeph">N</samp> is the distance between first and last. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">concurrent_vector(std::initializer_list<T> il,
-						const allocator_type &a = allocator_type()) )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>C++11 specific; Equivalent to 
-						<samp class="codeph">concurrent_vector(<em>il</em>.begin(), 
-						  <em>il</em>.end(), 
-						  <em>a</em>)</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">concurrent_vector( const
-						concurrent_vector& src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Constructs copy of 
-						<samp class="codeph"><em>src</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword"> concurrent_vector& operator=(
-						const concurrent_vector& src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Assigns contents of 
-						<samp class="codeph">src</samp> to 
-						<samp class="codeph">*<em>this</em></samp>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to left hand
-						side. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">template<typename M>
-				concurrent_vector&
-						operator=( const concurrent_vector<T, M>& src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Assign contents of 
-						<samp class="codeph"><em>src</em></samp> to 
-						<samp class="codeph">*this</samp>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to left hand
-						side. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword"> concurrent_vector& operator=(
-						std::initializer_list<T> il )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>C++11 specific; Sets 
-                        <samp class="codeph">*<em>this</em></samp> 
-                        to contain data from
-                        <samp class="codeph">il</samp>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to left hand
-						side. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">void assign( size_type n,
-						const_reference t )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Assign 
-						<samp class="codeph"><em>n</em></samp> copies of 
-						<samp class="codeph"><em>t</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">template<class InputIterator
-						>
-				void assign(
-						InputIterator first, InputIterator last )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>Assign copies of sequence 
-						<samp class="codeph">[<em>first,last</em>)</samp>, making only<samp class="codeph">
-						  N</samp> calls to the copy constructor of<samp class="codeph"> T</samp>, where 
-						<samp class="codeph">N</samp> is the distance between first and last. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d56735e37 "><span class="keyword">void assign(
-						std::initializer_list<T> il )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d56735e40 "> 
-					 <p>C++11 specific; Equivalent to 
-						<samp class="codeph">assign(<em>il</em>.begin(), 
-						  <em>il</em>.end())</samp>
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/iterators_vector.htm b/doc/help/reference/containers_overview/concurrent_vector/iterators_vector.htm
deleted file mode 100755
index 8d648d0..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/iterators_vector.htm
+++ /dev/null
@@ -1,185 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="iterators_vector">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="iterators_vector">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="iterators_vector"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-  
-  <div> 
-	 <div class="section"> 
-		<p>Template class 
-		  <samp class="codeph">concurrent_vector<T></samp> supports random access
-		  iterators as defined in Section 24.1.4 of the  ISO C++ Standard. Unlike a 
-		  <samp class="codeph">std::vector</samp>, the iterators are not raw pointers. A 
-		  <samp class="codeph">concurrent_vector<T></samp> meets the reversible
-		  container requirements in Table 66 of the ISO C++ Standard.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d57688e43">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d57688e46">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> iterator begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to beginning of the
-						vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to beginning of the
-						vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> iterator end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to end of the vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> const_iterator end()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to end of the
-						vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> reverse_iterator
-						rbegin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">reverse iterator 
-						</samp>pointing to beginning of reversed vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword">const_reverse_iterator rbegin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_reverse_iterator</samp> pointing to beginning
-						of reversed vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> iterator rend()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_reverse_iterator</samp> pointing to end of
-						reversed vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d57688e43 "><span class="keyword"> const_reverse_iterator
-						rend()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d57688e46 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_reverse_iterator</samp> pointing to end of
-						reversed vector.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/parallel_iteration.htm b/doc/help/reference/containers_overview/concurrent_vector/parallel_iteration.htm
deleted file mode 100755
index 830ff00..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/parallel_iteration.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Parallel Iteration">
-<meta name="DC.subject" content="Parallel Iteration">
-<meta name="keywords" content="Parallel Iteration">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="../container_range_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_iteration">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Parallel Iteration</title>
-</head>
-<body id="parallel_iteration">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_iteration"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallel Iteration</h1>
- 
-  
-  <div> 
-	 <div class="section"> 
-		<p>Types 
-		  <samp class="codeph">const_range_type</samp> and 
-		  <samp class="codeph">range_type</samp> model the Container Range concept. The
-		  types differ only in that the bounds for a 
-		  <samp class="codeph">const_range_type</samp> are of type 
-		  <samp class="codeph">const_iterator</samp>, whereas the bounds for a 
-		  <samp class="codeph">range_type</samp> are of type 
-		  <samp class="codeph">iterator</samp>.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d58332e53">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d58332e56">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58332e53 "><span class="keyword">range_type range( size_t
-						grainsize=1 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58332e56 ">
-					 <p><strong>Returns</strong>: Range over entire 
-						<samp class="codeph">concurrent_vector</samp> that permits read-write
-						access.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58332e53 "><span class="keyword"> const_range_type range( size_t
-						grainsize=1 ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58332e56 ">
-					 <p><strong>Returns</strong>: Range over entire 
-						<samp class="codeph">concurrent_vector</samp> that permits read-only
-						access.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../container_range_concept.htm">Container Range Concept 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/concurrent_vector/whole_vector_operations.htm b/doc/help/reference/containers_overview/concurrent_vector/whole_vector_operations.htm
deleted file mode 100755
index 524ec90..0000000
--- a/doc/help/reference/containers_overview/concurrent_vector/whole_vector_operations.htm
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Whole Vector Operations">
-<meta name="DC.subject" content="Whole Vector Operations">
-<meta name="keywords" content="Whole Vector Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/containers_overview/concurrent_vector.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="whole_vector_operations">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Whole Vector Operations</title>
-</head>
-<body id="whole_vector_operations">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="whole_vector_operations"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Whole Vector Operations</h1>
- 
-   
-  <div> 
-	 <div class="section">
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>Concurrent invocation of these operations on the
-			 same instance is not safe. 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d58606e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d58606e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58606e37 "><span class="keyword">void reserve( size_type n
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58606e40 "> 
-					 <p>Reserves space for at least 
-						<samp class="codeph"><em>n</em></samp> elements. 
-					 </p>
- 
-					 <p><strong>Throws</strong> 
-						<samp class="codeph">std::length_error</samp> if 
-						<samp class="codeph"><em>n</em>>max_size()</samp>. It can also throw an
-						exception if the allocator throws an exception. 
-					 </p>
- 
-					 <p><strong>Safety</strong>: If an exception is thrown,
-						the instance remains in a valid state. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58606e37 "><span class="keyword">void shrink_to_fit()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58606e40 "> 
-					 <p>Compacts the internal representation to
-						reduce fragmentation. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> Method 
-						  <samp class="codeph">shrink_to_fit</samp> was called 
-						  <samp class="codeph">compact()</samp> in Intel® Threading Building
-						  Blocks (Intel® TBB) 2.1. It was renamed to match the C++11 
-						  <samp class="codeph">std::vector::shrink_to_fit()</samp>. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58606e37 "><span class="keyword">void swap( concurrent_vector&
-						x )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58606e40 "> 
-					 <p>Swap contents of two vectors. Takes O(1)
-						time. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58606e37 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58606e40 "> 
-					 <p>Erases all elements. Afterwards, 
-						<samp class="codeph">size()==0</samp>. Does not free internal arrays. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-						<p>To free internal arrays, call 
-						  <samp class="codeph">shrink_to_fit()</samp> after 
-						  <samp class="codeph">clear()</samp>. 
-						</p>
- 
-					 </div> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p> The original release of Intel® TBB 2.1
-						  and its "update 1" freed the arrays. The change in "update 2" reverts back to
-						  the behavior of Intel® TBB 2.0. The motivation for not freeing the arrays is to
-						  behave similarly to 
-						  <samp class="codeph">std::vector::clear()</samp>. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d58606e37 "><span class="keyword"> ~concurrent_vector()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d58606e40 "> 
-					 <p>Erases all elements and destroys the
-						vector. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/containers_overview/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/containers_overview/container_range_concept.htm b/doc/help/reference/containers_overview/container_range_concept.htm
deleted file mode 100755
index 22dc614..0000000
--- a/doc/help/reference/containers_overview/container_range_concept.htm
+++ /dev/null
@@ -1,248 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Container Range Concept">
-<meta name="DC.subject" content="Container Range Concept">
-<meta name="keywords" content="Container Range Concept">
-<meta name="DC.Relation" scheme="URI" content="../../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_hash_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="../algorithms/parallel_for_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../algorithms/parallel_reduce_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../algorithms/parallel_scan_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../algorithms/range_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_hash_map_cls/capacity_map_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="concurrent_vector/parallel_iteration.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="container_range_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Container Range Concept</title>
-</head>
-<body id="container_range_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="container_range_concept"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Container Range Concept</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>View set of items in a container as a recursively
-		  divisible range.
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Requirements</h2>
-		 
-		<p>A Container Range is a 
-		  <strong>Range</strong> with the further requirements listed in below.
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl18"><!-- --></a><table cellpadding="4" summary="" id="tbl18" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Additional Requirements on a Container
-		  Range R</span></caption> 
-		   
-		   
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d59076e52">
-				  <p><strong>Pseudo-Signature</strong>
-				  </p>
-
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d59076e60">
-				  <p><strong>Semantics</strong>
-				  </p>
-
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::value_type</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Item type
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::reference</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Item reference type
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::const_reference</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Item const reference type
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::difference_type</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Type for difference of two iterators
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::iterator</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Iterator type for range
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::iterator R::begin()</samp> 
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>First item in range
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::iterator R::end()</samp> 
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>One past last item in range
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59076e52 ">
-				  <p><samp class="codeph">R::size_type R::grainsize()
-						const</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59076e60 ">
-				  <p>Grain size
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Model Types</h2>
-		 
-		<p>Classes 
-		  <samp class="codeph">concurrent_hash_map</samp> and 
-		  <samp class="codeph">concurrent_vector</samp> both have member types 
-		  <samp class="codeph">range_type</samp> and 
-		  <samp class="codeph">const_range_type</samp> that model a Container Range.
-		</p>
- 
-		<p>Use the range types in conjunction with 
-		  <samp class="codeph">parallel_for</samp>, 
-		  <samp class="codeph">parallel_reduce</samp>, and 
-		  <samp class="codeph">parallel_scan</samp> to iterate over items in a container. 
-		</p>
-
-	 </div>
- 
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/containers_overview.htm">Containers Overview</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="concurrent_hash_map_cls.htm">concurrent_hash_map
-		  </a></div>
-<div><a href="concurrent_vector.htm">concurrent_vector
-		  </a></div>
-<div><a href="../algorithms/parallel_for_func.htm">parallel_for
-		  </a></div>
-<div><a href="../algorithms/parallel_reduce_func.htm">parallel_reduce
-		  </a></div>
-<div><a href="../algorithms/parallel_scan_func.htm">parallel_scan
-		  </a></div>
-<div><a href="../algorithms/range_concept.htm">Range
-		  </a></div>
-<div><a href="concurrent_hash_map_cls/capacity_map_cls.htm">Capacity 
-		  </a></div>
-<div><a href="concurrent_vector/parallel_iteration.htm">Parallel Iteration
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/environment.htm b/doc/help/reference/environment.htm
deleted file mode 100755
index f64f675..0000000
--- a/doc/help/reference/environment.htm
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Environment">
-<meta name="DC.subject" content="Environment">
-<meta name="keywords" content="Environment">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/environment/version_information.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/environment/enabling_debugging_features.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/environment/feature_macros.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="environment">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Environment</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="environment">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="environment"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Environment</h1>
- 
-   
-  <div> 
-    <div class="section">
-      <p>This section describes features of  Intel® Thread Building Blocks (Intel® TBB) that relate to general environment issues.</p>
-
-    </div>
-
-    </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/environment/version_information.htm">Version Information</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/environment/enabling_debugging_features.htm">Enabling Debugging Features</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/environment/feature_macros.htm">Feature macros</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/environment/enabling_debugging_features.htm b/doc/help/reference/environment/enabling_debugging_features.htm
deleted file mode 100755
index 0d37940..0000000
--- a/doc/help/reference/environment/enabling_debugging_features.htm
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Enabling Debugging Features">
-<meta name="DC.subject" content="Enabling Debugging Features, TBB_USE_DEBUG, TBB_USE_ASSERT, TBB_USE_THREADING_TOOLS, TBB_USE_PERFORMANCE_WARNINGS">
-<meta name="keywords" content="Enabling Debugging Features, TBB_USE_DEBUG, TBB_USE_ASSERT, TBB_USE_THREADING_TOOLS, TBB_USE_PERFORMANCE_WARNINGS">
-<meta name="DC.Relation" scheme="URI" content="../../reference/environment.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="enabling_debugging_features">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Enabling Debugging Features</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="enabling_debugging_features">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="enabling_debugging_features"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Enabling Debugging Features</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Four macros control certain debugging features. In
-		  general, it is useful to compile with these features on for development code,
-		  and off for production code, because the features may decrease performance. The
-		  table below summarizes the macros and their default values. A value of 1
-		  enables the corresponding feature; a value of 0 disables the feature. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl6"><!-- --></a><table cellpadding="4" summary="" id="tbl6" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Debugging Macros</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d59878e61">
-				  <p><strong>Macro</strong>
-				  </p>
-
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d59878e69">
-				  <p><strong>Default Value</strong>
-				  </p>
-
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d59878e77">
-				  <p><strong>Feature</strong>
-				  </p>
-
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" rowspan="2" valign="top" width="NaN%" headers="d59878e61 "> 
-				  <p><samp class="codeph">TBB_USE_DEBUG</samp>
-				  </p>
-
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59878e69 ">
-				  <p>Windows* OS: 
-				  </p>
- 
-				  <p>1 if 
-					 <samp class="codeph">_DEBUG</samp> is defined, 
-				  </p>
- 
-				  <p>0 otherwise.
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" rowspan="2" valign="top" width="NaN%" headers="d59878e77 "> 
-				  <p>Default value for all other macros in this
-					 table.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59878e69 ">
-				  <p>All other systems: 0.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59878e61 ">
-				  <p><samp class="codeph">TBB_USE_ASSERT</samp>
-				  </p>
-
-				</td>
- 
-				<td class="cellrowborder" rowspan="3" valign="top" width="NaN%" headers="d59878e69 "> 
-				  <p><samp class="codeph">TBB_USE_DEBUG</samp>
-				  </p>
- 
-				  <p> 
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59878e77 ">
-				  <p>Enable internal assertion checking. Can
-					 significantly slow performance.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59878e61 ">
-				  <p><samp class="codeph">TBB_USE_THREADING_TOOLS</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59878e77 ">
-				  <p>Enable full support for Intel® Parallel
-					 Studio XE and Intel® Threading Tools.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d59878e61 ">
-				  <p><samp class="codeph">TBB_USE_PERFORMANCE_WARNINGS</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d59878e77 ">
-				  <p>Enable warnings about performance issues.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_USE_ASSERT</samp>
-		  Macro</h2> 
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_USE_ASSERT</samp> controls whether error checking is
-		  enabled in the header files. Define 
-		  <samp class="codeph">TBB_USE_ASSERT</samp> as 
-		  <samp class="codeph">1</samp> to enable error checking.
-		</p>
- 
-		<p>If an error is detected, the library prints an
-		  error message on 
-		  <samp class="codeph">stderr</samp> and calls the standard C routine 
-		  <samp class="codeph">abort</samp>. To stop a program when internal error checking
-		  detects a failure, place a breakpoint on 
-		  <samp class="codeph">tbb::assertion_failure</samp>.
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		  <p>On Microsoft Windows* operating systems, debug
-			 builds implicitly set 
-			 <samp class="codeph">TBB_USE_ASSERT</samp> to 1 by default
-		  </p>
-
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_USE_THREADING_TOOLS</samp>
-		  Macro</h2>
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_USE_THREADING_TOOLS</samp> controls support for Intel®
-		  Threading Tools:
-		</p>
- 
-		<ul type="disc"> 
-		  <li>
-			 <p>Intel® Inspector XE
-			 </p>
-
-		  </li>
- 
-		  <li>
-			 <p>Intel® VTune™ Amplifier XE
-			 </p>
-
-		  </li>
-
-		  <li>
-			 <p>Intel® Parallel Inspector
-			 </p>
-
-		  </li>
- 
-		  <li>
-			 <p>Intel® Parallel Amplifier
-			 </p>
-
-		  </li>
- 
-		  <li>
-			 <p>Intel® Thread Profiler 
-			 </p>
-
-		  </li>
- 
-		  <li>
-			 <p>Intel® Thread Checker 
-			 </p>
-
-		  </li>
- 
-		</ul>
- 
-		<p>Define 
-		  <samp class="codeph">TBB_USE_THREADING_TOOLS</samp> as 
-		  <samp class="codeph">1</samp> to enable full support for these tools. 
-		</p>
- 
-		<p>That is full support is enabled if error checking
-		  is enabled. Leave 
-		  <samp class="codeph">TBB_USE_THREADING_TOOLS</samp> undefined or zero to enable
-		  top performance in release builds, at the expense of turning off some support
-		  for tools.
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_USE_PERFORMANCE_WARNINGS</samp>
-		  Macro</h2>
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_USE_PERFORMANCE_WARNINGS</samp> controls performance
-		  warnings. Define it to be 1 to enable the warnings. Currently, the warnings
-		  affected are:
-		</p>
- 
-		<ul type="disc"> 
-		  <li>
-			 <p>Some that report poor hash functions for 
-				<samp class="codeph">concurrent_hash_map</samp>. Enabling the warnings may
-				impact performance.
-			 </p>
-
-		  </li>
- 
-		  <li>
-			 <p>Misaligned 8-byte atomic stores on Intel® IA-32
-				processors.
-			 </p>
-
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/environment.htm">Environment</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/environment/feature_macros.htm b/doc/help/reference/environment/feature_macros.htm
deleted file mode 100755
index eb72340..0000000
--- a/doc/help/reference/environment/feature_macros.htm
+++ /dev/null
@@ -1,216 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Feature macros">
-<meta name="DC.subject" content="Feature macros, TBB_DEPRECATED, TBB_USE_EXCEPTIONS, TBB_USE_CAPTURED_EXCEPTION, C++11 Support">
-<meta name="keywords" content="Feature macros, TBB_DEPRECATED, TBB_USE_EXCEPTIONS, TBB_USE_CAPTURED_EXCEPTION, C++11 Support">
-<meta name="DC.Relation" scheme="URI" content="../../reference/environment.htm">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="feature_macros">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Feature macros</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="feature_macros">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="feature_macros"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Feature macros</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Macros in this section control optional features in
-		  the library. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_DEPRECATED</samp>
-		  macro</h2> 
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_DEPRECATED</samp> controls deprecated features that would
-		  otherwise conflict with non-deprecated use. Define it to be 1 to get deprecated
-		  Intel® Threading Building Blocks (Intel® TBB) 2.1 interfaces. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_USE_EXCEPTIONS</samp>
-		  macro</h2> 
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_USE_EXCEPTIONS</samp> controls whether the library
-		  headers use exception-handling constructs such as 
-		  <samp class="codeph">try</samp>, 
-		  <samp class="codeph">catch</samp>, and 
-		  <samp class="codeph">throw</samp>. The headers do not use these constructs when 
-		  <samp class="codeph">TBB_USE_EXCEPTIONS=0</samp>. 
-		</p>
- 
-		<p>For the Microsoft Windows*, Linux*, and OS X*
-		  operating systems, the default value is 1 if exception handling constructs are
-		  enabled in the compiler, and 0 otherwise. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The runtime library may still throw an exception
-			 when 
-			 <samp class="codeph">TBB_USE_EXCEPTIONS=0</samp>. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_USE_CAPTURED_EXCEPTION</samp>
-		  macro</h2> 
-		 
-		<p>The macro 
-		  <samp class="codeph">TBB_USE_CAPTURED_EXCEPTION</samp> controls rethrow of
-		  exceptions within the library. Because C++ 1998 does not support catching an
-		  exception on one thread and rethrowing it on another thread, the library
-		  sometimes resorts to rethrowing an approximation called 
-		  <samp class="codeph">tbb::captured_exception</samp>. 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Define 
-				<samp class="codeph">TBB_USE_CAPTURED_EXCEPTION=1</samp> to make the library
-				rethrow an approximation. This is useful for uniform behavior across platforms.
-				
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Define 
-				<samp class="codeph">TBB_USE_CAPTURED_EXCEPTION=0</samp> to request rethrow of
-				the exact exception. This setting is valid only on platforms that support the
-				std::exception_ptr feature of C++11. Otherwise a compile-time diagnostic is
-				issued. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>On Windows* , Linux* and OS X* operating systems,
-		  the default value is 
-		  <samp class="codeph">1</samp> for supported host compilers with 
-		  <samp class="codeph">std::exception_ptr</samp>, and 
-		  <samp class="codeph">0</samp> otherwise. On IA-64 architecture processors the
-		  default value is 
-		  <samp class="codeph">0</samp>. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>In order for exact exception propagation to work
-			 properly an appropriate library binary should be used. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">C++11 Support</h2> 
-		 
-		<p>To enable C++11 specific code, you need to use a compiler that
-		  supports C++11 mode, and compile your code with the C++11 mode set. C++11
-		  support is off by default in the compiler. The following table shows the option
-		  for turning it on. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl9"><!-- --></a><table cellpadding="4" summary="" id="tbl9" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Compilation Commands for Setting C++11 Support</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="30.959752321981426%" id="d60661e176"> 
-				  <p>Environment 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="69.04024767801857%" id="d60661e182"> 
-				  <p>Intel® C++ Compiler (Version 11.0) 
-				  </p>
- 
-				  <p>Compilation Command and Option 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="30.959752321981426%" headers="d60661e176 "> 
-				  <p>Windows* OS systems 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="69.04024767801857%" headers="d60661e182 "> 
-				  <p><samp class="codeph">icl /Qstd:c++0x foo.cpp</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="30.959752321981426%" headers="d60661e176 "> 
-				  <p>Linux* OS systems 
-				  </p>
- 
-				  <p>OS X* systems 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="69.04024767801857%" headers="d60661e182 "> 
-				  <p><samp class="codeph">icc -std=c++0x foo.cpp</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
-
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/environment.htm">Environment</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../exceptions.htm">Exceptions 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/environment/version_information.htm b/doc/help/reference/environment/version_information.htm
deleted file mode 100755
index 3f87f64..0000000
--- a/doc/help/reference/environment/version_information.htm
+++ /dev/null
@@ -1,355 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Version Information">
-<meta name="DC.subject" content="Version Information, TBB_INTERFACE_VERSION, TBB_INTERFACE_VERSION_MAJOR, TBB_INTERFACE_VERSION/1000, TBB_COMPATIBLE_INTERFACE_VERSION, TBB_USE_ASSERT, DO_ITT_NOTIFY, ALLOCATOR">
-<meta name="keywords" content="Version Information, TBB_INTERFACE_VERSION, TBB_INTERFACE_VERSION_MAJOR, TBB_INTERFACE_VERSION/1000, TBB_COMPATIBLE_INTERFACE_VERSION, TBB_USE_ASSERT, DO_ITT_NOTIFY, ALLOCATOR">
-<meta name="DC.Relation" scheme="URI" content="../../reference/environment.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="version_information">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Version Information</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="version_information">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="version_information"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Version Information</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Intel® Threading Building Blocks (Intel® TBB) has
-		  macros, an environment variable, and a function that reveal version and
-		  run-time information. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Version Macros </h2> 
-		 
-		<p>The header 
-		  <samp class="codeph">tbb/tbb_stddef.h</samp> defines macros related to versioning,
-		  as described below. You should not redefine these macros. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl4"><!-- --></a><table cellpadding="4" summary="" id="tbl4" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Version Macros</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d61139e81"> 
-				  <p><strong>Macro</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d61139e89"> 
-				  <p><strong>Description of Value</strong> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e81 "> 
-				  <p><samp class="codeph">TBB_INTERFACE_VERSION</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e89 "> 
-				  <p>Current interface version. The value is a
-					 decimal numeral of the form 
-					 <samp class="codeph"><em>xyyy</em></samp> where 
-					 <samp class="codeph"><em>x</em></samp> is the major version number and 
-					 <samp class="codeph"><em>y</em></samp> is the minor version number. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e81 "> 
-				  <p><samp class="codeph">TBB_INTERFACE_VERSION_MAJOR</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e89 "> 
-				  <p><samp class="codeph">TBB_INTERFACE_VERSION/1000;</samp> that is, the
-					 major version number. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e81 "> 
-				  <p><samp class="codeph">TBB_COMPATIBLE_INTERFACE_VERSION</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e89 "> 
-				  <p>Oldest major interface version still
-					 supported. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_VERSION</samp> Environment
-		  Variable</h2> 
-		 
-		<p>Set the environment variable 
-		  <samp class="codeph">TBB_VERSION</samp> to 
-		  <samp class="codeph">1</samp> to cause the library to print information on 
-		  <samp class="codeph">stderr</samp>. Each line is of the form 
-		  <samp class="codeph">“TBB: 
-			 <em>tag value</em>”</samp>, where 
-		  <em>tag</em> and 
-		  <em>value</em> are described below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl5"><!-- --></a><table cellpadding="4" summary="" id="tbl5" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Output from TBB_VERSION</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d61139e217"> 
-				  <p><strong>Tag</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d61139e225"> 
-				  <p><strong>Description of Value</strong> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">VERSION</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p>Intel TBB product version number. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">INTERFACE_VERSION</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p>Value of macro 
-					 <samp class="codeph">TBB_INTERFACE_VERSION</samp> when library was
-					 compiled. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">BUILD_</samp>... 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p>Various information about the machine
-					 configuration on which the library was built. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">TBB_USE_ASSERT</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p>Setting of macro 
-					 <samp class="codeph">TBB_USE_ASSERT</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">DO_ITT_NOTIFY</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p><samp class="codeph">1</samp> if library can enable
-					 instrumentation for Intel® Parallel Studio XE and Intel® Threading Tools; 
-					 <samp class="codeph">0</samp> or 
-					 <samp class="codeph">undefined</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">ITT</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p><samp class="codeph">yes</samp> if library has enabled
-					 instrumentation for Intel® Parallel Studio XE and Intel® Threadng Tools, no
-					 otherwise. Typically 
-					 <samp class="codeph">yes</samp> only if the program is running under
-					 control of Intel® Parallel Studio XE or Intel® Threadng Tools. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d61139e217 "> 
-				  <p><samp class="codeph">ALLOCATOR</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d61139e225 "> 
-				  <p>Underlying allocator for 
-					 <samp class="codeph">tbb::tbb_allocator</samp>. It is 
-					 <samp class="codeph">scalable_malloc</samp> if the Intel® TBB malloc
-					 library was successfully loaded; 
-					 <samp class="codeph">malloc</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>This output is implementation specific and may
-			 change at any time. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">TBB_runtime_interface_version</samp>
-		  Function</h2> 
-		 
-		<p><strong>Summary</strong> 
-		</p>
- 
-		<p>Function that returns the interface version of the
-		  Intel® TBB library that was loaded at runtime. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>extern “C” int TBB_runtime_interface_version();</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/tbb_stddef.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>The value returned by 
-		  <samp class="codeph">TBB_runtime_interface_version()</samp> may differ from the
-		  value of 
-		  <samp class="codeph">TBB_INTERFACE_VERSION</samp> obtained at compile time. This
-		  can be used to identify whether an application was compiled against a
-		  compatible version of the Intel® TBB headers. 
-		</p>
- 
-		<p>In general, the run-time value 
-		  <samp class="codeph">TBB_runtime_interface_version()</samp> must be greater than
-		  or equal to the compile-time value of TBB_INTERFACE_VERSION. Otherwise the
-		  application may fail to resolve all symbols at run time. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/environment.htm">Environment</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/exceptions.htm b/doc/help/reference/exceptions.htm
deleted file mode 100755
index 9b1353d..0000000
--- a/doc/help/reference/exceptions.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Exceptions">
-<meta name="DC.subject" content="Exceptions">
-<meta name="keywords" content="Exceptions">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/exceptions/tbb_exception.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/exceptions/captured_exception.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/exceptions/movable_exception.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/exceptions/specific_exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Exceptions">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Exceptions</title>
-</head>
-<body id="Exceptions">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Exceptions"><!-- --></a>
-
-
-    <h1 class="topictitle1">Exceptions</h1>
-
-   
-<div>
-       <div class="section">        <p>Intel® Threading Building Blocks (Intel® TBB) propagates exceptions along logical paths in a tree of tasks. Because these paths cross between thread stacks, support for moving an exception between stacks is necessary. </p>
-<p>When an exception is thrown out of a task, it is caught inside the Intel® TBB run-time and handled as follows:</p>
-<ol class="ol_3">
-           <li>If the cancellation group for the task has already been cancelled, the exception is ignored.</li>
-
-           <li>Otherwise the exception or an approximation of it is captured and the group is cancelled.</li>
-
-           <li>The captured exception is rethrown from the root of the cancellation group after all tasks in the group have completed or have been successfully cancelled.</li>
-
-       </ol>
-<p>The exact exception is captured when both of the following conditions are true:</p>
-<ul type="disc" class="ul_4">
-           <li>The task's <samp class="codeph">task_group_context</samp> was created in a translation unit compiled with <samp class="codeph">TBB_USE_CAPTURED_EXCEPTION=0</samp>. </li>
-
-           <li>The Intel® TBB library was built with a compiler that supports the <samp class="codeph">std::exception_ptr</samp> feature of C++11.</li>
-
-       </ul>
-<p>Otherwise an appoximation of the original exception <em>x</em> is captured as follows:</p>
-<ol class="ol_3">
-           <li>If <samp class="codeph"><samp class="codeph"><em>x</em></samp></samp> is a <samp class="codeph">tbb_exception</samp>, it
-                    is captured by <samp class="codeph"><em>x</em>.move()</samp>.</li>
-
-           <li>If <samp class="codeph"><em>x</em></samp> is a <samp class="codeph">std::exception</samp>, it is captured as
-                    a
-                        <samp class="codeph">tbb::captured_exception(typeid(<em>x</em>).name(),<em>x</em>.what())</samp>. </li>
-
-           <li>Otherwise <samp class="codeph"><em>x</em></samp> is captured as a <samp class="codeph">tbb::captured</samp>
-                    exception with implementation-specified value for <samp class="codeph">name()</samp> and
-                        <samp class="codeph">what()</samp>.</li>
-
-       </ol>
-</div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/exceptions/tbb_exception.htm">tbb_exception</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/exceptions/captured_exception.htm">captured_exception</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/exceptions/movable_exception.htm">movable_exception<ExceptionData></a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/exceptions/specific_exceptions.htm">Specific Exceptions</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/exceptions/captured_exception.htm b/doc/help/reference/exceptions/captured_exception.htm
deleted file mode 100755
index 6f37d1b..0000000
--- a/doc/help/reference/exceptions/captured_exception.htm
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="captured_exception">
-<meta name="DC.subject" content="captured_exception">
-<meta name="keywords" content="captured_exception">
-<meta name="DC.Relation" scheme="URI" content="../../reference/exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="tbb_exception.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="captured_exception">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>captured_exception</title>
-</head>
-<body id="captured_exception">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="captured_exception"><!-- --></a>
-
- 
-  <h1 class="topictitle1">captured_exception</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class used by Intel® Threading Building Blocks (Intel® TBB) to capture an
-		  approximation of an exception. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class captured_exception;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/tbb_exception.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>When a task throws an exception, sometimes Intel®
-		  TBB converts the exception to a 
-		  <samp class="codeph">captured_exception</samp> before propagating it. The
-		  conditions for conversion are described in Section Exceptions. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-        class captured_exception: public tbb_exception {
-            captured_exception(const captured_exception& src);
-            captured_exception(const char* name, const char* info);
-            ~captured_exception() throw();
-            captured_exception& operator=(const captured_exception&);
-            captured_exception* move() throw();
-            void destroy() throw();
-            void throw_self();
-            const char* name() const throw();
-            const char* what() const throw();
-        };
-    }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides information on the additions that 
-			 <samp class="codeph">captured_exception</samp> makes to 
-			 <samp class="codeph">tbb_exception</samp>. Section 
-			 <samp class="codeph">tbb_exception</samp> describes the rest of the interface. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d62537e85">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d62537e88">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d62537e85 "><span class="keyword">captured_exception( const char*
-						name, const char* info )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d62537e88 "> 
-					 <p>Constructs a 
-						<samp class="codeph">captured_exception</samp> with the specified 
-						<samp class="codeph"><em>name</em></samp> and 
-						<samp class="codeph"><em>info</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/exceptions.htm">Exceptions</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="tbb_exception.htm">tbb_exception 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/exceptions/movable_exception.htm b/doc/help/reference/exceptions/movable_exception.htm
deleted file mode 100755
index 53919b0..0000000
--- a/doc/help/reference/exceptions/movable_exception.htm
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="movable_exception<ExceptionData>">
-<meta name="DC.subject" content="movable_exception">
-<meta name="keywords" content="movable_exception">
-<meta name="DC.Relation" scheme="URI" content="../../reference/exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="tbb_exception.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="movable_exception">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>movable_exception<ExceptionData></title>
-</head>
-<body id="movable_exception">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="movable_exception"><!-- --></a>
-
- 
-  <h1 class="topictitle1">movable_exception<ExceptionData></h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Subclass of 
-		  <samp class="codeph">tbb_exceptio</samp>n interface that supports propagating
-		  copy-constructible data. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>template<typename ExceptionData> class movable_exception;</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/tbb_exception.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This template provides a convenient way to implement a subclass of 
-		  <samp class="codeph">tbb_exception</samp> that propagates arbitrary
-		  copy-constructible data. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> namespace tbb {
-                   template<typename ExceptionData>
-                    class movable_exception: public tbb_exception {
-                    public:
-                    movable_exception( const ExceptionData& src );
-                    movable_exception( const movable_exception& src )throw();
-                    ~movable_exception() throw();
-                    movable_exception& operator=( const movable_exception& src );
-                    ExceptionData& data() throw();
-                    const ExceptionData& data() const throw();
-                    movable_exception* move() throw();
-                    void destroy() throw();
-                    void throw_self();
-                    const char* name() const throw();
-                    const char* what() const throw();
-                    };
-                    }</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides information on the additions that 
-			 <samp class="codeph">movable_exception</samp> makes to 
-			 <samp class="codeph">tbb_exception</samp>. Section 
-			 <samp class="codeph">tbb_exception</samp> describes the rest of the interface. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d62830e94">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d62830e97">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d62830e94 "><span class="keyword">movable_exception( const
-						ExceptionData& src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d62830e97 "> 
-					 <p>Construct 
-						<samp class="codeph">movable_exception</samp> containing copy of src. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d62830e94 "><span class="keyword">ExceptionData& data()
-						throw()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d62830e97 "> 
-					 <p><strong>Returns</strong>: Reference to contained data. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d62830e94 "><span class="keyword">const ExceptionData& data()
-						const throw()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d62830e97 "> 
-					 <p><strong>Returns</strong>: Const reference to contained data. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/exceptions.htm">Exceptions</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="tbb_exception.htm">tbb_exception 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/exceptions/specific_exceptions.htm b/doc/help/reference/exceptions/specific_exceptions.htm
deleted file mode 100755
index a702653..0000000
--- a/doc/help/reference/exceptions/specific_exceptions.htm
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Specific Exceptions">
-<meta name="DC.subject" content="Specific Exceptions">
-<meta name="keywords" content="Specific Exceptions">
-<meta name="DC.Relation" scheme="URI" content="../../reference/exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="specific_exceptions">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Specific Exceptions</title>
-</head>
-<body id="specific_exceptions">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="specific_exceptions"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Specific Exceptions</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Exceptions thrown by other library components.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		 
-		<pre>class bad_last_alloc;
-class improper_lock;
-class invalid_multiple_scheduling;
-hclass missing_wait;
-class user_abort;</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		 
-		<pre>#include "tbb/tbb_exception.h"</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		 
-		<p>The table below describes when the exceptions are thrown. 
-		</p>
- 
-		<p>Classes for Specific Exceptions.
-		</p>
-
-	 </div>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all">
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d63237e66"> 
-				  <p><strong>Exception</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d63237e74"> 
-				  <p><strong>Thrown when...</strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
-
-		  </thead>
-
-		  <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d63237e66 "> 
-				  <p>bad_last_alloc
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d63237e74 "> 
-				  <ol>
-					 <li>A 
-						<samp class="codeph">pop</samp> operation on a 
-						<samp class="codeph">concurrent_queue</samp> or 
-						<samp class="codeph">concurrent_bounded_queue</samp> corrersponds to a
-						push that threw an exception.
-					 </li>
-
-					 <li> An operation on a 
-						<samp class="codeph">concurrent_vector</samp> cannot be performed
-						because a prior operation threw an exception. 
-					 </li>
-
-				  </ol>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d63237e66 "> 
-				  <p>improper_lock
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d63237e74 "> 
-				  <p>A thread attempts to lock a 
-					 <samp class="codeph">critical_section</samp> or 
-					 <samp class="codeph">reader_writer_lock</samp> that it it has already
-					 locked.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d63237e66 "> 
-				  <p>invalid_multiple_scheduling
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d63237e74 "> 
-				  <p>A 
-					 <samp class="codeph">task_group</samp> or 
-					 <samp class="codeph">structured_task_group</samp> attempts to run a 
-					 <samp class="codeph">task_handle</samp> twice.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d63237e66 "> 
-				  <p>missing_wait
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d63237e74 "> 
-				  <p>A 
-					 <samp class="codeph">push</samp> or 
-					 <samp class="codeph">pop</samp> operation on a 
-					 <samp class="codeph">concurrent_bounded_queue</samp> was aborted by the
-					 user.<samp class="codeph">wait()</samp> is invoked.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" valign="top" headers="d63237e66 ">
-				  <p>user_abort
-				  </p>
-
-				</td>
-
-				<td class="cellrowborder" valign="top" headers="d63237e74 ">&#xA0;</td>
-
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb {
-        class bad_last_alloc: public std::bad_alloc {
-        public:
-            const char* what() const throw();
-        };
-        class improper_lock: public std::exception {
-        public:
-            const char* what() const throw();
-        };
-        class invalid_multiple_scheduler: public std::exception {
-           const char* what() const throw();
-        };
-        class missing_wait: public std::exception {
-        public:
-            const char* what() const throw();
-        };
-        class user_abort : public std::exception {
-        public:
-           const char* what() const throw();
-        };
-		  
-    }</pre> 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/exceptions.htm">Exceptions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/exceptions/tbb_exception.htm b/doc/help/reference/exceptions/tbb_exception.htm
deleted file mode 100755
index 2dfbadb..0000000
--- a/doc/help/reference/exceptions/tbb_exception.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tbb_exception">
-<meta name="DC.subject" content="tbb_exception">
-<meta name="keywords" content="tbb_exception">
-<meta name="DC.Relation" scheme="URI" content="../../reference/exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_exception">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>tbb_exception</title>
-</head>
-<body id="tbb_exception">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_exception"><!-- --></a>
-
-
-    <h1 class="topictitle1">tbb_exception</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Exception that can be moved to another thread.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class tbb_exception;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/tbb_exception.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>In a parallel environment, exceptions sometimes have to be propagated across threads. Class <samp class="codeph">tbb_exception</samp> subclasses <samp class="codeph">std::exception</samp> to add support for such propagation. </p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>        namespace tbb {
-            class tbb_exception: public std::exception {
-                virtual tbb_exception* move() = 0;
-                virtual void destroy() throw() = 0;
-                virtual void throw_self() = 0;
-                virtual const char* name() throw() = 0;
-                virtual const char* what() throw() = 0;
-            };  
-        }</pre>
-        <p>Derived classes should define the abstract virtual methods as follows:</p>
-
-        <ul type="disc">
-            <li><p><samp class="codeph">move()</samp> should create a pointer to a copy of the exception that can outlive the original. It may move the contents of the original.</p>
-</li>
-
-            <li><p><samp class="codeph">destroy()</samp> should destroy a copy created by <samp class="codeph">move()</samp>.</p>
-</li>
-
-            <li><p><samp class="codeph">throw_self()</samp> should throw <samp class="codeph">*this</samp>. </p>
-</li>
-
-            <li><p><samp class="codeph">name()</samp> typically returns the RTTI name of the originally intercepted exception.</p>
-</li>
-
-            <li><p><samp class="codeph">what()</samp> returns a null-terminated string describing the exception.</p>
-</li>
-
-        </ul>
-</div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/exceptions.htm">Exceptions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph.htm b/doc/help/reference/flow_graph.htm
deleted file mode 100755
index 1fc71cb..0000000
--- a/doc/help/reference/flow_graph.htm
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Flow Graph">
-<meta name="DC.subject" content="Flow Graph">
-<meta name="keywords" content="Flow Graph">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/primary_components.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/message_passing_protocol.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/body_objects.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/flow_tuple.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/dependency_flow_graph_example.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/message_flow_graph_example.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/graph_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/sender_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/receiver_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/continue_msg_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/continue_receiver_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/graph_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/continue_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/func_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/source_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/multifunc_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/overwrite_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/write_once_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/broadcast_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/buffer_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/queue_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/priority_queue_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/sequencer_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/limiter_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/join_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/split_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/input_port_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/make_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/remove_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph/copy_body_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="flow_graph">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Flow Graph</title>
-</head>
-<body id="flow_graph">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="flow_graph"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Flow Graph</h1>
- 
-   
-  <div> 
-	 <p>There are some applications that best express dependencies as messages
-		passed between nodes in a flow graph. These messages may contain data or simply
-		act as signals that a predecessor has completed. The <span class="keyword">graph</span> class and its
-		associated node classes can be used to express such applications. All
-		graph-related classes and functions are in the <span class="keyword">tbb::flow</span> namespace.
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/flow_graph/primary_components.htm">Primary Components</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/message_passing_protocol.htm">Message Passing Protocol</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/body_objects.htm">Body Objects</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/flow_tuple.htm">flow::tuple Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/dependency_flow_graph_example.htm">Dependency Flow Graph Example</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/message_flow_graph_example.htm">Message Flow Graph Example</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/graph_cls.htm">graph Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/sender_cls.htm">sender Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/receiver_cls.htm">receiver Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/continue_msg_cls.htm">continue_msg Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/continue_receiver_cls.htm">continue_receiver Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/graph_node_cls.htm">graph_node Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/continue_node_cls.htm">continue_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/func_node_cls.htm">function_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/source_node_cls.htm">source_node Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/multifunc_node_cls.htm">multifunction_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/overwrite_node_cls.htm">overwrite_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/write_once_node_cls.htm">write_once_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/broadcast_node_cls.htm">broadcast_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/buffer_node_cls.htm">buffer_node Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/queue_node_cls.htm">queue_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/priority_queue_node_cls.htm">priority_queue_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/sequencer_node_cls.htm">sequencer_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/limiter_node_cls.htm">limiter_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/join_node_cls.htm">join_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/split_node_cls.htm">split_node Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/input_port_func.htm">input_port Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/make_edge_func.htm">make_edge Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/remove_edge_func.htm">remove_edge Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/flow_graph/copy_body_func.htm">copy_body Template Function</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/body_objects.htm b/doc/help/reference/flow_graph/body_objects.htm
deleted file mode 100755
index 06307e2..0000000
--- a/doc/help/reference/flow_graph/body_objects.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Body Objects">
-<meta name="DC.subject" content="Body Objects">
-<meta name="keywords" content="Body Objects">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="copy_body_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="body_objects">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Body Objects</title>
-</head>
-<body id="body_objects">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="body_objects"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Body Objects</h1>
- 
-   
-  <div> 
-	 <p>Some nodes execute user-provided body objects. These objects can be
-		created by instantiating function objects or lambda expressions. The nodes that
-		use body objects include 
-		<span class="keyword">continue_node</span>, 
-		<span class="keyword">function_node</span>,
-		<span class="keyword">source_node</span> and
-                <span class="keyword">multifunction_node</span>. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p> The body objects passed to the flow graph nodes are copied. Therefore
-		  updates to member variables will not affect the original object used to
-		  construct the node. If the state held within a body object must be inspected
-		  from outside of the node, the 
-		<span class="option">copy_body</span> function can be used to obtain an updated
-		copy. 
-		</p>
- 
-	 </div> 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p> The source_node has a one-item buffer which may contain a value
-                obtained from executing the node's body.  If the source_node has
-                emitted <samp class="codeph">N</samp> items, the state of the body returned by
-                <span class="option">copy_body</span> may indicate it has been called <samp class="codeph">N + 1</samp> times. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="copy_body_func.htm">copy_body Template Function
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/broadcast_node_cls.htm b/doc/help/reference/flow_graph/broadcast_node_cls.htm
deleted file mode 100755
index 885ba28..0000000
--- a/doc/help/reference/flow_graph/broadcast_node_cls.htm
+++ /dev/null
@@ -1,320 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="broadcast_node Template Class">
-<meta name="DC.subject" content="broadcast_node Template Class">
-<meta name="keywords" content="broadcast_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="broadcast_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>broadcast_node Template Class</title>
-</head>
-<body id="broadcast_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="broadcast_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">broadcast_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A node that broadcasts incoming messages to all of its successors. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename T > class broadcast_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">broadcast_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that broadcasts incoming messages of
-		  type 
-		  <span class="keyword">T</span> to all of its successors. There is no buffering in
-		  the node, so all messages are forwarded immediately to all successors. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class broadcast_node :
-  public graph_node, public receiver<T>, public sender<T> {
-public:
-    broadcast_node( graph &g );
-    broadcast_node( const broadcast_node &src );
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d64417e156">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d64417e159">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">broadcast_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">broadcast_node</span> that belongs to the 
-						<span class="keyword">graph g</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">broadcast_node( const
-						broadcast_node &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">broadcast_node</span> that belongs to the same 
-						<span class="keyword">graph g</span> as 
-						<span class="keyword">src</span>. The list of predecessors, the list of
-						successors and the messages in the buffer are NOT copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Adds 
-						<span class="keyword">v</span> to all successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: always returns 
-						<span class="keyword">true</span>, even if it was unable to
-						successfully forward the message to any of its successors. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p>If the internal buffer is valid, assigns the value to 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if 
-						<span class="keyword">v</span> is assigned to. 
-						<span class="keyword">false</span> if 
-						<span class="keyword">v</span> is not assigned to. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d64417e156 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d64417e159 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/buffer_node_cls.htm b/doc/help/reference/flow_graph/buffer_node_cls.htm
deleted file mode 100755
index b909192..0000000
--- a/doc/help/reference/flow_graph/buffer_node_cls.htm
+++ /dev/null
@@ -1,362 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="buffer_node Class">
-<meta name="DC.subject" content="buffer_node Class">
-<meta name="keywords" content="buffer_node Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="buffer_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>buffer_node Class</title>
-</head>
-<body id="buffer_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="buffer_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">buffer_node Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An unbounded buffer of messages of type 
-		  <span class="keyword">T</span>. Messages are forwarded in arbitrary order. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename T, typename A = cache_aligned_allocator<T> >
-class buffer_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">buffer_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that forwards messages in arbitrary
-		  order to a single successor in its successor set. Successors are tried in the
-		  order that they were registered with the node. If a successor rejects the
-		  message, it is removed from the successor list according to the policy in the
-		  Message Passing Protocol, and the next successor in the set is tried. This
-		  continues until a successor accepts the message, or all successors have been
-		  attempted. Items that are successfully transferred to a successor are removed
-		  from the buffer. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">buffer_node</span> is reservable and supports a single
-		  reservation at a time. While an item is reserved, other items may still be
-		  forwarded to successors and 
-		  <span class="keyword">try_get</span> calls will return other non-reserved items
-		  if available. While an item is reserved, 
-		  <span class="keyword">try_put</span> will still return 
-		  <span class="keyword">true</span> and add items to the buffer. 
-		</p>
- 
-		<p>An allocator of type 
-		  <span class="keyword">A</span> is used to allocate internal memory for the 
-		  <span class="keyword">buffer_node.</span> 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
- 
-template< typename T, typename A = cache_aligned_allocator<T> >
-class buffer_node :
-  public graph_node, public receiver<T>, public sender<T> {
-public:
-    buffer_node( graph &g );
-    buffer_node( const buffer_node &src );
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d65487e185">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d65487e188">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">buffer_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">buffer_node</span> that belongs to the 
-						<span class="keyword">graph g</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">buffer_node( const buffer_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">buffer_node</span>. The buffered value and list
-						of successors is NOT copied from 
-						<span class="keyword">src</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Adds 
-						<span class="keyword">v</span> to the buffer. If 
-						<span class="keyword">v</span> is the only item in the buffer, a task
-						is also spawned to forward the item to a successor. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if an item can be removed from the
-						buffer and assigned to 
-						<span class="keyword">v</span>. Returns 
-						<span class="keyword">false</span> if there is no non-reserved item
-						currently in the buffer. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Assigns a newly reserved item to 
-						<span class="keyword">v</span> if there is no reservation currently
-						held and there is at least one item available in the buffer. If a new
-						reservation is made, the buffer is marked as reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if 
-						<span class="keyword">v</span> has been assigned a newly reserved item.
-						Returns 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Releases the reservation on the buffer. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> remains in the buffer. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d65487e185 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d65487e188 "> 
-					 <p>Releases the reservation on the buffer. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> remains in the buffer. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/continue_msg_cls.htm b/doc/help/reference/flow_graph/continue_msg_cls.htm
deleted file mode 100755
index 6d9fa54..0000000
--- a/doc/help/reference/flow_graph/continue_msg_cls.htm
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="continue_msg Class">
-<meta name="DC.subject" content="continue_msg Class">
-<meta name="keywords" content="continue_msg Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="continue_msg_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>continue_msg Class</title>
-</head>
-<body id="continue_msg_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="continue_msg_cls"><!-- --></a>
-
-
-  <h1 class="topictitle1">continue_msg Class</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>An empty class that represent a continue message. An object of this
-		  class is used to indicate that the sender has completed.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>class continue_msg;</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#include "tbb/flow_graph.h"</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb { namespace flow { class continue_msg {}; } }</pre>
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/continue_node_cls.htm b/doc/help/reference/flow_graph/continue_node_cls.htm
deleted file mode 100755
index 7d61a9b..0000000
--- a/doc/help/reference/flow_graph/continue_node_cls.htm
+++ /dev/null
@@ -1,563 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="continue_node Template Class">
-<meta name="DC.subject" content="continue_node Template Class">
-<meta name="keywords" content="continue_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="make_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="remove_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="copy_body_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="continue_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>continue_node Template Class</title>
-</head>
-<body id="continue_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="continue_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">continue_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">continue_receiver</span> and a 
-		  <span class="keyword">sender<T></span>. It executes a specified body object
-		  when triggered and broadcasts the generated value to all of its successors. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename Output > class continue_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This type is used for nodes that wait for their predecessors to
-		  complete before executing, but no explicit data is passed across the incoming
-		  edges. The output of the node can be a 
-		  <span class="keyword">continue_msg</span> or a value. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">continue_node</span> maintains an internal threshold, T,
-		  and an internal counter, C. If a value for the number of predecessors is
-		  provided at construction, then T is set to the provided value and C=0.
-		  Otherwise, C=T=0.   
-		</p>
- 
-		<p>At each call to method 
-		  <span class="keyword">register_predecessor</span>, the threshold T is
-		  incremented. At each call to method 
-		  <span class="keyword">remove_predecessor</span>, the threshold T is decremented.
-		  The functions 
-		  <span class="keyword">make_edge</span> and 
-		  <span class="keyword">remove_edge</span> appropriately call 
-		  <span class="keyword">register_predecessor</span> and 
-		  <span class="keyword">remove_predecessor</span> when edges are added to or
-		  removed from a 
-		  <span class="keyword">continue_node.</span> 
-		</p>
- 
-		<p>At each call to method 
-		  <span class="keyword">try_put</span>, C is incremented. If after the increment,
-		  C>=T, then C is reset to 0 and a task is spawned to broadcast the result of
-		  
-		  <span class="keyword">body()</span> to all successors. The increment of C,
-		  spawning of the task, and the resetting of C are all done atomically with
-		  respect to the node. If after the increment, C<T, no additional action is
-		  taken. 
-		</p>
- 
-		<p>The value generated by an execution of the body object is broadcast to
-		  all successors. Rejection of messages by successors is handled using the
-		  protocol in the Message Passing Protocol, see link below. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">continue_node</span> can serve as a terminal node in the
-		  graph. The convention is to use an 
-		  <span class="keyword">Output</span> of 
-		  <span class="keyword">continue_msg</span> and attach no successor. 
-		</p>
- 
-		<p>The Body concept for 
-		  <span class="keyword">continue_node</span> is shown in below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl22"><!-- --></a><table cellpadding="4" summary="" id="tbl22" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">continue_node<Output> Body Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d66767e141"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d66767e147"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e141 "> 
-				  <p> 
-					 <pre>B::B( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e147 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e141 "> 
-				  <p> 
-					 <pre>B::~B()</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e147 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e141 "> 
-				  <p> 
-					 <pre>void operator=( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e147 "> 
-				  <p>Assignment. The return type 
-					 <span class="keyword">void</span> in the pseudo-signature denotes that 
-					 <span class="keyword">operator=</span> is not required to return a value.
-					 The actual 
-					 <span class="keyword">operator=</span> can return a value, which will be
-					 ignored. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e141 "> 
-				  <p> 
-					 <pre>Output B::operator()(const continue_msg &v) const</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d66767e147 "> 
-				  <p>Perform operation and return value of type Output. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> The body object passed to a 
-			 <span class="keyword">continue_node</span> is copied. Therefore updates to
-			 member variables will not affect the original object used to construct the
-			 node. If the state held within a body object must be inspected from outside of
-			 the node, the 
-			 <span class="keyword">copy_body</span> function can be used to obtain an
-			 updated copy. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The body object may throw or cancel its enclosing graph. See
-			 task_group_context and Exceptions sections for a description. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p><span class="keyword">Output</span> must be copy-constructible and assignable.
-			 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename Output >
-class continue_node :
-  public graph_node, public continue_receiver,
-  public sender<Output> {
-public:
-    template<typename Body>
-    continue_node( graph &g, Body body );
-    template<typename Body>
-    continue_node( graph &g, int number_of_predecessors,
-                     Body body );
-    continue_node( const continue_node &src );
- 
-    // continue_receiver
-    typedef continue_msg input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<Output>
-    typedef Output output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d66767e288">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d66767e291">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">template< typename Body>
-						continue_node( graph &g, Body body )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Constructs a 
-						<span class="keyword">continue_node</span> that will invoke 
-						<span class="keyword">body</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">template< typename Body>
-						continue_node( graph &g, int number_of_predecessors, Body body )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Constructs a 
-						<span class="keyword">continue_node</span> that will invoke 
-						<span class="keyword">body</span>. The threshold T is initialized to 
-						<span class="keyword">number_of_predecessors</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">continue_node( const continue_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Constructs a 
-						<span class="keyword">continue_node</span> that has the same initial
-						state that 
-						<span class="keyword">src</span> had after its construction. It does
-						not copy the current count of 
-						<span class="keyword">try_puts</span> received, or the current known
-						number of predecessors. The 
-						<span class="keyword">continue_node</span> that is constructed will
-						have a reference to the same 
-						<span class="keyword">graph</span> object as 
-						<span class="keyword">src</span>, have a copy of the initial 
-						<span class="keyword">body</span> used by 
-						<span class="keyword">src</span>, and only have a non-zero threshold if
-						
-						<span class="keyword">src</span> was constructed with a non-zero
-						threshold. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The new body object is copy constructed from a copy of
-						  the original body provided to 
-						  <span class="keyword">src</span> at its construction. Therefore
-						  changes made to member variables in 
-						  <span class="keyword">src</span>'s body after the construction of 
-						  <span class="keyword">src</span> will not affect the body of the new 
-						  <span class="keyword">continue_node</span>. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Increments the count of 
-						<span class="keyword">try_put</span> calls received. If the incremented
-						count is equal to the number of known predecessors, a task is spawned to
-						execute the 
-						<span class="keyword">body</span> and the internal count of 
-						<span class="keyword">try_put</span> calls is reset to zero. This
-						method performs as if the spawning of the body task and the updates to the
-						internal count occur atomically. It does not wait for the execution of the body
-						to complete. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Increments the number of known predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Decrements the number of known predecessors. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The body is not called if the count of 
-						  <span class="keyword">try_put</span> calls received becomes equal to
-						  the number of known predecessors as a result of this call. That is, a call to 
-						  <span class="keyword">remove_predecessor</span> will never invoke the
-						  body. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>The 
-						<span class="keyword">continue_node</span> does not contain buffering.
-						Therefore it always rejects 
-						<span class="keyword">try_get</span> calls. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>The 
-						<span class="keyword">continue_node</span> does not contain buffering.
-						Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>The 
-						<span class="keyword">continue_node</span> does not contain buffering.
-						Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d66767e288 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d66767e291 "> 
-					 <p>The 
-						<span class="keyword">continue_node</span> does not contain buffering.
-						Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="make_edge_func.htm">make_edge Template Function 
-		  </a></div>
-<div><a href="remove_edge_func.htm">remove_edge Template Function 
-		  </a></div>
-<div><a href="copy_body_func.htm">copy_body Template Function 
-		  </a></div>
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context 
-		  </a></div>
-<div><a href="../exceptions.htm">Exceptions 
-		  </a></div>
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/continue_receiver_cls.htm b/doc/help/reference/flow_graph/continue_receiver_cls.htm
deleted file mode 100755
index 28a664d..0000000
--- a/doc/help/reference/flow_graph/continue_receiver_cls.htm
+++ /dev/null
@@ -1,257 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="continue_receiver Class">
-<meta name="DC.subject" content="continue_receiver Class">
-<meta name="keywords" content="continue_receiver Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="continue_receiver_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>continue_receiver Class</title>
-</head>
-<body id="continue_receiver_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="continue_receiver_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">continue_receiver Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An abstract base class for nodes that act as receivers of 
-		  <span class="keyword">continue_msg</span> objects. These nodes call a method 
-		  <span class="keyword">execute</span> when the number of 
-		  <span class="keyword">try_put</span> calls reaches a threshold that represents
-		  the number of known predecessors. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class continue_receiver;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This type of node is triggered when its method 
-		  <span class="keyword">try_put</span> has been called a number of times that is
-		  equal to the number of known predecessors. When triggered, the node calls the
-		  method 
-		  <span class="keyword">execute,</span> then resets and will fire again when it
-		  receives the correct number of 
-		  <span class="keyword">try_put</span> calls. This node type is useful for
-		  dependency graphs, where each node must wait for its predecessors to complete
-		  before executing, but no explicit data is passed across the edge. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-class continue_receiver : public receiver< continue_msg > {
-public:
-    typedef continue_msg input_type;
-    typedef sender< input_type > predecessor_type;
-    continue_receiver( int num_predecessors = 0 );
-    continue_receiver( const continue_receiver &src );
-    virtual ~continue_receiver();
-    virtual bool try_put( const input_type &v );
-    virtual bool register_predecessor( predecessor_type &p );
-    virtual bool remove_predecessor( predecessor_type &p );
- 
-protected:
-    virtual void execute() = 0;
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d68500e131">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d68500e134">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">continue_receiver( int
-						num_predecessors = 0 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>Constructs a 
-						<span class="keyword">continue_receiver</span> that is initialized to
-						trigger after receiving 
-						<span class="keyword">num_predecessors</span> calls to 
-						<span class="keyword">try_put</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">continue_receiver( const
-						continue_receiver &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>Constructs a 
-						<span class="keyword">continue_receiver</span> that has the same
-						initial state that 
-						<span class="keyword">src</span> had after its construction. It does
-						not copy the current count of 
-						<span class="keyword">try_puts</span> received, or the current known
-						number of predecessors. The 
-						<span class="keyword">continue_receiver</span> that is constructed will
-						only have a non-zero threshold if 
-						<span class="keyword">src</span> was constructed with a non-zero
-						threshold. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">~continue_receiver( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>The destructor 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>Increments the count of 
-						<span class="keyword">try_put</span> calls received. If the incremented
-						count is equal to the number of known predecessors, a call is made to 
-						<span class="keyword">execute</span> and the internal count of 
-						<span class="keyword">try_put</span> calls is reset to zero. This
-						method performs as if the call to 
-						<span class="keyword">execute</span> and the updates to the internal
-						count occur atomically. 
-					 </p>
-
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>Increments the number of known predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>Decrements the number of known predecessors. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The method 
-						  <span class="keyword">execute</span> is not called if the count of 
-						  <span class="keyword">try_put</span> calls received becomes equal to
-						  the number of known predecessors as a result of this call. That is, a call to 
-						  <span class="keyword">remove_predecessor</span> will never call 
-						  <span class="keyword">execute</span>. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d68500e131 "><span class="keyword">void execute() = 0</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d68500e134 "> 
-					 <p>A pure virtual method that is called when the number of 
-						<span class="keyword">try_put</span> calls is equal to the number of
-						known predecessors. Must be overridden by the child class. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> This method should be very fast or else spawn a task to
-						  offload its work, since this method is called while the sender is blocked on 
-						  <span class="keyword">try_put</span>. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/copy_body_func.htm b/doc/help/reference/flow_graph/copy_body_func.htm
deleted file mode 100755
index 20d8d87..0000000
--- a/doc/help/reference/flow_graph/copy_body_func.htm
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="copy_body Template Function">
-<meta name="DC.subject" content="copy_body Template Function">
-<meta name="keywords" content="copy_body Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="continue_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="func_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="multifunc_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="source_node_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="copy_body_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>copy_body Template Function</title>
-</head>
-<body id="copy_body_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="copy_body_func"><!-- --></a>
-
-
-  <h1 class="topictitle1">copy_body Template Function</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>A template function that returns a copy of the body function object
-		  from a 
-		  <span class="keyword">continue_node</span>,
-		  <span class="keyword">function_node</span>,
-		  <span class="keyword">multifunction_node</span>,
-                  or 
-		  <span class="keyword">source_node</span>.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>template< typename Body, typename Node >
-Body copy_body( Node &n );</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#include "tbb/flow_graph.h"</pre>
-	 </div>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="continue_node_cls.htm"> continue_node Template Class 
-		  </a></div>
-<div><a href="func_node_cls.htm"> function_node Template Class 
-		  </a></div>
-<div><a href="multifunc_node_cls.htm"> multifunction_node Template Class 
-		  </a></div>
-<div><a href="source_node_cls.htm"> source_node Template Class 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/dependency_flow_graph_example.htm b/doc/help/reference/flow_graph/dependency_flow_graph_example.htm
deleted file mode 100755
index eb94c8a..0000000
--- a/doc/help/reference/flow_graph/dependency_flow_graph_example.htm
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Dependency Flow Graph Example">
-<meta name="DC.subject" content="Dependency Flow Graph Example">
-<meta name="keywords" content="Dependency Flow Graph Example">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="continue_msg_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="dependency_flow_graph_example">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Dependency Flow Graph Example</title>
-</head>
-<body id="dependency_flow_graph_example">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="dependency_flow_graph_example"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Dependency Flow Graph Example</h1>
- 
-   
-  <div> 
-	 <p>In the following example, five computations A-E are set up with the
-		partial ordering shown below in "A simple dependency graph.". For each edge in
-		the flow graph, the node at the tail of the edge must complete its execution
-		before the node at the head may begin. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		<p>This is a simple syntactic example only. Since each node in a flow
-		  graph may execute as an independent task, the granularity of each node should
-		  follow the general guidelines for tasks as described in Section 3.2.3 of the
-		  Intel® Threading Building Blocks Tutorial. 
-		</p>
- 
-	 </div> 
-	 <div class="fignone" id="fig5_dep_graph"><a name="fig5_dep_graph"><!-- --></a><span class="figcap">A simple dependency graph.</span> 
-		 
-		<br><a name="image_45FEEBCB0EBD40C19CCD9FDB0E503A15"><!-- --></a><div class="imagecenter"><img id="image_45FEEBCB0EBD40C19CCD9FDB0E503A15" src="../Resources/dep_graph.jpg" height="409" width="249" alt="A simple dependency graph." align="center"></div><br> 
-	 </div>
- 
-	 <pre>#include <cstdio>
-#include "tbb/flow_graph.h"
- 
-using namespace tbb::flow;
- 
-struct body {
-    std::string my_name;
-    body( const char *name ) : my_name(name) {}
-    void operator()( continue_msg ) const {
-        printf("%s\n", my_name.c_str());
-    }
-};
- 
-int main() {
-    graph g;
- 
-    broadcast_node< continue_msg > start;
-    continue_node<continue_msg> a( g, body("A"));
-    continue_node<continue_msg> b( g, body("B"));
-    continue_node<continue_msg> c( g, body("C"));
-    continue_node<continue_msg> d( g, body("D"));
-    continue_node<continue_msg> e( g, body("E"));
- 
-    make_edge( start, a );
-    make_edge( start, b );
-    make_edge( a, c );
-    make_edge( b, c );
-    make_edge( c, d );
-    make_edge( a, e );
- 
-    for (int i = 0; i < 3; ++i ) {
-        start.try_put( continue_msg() );
-        g.wait_for_all();
-    }
- 
-    return 0;
-}  </pre>
-	 <p>In this example, nodes A-E print out their names. All of these nodes are
-		therefore able to use 
-		<span class="keyword">struct body</span> to construct their body objects. 
-	 </p>
- 
-	 <p>In function 
-		<span class="keyword">main</span>, the flow graph is set up once and then run three
-		times. All of the nodes in this example pass around 
-		<span class="keyword">continue_msg</span> objects. This type is used to communicate
-		that a node has completed its execution. 
-	 </p>
- 
-	 <p>The first line in function 
-		<span class="keyword">main</span> instantiates a 
-		<span class="keyword">graph</span> object, 
-		<span class="keyword">g</span>. On the next line, a 
-		<span class="keyword">broadcast_node</span> named 
-		<span class="keyword">start</span> is created. Anything passed to this node will be
-		broadcast to all of its successors. The node 
-		<span class="keyword">start</span> is used in the 
-		<span class="keyword">for</span> loop at the bottom of 
-		<span class="keyword">main</span> to launch the execution of the rest of the flow
-		graph. 
-	 </p>
- 
-	 <p>In the example, five 
-		<span class="keyword">continue_node</span> objects are created, named a - e. Each
-		node is constructed with a reference to 
-		<span class="keyword">graph</span> 
-		<span class="keyword">g</span> and the function object to invoke when it runs. The
-		successor / predecessor relationships are set up by the 
-		<span class="keyword">make_edge</span> calls that follow the declaration of the
-		nodes. 
-	 </p>
- 
-	 <p>After the nodes and edges are set up, the 
-		<span class="keyword">try_put</span> in each iteration of the 
-		<span class="keyword">for</span> loop results in a broadcast of a 
-		<span class="keyword">continue_msg</span> to both 
-		<span class="keyword">a</span> and 
-		<span class="keyword">b</span>. Both 
-		<span class="keyword">a</span> and 
-		<span class="keyword">b</span> are waiting for a single 
-		<span class="keyword">continue_msg</span>, since they both have only a single
-		predecessor, 
-		<span class="keyword">start</span>. 
-	 </p>
- 
-	 <p>When they receive the message from 
-		<span class="keyword">start</span>, they execute their body objects. When complete,
-		they each forward a 
-		<span class="keyword">continue_msg</span> to their successors, and so on. The graph
-		uses tasks to execute the node bodies as well as to forward messages between
-		the nodes, allowing computation to execute concurrently when possible. 
-	 </p>
- 
-	 <p>The classes and functions used in this example are described in detail
-		in topics linked from the Flow Graph parent topic. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="continue_msg_cls.htm">continue_msg Class
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/flow_tuple.htm b/doc/help/reference/flow_graph/flow_tuple.htm
deleted file mode 100755
index f8f1164..0000000
--- a/doc/help/reference/flow_graph/flow_tuple.htm
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="flow::tuple Template Class">
-<meta name="DC.subject" content="flow::tuple">
-<meta name="keywords" content="flow::tuple">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="join_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="multifunc_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="split_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../appendices/community_preview_features/flow_graph/or_node_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="flow_tuple">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>flow::tuple Template Class</title>
-</head>
-<body id="flow_tuple">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="flow_tuple"><!-- --></a>
-
- 
-  <h1 class="topictitle1">flow::tuple Template Class</h1>
- 
-   
-  <div> 
-	 <p> Some nodes create or use messages that are composites of other
-		messages. The 
-		<samp class="codeph">flow::tuple</samp> template class is included as part of flow
-		to support this. The nodes that send or receive tuples are 
-		<span class="keyword">join_node</span>, 
-		<span class="keyword">multifunction_node</span>, 
-		<span class="keyword">split_node</span> and 
-		<span class="keyword">or_node</span> (Community Preview Feature). 
-	 </p>
- 
-	 <p> The 
-		<samp class="codeph">tuple</samp> class is part of the C++11 standard, and earlier
-		implementations of the Standard Library may have a 
-		<samp class="codeph">tuple</samp> class. If 
-		<samp class="codeph">std::tuple</samp> is part of the Standard Library, then 
-		<samp class="codeph">flow::tuple</samp> is typedefed to 
-		<samp class="codeph">std::tuple</samp>. 
-	 </p>
- 
-	 <p> If the Standard Library does not contain 
-		<samp class="codeph">tuple</samp>, an implementation is used that supports a subset
-		of 
-		<samp class="codeph">std::tuple</samp>'s functionality: 
-	 <ul type="disc"> 
-		<li>construction, copy construction and destruction,
-		</li>
- 
-		<li>assignment
-		</li>
- 
-		<li><samp class="codeph">get<I>(tuple)</samp> (the i-th element of 
-		  <samp class="codeph">tuple</samp>, starting from zero),
-		</li>
- 
-		<li><samp class="codeph">tuple_element<I,T>::type</samp> (the type of the i-th
-		  element of tuple type 
-		  <samp class="codeph">T</samp>),
-		</li>
- 
-		<li><samp class="codeph">tuple_size<T>::value</samp> (the number of elements
-		  of the tuple type 
-		  <samp class="codeph">T</samp>),
-		</li>
- 
-	 </ul>
- 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p> Prior releases of <samp class="codeph">flow</samp> injected 
-                  <samp class="codeph">flow</samp>'s implementation of <samp class="codeph">tuple</samp> into
-                  the <samp class="codeph">std::</samp> namespace. Users should change
-                  <samp class="codeph">flow</samp>-specific references to <samp class="codeph">std::tuple</samp>
-                  to <samp class="codeph">flow::tuple</samp> to ensure compatibility with compilers
-		  that do not implement 
-		  <samp class="codeph">std::tuple</samp> as part of the Standard Library. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="join_node_cls.htm">join node 
-		  </a></div>
-<div><a href="multifunc_node_cls.htm">multifunction node 
-		  </a></div>
-<div><a href="split_node_cls.htm">split node 
-		  </a></div>
-<div><a href="../appendices/community_preview_features/flow_graph/or_node_cls.htm">or node (Community Preview Feature)
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/func_node_cls.htm b/doc/help/reference/flow_graph/func_node_cls.htm
deleted file mode 100755
index 859e165..0000000
--- a/doc/help/reference/flow_graph/func_node_cls.htm
+++ /dev/null
@@ -1,671 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="function_node Template Class">
-<meta name="DC.subject" content="function_node Template Class">
-<meta name="keywords" content="function_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="copy_body_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="func_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>function_node Template Class</title>
-</head>
-<body id="func_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="func_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">function_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<Input></span> and a 
-		  <span class="keyword">sender<Output></span>. This node may have concurrency
-		  limits as set by the user. By default, a 
-		  <span class="keyword">function_node</span> has an internal FIFO buffer at its
-		  input. Messages that cannot be immediately processed due to concurrency limits
-		  are temporarily stored in this FIFO buffer. A template argument can be used to
-		  disable this internal buffer. If the FIFO buffer is disabled, incoming messages
-		  will be rejected if they cannot be processed immediately while respecting the
-		  concurrency limits of the node. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename Input,
-           typename Output = continue_msg,
-           graph_buffer_policy = queueing,
-           typename A = cache_aligned_allocator<Input> >
-class function_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">function_node</span> receives messages of type 
-		  <span class="keyword">Input</span> at a single input port and generates a single
-		  output message of type 
-		  <span class="keyword">Output</span> that is broadcast to all successors.
-		  Rejection of messages by successors is handled using the protocol in Message
-		  Passing Protocol, see link below. 
-		</p>
- 
-		<p>If 
-		  <span class="keyword">graph_buffer_policy == queueing</span>, an internal
-		  unbounded input buffer is maintained using memory obtained through an allocator
-		  of type 
-		  <span class="keyword">A</span>. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">function_node</span> maintains an internal constant
-		  threshold T and an internal counter C. At construction, C = 0 and T is set the
-		  value passed in to the constructor. The behavior of a call to 
-		  <span class="keyword">try_put</span> is determined by the value of T and C as
-		  shown below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl23"><!-- --></a><table cellpadding="4" summary="" id="tbl23" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Behavior of a call to a function_node's try_put</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="25%" id="d69978e115"> 
-				  <p>Value of threshold T 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="25%" id="d69978e121"> 
-				  <p>Value of counter C 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d69978e127"> 
-				  <p><span class="keyword">bool try_put( const input_type &v )</span> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e115 "> 
-				  <p> 
-					 <pre>T == flow::unlimited</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e121 "> 
-				  <p>NA 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e127 "> 
-				  <p>A task is spawned that broadcasts the result of 
-					 <span class="keyword">body(v)</span> to all successors. Returns 
-					 <span class="keyword">true</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e115 "> 
-				  <p> 
-					 <pre>T != flow::unlimited</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e121 "> 
-				  <p>C < T 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e127 "> 
-				  <p>Increments C. A task is spawned that broadcasts the result of
-					 
-					 <span class="keyword">body(v)</span> to all successors and then
-					 decrements C. Returns 
-					 <span class="keyword">true</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e115 "> 
-				  <p> 
-					 <pre>T != flow::unlimited</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="25%" headers="d69978e121 "> 
-				  <p>C >= T 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e127 "> 
-				  <p>If the template argument 
-					 <span class="keyword">graph_buffer_policy==queueing</span>, 
-					 <span class="keyword">v</span> is stored in an internal FIFO buffer until
-					 C < T. When T becomes less than C, C is incremented and a task is spawned
-					 that broadcasts the result of 
-					 <span class="keyword">body(v)</span> to all successors and then
-					 decrements C. Returns 
-					 <span class="keyword">true</span>. 
-				  </p>
- 
-				  <p>If the template argument 
-					 <span class="keyword">graph_buffer_policy==rejecting</span> and C >=
-					 T, returns 
-					 <span class="keyword">false</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>A 
-		  <span class="keyword">function_node</span> has a user-settable concurrency limit.
-		  It can have 
-		  <span class="keyword">flow::unlimited</span> concurrency, which allows an
-		  unlimited number of invocations of the body to execute concurrently. It can
-		  have 
-		  <span class="keyword">flow::serial</span> concurrency, which allows only a single
-		  call of body to execute concurrently. The user can also provide a value of type
-		  
-		  <span class="keyword">size_t</span> to limit concurrency to a value between 1 and
-		  
-		  <span class="keyword">unlimited</span>. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">function_node</span> with 
-		  <span class="keyword">graph_buffer_policy==rejecting</span> will maintain a
-		  predecessor set as described in the Message Passing Protocol, see link below.
-		  If the 
-		  <span class="keyword">function_node</span> transitions from a state where C >=
-		  T to a state where C < T, it will try to get new messages from its set of
-		  predecessors until C >= T or there are no valid predecessors left in the
-		  set. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>A 
-			 <span class="keyword">function_node</span> can serve as a terminal node in the
-			 graph. The convention is to use an 
-			 <span class="keyword">Output</span> of 
-			 <span class="keyword">continue_msg</span> and attach no successor. 
-		  </p>
- 
-		</div> 
-		<p>The Body concept for 
-		  <span class="keyword">function_node</span> is shown in below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl24"><!-- --></a><table cellpadding="4" summary="" id="tbl24" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">function_node<Input, Output> Body Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d69978e311"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d69978e317"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e311 "> 
-				  <p> 
-					 <pre>B::B( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e317 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e311 "> 
-				  <p> 
-					 <pre>B::~B()</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e317 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e311 "> 
-				  <p> 
-					 <pre>void operator=( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e317 "> 
-				  <p>Assignment. The return type 
-					 <samp class="codeph">void</samp> in the pseudo-signature denotes that 
-					 <samp class="codeph">operator=</samp> is not required to return a value.
-					 The actual 
-					 <samp class="codeph">operator=</samp> can return a value, which will be
-					 ignored. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e311 "> 
-				  <p> 
-					 <pre>Output B::operator() (const Input &v) const</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d69978e317 "> 
-				  <p>Perform operation on 
-					 <span class="keyword">v</span> and return value of type 
-					 <span class="keyword">Output</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> The body object passed to a 
-			 <span class="keyword">function_node</span> is copied. Therefore updates to
-			 member variables will not affect the original object used to construct the
-			 node. If the state held within a body object must be inspected from outside of
-			 the node, the 
-			 <span class="keyword">copy_body</span> function can be used to obtain an
-			 updated copy. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p><span class="keyword">Input</span> and 
-			 <span class="keyword">Output</span> must be copy-constructible and assignable. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The body object may throw or cancel its enclosing graph.
-                      See task_group_context and Exceptions sections for a description.
-		  </p>
- 
-                </div>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-enum graph_buffer_policy {
-   rejecting, reserving, queueing, tag_matching };
- 
-template < typename Input, typename Output = continue_msg, 
-           graph_buffer_policy = queueing, 
-           typename A = cache_aligned_allocator<Input> >
-class function_node :
-  public graph_node, public receiver<Input>,
-  public sender<Output> {
-public:
-    template<typename Body>
-    function_node( graph &g, size_t concurrency, Body body );
-    function_node( const function_node &src );
- 
-    // receiver<Input>
-    typedef Input input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<Output>
-    typedef Output output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d69978e467">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d69978e470">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">template< typename Body>
-						function_node(graph &g, size_t concurrency, Body body)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Constructs a 
-						<span class="keyword">function_node</span> that will invoke a copy of 
-						<span class="keyword">body</span>. At most 
-						<span class="keyword">concurrency</span> calls to 
-						<span class="keyword">body</span> may be made concurrently. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">function_node( const function_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Constructs a 
-						<span class="keyword">function_node</span> that has the same initial
-						state that 
-						<span class="keyword">src</span> had when it was constructed. The 
-						<span class="keyword">function_node</span> that is constructed will
-						have a reference to the same 
-						<span class="keyword">graph</span> object as 
-						<span class="keyword">src</span>, will have a copy of the initial body
-						used by 
-						<span class="keyword">src</span>, and have the same concurrency
-						threshold as 
-						<span class="keyword">src</span>. The predecessors and successors of 
-						<span class="keyword">src</span> will not be copied. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The new body object is copy constructed from a copy of
-						  the original body provided to 
-						  <span class="keyword">src</span> at its construction. Therefore
-						  changes made to member variables in 
-						  <span class="keyword">src</span>'s body after the construction of 
-						  <span class="keyword">src</span> will not affect the body of the new 
-						  <span class="keyword">function_node.</span> 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>See the table above, "Behavior of a call to a 
-						<samp class="codeph">function_node</samp>'s <samp class="codeph">try_put</samp>," for more
-						information. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the input was accepted; and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Adds 
-						<span class="keyword">p</span> to the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Removes 
-						<span class="keyword">p</span> from the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>A 
-						<span class="keyword">function_node</span> does not contain buffering
-						of its output. Therefore it always rejects 
-						<span class="keyword">try_get</span> calls. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>A 
-						<span class="keyword">function_node</span> does not contain buffering
-						of its output. Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>A 
-						<span class="keyword">function_node</span> does not contain buffering
-						of its output. Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d69978e467 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d69978e470 "> 
-					 <p>A 
-						<span class="keyword">function_node</span> does not contain buffering
-						of its output. Therefore it cannot be reserved. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="copy_body_func.htm">copy_body Template Function 
-		  </a></div>
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context
-		  </a></div>
-<div><a href="../exceptions.htm">Exceptions
-		  </a></div>
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/graph_cls.htm b/doc/help/reference/flow_graph/graph_cls.htm
deleted file mode 100755
index 671d2b3..0000000
--- a/doc/help/reference/flow_graph/graph_cls.htm
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="graph Class">
-<meta name="DC.subject" content="graph Class">
-<meta name="keywords" content="graph Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="graph_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>graph Class</title>
-</head>
-<body id="graph_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="graph_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">graph Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class that serves as a handle to a flow graph of nodes and edges. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class graph;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">graph</span> object contains a root task that is the parent
-		  of all tasks created on behalf of the flow graph and its nodes. It provides
-		  methods that can be used to access the root task, to wait for the children of
-		  the root task to complete, to explicitly increment or decrement the root task's
-		  reference count, and to run a task as a child of the root task. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> Destruction of flow graph nodes before calling 
-			 <span class="keyword">wait_for_all</span> on their associated 
-			 <span class="keyword">graph</span> object has undefined behavior and can lead
-			 to program failure. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The flow graph now uses spawned tasks instead of enqueued tasks.  In some limited
-		     cases, when no worker threads are available, progress will not be made on 
-		     graph-related tasks until a call is made to <span class="keyword">wait_for_all</span>.  
-		     To avoid the need for explicit calls to <span class="keyword">wait_for_all</span>, the
-		     task enqueuing implementation of the flow graph can still be used as
-		     described in the Compatibility Features section of the Appendices.  However, 
-		     the task enqueuing implementation of the flow graph has been deprecated and 
-		     its use is discouraged.
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> If a 
-			 <span class="keyword">graph</span> is cancelled or if an exception is thrown
-			 during its execution, the graph objects may be in an inconsistent state after
-			 the 
-			 <span class="keyword">wait_for_all()</span>. If the user wishes to execute the 
-			 <span class="keyword">graph</span> again, the 
-			 <span class="keyword">reset()</span> method must be called. 
-		  </p>
- 
-		  <p> The 
-			 <span class="keyword">reset()</span> method ensures the internals of the 
-			 <span class="keyword">graph</span> are reset to their initial state. The
-			 user-supplied bodies of 
-			 <span class="keyword">function_nodes</span>, 
-			 <span class="keyword">continue_nodes</span>, 
-			 <span class="keyword">source_nodes</span> and 
-			 <span class="keyword">multifunction_nodes</span> are not changed by a 
-			 <span class="keyword">reset()</span>; if the user wishes the body to be
-			 returned to its initial state the corresponding node must be replaced, or some
-			 other provision must be made. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
-
-class graph {
-public:
-
-    graph();
-    graph(task_group_context& context);
-    ~graph();
- 
-    void increment_wait_count();
-    void decrement_wait_count();
- 
-    template< typename Receiver, typename Body >
-    void run( Receiver &r, Body body );
-    template< typename Body >
-    void run( Body body );
-    void wait_for_all();
-    task *root_task();
- 
-    bool is_cancelled();
-    bool exception_thrown();
-    void reset();
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d72114e145">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d72114e148">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">graph([task_group_context&
-						group] )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Constructs a graph with no nodes. If 
-						<span class="keyword">group</span> is specified the graph tasks are
-						executed in this group. By default the graph is executed in a bound context of
-						its own. Instantiates a root task of class 
-						<span class="keyword">empty_task</span> to serve as a parent for all of
-						the tasks generated during runs of the graph. Sets 
-						<span class="keyword">ref_count</span> of the root task to 1. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">~graph()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Calls 
-						<span class="keyword">wait_for_all</span> on the graph, then destroys
-						the root task. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">void
-						increment_wait_count()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Used to register that an external entity may still interact
-						with the graph. 
-					 </p>
- 
-					 <p>Increments the 
-						<span class="keyword">ref_count</span> of the root task. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">void
-						decrement_wait_count()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Used to unregister an external entity that may have
-						interacted with the graph. 
-					 </p>
- 
-					 <p>Decrements the 
-						<span class="keyword">ref_count</span> of the root task. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">template< typename Receiver,
-						typename Body > void run( Receiver &r, Body body )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Use this method to spawn a task that runs a body and puts
-						its output to a specific receiver. The task is created as a child of the
-						graph's root task and therefore 
-						<span class="keyword">wait_for_all</span> will not return until this
-						task completes. 
-					 </p>
- 
-					 <p>Enqueues a task that invokes 
-						<span class="keyword">r.try_</span><span class="keyword">put(</span> 
-						<span class="keyword">body() )</span>. It does not wait for the task to
-						complete. The spawned task is a child of the root task. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">template< typename Body >
-						void run( Body body )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>This method spawns a task that runs as a child of the
-						graph's root task. Calls to 
-						<span class="keyword">wait_for_all</span> will not return until this
-						spawned task completes. 
-					 </p>
- 
-					 <p>Enqueues a task that invokes 
-						<span class="keyword">body(</span><span class="keyword">)</span>. It does not
-						wait for the task to complete. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">void wait_for_all()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p>Blocks until all tasks associated with the root task have
-						completed and the number of 
-						<span class="keyword">decrement_wait_count</span> calls equals the
-						number of 
-						<span class="keyword">increment_wait_count</span> calls. Because it
-						calls 
-						<span class="keyword">wait_for_all</span> on the root graph task, the
-						calling thread may participate in work-stealing while it is blocked. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">task *root_task()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p><strong>Returns</strong>: a pointer to the root task of the flow
-						graph. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">bool is_cancelled()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp> if the graph was cancelled during the
-						last call to 
-						<span class="keyword">wait_for_all</span>(), 
-						<samp class="codeph">false</samp> otherwise. 
-					 </p>
- 
-					 <p> See 
-						<samp class="codeph">task_group_context</samp> for a description of
-						cancellation. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">bool exception_thrown()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">true</samp> if during the last call to 
-						<span class="keyword">wait_for_all</span>() an exception was thrown, 
-						<samp class="codeph">false</samp> otherwise. 
-					 </p>
- 
-					 <p> See Section "Exceptions" for information on exception
-						handling. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d72114e145 "><span class="keyword">void reset()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d72114e148 "> 
-					 <p> Resets the internal state of the nodes of a 
-						<span class="keyword">graph</span> to their initial state. The state of
-						the bodies of 
-						<span class="keyword">function_nodes</span>, 
-						<span class="keyword">continue_nodes</span>, 
-						<span class="keyword">source_nodes</span> and 
-						<span class="keyword">multifunction_nodes</span> are not changed. 
-					 </p>
- 
-					 <p> See 
-						<samp class="codeph">task_group_context</samp> for a description of
-						cancellation. See Section "Exceptions" for information on exception handling. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context 
-		  </a></div>
-<div><a href="../exceptions.htm">Exceptions 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/graph_node_cls.htm b/doc/help/reference/flow_graph/graph_node_cls.htm
deleted file mode 100755
index d09b4d3..0000000
--- a/doc/help/reference/flow_graph/graph_node_cls.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="graph_node Class">
-<meta name="DC.subject" content="graph_node Class">
-<meta name="keywords" content="graph_node Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="graph_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>graph_node Class</title>
-</head>
-<body id="graph_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="graph_node_cls"><!-- --></a>
-
-
-<h1 class="topictitle1">graph_node Class</h1>
-
-
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-<p>A base class for all graph nodes.</p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-
-<pre>class graph_node;</pre></div>
-
-<div class="section"><h2 class="sectiontitle">Header</h2>
-
-<pre>#include "tbb/flow_graph.h"</pre></div>
-
-<div class="section"><h2 class="sectiontitle">Description</h2>
-<p>The class <span class="keyword">graph_node</span> is a base class for all flow graph nodes.  The virtual destructor allows flow graph nodes to be destroyed through pointers to <span class="keyword">graph_node</span>.  For example, a <span class="keyword">vector< graph_node * ></span> could be used to hold the addresses of flow graph nodes that will later need to be destroyed.</p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Members</h2>
-
-<pre>namespace tbb {
-namespace flow {
- 
-class graph_node {
-public:
-    virtual ~graph_node() {}
-};
- 
-}
-}</pre></div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/input_port_func.htm b/doc/help/reference/flow_graph/input_port_func.htm
deleted file mode 100755
index 4afd543..0000000
--- a/doc/help/reference/flow_graph/input_port_func.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="input_port Template Function">
-<meta name="DC.subject" content="input_port Template Function">
-<meta name="keywords" content="input_port Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="join_node_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../appendices/community_preview_features/flow_graph/or_node_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="input_port_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>input_port Template Function</title>
-</head>
-<body id="input_port_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="input_port_func"><!-- --></a>
-
-
-  <h1 class="topictitle1">input_port Template Function</h1>
-
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		
-		<p>A template function that given a 
-		  <span class="keyword">join_node</span> or 
-		  <span class="keyword">or_node</span> returns a reference to a specific input
-		  port.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>template<size_t N, typename NT>
-typename flow::tuple_element<N, typename NT::input_ports_tuple_type>::type&
-input_port(NT &n);</pre>
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>#include "tbb/flow_graph.h"</pre>
-	 </div>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="join_node_cls.htm"> join_node Template Class 
-		  </a></div>
-<div><a href="../appendices/community_preview_features/flow_graph/or_node_cls.htm"> or_node Template Class 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/join_node_cls.htm b/doc/help/reference/flow_graph/join_node_cls.htm
deleted file mode 100755
index 2ef5a05..0000000
--- a/doc/help/reference/flow_graph/join_node_cls.htm
+++ /dev/null
@@ -1,545 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="join_node Template Class">
-<meta name="DC.subject" content="join_node Template Class">
-<meta name="keywords" content="join_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="input_port_func.htm#input_port_func">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Relation" scheme="URI" content="flow_tuple.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="join_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>join_node Template Class</title>
-</head>
-<body id="join_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="join_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">join_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A node that creates a tuple<T0,T1, ... > from a set of messages
-		  received at its input ports and broadcasts the tuple to all of its successors.
-		  The 
-		  <span class="keyword">class</span> 
-		  <span class="keyword">join_node</span> supports three buffering policies at its
-		  input ports: 
-		  <span class="keyword">reserving</span>, 
-		  <span class="keyword">queueing</span> and 
-		  <span class="keyword">tag_matching</span>. By default, 
-		  <span class="keyword">join_node</span> input ports use the 
-		  <span class="keyword">queueing</span> policy. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>
-template<typename OutputTuple, graph_buffer_policy JP = queueing>
-class join_node;
-</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A join_node is a 
-		  <span class="keyword">graph_node</span> and a 
-		  <span class="keyword">sender< flow::tuple< T0, T1, ... >></span>. It
-		  contains a tuple of input ports, each of which is a 
-		  <span class="keyword">receiver<Ti></span> for each of the 
-		  <span class="keyword">T0</span> .. 
-		  <span class="keyword">TN</span> in 
-		  <span class="keyword">OutputTuple</span>. It supports multiple input receivers
-		  with distinct types and broadcasts a tuple of received messages to all of its
-		  successors. All input ports of a 
-		  <span class="keyword">join_node</span> must use the same buffering policy. The
-		  behavior of a 
-		  <span class="keyword">join_node</span> based on its buffering policy is shown in
-		  the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl28"><!-- --></a><table cellpadding="4" summary="" id="tbl28" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Behavior of a join_node based on the buffering policy of its input
-		  ports.</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="25%" id="d73545e114"> 
-				  <p>Buffering Policy 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="75%" id="d73545e120"> 
-				  <p>Behavior 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d73545e114 "> 
-				  <p>queueing 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="75%" headers="d73545e120 "> 
-				  <p>As each input port is put to, the incoming message is added to
-					 an unbounded first-in first-out queue in the port. When there is at least one
-					 message at each input port, the 
-					 <span class="keyword">join_node</span> broadcasts a tuple containing the
-					 head of each queue to all successors. If at least one successor accepts the
-					 tuple, the head of each input port's queue is removed; otherwise, the messages
-					 remain in their respective input port queues. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d73545e114 "> 
-				  <p>reserving 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="75%" headers="d73545e120 "> 
-				  <p>As each input port is put to, the 
-					 <span class="keyword">join_node</span> marks that an input may be
-					 available at that port and returns 
-					 <span class="keyword">false</span>. When all ports have been marked as
-					 possibly available, the 
-					 <span class="keyword">join_node</span> will try to reserve a message at
-					 each port from their known predecessors. If it is unable to reserve a message
-					 at a port, it un-marks that port, and releases all previously acquired
-					 reservations. If it is able to reserve a message at all ports, it broadcasts a
-					 tuple containing these messages to all successors. If at least one successor
-					 accepts the tuple, the reservations are consumed; otherwise, they are released.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="25%" headers="d73545e114 "> 
-				  <p>tag_matching 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="75%" headers="d73545e120 "> 
-				  <p>As each input port is put to, a user-provided function object
-					 is applied to the message to obtain its tag. The message is then added to a
-					 hash table at the input port, using the tag as the key. When there is message
-					 at each input port for a given tag, the 
-					 <span class="keyword">join_node</span> broadcasts a tuple containing the
-					 matching messages to all successors. If at least one successor accepts the
-					 tuple, the messages are removed from each input port's hash table; otherwise,
-					 the messages remain in their respective input ports. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>Rejection of messages by successors of the 
-		  <span class="keyword">join_node</span> and failed gets from predecessors of the
-		  input ports are handled using the protocol in the Message Passing Protocol, see
-		  link below. 
-		</p>
- 
-		<p>The function template 
-		  <span class="keyword">input_port</span> simplifies the syntax for getting a
-		  reference to a specific input port. 
-		</p>
- 
-		<p><span class="keyword">OutputTuple</span> must be a 
-		  <span class="keyword">flow::tuple<T0,T1, ... ></span> where each element is
-		  copy-constructible and assignable. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<pre>#include<cstdio>
-#include "tbb/flow_graph.h"
- 
-using namespace tbb::flow;
- 
-int main() {
-   graph g;
-   function_node<int,int>
-       f1( g, unlimited, [](const int &i) { return 2*i; } );
-   function_node<float,float>
-       f2( g, unlimited, [](const float &f) { return f/2; } );
- 
-   join_node< flow::tuple<int,float> > j(g);
- 
-   function_node< flow::tuple<int,float> >
-       f3( g, unlimited,
-           []( const flow::tuple<int,float> &t ) {
-               printf( "Result is %f\n",
-                       std::get<0>(t) + std::get<1>(t));
-           } );
- 
-   make_edge( f1, input_port<0>( j ) );
-   make_edge( f2, input_port<1>( j ) );
-   make_edge( j, f3 );
- 
-   f1.try_put( 3 );
-   f2.try_put( 3 );
-   g.wait_for_all( );
-   return 0;
-}</pre> 
-		<p>In the example above, three 
-		  <span class="keyword">function_node</span> objects are created: 
-		  <span class="keyword">f1</span> multiplies an 
-		  <span class="keyword">int i</span> by 2, 
-		  <span class="keyword">f2</span> divides a 
-		  <span class="keyword">float f</span> by 2, and 
-		  <span class="keyword">f3</span> receives a 
-		  <span class="keyword">flow::tuple<int,float> t</span>, adds its elements
-		  together and prints the result. The 
-		  <span class="keyword">join_node j</span> combines the output of 
-		  <span class="keyword">f1</span> and 
-		  <span class="keyword">f2</span>, and then forwards the resulting tuple to 
-		  <span class="keyword">f3</span>. This example is purely a syntactic demonstration
-		  since there is very little work in the nodes. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-enum graph_buffer_policy {
-    rejecting, reserving, queueing, tag_matching };
- 
-template<typename OutputTuple, graph_buffer_policy JP = queueing>
-class join_node :
-    public graph_node, public sender< OutputTuple > {
- 
-public:
-    typedef OutputTuple output_type;
-    typedef receiver<output_type> successor_type;
-    typedef <em>implementation-dependent-tuple</em> input_ports_tuple_type;
- 
-    join_node( graph &g );
-    join_node( const join_node &src );
-    input_ports_tuple_type &inputs( );
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
- 
-};
- 
-//
-// Specialization for tag_matching
-//
- 
-template<typename OutputTuple>
-class join_node<OutputTuple, tag_matching> :
-    public graph_node, public sender< OutputTuple > {
- 
-public:
- 
-    // Has the same methdods as previous join_node,
-    // but has constructors to specify the tag_matching
-    // function objects
- 
-    template<typename B0, typename B1>
-    join_node( graph &g, B0 b0, B1 b1 );
-   
-    // Constructors are defined similarly for
-    // 3 through 10 elements ...
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d73545e284">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d73545e287">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">join_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> Constructs a 
-					 <span class="keyword">join_node</span> that will spawn tasks using the
-					 root task in 
-					 <span class="keyword">g</span>. 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">template < typename B0,
-						typename B1, ... > join_node( graph &g, B0 b0, B1 b1, ... )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>A constructor only available in the 
-						<span class="keyword">tag_matching</span> specialization of 
-						<span class="keyword">join_node</span>. 
-					 </p>
- 
-					 <p>Creates a 
-						<span class="keyword">join_node</span> that uses the function objects 
-						<span class="keyword">b0</span>, 
-						<span class="keyword">b1</span>, ... , 
-						<span class="keyword">bN</span> to determine that tags for the input
-						ports 0 through N. It will spawn tasks using the root task in 
-						<span class="keyword">g</span>. 
-					 </p>
- 
-		                         <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		                           <p> Function objects passed to the join must not throw.
-		                           </p>
- 
-                                         </div>
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">join_node( const join_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Creates a 
-						<span class="keyword">join_node</span> that has the same initial state
-						that 
-						<span class="keyword">src</span> had at its construction. The list of
-						predecessors, messages in the input ports, and successors are NOT copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">input_ports_tuple_type
-						&inputs( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p><strong>Returns</strong>: a 
-						<span class="keyword">flow::tuple</span> of receivers. Each element
-						inherits from 
-						<span class="keyword">tbb::receiver<T></span> where 
-						<span class="keyword">T</span> is the type of message expected at that
-						input. Each tuple element can be used like any other 
-						<span class="keyword">flow::receiver<T></span>. The behavior of
-						the ports based on the selected 
-						<span class="keyword">join_node</span> policy is shown in the table
-						above. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Attempts to generate a tuple based on the buffering policy
-						of the 
-						<span class="keyword">join_node</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: If it can successully generate a tuple, it
-						copies it to 
-						<span class="keyword">v</span> and returns 
-						<span class="keyword">true</span>. Otherwise it returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d73545e284 "><span class="keyword">template<size_t N, typename
-						JNT> typename flow::tuple_element<N, typename
-						JNT::input_ports_tuple_type>::type &input_port( JNT &jn )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d73545e287 "> 
-					 <p>Calling 
-						<span class="keyword">input_port <N>( jn )</span> is equivalent
-						to calling 
-						<span class="keyword">std::get<N>( jn.inputs() )</span> 
-					 </p>
- 
-					 <p><strong>Returns</strong>: the N<sup>th</sup> input port for 
-						<span class="keyword">join_node jn</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="input_port_func.htm#input_port_func">input_port Template Function 
-		  </a></div>
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div>
-<div><a href="flow_tuple.htm">flow::tuple
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/limiter_node_cls.htm b/doc/help/reference/flow_graph/limiter_node_cls.htm
deleted file mode 100755
index 5d2b320..0000000
--- a/doc/help/reference/flow_graph/limiter_node_cls.htm
+++ /dev/null
@@ -1,431 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="limiter_node Template Class">
-<meta name="DC.subject" content="limiter_node Template Class">
-<meta name="keywords" content="limiter_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="limiter_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>limiter_node Template Class</title>
-</head>
-<body id="limiter_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="limiter_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">limiter_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An node that counts and limits the number of messages that pass
-		  through it. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename T > class limiter_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">limiter_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that broadcasts messages to all of
-		  its successors. It keeps a counter C of the number of broadcasts it makes and
-		  does not accept new messages once its user-specified 
-		  <span class="keyword">threshold</span> is reached. The internal count of
-		  broadcasts C can be decremented through use of its embedded 
-		  <span class="keyword">continue_receiver decrement</span>. 
-		</p>
- 
-		<p>The behavior of a call to a 
-		  <span class="keyword">limiter_node</span>'s 
-		  <span class="keyword">try_put</span> is shown below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl27"><!-- --></a><table cellpadding="4" summary="" id="tbl27" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Behavior of a call to a limiter_node's try_put</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="30%" id="d75154e95"> 
-				  <p>Value of counter C 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="70%" id="d75154e101"> 
-				  <p>bool try_put( const input_type &v ) 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="30%" headers="d75154e95 "> 
-				  <p>C < threshold 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="70%" headers="d75154e101 "> 
-				  <p>C is incremented and 
-					 <span class="keyword">v</span> is broadcast to all successors. If no
-					 successor accepts the message, C is decremented. Returns 
-					 <span class="keyword">true</span> if the message was successfully
-					 broadcast to at least one successor and 
-					 <span class="keyword">false</span> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="30%" headers="d75154e95 "> 
-				  <p>C == threshold 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="70%" headers="d75154e101 "> 
-				  <p>Returns 
-					 <span class="keyword">false</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>When 
-		  <span class="keyword">try_put</span> is called on the member object 
-		  <span class="keyword">decrement</span>, the 
-		  <span class="keyword">limiter_node</span> will try to get a message from one of
-		  its known predecessors and forward that message to all of its successors. If it
-		  cannot obtain a message from a predecessor, it will decrement C. Rejection of
-		  messages by successors and failed gets from predecessors are handled using the
-		  protocol in the Message Passing Protocol, see link below. 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class limiter_node : public graph_node, public receiver<T>,
-  public sender<T> {
-public:
-    limiter_node( graph &g, size_t threshold,
-                  int number_of_decrement_predecessors = 0 );
-    limiter_node( const limiter_node &src );
- 
-    // a continue_receiver
-    implementation-dependent-type decrement;
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d75154e260">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d75154e263">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">limiter_node( graph &g, size_t
-						threshold, int number_of_decrement_predecessors = 0 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Constructs a 
-						<span class="keyword">limiter_node</span> that allows up to 
-						<span class="keyword">threshold</span> items to pass through before
-						rejecting 
-						<span class="keyword">try_put</span>'s. Optionally a 
-						<span class="keyword">number_of_decrement_predecessors</span> value can
-						be supplied. This value is passed on to the 
-						<span class="keyword">continue_receiver decrement</span>'s constructor.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">limiter_node( const limiter_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Constructs a 
-						<span class="keyword">limiter_node</span> that has the same initial
-						state that 
-						<span class="keyword">src</span> had at its construction. The new 
-						<span class="keyword">limiter_node</span> will belong to the same 
-						<span class="keyword">graph g</span> as 
-						<span class="keyword">src</span>, have the same 
-						<span class="keyword">threshold</span>, and have the same initial 
-						<span class="keyword">number_of_decrement_predecessors</span>. The list
-						of predecessors, the list of successors, and the current count of broadcasts,
-						C, are NOT copied from 
-						<span class="keyword">src</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>If the broadcast count is below the threshold, 
-						<span class="keyword">v</span> is broadcast to all successors. For each
-						successor 
-						<span class="keyword">s</span>, if 
-						<span class="keyword">s.try_put( v ) == false &&
-						  s.register_predecessor( *this ) == true</span>, then 
-						<span class="keyword">s</span> is removed from the set of succesors.
-						Otherwise, 
-						<span class="keyword">s</span> will remain in the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if 
-						<span class="keyword">v</span> is broadcast. 
-						<span class="keyword">false</span> if 
-						<span class="keyword">v</span> is not broadcast because the threshold
-						has been reached. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Adds a predecessor that can be pulled from once the
-						broadcast count falls below the threshold. 
-					 </p>
- 
-					 <p>Adds 
-						<span class="keyword">p</span> to the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>:<span class="keyword">true</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Removes 
-						<span class="keyword">p</span> from the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Does not contain buffering and therefore cannot be pulled
-						from. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d75154e260 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d75154e263 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/make_edge_func.htm b/doc/help/reference/flow_graph/make_edge_func.htm
deleted file mode 100755
index f6abb7d..0000000
--- a/doc/help/reference/flow_graph/make_edge_func.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="make_edge Template Function">
-<meta name="DC.subject" content="make_edge Template Function">
-<meta name="keywords" content="make_edge Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="make_edge_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>make_edge Template Function</title>
-</head>
-<body id="make_edge_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="make_edge_func"><!-- --></a>
-
-
-<h1 class="topictitle1">make_edge Template Function</h1>
-
-
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-<p>A template function that adds an edge between a <span class="keyword">sender<T></span> and a <span class="keyword">receiver<T>.</span></p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-
-<pre>template< typename T >
-inline void make_edge( sender<T> &p, receiver<T> &s );</pre></div>
-
-<div class="section"><h2 class="sectiontitle">Header</h2>
-
-<pre>#include "tbb/flow_graph.h"</pre></div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/message_flow_graph_example.htm b/doc/help/reference/flow_graph/message_flow_graph_example.htm
deleted file mode 100755
index 720ddf8..0000000
--- a/doc/help/reference/flow_graph/message_flow_graph_example.htm
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Message Flow Graph Example">
-<meta name="DC.subject" content="Message Flow Graph Example">
-<meta name="keywords" content="Message Flow Graph Example">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="message_flow_graph_example">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Message Flow Graph Example</title>
-</head>
-<body id="message_flow_graph_example">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="message_flow_graph_example"><!-- --></a>
-
-
-  <h1 class="topictitle1">Message Flow Graph Example</h1>
-
-  
-  <div>
-	 <p>This example calculates the sum
-		<span class="keyword">x*x + x*x*x</span> for all
-		<span class="keyword">x = 1 to 10</span>. The layout of this example is shown in
-		the figure below.
-	 </p>
-
-	 <div class="fignone" id="fig6_message_flow_graph"><a name="fig6_message_flow_graph"><!-- --></a><span class="figcap">A simple message flow graph.</span>
-		
-		<br><div class="imagecenter"><img src="../Resources/message_flow_graph.jpg" height="252" width="454" alt="A simple flow graph." align="center"></div><br>
-	 </div>
-
-	 <p>Each value enters through the
-		<span class="keyword">input_node<int></span>
-		<span class="keyword">input</span>. This node broadcasts the value to both
-		<span class="keyword">squarer</span> and
-		<span class="keyword">cuber</span>, which calculate
-		<span class="keyword">x*x</span> and
-		<span class="keyword">x*x*x</span> respectively. The output of each of these nodes
-		is put to one of
-		<span class="keyword">join</span>'s ports. A tuple containing both values is
-		created by
-		<span class="keyword">join_node< tuple<int,int> > join</span> and
-		forwarded to
-		<span class="keyword">summer</span>, which adds both values to the running total.
-		Both
-		<span class="keyword">squarer</span> and
-		<span class="keyword">cuber</span> allow unlimited concurrency, that is they each
-		may process multiple values simultaneously. The final
-		<span class="keyword">summer</span>, which updates a shared total, is only allowed
-		to process a single incoming tuple at a time, eliminating the need for a lock
-		around the shared value.
-	 </p>
-
-	 <pre>#include <cstdio>
-#include "tbb/flow_graph.h"
-
-using namespace tbb::flow;
-
-struct square {
-  int operator()(int v) { return v*v; }
-};
-
-struct cube {
-  int operator()(int v) { return v*v*v; }
-};
-
-class sum {
-  int &my_sum;
-public:
-  sum( int &s ) : my_sum(s) {}
-  int operator()( tuple< int, int > v ) {
-    my_sum += get<0>(v) + get<1>(v);
-    return my_sum;
-  }
-};
-
-int main() {
-  int result = 0;
-
-  graph g;
-  broadcast_node<int> input(g);
-  function_node<int,int> squarer( g, unlimited, square() );
-  function_node<int,int> cuber( g, unlimited, cube() );
-  join_node< tuple<int,int>, queueing > join( g );
-  function_node<tuple<int,int>,int>
-      summer( g, serial, sum(result) );
-
-  make_edge( input, squarer );
-  make_edge( input, cuber );
-  make_edge( squarer, get<0>( join.input_ports() ) );
-  make_edge( cuber, get<1>( join.input_ports() ) );
-  make_edge( join, summer );
-
-  for (int i = 1; i <= 10; ++i)
-      input.try_put(i);
-  g.wait_for_all();
-
-  printf("Final result is %d\n", result);
-  return 0;
-}</pre>
-	 <p>In the example code above, the classes
-		<span class="keyword">square</span>,
-		<span class="keyword">cube</span> and
-		<span class="keyword">sum</span> define the three user-defined operations. Each
-		class is used to create a
-		<span class="keyword">function_node</span>.
-	 </p>
-
-	 <p>In function
-		<span class="keyword">main</span>, the flow graph is set up and then the values
-		1-10 are put into the node
-		<span class="keyword">input</span>. All the nodes in this example pass around
-		values of type
-		<span class="keyword">int</span>. The nodes used in this example are all class
-		templates and therefore can be used with any type that supports copy
-		construction, including pointers and objects.
-	 </p>
-
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		<p> Values are copied as they pass between nodes and therefore passing
-		  around large objects should be avoided. To avoid large copy overheads, pointers
-		  to large objects can be passed instead.
-		</p>
-
-	 </div>
-	 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-		<p>This is a simple syntactic example only. Since each node in a flow
-		  graph may execute as an independent task, the granularity of each node should
-		  follow the general guidelines for tasks as described in Section 3.2.3 of the
-		  Intel® Threading Building Blocks Tutorial.
-		</p>
-
-	 </div>
-	 <p>The classes and functions used in this example are described in detail
-		in topics linked from the Flow Graph parent topic.
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/message_passing_protocol.htm b/doc/help/reference/flow_graph/message_passing_protocol.htm
deleted file mode 100755
index 859e848..0000000
--- a/doc/help/reference/flow_graph/message_passing_protocol.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Message Passing Protocol">
-<meta name="DC.subject" content="Message Passing Protocol">
-<meta name="keywords" content="Message Passing Protocol">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="message_passing_protocol">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Message Passing Protocol</title>
-</head>
-<body id="message_passing_protocol">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="message_passing_protocol"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Message Passing Protocol</h1>
- 
-   
-  <div> 
-	 <p>In an Intel® Threading Building Blocks (Intel® TBB) flow graph, edges dynamically switch between a push and
-		pull protocol for passing messages. An Intel® TBB flow graph G = ( V, S, L ),
-		where V is the set of nodes, S is the set of edges that are currently using a
-		push protocol, and L is the set of edges that are currently using a pull
-		protocol. For each edge (Vi, Vj), Vi is the predecessor / sender and Vj is the
-		successor / receiver. When in the push set S, messages over an edge are
-		initiated by the sender, which tries to 
-		<em>put</em> to the receiver. When in the pull set, messages are initiated
-		by the receiver, which tries to 
-		<em>get</em> from the sender.
-	 </p>
- 
-	 <p>If a message attempt across an edge fails, the edge is moved to the
-		other set. For example, if a put across the edge (Vi, Vj) fails, the edge is
-		removed from the push set S and placed in the pull set L. This dynamic
-		push/pull protocol is the key to performance in a non-preemptive tasking
-		library such as Intel® TBB, where simply repeating failed sends or receives is
-		not an efficient option. The following graphic summarizes this dynamic
-		protocol.
-	 </p>
- 
-	 <div class="fignone" id="fig4_flow_graph"><a name="fig4_flow_graph"><!-- --></a><span class="figcap">The dynamic push / pull protocol.</span> 
-		 
-		<br><div class="imagecenter"><img src="../Resources/flow-graph.jpg" height="196" width="442" alt="The dynamic push / pull protocol." align="center"></div><br> 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/multifunc_node_cls.htm b/doc/help/reference/flow_graph/multifunc_node_cls.htm
deleted file mode 100755
index 9e355a9..0000000
--- a/doc/help/reference/flow_graph/multifunc_node_cls.htm
+++ /dev/null
@@ -1,576 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="multifunction_node Template Class">
-<meta name="DC.subject" content="multifunction_node Template Class">
-<meta name="keywords" content="multifunction_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="make_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="remove_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="copy_body_func.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm#message_passing_protocol">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="flow_tuple.htm#flow_tuple">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="multifunc_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>multifunction_node Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="multifunc_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="multifunc_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">multifunction_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a
-		  receiver<InputType> and has a tuple of sender<T> outputs. This node
-		  may have concurrency limits as set by the user. When the concurrency limit
-		  allows, it executes the user-provided body on incoming messages. The body may
-		  create one or more output messages and broadcast them to successors. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename Input, typename Output, 
-    graph_buffer_policy = queueing, typename Allocator=cache_aligned_allocator<Input> >
-    class multifunction_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This type is used for nodes that receive messages
-		  at a single input port and may generate one or more messages that are broadcast
-		  to successors. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">multifunction_node</samp>
-		  maintains an internal constant threshold T and an internal counter C. At
-		  construction, C=0 and T is set the value passed in to the constructor. The
-		  behavior of a call to 
-		  <samp class="codeph">try_put</samp> is determined
-		  by the value of T and C as shown in the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl50"><!-- --></a><table cellpadding="4" summary="" id="tbl50" frame="border" border="1" cellspacing="0" rules="rows"><caption><span class="tablecap">Behavior of a call to a
-		  multifunction_node's try_put</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="left" valign="top" width="40%" id="d76994e82"> 
-				  <p>Value of threshold T 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="left" valign="top" width="20%" id="d76994e88"> 
-				  <p>Value of counter C 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="left" valign="top" width="40%" id="d76994e94"> 
-				  <p>bool try_put( input_type v ) 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e82 "> 
-				  <p><samp class="codeph">T
-						== graph::unlimited</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="20%" headers="d76994e88 "> 
-				  <p>NA 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e94 "> 
-				  <p>A task is spawned that executes body(v).
-					 Returns 
-					 <samp class="codeph">true</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e82 "> 
-				  <p><samp class="codeph">T
-						!= flow::unlimited</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="20%" headers="d76994e88 "> 
-				  <p>C < T 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e94 "> 
-				  <p>Increments C. A task is spawned that
-					 executes body(v) and then decrements C. Returns 
-					 <samp class="codeph">true</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e82 "> 
-				  <p><samp class="codeph">T
-						!= flow::unlimited</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="20%" headers="d76994e88 "> 
-				  <p>C >= T 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="40%" headers="d76994e94 "> 
-				  <p>Returns 
-					 <samp class="codeph">false</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>A<samp class="codeph">
-			 multifunction_node</samp> has a user-settable concurrency limit. It can have 
-		  <samp class="codeph">flow::unlimited
-			 concurrency</samp>, which allows an unlimited number of copies of the node to
-		  execute concurrently. It can have 
-		  <samp class="codeph">flow::serial
-			 concurrency</samp>, which allows only a single copy of the node to execute
-		  concurrently. The user can also provide a value of type size_t to limit
-		  concurrency to a value between 1 and unlimited. 
-		</p>
- 
-		<p>The Body concept for 
-		  <samp class="codeph">multifunction_node</samp> is
-		  shown in the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl51"><!-- --></a><table cellpadding="4" summary="" id="tbl51" frame="border" border="1" cellspacing="0" rules="rows"><caption><span class="tablecap">multifunction_node Body Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d76994e216"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d76994e222"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e216 "> 
-				  <p><samp class="codeph">B::B( const B& )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e222 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e216 "> 
-				  <p><samp class="codeph">B::~B()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e222 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e216 "> 
-				  <p><samp class="codeph">void operator=( const B& )</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e222 "> 
-				  <p>Assignment 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e216 "> 
-				  <p><samp class="codeph">void B::operator()(const input_type &v,
-						output_ports_type &p)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" align="left" valign="top" width="50%" headers="d76994e222 "> 
-				  <p>Perform operation on 
-					 <samp class="codeph">v</samp>. May call 
-					 <samp class="codeph">try_put</samp> on
-					 zero or more of the output ports. May call 
-					 <samp class="codeph">try_put</samp> on any
-					 output port multiple times. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> The body object passed to a 
-			 <span class="keyword">multifunction_node</span> is copied. Therefore updates to
-			 member variables will not affect the original object used to construct the
-			 node. If the state held within a body object must be inspected from outside of
-			 the node, the 
-			 <span class="keyword">copy_body</span> function can be used to obtain an
-			 updated copy. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The body object may throw or cancel its enclosing graph. See
-			 task_group_context and Exceptions sections for a description. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example below shows a 
-		  <samp class="codeph">multifunction_node</samp>
-		  that separates a stream of integers into odd and even, placing each in the
-		  appropriate output queue. 
-		</p>
- 
-		<p>The Body method will receive as parameters a
-		  read-only reference to the input value and a reference to the tuple of output
-		  ports. The Body method may put items to one or more output ports. 
-		</p>
- 
-		<p>The output ports of the 
-		  <samp class="codeph">multifunction_node</samp> can
-		  be connected to other graph nodes using the 
-		  <samp class="codeph">make_edge</samp> method or by
-		  using 
-		  <samp class="codeph">register_successor</samp>: 
-		</p>
- 
-		<pre>#include "tbb/flow_graph.h"
-using namespace tbb::flow;
-typedef multifunction_node<int, flow::tuple<int,int> > multi_node;
-
-struct MultiBody {
-
-  void operator()(const int &i, multi_node::output_ports_type &op) {
-    if(i % 2) 
-      std::get<1>(op).try_put(i); // put to odd queue
-    else 
-      std::get<0>(op).try_put(i); // put to even queue
-  }
-};
-
-int main() {
-  graph g;
-
-  queue_node<int> even_queue(g);
-  queue_node<int> odd_queue(g);
-
-  multi_node node1(g,unlimited,MultiBody());
-
-  output_port<0>(node1).register_successor(even_queue);
-  make_edge(output_port<1>(node1), odd_queue);
-
-  for(int i = 0; i < 1000; ++i) {
-    node1.try_put(i);
-  }
-  g.wait_for_all();
-}</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  template <typename Input, typename Output, 
-    graph_buffer_policy = queueing, typename Allocator=cache_aligned_allocator<Input> >
-    class multifunction_node : public graph_node, public receiver<Input>
-  {
-  public:
-
-    template < typename Body >
-    multifunction_node( graph &g, size_t concurrency, Body body );
-    multifunction_node( const multifunction_node &other);
-    ~multifunction_node();
-
-    // receiver< Input >
-    typedef Input input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
-
-    typedef <em>implementation-dependent</em> output_ports_type;
-    output_ports_type& output_ports();
-  };
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d76994e384">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d76994e387">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "> 
-					 <span class="keyword">template < typename Body > multifunction_node(
-						graph &g, size_t concurrency, Body body ) 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>Constructs a 
-						<span class="keyword">multifunction_node</span> with 
-						<span class="keyword">body</span> as its Body. At most 
-						<span class="keyword">concurrency</span> calls to the body may be made
-						concurrently. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "> 
-					 <span class="keyword">multifunction_node( const multifunction_node
-						&other)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>Constructs a 
-						<span class="keyword">multifunction_node</span> that has the same
-						initial state that 
-						<span class="keyword">other</span> had when it was constructed. The 
-						<span class="keyword">multifunction_node</span> that is constructed
-						will have a reference to the same 
-						<span class="keyword">graph</span> object as 
-						<span class="keyword">other</span>, will have a copy of the initial 
-						<span class="keyword">body</span> used by 
-						<span class="keyword">other</span>, and have the same concurrency
-						threshold as 
-						<span class="keyword">other</span>. The predecessors and successors of 
-						<span class="keyword">other</span> will not be copied. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The new body object is copy constructed from a copy of
-						  the original body provided to 
-						  <span class="keyword">other</span> at its construction. Therefore
-						  changes made to member variables in 
-						  <span class="keyword">other</span>'s body after the construction of 
-						  <span class="keyword">other</span> will not affect the body of the
-						  new 
-						  <span class="keyword">multifunction_node.</span> 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "> 
-					 <span class="keyword">~multifunction_node()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>Destructor 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "> 
-					 <span class="keyword">bool try_put( const input_type &v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>See the table above describing the behavior of try_put for a
-						
-						<samp class="codeph">multifunction_node</samp> for more information. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>Adds 
-						<span class="keyword">p</span> to the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p>Removes 
-						<span class="keyword">p</span> from the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d76994e384 "><span class="keyword">output_ports_type&
-						output_ports();</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d76994e387 "> 
-					 <p><strong>Returns</strong>: a tuple of output ports. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="make_edge_func.htm">make_edge Template Function 
-		  </a></div>
-<div><a href="remove_edge_func.htm">remove_edge Template Function 
-		  </a></div>
-<div><a href="copy_body_func.htm">copy_body Template Function 
-		  </a></div>
-<div><a href="message_passing_protocol.htm#message_passing_protocol">Message Passing Protocol
-		  </a></div>
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context 
-		  </a></div>
-<div><a href="flow_tuple.htm#flow_tuple">flow::tuple Template Class
-		  </a></div>
-<div><a href="../exceptions.htm">Exceptions 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/overwrite_node_cls.htm b/doc/help/reference/flow_graph/overwrite_node_cls.htm
deleted file mode 100755
index c38d903..0000000
--- a/doc/help/reference/flow_graph/overwrite_node_cls.htm
+++ /dev/null
@@ -1,391 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="overwrite_node Template Class">
-<meta name="DC.subject" content="overwrite_node Template Class">
-<meta name="keywords" content="overwrite_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="overwrite_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>overwrite_node Template Class</title>
-</head>
-<body id="overwrite_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="overwrite_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">overwrite_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<Input></span> and 
-		  <span class="keyword">sender<Output></span>. An 
-		  <span class="keyword">overwrite_node</span> is a buffer of a single item that can
-		  be over-written. The value held in the buffer is initially invalid. Gets from
-		  the node are non-destructive. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename T > class overwrite_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This type of node buffers a single item of type T. The value is
-		  initially invalid. A 
-		  <span class="keyword">try_put</span> will set the value of the internal buffer,
-		  and broadcast the new value to all successors. If the internal value is valid,
-		  a 
-		  <span class="keyword">try_get</span> will return 
-		  <span class="keyword">true</span> and copy the buffer value to the output. If the
-		  internal value is invalid, 
-		  <span class="keyword">try_get</span> will return 
-		  <span class="keyword">false</span>. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passage Protocol, see link below. 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class overwrite_node :
-  public graph_node, public receiver<T>,
-  public sender<T> {
-public:
-    overwrite_node( graph &g );
-    overwrite_node( const overwrite_node &src );
-    ~overwrite_node();
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
- 
-    bool is_valid( );
-    void clear( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d78590e178">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d78590e181">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">overwrite_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">overwrite_node</span> with an invalid internal
-						buffer item. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">overwrite_node( const
-						overwrite_node &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">overwrite_node</span> that belongs to the 
-						<span class="keyword">graph g</span> with an invalid internal buffer
-						item. The buffered value and list of successors is NOT copied from 
-						<span class="keyword">src</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">~overwrite_node( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Destroys the 
-						<span class="keyword">overwrite_node</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Stores 
-						<span class="keyword">v</span> in the internal single item buffer if it
-						does not already contain a valid value. If a new value is set, it calls 
-						<span class="keyword">try_put(v)</span> on all successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. If a valid
-						item 
-						<span class="keyword">v</span> is held in the buffer, a task is
-						spawned to call 
-						<span class="keyword">r.try_put(v)</span>. 
-					 </p>
-<strong>Returns</strong>: 
-					 <span class="keyword">true</span> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>If the internal buffer is valid, assigns the value to 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>:<span class="keyword">true</span> if 
-						<span class="keyword">v</span> is assigned to. 
-						<span class="keyword">false</span> if 
-						<span class="keyword">v</span> is not assigned to. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool try_reserve( output_type
-						&v ) 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool try_release( output_type
-						&v ) 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool try_consume( output_type
-						&v ) 
-					 </span> 
-					 <p> 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">bool is_valid( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer holds a valid value,
-						otherwise returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d78590e178 "><span class="keyword">void clear( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d78590e181 "> 
-					 <p>Invalidates the value held in the buffer. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/primary_components.htm b/doc/help/reference/flow_graph/primary_components.htm
deleted file mode 100755
index 2550d98..0000000
--- a/doc/help/reference/flow_graph/primary_components.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Primary Components">
-<meta name="DC.subject" content="Primary Components">
-<meta name="keywords" content="Primary Components">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="primary_components">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Primary Components</title>
-</head>
-<body id="primary_components">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="primary_components"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Primary Components</h1>
- 
-   
-  <div> 
-	 <p>There are 3 types of components used to implement a graph: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>A 
-			 <span class="keyword">graph</span> object 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Nodes 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Edges 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The 
-		<span class="keyword">graph</span> object is the owner of the tasks created on
-		behalf of the flow graph. Users can wait on the 
-		<span class="keyword">graph</span> if they need to wait for the completion of all
-		of the tasks related to the flow graph execution. One can also register
-		external interactions with the 
-		<span class="keyword">graph</span> and run tasks under the ownership of the flow
-		graph. 
-	 </p>
- 
-	 <p>Nodes invoke user-provided function objects or manage messages as the
-		flow to/from other nodes. There are pre-defined nodes that buffer, filter,
-		broadcast or order items as they flow through the graph. 
-	 </p>
- 
-	 <p>Edges are the connections between the nodes, created by calls to the 
-  <samp class="codeph">make_edge</samp> function. 
-  </p>
- 
-  	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-                <p>
-                The tasks related to the flow graph are executed in the task_group_context of that
-                flow graph.  If no context is specified when a flow graph is created, a
-                new context is created and bound to the enclosing context.
-                </p>
-
-                <p>
-                The context a body of a flow graph node is executed in is that node's graph.
-                If a cancellation or exception occurs in that node, the context of its
-                graph is cancelled, and if necessary the exception thrown is passed to
-                the enclosing context for further processing.
-                </p>
-
-	 </div> 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/priority_queue_node_cls.htm b/doc/help/reference/flow_graph/priority_queue_node_cls.htm
deleted file mode 100755
index 566c7ef..0000000
--- a/doc/help/reference/flow_graph/priority_queue_node_cls.htm
+++ /dev/null
@@ -1,386 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="priority_queue_node Template Class">
-<meta name="DC.subject" content="priority_queue_node Template Class">
-<meta name="keywords" content="priority_queue_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="priority_queue_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>priority_queue_node Template Class</title>
-</head>
-<body id="priority_queue_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="priority_queue_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">priority_queue_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An unbounded buffer of messages of type 
-		  <span class="keyword">T</span>. Messages are forwarded in priority order. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename T,
-          typename Compare = std::less<T>,
-          typename A = cache_aligned_allocator<T> >
-class priority_queue_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">priority_queue_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that forwards messages in priority
-		  order to a single successor in its successor set. Successors are tried in the
-		  order that they were registered with the node. If a successor rejects the
-		  message, it is removed from the successor list as described by the policy in
-		  the Message Passing Protocol, and the next successor in the set is tried. This
-		  continues until a successor accepts the message, or all successors have been
-		  attempted. Items that are successfully transferred to a successor are removed
-		  from the buffer. 
-		</p>
- 
-		<p>The next message to be forwarded has the largest priority as
-		  determined by 
-		  <span class="keyword">Compare</span>. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">priority_queue_node</span> is reservable and supports a
-		  single reservation at a time. While the 
-		  <span class="keyword">priority_queue_node</span> is reserved, no other items will
-		  be forwarded to successors and all 
-		  <span class="keyword">try_get</span> calls will return 
-		  <span class="keyword">false</span>. While reserved, 
-		  <span class="keyword">try_put</span> will still return 
-		  <span class="keyword">true</span> and add items to the 
-		  <span class="keyword">priority_queue_node</span>. 
-		</p>
- 
-		<p>An allocator of type 
-		  <span class="keyword">A</span> is used to allocate internal memory for the 
-		  <span class="keyword">priority_queue_node.</span> 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> The <samp class="codeph">Compare</samp> function object must not throw an exception.
-		  </p>
- 
-                </div>
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T, typename Compare = std::less<T>,
-          typename A = cache_aligned_allocator<T>>
-class priority_queue_node : public queue_node<T> {
-public:
-    typedef size_t size_type;
-    priority_queue_node( graph &g );
-    priority_queue_node( const priority_queue_node &src );
-    ~priority_queue_node();
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d80049e148">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d80049e151">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">priority_queue_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">priority_queue_node</span> that belongs to the 
-						<span class="keyword">graph g</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">priority_queue_node( const
-						priority_queue_node &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">priority_queue_node</span> that belongs to the
-						same 
-						<span class="keyword">graph g</span> as 
-						<span class="keyword">src</span>. The list of predecessors, the list of
-						successors and the messages in the buffer are NOT copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Adds 
-						<span class="keyword">v</span> to the 
-						<span class="keyword">priority_queue_node</span>. If 
-						<span class="keyword">v</span>'s priority is the largest of all of the
-						currently buffered messages, a task is spawned to forward the item to a
-						successor. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if a message is available in the node
-						and the node is not currently reserved. Otherwise returns 
-						<span class="keyword">false</span>. If the node returns 
-						<span class="keyword">true</span>, the message with the largest
-						priority will have been copied to 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>If the call returns 
-						<span class="keyword">true</span>, the node is reserved and will
-						forward no more messages until the reservation has been released or consumed. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if a message is available in the node
-						and the node is not currently reserved. Otherwise returns 
-						<span class="keyword">false</span>. If the node returns 
-						<span class="keyword">true</span>, the message with the largest
-						priority will have been copied to 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Releases the reservation on the node. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> remains in the 
-						<span class="keyword">priority_queue_node</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d80049e148 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d80049e151 "> 
-					 <p>Releases the reservation on the node. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> is popped from the front of
-						the queue. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/queue_node_cls.htm b/doc/help/reference/flow_graph/queue_node_cls.htm
deleted file mode 100755
index 607e536..0000000
--- a/doc/help/reference/flow_graph/queue_node_cls.htm
+++ /dev/null
@@ -1,374 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="queue_node Template Class">
-<meta name="DC.subject" content="queue_node Template Class">
-<meta name="keywords" content="queue_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="queue_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>queue_node Template Class</title>
-</head>
-<body id="queue_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="queue_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">queue_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An unbounded buffer of messages of type T. Messages are forwarded in
-		  first-in first-out (FIFO) order. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template <typename T, typename A = cache_aligned_allocator<T> >
-class queue_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">queue</span><span class="keyword">_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that forwards messages in first-in
-		  first-out (FIFO) order to a single successor in its successor set. Successors
-		  are tried in the order that they were registered with the node. If a successor
-		  rejects the message, it is removed from the successor list as described by the
-		  policy in the Message Passing Protocol, and the next successor in the set is
-		  tried. This continues until a successor accepts the message, or all successors
-		  have been attempted. Items that are successfully transferred to a successor are
-		  removed from the buffer. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">queue_node</span> is reservable and supports a single
-		  reservation at a time. While the 
-		  <span class="keyword">queue_node</span> is reserved, no other items will be
-		  forwarded to successors and all 
-		  <span class="keyword">try_get</span> calls will return 
-		  <span class="keyword">false</span>. While reserved, 
-		  <span class="keyword">try_put</span> will still return 
-		  <span class="keyword">true</span> and add items to the 
-		  <span class="keyword">queue_node</span>. 
-		</p>
- 
-		<p>An allocator of type 
-		  <span class="keyword">A</span> is used to allocate internal memory for the 
-		  <span class="keyword">queue_node.</span> 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
- 
-template <typename T, typename A = cache_aligned_allocator<T> >
-class queue_node :
-  public buffer_node<T, A> {
-public:
-    queue_node( graph &g );
-    queue_node( const queue_node &src );
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d81298e194">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d81298e197">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">queue_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">queue_node</span> that belongs to the 
-						<span class="keyword">graph g</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">queue_node( const queue_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">queue_node</span> that belongs to the same 
-						<span class="keyword">graph g</span> as 
-						<span class="keyword">src</span>. The list of predecessors, the list of
-						successors and the messages in the buffer are NOT copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Adds 
-						<span class="keyword">v</span> to all successors. 
-					 </p>
-the 
-					 <span class="keyword">queue_node</span>. If 
-					 <span class="keyword">v</span> is the only item in the 
-					 <span class="keyword">queue_node</span> , a task is spawned to forward
-					 the item to a successor. 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if an item can be removed from the
-						front of the 
-						<span class="keyword">queue_node</span> and assigned to 
-						<span class="keyword">v</span>. Returns 
-						<span class="keyword">false</span> if there is no item currently in the
-						
-						<span class="keyword">queue_node</span> or if the node is reserved. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>If the call returns 
-						<span class="keyword">true</span>, the node is reserved and will
-						forward no more messages until the reservation has been released or consumed. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if there is an item in the 
-						<span class="keyword">queue_node</span> and the node is not currently
-						reserved. If an item can be returned, it is assigned to 
-						<span class="keyword">v</span>. Returns 
-						<span class="keyword">false</span> if there is no item currently in the
-						
-						<span class="keyword">queue_node</span> or if the node is reserved. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Release the reservation on the node. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> remains in the 
-						<span class="keyword">queue_node</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the node is currently reserved and
-						
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d81298e194 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d81298e197 "> 
-					 <p>Releases the reservation on the 
-						<span class="keyword">queue_node</span>. The item that was returned in
-						the last successful call to 
-						<span class="keyword">try_reserve</span> is popped from the front of
-						the queue. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the 
-						<span class="keyword">queue_node</span> is currently reserved and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/receiver_cls.htm b/doc/help/reference/flow_graph/receiver_cls.htm
deleted file mode 100755
index 2fb2fa5..0000000
--- a/doc/help/reference/flow_graph/receiver_cls.htm
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="receiver Template Class">
-<meta name="DC.subject" content="receiver Template Class">
-<meta name="keywords" content="receiver Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="receiver_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>receiver Template Class</title>
-</head>
-<body id="receiver_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="receiver_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">receiver Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An abstract base class for nodes that act as message receivers. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename T > class receiver;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>The 
-		  <span class="keyword">receiver</span> template class is an abstract base class
-		  that defines the interface for nodes that can act as receivers. Default
-		  implementations for several functions are provided. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class receiver {
-public:
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    virtual ~receiver();
-    virtual bool try_put( const input_type &v ) = 0;
-    virtual bool register_predecessor( predecessor_type &p ) {
-        return false; }
-    virtual bool remove_predecessor( predecessor_type &p ) {
-        return false; }
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d82560e112">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d82560e115">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d82560e112 "><span class="keyword">~receiver()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d82560e115 "> 
-					 <p>The destructor. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d82560e112 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d82560e115 "> 
-					 <p>A method that represents the interface for
-						putting an item to a receiver. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d82560e112 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d82560e115 "> 
-					 <p>Adds a predecessor to the node's set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the predecessor is added; 
-						<span class="keyword">false</span> otherwise. The default
-						implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d82560e112 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d82560e115 "> 
-					 <p>Removes a predecessor from the node's set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the predecessor is removed; 
-						<span class="keyword">false</span> otherwise. The default
-						implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/remove_edge_func.htm b/doc/help/reference/flow_graph/remove_edge_func.htm
deleted file mode 100755
index d1b82df..0000000
--- a/doc/help/reference/flow_graph/remove_edge_func.htm
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="remove_edge Template Function">
-<meta name="DC.subject" content="remove_edge Template Function">
-<meta name="keywords" content="remove_edge Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="remove_edge_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>remove_edge Template Function</title>
-</head>
-<body id="remove_edge_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="remove_edge_func"><!-- --></a>
-
-
-<h1 class="topictitle1">remove_edge Template Function</h1>
-
-
-<div>
-<div class="section"><h2 class="sectiontitle">Summary</h2>
-<p>A template function that removes an edge between a <span class="keyword">sender<T></span> and a <span class="keyword">receiver<T>.</span></p>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-
-<pre>template< typename T >
-void remove_edge( sender<T> &p, receiver<T> &s );</pre></div>
-
-<div class="section"><h2 class="sectiontitle">Header</h2>
-
-<pre>#include "tbb/flow_graph.h"</pre></div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/sender_cls.htm b/doc/help/reference/flow_graph/sender_cls.htm
deleted file mode 100755
index e1be145..0000000
--- a/doc/help/reference/flow_graph/sender_cls.htm
+++ /dev/null
@@ -1,225 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="sender Template Class">
-<meta name="DC.subject" content="sender Template Class">
-<meta name="keywords" content="sender Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="sender_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>sender Template Class</title>
-</head>
-<body id="sender_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="sender_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">sender Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An abstract base class for nodes that act as message senders. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename T > class sender;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>The 
-		  <span class="keyword">sender</span> template class is an abstract base class that
-		  defines the interface for nodes that can act as senders. Default
-		  implementations for several functions are provided. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class sender {
-public:
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    virtual ~sender();
-    virtual bool register_successor( successor_type &r ) = 0;
-    virtual bool remove_successor( successor_type &r ) = 0;
-    virtual bool try_get( output_type &v ) { return false; }
-    virtual bool try_reserve( output_type &v ) { return false; }
-    virtual bool try_release( ) { return false; }
-    virtual bool try_consume( ) { return false; }
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d83130e114">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d83130e117">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">~sender()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>The destructor. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool register_successor(
-						successor_type &r ) = 0</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>A pure virtual method that describes the interface for
-						adding a successor node to the set of successors for the sender. 
-					 </p>
- 
-					 <p> 
-						<strong>Returns</strong>: 
-						<span class="keyword">true</span> if the successor is added; 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool remove_successor(
-						successor_type &r ) = 0</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>A pure virtual method that describes the interface for
-						removing a successor node from the set of successors for a sender. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the successor is removed; 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>Requests an item from a sender. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The default implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>Reserves an item at the sender. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The default implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>Releases the reservation held at the sender. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The default implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83130e114 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83130e117 "> 
-					 <p>Consumes the reservation held at the sender. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The default implementation returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/sequencer_node_cls.htm b/doc/help/reference/flow_graph/sequencer_node_cls.htm
deleted file mode 100755
index b2fb3de..0000000
--- a/doc/help/reference/flow_graph/sequencer_node_cls.htm
+++ /dev/null
@@ -1,501 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="sequencer_node Template Class">
-<meta name="DC.subject" content="sequencer_node Template Class">
-<meta name="keywords" content="sequencer_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="sequencer_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>sequencer_node Template Class</title>
-</head>
-<body id="sequencer_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="sequencer_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">sequencer_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>An unbounded buffer of messages of type 
-		  <span class="keyword">T</span>. Messages are forwarded in sequence order. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template< typename T, typename A = cache_aligned_allocator<T> >
-class sequencer_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <span class="keyword">sequencer_node</span> is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<T></span> and 
-		  <span class="keyword">sender<T></span> that forwards messages in sequence
-		  order to a single successor in its successor set. Successors are tried in the
-		  order that they were registered with the node. If a successor rejects the
-		  message, it is removed from the successor list as described by the policy in
-		  the Message Passing Protocol, and the next successor in the set is tried. This
-		  continues until a successor accepts the message, or all successors have been
-		  attempted. Items that are successfully transferred to a successor are removed
-		  from the buffer. 
-		</p>
- 
-		<p>Each item that passes through a 
-		  <span class="keyword">sequencer_node</span> is ordered by its sequencer order
-		  number. These sequence order numbers range from 0 to N, where N is the largest
-		  integer representable by the 
-		  <span class="keyword">size_t</span> type. An item's sequencer order number is
-		  determined by passing the item to a user-provided function object that models
-		  the Sequencer Concept shown below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl26"><!-- --></a><table cellpadding="4" summary="" id="tbl26" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">sequencer_node<T> Sequencer Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d83820e91"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d83820e97"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e91 "> 
-				  <p> 
-					 <pre>S::S( const S& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e97 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e91 "> 
-				  <p> 
-					 <pre>S::~S()</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e97 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e91 "> 
-				  <p> 
-					 <pre>void operator=( const S& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e97 "> 
-				  <p>Assignment. The return type 
-					 <samp class="codeph">void</samp> in the pseudo-signature denotes that 
-					 <samp class="codeph">operator=</samp> is not required to return a value.
-					 The actual 
-					 <samp class="codeph">operator=</samp> can return a value, which will be
-					 ignored. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e91 "> 
-				  <p><span class="keyword">size_t</span> 
-					 <span class="keyword">S::operator()(</span> 
-					 <span class="keyword">const</span> 
-					 <span class="keyword">T</span> 
-					 <span class="keyword">&v )</span> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d83820e97 "> 
-				  <p>Returns the sequence number for the provided message 
-					 <span class="keyword">v</span>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>A 
-		  <span class="keyword">sequencer_node</span> is reservable and supports a single
-		  reservation at a time. While a 
-		  <span class="keyword">sequencer_node</span> is reserved, no other items will be
-		  forwarded to successors and all 
-		  <span class="keyword">try_get</span> calls will return 
-		  <span class="keyword">false</span>. While reserved, 
-		  <span class="keyword">try_put</span> will still return 
-		  <span class="keyword">true</span> and add items to the 
-		  <span class="keyword">sequencer_node</span>. 
-		</p>
- 
-		<p>An allocator of type 
-		  <span class="keyword">A</span> is used to allocate internal memory for the 
-		  <span class="keyword">sequencer_node.</span> 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T, typename A = cache_aligned_allocator<T> >
-class sequencer_node :
-  public queue_node<T> {
-public:
-    template< typename Sequencer >
-    sequencer_node( graph &g, const Sequencer &s );
-    sequencer_node( const sequencer_node &src );
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d83820e268">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d83820e271">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">template<typename Sequencer>
-						sequencer_node( graph& g, const Sequencer &s )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">sequencer_node</span> that belongs to the 
-						<span class="keyword">graph g</span> and uses 
-						<span class="keyword">s</span> to compute sequence numbers for items. 
-					 </p>
- 
-                                         <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		                                <p> The <samp class="codeph">Sequencer</samp> function object must not throw an exception.
-		                                </p>
- 
-                                         </div>
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">sequencer_node( const
-						sequencer_node &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Constructs an empty 
-						<span class="keyword">sequencer_node</span> that belongs to the same 
-						<span class="keyword">graph g</span> as 
-						<span class="keyword">src</span> and will use a copy of the 
-						<span class="keyword">Sequencer s</span> used to construct 
-						<span class="keyword">src</span>. The list of predecessors, the list of
-						successors and the messages in the buffer are NOT copied. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The new sequencer object is copy constructed from a copy
-						  of the original sequencer object provided to 
-						  <span class="keyword">src</span> at its construction. Therefore
-						  changes made to member variables in 
-						  <span class="keyword">src</span>'s object will not affect the
-						  sequencer of the new 
-						  <span class="keyword">sequencer_node.</span> 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Adds 
-						<span class="keyword">v</span> to the 
-						<span class="keyword">sequencer_node</span>. If 
-						<span class="keyword">v</span>'s sequence number is the next item in
-						the sequence, a task is spawned to forward the item to a successor. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the next item in the sequence is
-						available in the 
-						<span class="keyword">sequencer_node</span>. If so, it is removed from
-						the node and assigned to 
-						<span class="keyword">v</span>. Returns 
-						<span class="keyword">false</span> if the next item in sequencer order
-						is not available or if the node is reserved. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>If the call returns 
-						<span class="keyword">true</span>, the node is reserved and will
-						forward no more messages until the reservation has been released or consumed. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the next item in sequencer order
-						is available in the 
-						<span class="keyword">sequencer_node</span>. If so, the item is
-						assigned to 
-						<span class="keyword">v</span>, but is not removed from the 
-						<span class="keyword">sequencer_node</span>. Returns 
-						<span class="keyword">false</span> if the next item in sequencer order
-						is not available or if the node is reserved. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Releases the reservation on the node. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> remains in the 
-						<span class="keyword">sequencer_node</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d83820e268 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d83820e271 "> 
-					 <p>Releases the reservation on the node. The item that was
-						returned in the last successful call to 
-						<span class="keyword">try_reserve</span> is popped from the front of
-						the queue. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer is currently reserved
-						and 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/source_node_cls.htm b/doc/help/reference/flow_graph/source_node_cls.htm
deleted file mode 100755
index 6da93bd..0000000
--- a/doc/help/reference/flow_graph/source_node_cls.htm
+++ /dev/null
@@ -1,477 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="source_node Class">
-<meta name="DC.subject" content="source_node Class">
-<meta name="keywords" content="source_node Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="make_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="remove_edge_func.htm">
-<meta name="DC.Relation" scheme="URI" content="copy_body_func.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Relation" scheme="URI" content="../task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../exceptions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="source_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>source_node Class</title>
-</head>
-<body id="source_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="source_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">source_node Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is both a 
-		  <span class="keyword">graph_node</span> and a 
-		  <span class="keyword">sender<Output></span>. This node can have no
-		  predecessors. It executes a user-provided 
-		<span class="option">body</span> function object to generate messages that are
-		broadcast to all successors. It is a serial node and will never call its 
-		<span class="keyword">body</span> concurrently. It is able to buffer a single item.
-		If no successor accepts an item that it has generated, the message is buffered
-		and will be provided to successors before a new item is generated. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename Output > class source_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This type of node generates messages of type 
-		  <span class="keyword">Output</span> by invoking the user-provided 
-		  <span class="keyword">body</span> and broadcasts the result to all of its
-		  successors. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">source_node</span> is a serial node. Calls to 
-		  <span class="keyword">body</span> will never be made concurrently. 
-		</p>
- 
-		<p>A 
-		  <span class="keyword">source_node</span> will continue to invoke 
-		  <span class="keyword">body</span> and broadcast messages until the 
-		  <span class="keyword">body</span> returns 
-		  <span class="keyword">false</span> or it has no valid successors. A message may
-		  be generated and then rejected by all successors. In that case, the message is
-		  buffered and will be the next message sent once a successor is added to the
-		  node or 
-		  <span class="keyword">try_get</span> is called. Calls to 
-		  <span class="keyword">try_get</span> will return a buffer message if available or
-		  will invoke 
-		  <span class="keyword">body</span> to attempt to generate a new message. A call to
-		  
-		  <span class="keyword">body</span> is made only when the internal buffer is empty.
-		  
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl25"><!-- --></a><table cellpadding="4" summary="" id="tbl25" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">source_node<Output> Body Concept</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d85476e126"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" align="center" valign="top" width="50%" id="d85476e132"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e126 "> 
-				  <p> 
-					 <pre>B::B( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e132 "> 
-				  <p>Copy constructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e126 "> 
-				  <p> 
-					 <pre>B::~B()</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e132 "> 
-				  <p>Destructor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e126 "> 
-				  <p> 
-					 <pre>void operator=( const B& )</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e132 "> 
-				  <p>Assignment. The return type 
-					 <samp class="codeph">void</samp> in the pseudo-signature denotes that 
-					 <samp class="codeph">operator=</samp> is not required to return a value.
-					 The actual 
-					 <samp class="codeph">operator=</samp> can return a value, which will be
-					 ignored. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e126 "> 
-				  <p> 
-					 <pre>bool B::operator() (Output &v)</pre> 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="50%" headers="d85476e132 "> 
-				  <p>Returns 
-					 <span class="keyword">true</span> when it has assigned a new value to 
-					 <span class="keyword">v</span>. Returns 
-					 <span class="keyword">false</span> when no new values may be generated. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p> The body object passed to a 
-			 <span class="keyword">source_node</span> is copied. Therefore updates to member
-			 variables will not affect the original object used to construct the node. If
-			 the state held within a body object must be inspected from outside of the node,
-			 the 
-			 <span class="keyword">copy_body</span> function can be used to obtain an
-			 updated copy. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> The body object may throw or cancel its enclosing graph. See
-			 task_group_context and Exceptions sections for a description. 
-		  </p>
- 
-		  <p><span class="keyword">Output</span> must be copy-constructible and assignable.
-			 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template < typename Output >
-class source_node : public graph_node, public sender< Output > {
-public:
-    typedef Output output_type;
-    typedef receiver< output_type > successor_type;
- 
-    template< typename Body >
-    source_node( graph &g, Body body, bool is_active = true );
-    source_node( const source_node &src );
-    ~source_node();
- 
-    void activate();
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d85476e278">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d85476e281">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">template< typename Body
-						>source_node( graph &g, Body body, bool is_active=true )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Constructs a 
-						<span class="keyword">source_node</span> that will invoke 
-						<span class="keyword">body</span>. By default the node is created in
-						the active state, that is, it will begin generating messages immediately. If 
-						<span class="keyword">is_active</span> is 
-						<span class="keyword">false</span>, messages will not be generated
-						until a call to 
-						<span class="keyword">activate</span> is made. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">source_node( const source_node
-						&src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Constructs a 
-						<span class="keyword">source_node</span> that has the same initial
-						state that 
-						<span class="keyword">src</span> had when it was constructed. The 
-						<span class="keyword">source_node</span> that is constructed will have
-						a reference to the same 
-						<span class="keyword">graph</span> object as 
-						<span class="keyword">src</span>, will have a copy of the initial body
-						used by 
-						<span class="keyword">src,</span> and have the same initial active
-						state as 
-						<span class="keyword">src</span>. The predecessors and successors of 
-						<span class="keyword">src</span> will not be copied. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p> The new body object is copy constructed from a copy of
-						  the original body provided to 
-						  <span class="keyword">src</span> at its construction. Therefore
-						  changes made to member variables in 
-						  <span class="keyword">src</span>'s body after the construction of 
-						  <span class="keyword">src</span> will not affect the body of the new 
-						  <span class="keyword">source_node.</span> 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">void activate()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Sets the 
-						<span class="keyword">source_node</span> to the active state, allowing
-						it to begin generating messages. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Will copy the buffered message into 
-						<span class="keyword">v</span> if available or will invoke 
-						<span class="keyword">body</span> to attempt to generate a new message
-						that will be copied into 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>:<span class="keyword">true</span> if a message is
-						copied to v. 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Reserves the 
-						<span class="keyword">source_node</span> if possible. If a message can
-						be buffered and the node is not already reserved, the node is reserved for the
-						caller, and the value is copied into 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the node is reserved for the
-						caller. 
-						<span class="keyword">false</span> otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Releases any reservation held on the 
-						<span class="keyword">source_node</span>. The message held in the
-						internal buffer is retained. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d85476e278 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d85476e281 "> 
-					 <p>Releases any reservation held on the 
-						<span class="keyword">source_node</span> and clears the internal
-						buffer. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="make_edge_func.htm">make_edge Template Function 
-		  </a></div>
-<div><a href="remove_edge_func.htm">remove_edge Template Function 
-		  </a></div>
-<div><a href="copy_body_func.htm">copy_body Template Function 
-		  </a></div>
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div>
-<div><a href="../task_scheduler/task_group_context.htm">task_group_context 
-		  </a></div>
-<div><a href="../exceptions.htm">Exceptions 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/split_node_cls.htm b/doc/help/reference/flow_graph/split_node_cls.htm
deleted file mode 100755
index 97414fe..0000000
--- a/doc/help/reference/flow_graph/split_node_cls.htm
+++ /dev/null
@@ -1,292 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="split_node Template Class">
-<meta name="DC.subject" content="split_node Template Class">
-<meta name="keywords" content="split_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="flow_tuple.htm#flow_tuple">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="split_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>split_node Template Class</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="split_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="split_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">split_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a 
-		  <samp class="codeph">receiver<TupleType></samp> and has a
-		  tuple of 
-		  <samp class="codeph">sender< tuple_element< i,
-			 TupleType >::type ></samp> output ports; where i is the index in the
-		  tuple. A 
-		  <samp class="codeph">split_node</samp> sends each
-		  element of the incoming tuple to the output port that matches the element's
-		  index in the incoming tuple. This node has unlimited concurrency. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename TupleType >
- class split_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>This node receives a tuple at its single input port
-		  and generates a message from each element of the tuple, passing each to the
-		  corresponding output port. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">split_node</samp> has
-		  unlimited concurrency, no buffering, and behaves as a 
-		  <samp class="codeph">broadcast_node</samp> with
-		  multiple output ports. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example below shows a 
-		  <samp class="codeph">split_node</samp> that
-		  separates a stream of tuples of integers, placing each element of the tuple in
-		  the appropriate output queue. 
-		</p>
- 
-		<p>The output ports of the 
-		  <samp class="codeph">split_node</samp> can be
-		  connected to other graph nodes using the 
-		  <samp class="codeph">make_edge</samp> method or by
-		  using 
-		  <samp class="codeph">register_successor</samp>: 
-		</p>
- 
-		<pre>#include "tbb/flow_graph.h"
-using namespace tbb::flow;
-
-int main() {
-  graph g;
-
-  queue_node<int> first_queue(g);
-  queue_node<int> second_queue(g);
-  split_node< flow::tuple<int,int> > my_split_node(g);
-  output_port<0>(my_split_node).register_successor(first_queue);
-  make_edge(output_port<1>(my_split_node), second_queue);
-
-  for(int i = 0; i < 1000; ++i) {
-    node1.try_put(int_tuple_type(2*i,2*i+1));
-  }
-  g.wait_for_all();
- }</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-  template < typename TupleType >
-    class split_node : public graph_node, public receiver<TupleType>
-  {
-  public:
-
-    split_node( graph &g );
-    split_node( const split_node &other);
-    ~split_node();
-
-    // receiver< TupleType >
-    typedef TupleType input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
-
-    typedef <em>implementation-dependent</em> output_ports_type;
-    output_ports_type& output_ports();
-  };
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d86984e129">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d86984e132">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "> 
-					 <span class="keyword">split_node( graph &g )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Constructs a 
-						<span class="keyword">split_node</span> registered with graph 
-						<span class="keyword">g</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "> 
-					 <span class="keyword">split_node( const split_node &other)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Constructs a 
-						<span class="keyword">split_node</span> that has the same initial state
-						that 
-						<span class="keyword">other</span> had when it was constructed. The 
-						<span class="keyword">split_node</span> that is constructed will have a
-						reference to the same 
-						<span class="keyword">graph</span> object as 
-						<span class="keyword">other</span>. The predecessors and successors of 
-						<span class="keyword">other</span> will not be copied. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "> 
-					 <span class="keyword">~split_node()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Destructor 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "> 
-					 <span class="keyword">bool try_put( const input_type &v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Broadcasts each element of the incoming tuple to the nodes
-						connected to the 
-						<span class="keyword">split_node</span>'s output ports. The element at
-						index 
-						<span class="keyword">i</span> of 
-						<span class="keyword">v</span>i will be broadcast through the 
-						<span class="keyword">i</span>th output port.
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Adds 
-						<span class="keyword">p</span> to the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p>Removes 
-						<span class="keyword">p</span> from the set of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d86984e129 "><span class="keyword">output_ports_type&
-						output_ports();</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d86984e132 "> 
-					 <p><strong>Returns</strong>: a tuple of output ports. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="flow_tuple.htm#flow_tuple">flow::tuple Template Class
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/flow_graph/write_once_node_cls.htm b/doc/help/reference/flow_graph/write_once_node_cls.htm
deleted file mode 100755
index cb0f837..0000000
--- a/doc/help/reference/flow_graph/write_once_node_cls.htm
+++ /dev/null
@@ -1,358 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="write_once_node Template Class">
-<meta name="DC.subject" content="write_once_node Template Class">
-<meta name="keywords" content="write_once_node Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="message_passing_protocol.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="write_once_node_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>write_once_node Template Class</title>
-</head>
-<body id="write_once_node_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="write_once_node_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">write_once_node Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A template class that is a 
-		  <span class="keyword">graph_node</span>, 
-		  <span class="keyword">receiver<Input></span> and 
-		  <span class="keyword">sender<Output></span>. A 
-		  <span class="keyword">write_once_node</span> represents a buffer of a single item
-		  that cannot be over-written. The first put to the node sets the value. The
-		  value may be cleared explicitly, after which a new value may be set. Gets from
-		  the node are non-destructive. 
-		</p>
- 
-		<p>Rejection of messages by successors is handled using the protocol in
-		  the Message Passing Protocol, see link below. 
-		</p>
- 
-		<p><span class="keyword">T</span> must be copy-constructible and assignable 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template < typename T > class write_once_node;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/flow_graph.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-namespace flow {
- 
-template< typename T >
-class write_once_node :
-  public graph_node, public receiver<T>,
-  public sender<T> {
-public:
-    write_once_node( graph &g );
-    write_once_node( const write_once_node &src );
- 
-    // receiver<T>
-    typedef T input_type;
-    typedef sender<input_type> predecessor_type;
-    bool try_put( const input_type &v );
-    bool register_predecessor( predecessor_type &p );
-    bool remove_predecessor( predecessor_type &p );
- 
-    // sender<T>
-    typedef T output_type;
-    typedef receiver<output_type> successor_type;
-    bool register_successor( successor_type &r );
-    bool remove_successor( successor_type &r );
-    bool try_get( output_type &v );
-    bool try_reserve( output_type &v );
-    bool try_release( );
-    bool try_consume( );
- 
-    bool is_valid( );
-    void clear( );
-};
- 
-}
-}</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d87805e152">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d87805e155">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">write_once_node( graph &g
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">write_once_node</span> that belongs to the 
-						<span class="keyword">graph g</span>, with an invalid internal buffer
-						item. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">write_once_node( const
-						write_once_node &src )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Constructs an object of type 
-						<span class="keyword">write_once_node</span> with an invalid internal
-						buffer item. The buffered value and list of successors is NOT copied from 
-						<span class="keyword">src</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool try_put( const input_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Stores<span class="keyword"> v</span> in the internal single item
-						buffer if it does not already contain a valid value. If a new value is set, it
-						calls 
-						<span class="keyword">try_put(v)</span> on all successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool register_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool remove_predecessor(
-						predecessor_type &p )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Never rejects puts and therefore does not need to maintain a
-						list of predecessors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool register_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Adds 
-						<span class="keyword">r</span> to the set of successors. If a valid
-						item 
-						<span class="keyword">v</span> is held in the buffer, a task is
-						spawned to call 
-						<span class="keyword">r.try_put(v)</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool remove_successor(
-						successor_type &r )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Removes 
-						<span class="keyword">r</span> from the set of successors. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool try_get( output_type &v
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>If the internal buffer is valid, assigns the value to 
-						<span class="keyword">v</span>. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if 
-						<span class="keyword">v</span> is assigned to. 
-						<span class="keyword">false</span> if 
-						<span class="keyword">v</span> is not assigned to. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool try_reserve( output_type
-						&v )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool try_release( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool try_consume( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Does not support reservations. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">false</span> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">bool is_valid( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p><strong>Returns</strong>: 
-						<span class="keyword">true</span> if the buffer holds a valid value,
-						otherwise returns 
-						<span class="keyword">false</span>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d87805e152 "><span class="keyword">void clear( )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d87805e155 "> 
-					 <p>Invalidates the value held in the buffer. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/flow_graph.htm">Flow Graph</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="message_passing_protocol.htm">Message Passing Protocol 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/general_conventions.htm b/doc/help/reference/general_conventions.htm
deleted file mode 100755
index ce199db..0000000
--- a/doc/help/reference/general_conventions.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="General Conventions">
-<meta name="DC.subject" content="General Conventions">
-<meta name="keywords" content="General Conventions">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/general_conventions/terminology.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/general_conventions/identifiers.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/general_conventions/namespaces.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/general_conventions/thread_safety.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="general_conventions">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>General Conventions</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="general_conventions">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="general_conventions"><!-- --></a>
-
- 
-  <h1 class="topictitle1">General Conventions</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>This section describes conventions used in this
-		  document. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/general_conventions/terminology.htm">Terminology</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/general_conventions/identifiers.htm">Identifiers</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/general_conventions/namespaces.htm">Namespaces</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/general_conventions/thread_safety.htm">Thread Safety</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/general_conventions/identifiers.htm b/doc/help/reference/general_conventions/identifiers.htm
deleted file mode 100755
index 91a8d94..0000000
--- a/doc/help/reference/general_conventions/identifiers.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Identifiers">
-<meta name="DC.subject" content="Identifiers">
-<meta name="keywords" content="Identifiers">
-<meta name="DC.Relation" scheme="URI" content="../../reference/general_conventions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="identifiers">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Identifiers</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="identifiers">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="identifiers"><!-- --></a>
-
- 
-	<h1 class="topictitle1">Identifiers</h1>
- 
-	 
-  <div> 
-  	<div class="section">
-  		<p>This section describes the identifier conventions used by Intel® Threading Building Blocks.</p>
-</div>
-
-  	<div class="section"><h2 class="sectiontitle">Case</h2>
-  		<p>The identifier convention in the library follows the style in the ISO C++ standard library. Identifiers are written in underscore_style, and concepts in PascalCase.</p>
-</div>
-
-  	<div class="section"><h2 class="sectiontitle">Reserved Identifier Prefixes</h2>
-  		<p>The library reserves the prefix <samp class="codeph">__TBB</samp> for internal identifiers and macros that should never be directly referenced by your code. </p>
-</div>
-
-  	
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/general_conventions.htm">General Conventions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/general_conventions/namespaces.htm b/doc/help/reference/general_conventions/namespaces.htm
deleted file mode 100755
index 527dbd6..0000000
--- a/doc/help/reference/general_conventions/namespaces.htm
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Namespaces">
-<meta name="DC.subject" content="Namespaces, tbb, tbb::interface, tbb::interfacex, tbb::internal, tbb::deprecated, tbb::strict_ppl, TBB_DEPRECATED">
-<meta name="keywords" content="Namespaces, tbb, tbb::interface, tbb::interfacex, tbb::internal, tbb::deprecated, tbb::strict_ppl, TBB_DEPRECATED">
-<meta name="DC.Relation" scheme="URI" content="../../reference/general_conventions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="namespaces">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Namespaces</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="namespaces">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="namespaces"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Namespaces</h1>
- 
-   
-  <div> 
-	 <p>This section describes the library's namespace conventions. 
-	 </p>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb</samp> Namespace</h2> 
-		 
-		<p>Namespace 
-		  <samp class="codeph">tbb</samp> contains public identifiers defined by the library
-		  that you can reference in your program. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb::flow</samp>
-		  Namespace</h2> 
-		 
-		<p>Namespace 
-		  <samp class="codeph">tbb::flow</samp> contains public identifiers defined by the
-		  library that you can reference in your program. 
-		</p>
- 
-		<p> related to the flow graph Community Preview Feature. See 
-		  <a href="../flow_graph.htm#flow_graph">Flow Graph</a> for more information . 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb::interface<em>x</em></samp>
-		  Namespace</h2> 
-		 
-		<p>Namespaces of the form 
-		  <samp class="codeph">tbb::interface<em>x</em></samp> define public identifiers that
-		  the library injects into namespace 
-		  <samp class="codeph">tbb</samp>. The numeral 
-		  <samp class="codeph"><em>x</em></samp> corresponds to an internal version number
-		  that serves to prevent accidental linkage of incompatible definitions. Your
-		  code should never directly reference namespaces prefixed with 
-		  <samp class="codeph">tbb::interface<em>x</em></samp>. Instead, reference names via
-		  namespace 
-		  <samp class="codeph">tbb</samp>. 
-		</p>
- 
-		<p>For example the header 
-		  <samp class="codeph">tbb/concurrent_hash_map.h</samp> defines the template 
-		  <samp class="codeph">concurrent_hashmap<Key,T></samp> as 
-		  <samp class="codeph">tbb::version4::concurrent_hashmap<Key,T></samp> and
-		  employs a 
-		  <samp class="codeph">using</samp> directive to inject it into namespace 
-		  <samp class="codeph">tbb</samp>. Your source code should reference it as 
-		  <samp class="codeph">tbb::concurrent_hashmap<Key,T></samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb::internal</samp>
-		  Namespace</h2> 
-		 
-		<p>Namespace 
-		  <samp class="codeph">tbb::internal</samp> serves a role similar to 
-		  <samp class="codeph">tbb::interface<em>x</em></samp>. It is retained for backwards
-		  compatibility with older versions of the library. Your code should never
-		  directly reference namespace 
-		  <samp class="codeph">tbb::internal</samp>. Indirect reference via a public 
-		  <samp class="codeph">typedef</samp> provided by the header files is permitted. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb::deprecated</samp>
-		  Namespace</h2> 
-		 
-		<p>The library uses the namespace 
-		  <samp class="codeph">tbb::deprecated</samp> for deprecated identifiers that have
-		  different default meanings in namespace 
-		  <samp class="codeph">tbb</samp>. Compiling with 
-		  <samp class="codeph">TBB_DEPRECATED=1</samp> causes such identifiers to replace
-		  their counterpart in namespace tbb. 
-		</p>
- 
-		<p>For example, 
-		  <samp class="codeph">tbb::concurrent_queue</samp> underwent changes in
-          Intel® Threading Building Blocks (Intel® TBB) 2.2
-		  that split its functionality into 
-		  <samp class="codeph">tbb::concurrent_queue</samp> and 
-		  <samp class="codeph">tbb::concurrent_bounded_queue</samp> and changed the name of
-		  some methods. For sake of legacy code, the old Intel® TBB 2.1
-		  functionality is retained in 
-		  <samp class="codeph">tbb::deprecated::concurrent_queue</samp>, which is injected
-		  into namespace tbb when compiled with 
-		  <samp class="codeph">TBB_DEPRECATED=1</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">tbb::strict_ppl</samp>
-		  Namespace</h2> 
-		 
-		<p>The library uses the namespace 
-		  <samp class="codeph">tbb::strict_ppl</samp> for identifiers that are put in
-		  namespace 
-		  <samp class="codeph">Concurrency</samp> when<samp class="codeph"> tbb/compat/ppl.h</samp> is
-		  included. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"><samp class="codeph">std</samp> Namespace</h2> 
-		 
-		<p>The library implements some C++11 features in
-		  namespace 
-		  <samp class="codeph">std</samp>. The library version can be used by including the
-		  corresponding header in the following table.
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl3"><!-- --></a><table cellpadding="4" summary="" id="tbl3" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">C++11 Features Optonally Defined
-		  by Intel® TBB.</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d89183e256"> 
-				  <p><strong>Header</strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d89183e264"> 
-				  <p><strong>Identifiers Added to 
-						<samp class="codeph">std::</samp></strong> 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d89183e274"> 
-				  <p><strong>Section</strong> 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
-
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d89183e256 "> 
-				  <p>tbb/compat/condition_variable 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d89183e264 "> 
-				  <p><samp class="codeph">defer_lock_t</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">try_to_lock_t</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">adopt_lock_t</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">defer_lock</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">try_to_lock</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">adopt_lock</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">lock_guard</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">unique_lock</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">swap</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">condition_variable</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">cv_status</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">timeout</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">no_timeout</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d89183e274 "> 
-				  <p><a href="../synchronization/c_11_synchronization.htm">C++11
-						Synchronization</a> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d89183e256 "> 
-				  <p>tbb/compat/thread 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d89183e264 "> 
-				  <p><samp class="codeph">thread</samp> 
-				  </p>
- 
-				  <p><samp class="codeph">this_thread</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d89183e274 "> 
-				  <p> 
-					 <a href="../threads/thread_cls.htm"><samp class="codeph">thread</samp>
-						Class</a> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>To prevent accidental linkage with other
-		  implementations of these C++ library features, the library defines the
-		  identifiers in other namespaces and injects them into namespace 
-		  <samp class="codeph">std::</samp>.  This way the “mangled
-		  name” seen by the linker will differ from the “mangled
-		  name” generated by other implementations. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/general_conventions.htm">General Conventions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/general_conventions/terminology.htm b/doc/help/reference/general_conventions/terminology.htm
deleted file mode 100755
index e4d482b..0000000
--- a/doc/help/reference/general_conventions/terminology.htm
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Terminology">
-<meta name="DC.subject" content="Terminology">
-<meta name="keywords" content="Terminology">
-<meta name="DC.Relation" scheme="URI" content="../../reference/general_conventions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="terminology">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Terminology</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="terminology">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="terminology"><!-- --></a>
-
- 
-<h1 class="topictitle1">Terminology</h1>
- 
-	 	
-  <div> 
-  	<div class="section"><p>This section describes terminology specific to Intel® Threading Building Blocks (Intel® TBB).</p>
-</div>
-
-  	<div class="section"><h2 class="sectiontitle">Concept</h2>
-  		<p>A <em>concept</em> is a set of requirements on a type. The requirements may be syntactic or semantic. For example, the concept of “sortable” could be defined as a set of requirements that enable an array to be sorted. A type <samp class="codeph">T</samp> would be sortable if: </p>
-
-  		<ul type="disc">
-  			<li><p><samp class="codeph">x < y</samp> returns a boolean value, and represents a total order on items of type <samp class="codeph">T</samp>.</p>
-</li>
-
-  			<li><p><samp class="codeph">swap(x,y)</samp> swaps items <samp class="codeph">x</samp> and <samp class="codeph">y </samp></p>
-</li>
-
-  		</ul>
-
-  		<p>You can write a sorting template function in C++ that sorts an array of any type that is sortable.</p>
-
-  		<p>Two approaches for defining concepts are <em>valid expressions</em> and <em>pseudo-signatures</em>. The ISO C++ standard follows the valid <em>expressions</em> approach, which shows what the usage pattern looks like for a concept. It has the drawback of relegating important details to notational conventions. This document uses pseudo-signatures, because they are concise, and can be cut-and-pasted for an initial implementation. </p>
-
-  		<p>For example, the table below shows pseudo-signatures for a sortable type <samp class="codeph">T</samp>:</p>
-
-  		
-<div class="tablenoborder"><a name="tbl1"><!-- --></a><table cellpadding="4" summary="" id="tbl1" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Pseudo-Signatures for Example Concept
-					“sortable”</span></caption>
-  				
-  				
-  				<thead align="left">
-                <tr>
-  					<th class="cellrowborder" valign="top" width="NaN%" id="d90079e104"><p><strong>Pseudo-Signature</strong></p>
-</th>
-
-  					<th class="row-nocellborder" valign="top" width="NaN%" id="d90079e109"><p><strong>Semantics</strong></p>
-</th>
-
-  				</tr>
-
-  				</thead>
-
-  				<tbody>
-                <tr>
-  					<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e104 "><p>bool operator<(const T& x, const T& y)</p>
-</td>
-
-  					<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e109 "><p>Compare x and y.</p>
-</td>
-
-  				</tr>
-<tr>
-  					<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e104 "><p>void swap(T& x, T& y)</p>
-</td>
-
-  					<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e109 "><p>Swap x and y.</p>
-</td>
-
-  				</tr>
-</tbody>
-</table>
-</div>
-
-  		<p>A real signature may differ from the pseudo-signature that it implements in ways where implicit conversions would deal with the difference. For an example type <samp class="codeph">U</samp>, the real signature that implements operator<samp class="codeph"><</samp> in the table above can be expressed as <samp class="codeph">int operator<( U x, U y )</samp>, because C++ permits implicit conversion from <samp class="codeph">int</samp> to <samp class="codeph">bool</samp>, and imp [...]
-
-  	</div>
-
-
-  	<div class="section"><h2 class="sectiontitle">Model</h2>  	
-  			<p>A type <em>models</em> a concept if it meets the requirements of the concept. For example, type <samp class="codeph">int</samp> models the sortable concept in the above table if there exists a function <samp class="codeph">swap(x,y)</samp> that swaps two <samp class="codeph">int</samp> values <samp class="codeph">x</samp> and <samp class="codeph">y</samp>. The other requirement for sortable, specifically <samp class="codeph">x<y</samp>, is already met by the built-in <samp cla [...]
-</div>
-
-  		
-			<div class="section"><h2 class="sectiontitle">CopyConstructible</h2>
-  				<p>The library sometimes requires that a type model the <em>CopyConstructible</em> concept, which is defined by the ISO C++ standard. The table below shows the requirements for <em>CopyConstructible</em> in pseudo-signature form.</p>
-
-  				
-<div class="tablenoborder"><a name="tbl2"><!-- --></a><table cellpadding="4" summary="" id="tbl2" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">CopyConstructible Requirements</span></caption>
-  						
-  						
-  						<thead align="left">
-                        <tr>
-  							<th class="cellrowborder" valign="top" width="NaN%" id="d90079e232"><p><strong>Pseudo-Signature</strong></p>
-</th>
-
-  							<th class="row-nocellborder" valign="top" width="NaN%" id="d90079e237"><p><strong>Semantics</strong></p>
-</th>
-
-  						</tr>
-
-  				        </thead>
-
-          				<tbody>
-                        <tr>
-  							<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e232 "><p>T( const T& )</p>
-</td>
-
-  							<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e237 "><p>Construct copy of const T.</p>
-</td>
-
-  						</tr>
-<tr>
-  							<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e232 "><p>~T()</p>
-</td>
-
-  							<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e237 "><p>Destructor.</p>
-</td>
-
-  						</tr>
-<tr>
-  							<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e232 "><p>T* operator&()</p>
-</td>
-
-  							<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e237 "><p>Take address.</p>
-</td>
-
-  						</tr>
-<tr>
-  							<td class="cellrowborder" valign="top" width="NaN%" headers="d90079e232 "><p>const T* operator&() const</p>
-</td>
-
-  							<td class="row-nocellborder" valign="top" width="NaN%" headers="d90079e237 "><p>Take address of const T.</p>
-</td>
-
-  						</tr>
-</tbody>
-</table>
-</div>
-
-  			</div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/general_conventions.htm">General Conventions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/general_conventions/thread_safety.htm b/doc/help/reference/general_conventions/thread_safety.htm
deleted file mode 100755
index 88db43a..0000000
--- a/doc/help/reference/general_conventions/thread_safety.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Thread Safety">
-<meta name="DC.subject" content="Thread Safety">
-<meta name="keywords" content="Thread Safety">
-<meta name="DC.Relation" scheme="URI" content="../../reference/general_conventions.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_safety">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Thread Safety</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="thread_safety">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_safety"><!-- --></a>
-
- 
-	<h1 class="topictitle1">Thread Safety</h1>
- 
-	 
-  <div> 
-  	<div class="section"><p>Unless otherwise stated, the thread safety rules for the library are as follows: </p>
-
-  		<ul type="disc">
-  			<li><p>Two threads can invoke a method or function concurrently on different objects, but not the same object. </p>
-</li>
-
-  			<li><p>It is unsafe for two threads to invoke concurrently methods or functions on the same object. </p>
-</li>
-
-  		</ul>
-
-  		<p>Descriptions of the classes note departures from this convention. For example, the concurrent containers are more liberal. By their nature, they do permit some concurrent operations on the same container object.</p>
-</div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/general_conventions.htm">General Conventions</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/introducing.htm b/doc/help/reference/introducing.htm
deleted file mode 100755
index 310edff..0000000
--- a/doc/help/reference/introducing.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Introducing Intel® Threading Building Blocks">
-<meta name="DC.subject" content="Intel® Thread Building Blocks, Overview">
-<meta name="keywords" content="Intel® Thread Building Blocks, Overview">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="introducing">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Introducing Intel® Threading Building Blocks</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="introducing">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="introducing"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Introducing Intel® Threading Building Blocks</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Intel® Threading Building Blocks (Intel® TBB) is a
-		  library that supports scalable parallel programming using standard ISO C++
-		  code. It does not require special languages or compilers. It is designed to
-		  promote scalable data parallel programming. Additionally, it fully supports
-		  nested parallelism, so you can build larger parallel components from smaller
-		  parallel components. To use the library, you specify tasks, not threads, and
-		  let the library map tasks onto threads in an efficient manner. 
-		</p>
- 
-		<p>Many of the library interfaces employ generic
-		  programming, in which interfaces are defined by requirements on types and not
-		  specific types. The C++ Standard Template Library (STL) is an example of
-		  generic programming. Generic programming enables Intel® Threading Building
-		  Blocks to be flexible yet efficient. The generic interfaces enable you to
-		  customize components to your specific needs. 
-		</p>
- 
-		<p>The net result is that Intel® Threading Building
-		  Blocks enables you to specify parallelism far more conveniently than using raw
-		  threads, and at the same time can improve performance. 
-		</p>
- 
-		<p>This document is a reference manual. It is
-		  organized for looking up details about syntax and semantics. You should first
-		  read the 
-		  <em>Intel® Threading Building Blocks Getting Started Guide</em> and the 
-		  <em>Intel® Threading Building Blocks Tutorial</em> to learn how to use
-		  the library effectively. The 
-		  <em>Intel® Threading Building Blocks Design Patterns</em> document is
-		  another useful resource. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>Even experienced parallel programmers should read
-			 the 
-			 <em>Intel® Threading Building Blocks Tutorial</em> before using this
-			 reference guide because Intel® Threading Building Blocks uses a surprising
-			 recursive model of parallelism and generic algorithms. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <p> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"> 
-		   
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="100%" id="d90964e74">
-				  <p>Optimization Notice
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="bgcolor(#ccecff)" bgcolor="#ccecff" valign="top" width="100%" headers="d90964e74 ">
-				  Intel's compilers may or may not optimize to the same degree for non-Intel
-				  microprocessors for optimizations that are not unique to Intel microprocessors.
-				  These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other
-				  optimizations. Intel does not guarantee the availability, functionality, or
-				  effectiveness of any optimization on microprocessors not manufactured by Intel.
-				  Microprocessor-dependent optimizations in this product are intended for use
-				  with Intel microprocessors. Certain optimizations not specific to Intel
-				  microarchitecture are reserved for Intel microprocessors. Please refer to the
-				  applicable product User and Reference Guides for more information regarding the
-				  specific instruction sets covered by this notice. 
-				  <p>Notice revision #20110804 
-				  </p>
-
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </p>
- 
-  </div>
- 
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation.htm b/doc/help/reference/memory_allocation.htm
deleted file mode 100755
index b1b6b07..0000000
--- a/doc/help/reference/memory_allocation.htm
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Memory Allocation">
-<meta name="DC.subject" content="Memory Allocation">
-<meta name="keywords" content="Memory Allocation">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/allocator_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/tbb_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/scalable_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/cache_aligned_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/zero_allocator.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation/aligned_space_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="memory_allocation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Memory Allocation</title>
-</head>
-<body id="memory_allocation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="memory_allocation"><!-- --></a>
-
-
-    <h1 class="topictitle1">Memory Allocation</h1>
-
-    
-<div>
-        <div class="section">
-            <p>This section describes classes related to memory allocation.</p>
-</div>
-
-    </div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/memory_allocation/allocator_concept.htm">Allocator Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/memory_allocation/tbb_allocator_cls.htm">tbb_allocator Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/memory_allocation/scalable_allocator_cls.htm">scalable_allocator Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/memory_allocation/cache_aligned_allocator_cls.htm">cache_aligned_allocator Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/memory_allocation/zero_allocator.htm">zero_allocator</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/memory_allocation/aligned_space_cls.htm">aligned_space Template Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/aligned_space_cls.htm b/doc/help/reference/memory_allocation/aligned_space_cls.htm
deleted file mode 100755
index 561d0dc..0000000
--- a/doc/help/reference/memory_allocation/aligned_space_cls.htm
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="aligned_space Template Class">
-<meta name="DC.subject" content="allocator, aligned space, template class">
-<meta name="keywords" content="allocator, aligned space, template class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="aligned_space_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>aligned_space Template Class</title>
-</head>
-<body id="aligned_space_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="aligned_space_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">aligned_space Template Class</h1>
- 
-  
-  <div>
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		 
-		<p>Uninitialized memory space for an array of a given
-		  type.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		 
-		<pre>template<typename T, size_t N> class aligned_space;</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		 
-		<pre>#include "tbb/aligned_space.h"</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		 
-		<p>An 
-		  <samp class="codeph">aligned_space</samp> occupies enough memory and is
-		  sufficiently aligned to hold an array 
-		  <samp class="codeph">T[<em>N</em>]</samp>. The client is responsible for
-		  initializing or destroying the objects. An 
-		  <samp class="codeph">aligned_space</samp> is typically used as a local variable or
-		  field in scenarios where a block of fixed-length uninitialized memory is
-		  needed.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>        namespace tbb {
-        template<typename T, size_t N>
-        class aligned_space {
-        public:
-            aligned_space();
-            ~aligned_space();
-            T* begin();
-            T* end();
-        };
-    } </pre>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d91222e89">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d91222e92">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d91222e89 "><span class="keyword">aligned_space()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d91222e92 ">
-					 <p>No effect. Does not invoke constructors.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d91222e89 "><span class="keyword">~aligned_space()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d91222e92 ">
-					 <p>No effect. Does not invoke constructors.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d91222e89 "><span class="keyword">T* begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d91222e92 ">
-					 <p><strong>Returns</strong>: Pointer to beginning of
-						storage.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d91222e89 "><span class="keyword"> T* end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d91222e92 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">begin()+N</samp>
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/allocator_concept.htm b/doc/help/reference/memory_allocation/allocator_concept.htm
deleted file mode 100755
index 1587010..0000000
--- a/doc/help/reference/memory_allocation/allocator_concept.htm
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Allocator Concept">
-<meta name="DC.subject" content="Allocator Concept">
-<meta name="keywords" content="Allocator Concept">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="tbb_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="scalable_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="cache_aligned_allocator_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="zero_allocator.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="allocator_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Allocator Concept</title>
-</head>
-<body id="allocator_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="allocator_concept"><!-- --></a>
-
-
-    <h1 class="topictitle1">Allocator Concept</h1>
-
-    
-<div>
-        <div class="section">
-            <p>The allocator concept for allocators in Intel® Threading Building Blocks is similar to the "Allocator requirements" in Table 32 of the ISO C++ Standard, but with further guarantees required by the ISO C++ Standard for use with ISO C++ containers. The table below summarizes the allocator concept. Here, A and B represent instances of the allocator class.</p>
-
-            
-<div class="tablenoborder"><a name="tbl22"><!-- --></a><table cellpadding="4" summary="" id="tbl22" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Allocator Concept </span></caption>
-                    
-                    
-                    <thead align="left"><tr>
-                        <th class="cellrowborder" valign="top" width="NaN%" id="d91657e35"><p>Pseudo-Signature</p>
-</th>
-
-                        <th class="row-nocellborder" valign="top" width="NaN%" id="d91657e39"><p>Semantics</p>
-</th>
-
-                    </tr>
-
-                    </thead>
-
-                    <tbody>
-                    <tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef T* A::pointer</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Pointer to <em>T</em>.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef const T* A::const_pointer</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Pointer to const <em>T</em>.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef T& A::reference</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Reference to <em>T</em>.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef const T& A::const_reference</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Reference to const <em>T</em>.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef T A::value_type</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Type of value to be allocated.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef size_t A::size_type</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Type for representing number of values.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">typedef ptrdiff_t A::difference_type</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Type for representing pointer difference.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">template<typename U> struct rebind { typedef A<U> A::other;};</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Rebind to a different type U</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">A() throw()</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Default constructor.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">A( const A& ) throw()</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Copy constructor.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">template<typename U> A( const A& )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Rebinding constructor.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">~A() throw()</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Destructor.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">T* A::address( T& x ) const</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Take address.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">const T* A::const_address( const T& x ) const</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Take const address.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">T* A::allocate( size_type n, const void* hint=0 )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Allocate space for <samp class="codeph">n</samp> values.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">void A::deallocate( T* p, size_t  n )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Deallocate <samp class="codeph">n</samp> values.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">size_type A::max_size() const throw()</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Maximum plausible argument to method allocate.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">void A::construct( T* p, const T& value )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p><samp class="codeph">new(p) T(value)</samp></p>
-</td>
-
-                    </tr>
-<tr>
-                            <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 ">
-                                <samp class="codeph">void A::destroy( T* p )</samp>
-                            </td>
-
-                            
-                                <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 ">
-                                    <samp class="codeph">  p->T::~T()
-                                    </samp> </td>
-
-                           
-                        </tr>
-<tr>
-                            <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">bool operator==( const A&, const B& )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Return true.</p>
-</td>
-
-                    </tr>
-<tr>
-                        <td class="cellrowborder" valign="top" width="NaN%" headers="d91657e35 "><samp class="codeph">bool operator!=( const A&, const B& )</samp></td>
-
-                        <td class="row-nocellborder" valign="top" width="NaN%" headers="d91657e39 "><p>Return false.</p>
-</td>
-
-                    </tr>
-</tbody>
-</table>
-</div>
-
-        </div>
-
-        <div class="section"><p><strong>Model Types</strong></p>
-
-            <p>Template classes:<samp class="codeph"> tbb_allocator</samp>,<samp class="codeph">
-                    scalable_allocator</samp>, and <samp class="codeph">cached_aligned_allocator</samp>, and
-                    <samp class="codeph">zero_allocator</samp> model the Allocator concept.</p>
-</div>
-
-    </div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="tbb_allocator_cls.htm">tbb_allocator Template Class</a></div>
-<div><a href="scalable_allocator_cls.htm">scalable_allocator Template Class</a></div>
-<div><a href="cache_aligned_allocator_cls.htm">cache_aligned_allocator Template Class</a></div>
-<div><a href="zero_allocator.htm">zero_allocator Template Class</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/cache_aligned_allocator_cls.htm b/doc/help/reference/memory_allocation/cache_aligned_allocator_cls.htm
deleted file mode 100755
index 4d3e248..0000000
--- a/doc/help/reference/memory_allocation/cache_aligned_allocator_cls.htm
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="cache_aligned_allocator Template Class">
-<meta name="DC.subject" content="allocator, cache aligned allocator">
-<meta name="keywords" content="allocator, cache aligned allocator">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="allocator_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="cache_aligned_allocator_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>cache_aligned_allocator Template Class</title>
-</head>
-<body id="cache_aligned_allocator_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="cache_aligned_allocator_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">cache_aligned_allocator Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for allocating memory in way that
-		  avoids false sharing. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename T> class cache_aligned_allocator;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/cache_aligned_allocator.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">cache_aligned_allocator</samp> allocates memory on cache line
-		  boundaries, in order to avoid false sharing. False sharing is when logically
-		  distinct items occupy the same cache line, which can hurt performance if
-		  multiple threads attempt to access the different items simultaneously. Even
-		  though the items are logically separate, the processor hardware may have to
-		  transfer the cache line between the processors as if they were sharing a
-		  location. The net result can be much more memory traffic than if the logically
-		  distinct items were on different cache lines. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">cache_aligned_allocator</samp> models the Allocator Concept.
-		  It can be used to replace a 
-		  <samp class="codeph">std::allocator</samp>. Used judiciously, 
-		  <samp class="codeph">cache_aligned_allocator</samp> can improve performance by
-		  reducing false sharing. However, it is sometimes an inappropriate replacement,
-		  because the benefit of allocating on a cache line comes at the price that 
-		  <samp class="codeph">cache_aligned_allocator</samp> implicitly adds pad memory.
-		  The padding is typically 128 bytes. Hence allocating many small objects with 
-		  <samp class="codeph">cache_aligned_allocator</samp> may increase memory usage. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>        namespace tbb {
-         
-            template<typename T>
-            class cache_aligned_allocator {
-            public:
-                typedef T* pointer;
-                typedef const T* const_pointer;
-                typedef T& reference;
-                typedef const T& const_reference;
-                typedef T value_type;
-                typedef size_t size_type;
-                typedef ptrdiff_t difference_type;
-                template<typename U> struct rebind {
-                    typedef cache_aligned_allocator<U> other;
-                };
-         
-            #if _WIN64
-                char* _Charalloc( size_type size );
-            #endif /* _WIN64 */
-         
-                cache_aligned_allocator() throw();
-                cache_aligned_allocator( const cache_aligned_allocator& ) throw();
-                template<typename U> 
-                cache_aligned_allocator( const cache_aligned_allocator<U>& ) throw();
-                ~cache_aligned_allocator();
-         
-                pointer address(reference x) const;
-                const_pointer address(const_reference x) const;
-         
-                pointer allocate( size_type n, const void* hint=0 );
-                void deallocate( pointer p, size_type );
-                size_type max_size() const throw();
-         
-                void construct( pointer p, const T& value );
-                void destroy( pointer p );
-            };
-         
-            template<>
-            class cache_aligned_allocator<void> {
-            public:
-                typedef void* pointer;
-                typedef const void* const_pointer;
-                typedef void value_type;
-                template<typename U> struct rebind {
-                    typedef cache_aligned_allocator<U> other;
-                };
-            };
-         
-            template<typename T, typename U>
-            bool operator==( const cache_aligned_allocator<T>&, 
-                             const cache_aligned_allocator<U>& );
-         
-            template<typename T, typename U>
-            bool operator!=( const cache_aligned_allocator<T>&, 
-                             const cache_aligned_allocator<U>& );
-         
-        } </pre> 
-		<p>For sake of brevity, the following table describes
-		  only those methods that differ significantly from the corresponding methods of 
-		  <samp class="codeph">std::allocator</samp>. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d92994e105">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d92994e108">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d92994e105 "><span class="keyword">pointer allocate( size_type n,
-						const void* hint=0 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d92994e108 "> 
-					 <p>Allocates 
-						<em>size</em> bytes of memory on a cache-line boundary. The
-						allocation may include extra hidden padding. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Pointer to the allocated memory. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d92994e105 "><span class="keyword">void deallocate( pointer p,
-						size_type n )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d92994e108 "> 
-					 <p><strong>Requirements</strong>: Pointer 
-						<samp class="codeph"><em>p</em></samp> must be the result of method 
-						<samp class="codeph">allocate(n)</samp>. The memory must not have been
-						already deallocated. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Deallocates memory pointed to by 
-						<samp class="codeph">p</samp>. The deallocation also deallocates any
-						extra hidden padding. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d92994e105 "><span class="keyword">char* _Charalloc( size_type size
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d92994e108 "> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>This method is provided only on 64-bit Windows* OS
-						  platforms. It is a non-ISO method that exists for backwards compatibility with
-						  versions of Window's containers that seem to require it. Please do not use it
-						  directly. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="allocator_concept.htm">Allocator Concept 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/scalable_allocator_cls.htm b/doc/help/reference/memory_allocation/scalable_allocator_cls.htm
deleted file mode 100755
index 8ad0f61..0000000
--- a/doc/help/reference/memory_allocation/scalable_allocator_cls.htm
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="scalable_allocator Template Class">
-<meta name="DC.subject" content="allocator, scalable_allocator">
-<meta name="keywords" content="allocator, scalable_allocator">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm">
-<meta name="DC.Relation" scheme="URI" content="allocator_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="scalable_allocator_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>scalable_allocator Template Class</title>
-</head>
-<body id="scalable_allocator_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="scalable_allocator_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">scalable_allocator Template Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Template class for scalable memory allocation.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>template<typename T> class scalable_allocator;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/scalable_allocator.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">scalable_allocator</samp> allocates and frees memory
-                in a way that scales with the number of processors. A
-                    <samp class="codeph">scalable_allocator</samp> models the Allocator Concept.
-                Using a <samp class="codeph">scalable_allocator</samp> in place of
-                    <samp class="codeph">std::allocator</samp> may improve program performance. Memory
-                allocated by a scalable_allocator should be freed by a
-                    <samp class="codeph">scalable_allocator</samp>, not by a
-                <samp class="codeph">std::allocator</samp>.</p>
-
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3><p>The <samp class="codeph">scalable_allocator</samp> requires that the tbb malloc library be available. If the library is missing, calls to the scalable allocator fail. In contrast, <samp class="codeph">tbb_allocator</samp> falls back on <samp class="codeph">malloc</samp> and free if the tbbmalloc library is missing. </p>
-</div>
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <p>See Allocator concept.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Acknowledgement</h2>
-            <p>The scalable memory allocator incorporates McRT technology developed by Intel's PSL CTG team.</p>
-</div>
-
-    </div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm">C Interface to Scalable Allocator</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="allocator_concept.htm">Allocator Concept 
-		  </a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm b/doc/help/reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm
deleted file mode 100755
index aa3070a..0000000
--- a/doc/help/reference/memory_allocation/scalable_allocator_cls/c_interface_to_scalable_allocator.htm
+++ /dev/null
@@ -1,436 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="C Interface to Scalable Allocator">
-<meta name="DC.subject" content="C Interface to Scalable Allocator">
-<meta name="keywords" content="C Interface to Scalable Allocator">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/memory_allocation/scalable_allocator_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="c_interface_to_scalable_allocator">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>C Interface to Scalable Allocator</title>
-</head>
-<body id="c_interface_to_scalable_allocator">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="c_interface_to_scalable_allocator"><!-- --></a>
-
- 
-  <h1 class="topictitle1">C Interface to Scalable Allocator</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Low level interface for scalable memory allocation.
-		  
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>        extern "C" {
-            // Scalable analogs of C memory allocator
-            void* scalable_malloc( size_t size );
-            void  scalable_free( void* ptr );
-            void* scalable_calloc( size_t nobj, size_t size );
-            void* scalable_realloc( void* ptr, size_t size );
-         
-            // Analog of _msize/malloc_size/malloc_usable_size.
-            size_t scalable_msize( void* ptr );
-         
-            // Scalable analog of posix_memalign
-            int scalable_posix_memalign( void** memptr, size_t alignment, 
-                                         size_t size );
-         
-            // Aligned allocation
-            void* scalable_aligned_malloc( size_t size, 
-                                           size_t alignment);
-            void scalable_aligned_free( void* ptr ); 
-            void* scalable_aligned_realloc( void* ptr, size_t size, 
-                                            size_t alignment );
-
-            // Return values for scalable_allocation_* functions
-            typedef enum {
-                TBBMALLOC_OK,
-                TBBMALLOC_INVALID_PARAM,
-                TBBMALLOC_UNSUPPORTED,
-                TBBMALLOC_NO_MEMORY,
-                TBBMALLOC_NO_EFFECT
-            } ScalableAllocationResult;
-
-            typedef enum {
-                // to turn on/off the use of huge memory pages
-                TBBMALLOC_USE_HUGE_PAGES,
-                // to set a threshold for the allocator memory usage;
-                // exceeding it will forcefully clean internal memory buffers
-                TBBMALLOC_SET_SOFT_HEAP_LIMIT
-            } AllocationModeParam;
-
-            // Set allocator-specific allocation modes.
-            int scalable_allocation_mode(int param, intptr_t value);
-
-            typedef enum {
-                // Clean internal allocator buffers for all threads.
-                TBBMALLOC_CLEAN_ALL_BUFFERS,
-                // Clean internal allocator buffer for current thread only.
-                TBBMALLOC_CLEAN_THREAD_BUFFERS
-            } ScalableAllocationCmd;
-
-            // Call allocator-specific commands.
-            int scalable_allocation_command(int cmd, void *param);
-
-
-        }</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/scalable_allocator.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>These functions provide a C level interface to the
-		  scalable allocator. With the exception of scalable_allocation_mode and
-		  scalable_allocation_command, each routine scalable_<samp class="codeph"><em>x</em></samp>
-		  behaves analogously to library function 
-		  <samp class="codeph"><em>x</em></samp>. The routines form the two families shown in
-		  the table below, "C Interface to Scalable Allocator" . Storage allocated by a
-		  scalable_<samp class="codeph"><em>x</em></samp> function in one family must be freed or
-		  resized by a scalable_<samp class="codeph"><em>x</em></samp> function in the same family,
-		  not by a C standard library function. Likewise storage allocated by a C
-		  standard library function should not be freed or resized by a
-		  scalable_<samp class="codeph"><em>x</em></samp> function. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl23"><!-- --></a><table cellpadding="4" summary="" id="tbl23" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">C Interface to Scalable Allocator</span></caption> 
-		   
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="10.256410256410255%" id="d93669e91"> 
-				  <p>Family 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="30.76923076923077%" id="d93669e97"> 
-				  <p>Allocation Routine 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="33.94871794871795%" id="d93669e103"> 
-				  <p>Deallocation Routine 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="25.025641025641026%" id="d93669e109"> 
-				  <p>Analogous Library 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" rowspan="4" valign="top" width="10.256410256410255%" headers="d93669e91 "> 
-				  <p>1 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_malloc 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" rowspan="4" valign="top" width="33.94871794871795%" headers="d93669e103 "> 
-				  <p>scalable_free 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" rowspan="3" valign="top" width="25.025641025641026%" headers="d93669e109 "> 
-				  <p>C standard library 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="row-nocellborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_calloc 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="row-nocellborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_realloc 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_posix_memalign 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>POSIX* 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" rowspan="2" valign="top" width="10.256410256410255%" headers="d93669e91 "> 
-				  <p>2 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_aligned_malloc 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" rowspan="2" valign="top" width="33.94871794871795%" headers="d93669e103 "> 
-				  <p>scalable_aligned_free 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" rowspan="2" valign="top" width="25.025641025641026%" headers="d93669e109 "> 
-				  <p>Microsoft* C run-time library 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="row-nocellborder" valign="top" width="30.76923076923077%" headers="d93669e97 "> 
-				  <p>scalable_aligned_realloc 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle"> size_t scalable_msize( void* ptr )</h2> 
-		
-		
-		<p><strong>Returns</strong> 
-		</p>
- 
-		<p>The usable size of the memory block pointed to by 
-		  <em>ptr</em> if it was allocated by the scalable allocator. Returns zero
-		  if 
-		  <em>ptr</em> does not point to such a block. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">int scalable_allocation_mode(int mode,
-		  intptr_t value)</h2> 
-		 
-		<p> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">
-                    <p>
-                      This function may be used to adjust behavior of the scalable memory allocator.
-                    </p>
-
-                    <p>
-                      <strong>Returns</strong>: TBBMALLOC_OK if the operation succeeded, TBBMALLOC_INVALID_PARAM if
-                      <samp class="codeph">mode</samp> is not one of the described below, or if <samp class="codeph">value</samp>
-                      is not valid for the given mode. Other return values are possible, as described below.
-                    </p>
-
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d93669e276">Parameter 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d93669e279">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d93669e276 "><span class="keyword">TBBMALLOC_USE_HUGE_PAGES</span>
-					 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d93669e279 "> 
-                                    <p>
-                                      <samp class="codeph">scalable_allocation_mode(TBBMALLOC_USE_HUGE_PAGES, 1)</samp>
-                                      enables the use of huge pages by the allocator if supported for the
-                                      operating system,
-                                      <samp class="codeph">scalable_allocation_mode(TBBMALLOC_USE_HUGE_PAGES, 0)</samp>
-                                      disables it. Setting <samp class="codeph">TBB_MALLOC_USE_HUGE_PAGES</samp>
-                                      environment variable to 1 has the same effect as
-                                      <samp class="codeph">scalable_allocation_mode(TBBMALLOC_USE_HUGE_PAGES, 1)</samp>.
-                                      The mode set with <samp class="codeph">scalable_allocation_mode()</samp> takes
-                                      priority over the environment variable.
-                                    </p>
-
-                                    <p>
-                                      <strong>May return</strong>: TBBMALLOC_NO_EFFECT if huge pages are not supported
-                                      on the platform.
-                                    </p>
-
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d93669e276 "><span class="keyword">TBBMALLOC_SET_SOFT_HEAP_LIMIT</span>
-					 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d93669e279 ">
-                                    <p>
-                                      <samp class="codeph">scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, size)</samp>
-                                      sets a threshold of <samp class="codeph">size</samp> bytes on the amount
-                                      of memory the allocator takes from OS. Exceeding the threshold
-                                      will urge the allocator to release memory from its internal buffers;
-                                      however it does not prevent from requesting more memory if needed.
-                                    </p>
-
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">int scalable_allocation_command(int cmd,
-		  void *reserved)</h2> 
-		 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">
-                    <p>
-                      This function may be used to command the scalable memory allocator to perform an
-                      action specified by the first parameter. The second parameter is reserved and
-                      must be set to 0.
-                    </p>
-
-                    <p>
-                      <strong>Returns</strong>: TBBMALLOC_OK if the operation succeeded, TBBMALLOC_INVALID_PARAM if
-                      <samp class="codeph">cmd</samp> is not one of the described below, or if <samp class="codeph">reserved</samp>
-                      is not equal to 0.
-                    </p>
-
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d93669e377">Parameter 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d93669e380">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d93669e377 "><span class="keyword">TBBMALLOC_CLEAN_ALL_BUFFERS</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d93669e380 "> 
-                                    <p>
-                                      <samp class="codeph">scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS, 0)</samp>
-                                      cleans internal memory buffers of the allocator, and possibly reduces memory
-                                      footprint. It may result in increased time for subsequent memory allocation
-                                      requests. The command is not designed for frequent use, and careful
-                                      evaluation of the performance impact is recommended.
-                                    </p>
-
-                                    <p>
-                                      <strong>May return</strong>: TBBMALLOC_NO_EFFECT if no buffers were released.
-                                    </p>
-
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d93669e377 "><span class="keyword">TBBMALLOC_CLEAN_THREAD_BUFFERS</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d93669e380 "> 
-                                    <p>
-                                      <samp class="codeph">scalable_allocation_command(TBBMALLOC_CLEAN_THREAD_BUFFERS, 0)</samp>
-                                      cleans internal memory buffers but only for the calling thread. It may result
-                                      in increased time for subsequent memory allocation requests; careful evaluation
-                                      of the performance impact is recommended.
-                                    </p>
-
-                                    <p>
-                                      <strong>May return</strong>: TBBMALLOC_NO_EFFECT if no buffers were released.
-                                    </p>
-
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/memory_allocation/scalable_allocator_cls.htm">scalable_allocator Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/tbb_allocator_cls.htm b/doc/help/reference/memory_allocation/tbb_allocator_cls.htm
deleted file mode 100755
index 1b6855e..0000000
--- a/doc/help/reference/memory_allocation/tbb_allocator_cls.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tbb_allocator Template Class">
-<meta name="DC.subject" content="allocator, tbb_allocator">
-<meta name="keywords" content="allocator, tbb_allocator">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tbb_allocator_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>tbb_allocator Template Class</title>
-</head>
-<body id="tbb_allocator_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tbb_allocator_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">tbb_allocator Template Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Template class for scalable memory allocation if available; possibly non-scalable otherwise.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>template<typename T> class tbb_allocator</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/tbb_allocator.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">tbb_allocator</samp> allocates and frees memory via the Intel® Threading Building Blocks (Intel® TBB) malloc library if it is available, otherwise it reverts to using malloc and free.</p>
-
-        <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3><p>Set the environment variable <samp class="codeph">TBB_VERSION</samp> to 1 to find out if the Intel® TBB malloc library is being used. </p>
-</div>
-        <p> </p>
-</div>
-
-    </div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/memory_allocation/zero_allocator.htm b/doc/help/reference/memory_allocation/zero_allocator.htm
deleted file mode 100755
index aa08642..0000000
--- a/doc/help/reference/memory_allocation/zero_allocator.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="zero_allocator">
-<meta name="DC.subject" content="allocator, zero allocator">
-<meta name="keywords" content="allocator, zero allocator">
-<meta name="DC.Relation" scheme="URI" content="../../reference/memory_allocation.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="zero_allocator">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>zero_allocator</title>
-</head>
-<body id="zero_allocator">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="zero_allocator"><!-- --></a>
-
-
-    <h1 class="topictitle1">zero_allocator</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Template class for allocator that returns zeroed memory. </p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-<pre>template <typename T, 
-          template<typename U> class Alloc = tbb_allocator> 
-class zero_allocator: public Alloc<T>;
-</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-<pre>#include "tbb/tbb_allocator.h"</pre>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Description</h2>
-
-        <p>A <samp class="codeph">zero_allocator</samp> allocates zeroed memory. A
-                        <samp class="codeph">zero_allocator<<em>T,A</em>></samp> can be instantiated for any
-                    class<em> A</em> that models the Allocator concept. The default for <em>A</em> is
-                    <samp class="codeph">tbb_allocator</samp>. A <samp class="codeph">zero_allocator</samp> forwards
-                allocation requests to <em>A</em> and zeros the allocation before returning it.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>namespace tbb {
-    template <typename T, template<typename U> class Alloc = tbb_allocator>
-    class zero_allocator : public Alloc<T> {
-    public:
-        typedef Alloc<T> base_allocator_type;
-        typedef typename base_allocator_type::value_type 
-                                              value_type;
-        typedef typename base_allocator_type::pointer pointer;
-        typedef typename base_allocator_type::const_pointer 
-                                              const_pointer;
-        typedef typename base_allocator_type::reference 
- reference;
-        typedef typename base_allocator_type::const_reference 
-                                              const_reference;
-        typedef typename base_allocator_type::size_type 
-                                              size_type;
-        typedef typename base_allocator_type::difference_type 
-                                              difference_type;
-        template<typename U> struct rebind {
-            typedef zero_allocator<U, Alloc> other;
-        };
-
-        zero_allocator() throw() { }
-        zero_allocator(const zero_allocator &a) throw();
-        template<typename U>
-        zero_allocator(const zero_allocator<U> &a) throw(); 
-
-        pointer allocate(const size_type n, const void* hint=0);
-    };
-} 
- </pre>
-        </div>
-</div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/memory_allocation.htm">Memory Allocation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/reference.htm b/doc/help/reference/reference.htm
deleted file mode 100755
index 9863b9b..0000000
--- a/doc/help/reference/reference.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Intel® Threading Building Blocks Reference Manual">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/general_conventions.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/environment.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/containers_overview.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/flow_graph.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/thread_local_storage.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/memory_allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/synchronization.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/timing.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/threads.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/appendices.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="reference">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Intel® Threading Building Blocks Reference Manual</title>
-</head>
-<body class="no-rel-links" id="reference">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="reference"><!-- --></a>
-
- 
-  <h1 class="firsttitle"> 
-	 <br><a name="image_F4CD264A91964937B2F5D11A649804BA"><!-- --></a><img id="image_F4CD264A91964937B2F5D11A649804BA" src="Resources/hpc_header.jpg" height="161" width="300"><br> Intel® Threading Building Blocks Reference Manual</h1>
- 
-  <div> 
-	 <p>Document number: 315415-015US 
-	 </p>
- 
-	 <p><a href="../main/legal_information.htm#legal_information" class="underlined">Legal Information</a> 
-	 </p>
- 
-	 <p><a href="introducing.htm" class="start">Start
-		  Here</a> 
-	 </p>
- 
-  </div>
- 
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization.htm b/doc/help/reference/synchronization.htm
deleted file mode 100755
index 2dc3745..0000000
--- a/doc/help/reference/synchronization.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Synchronization">
-<meta name="DC.subject" content="Synchronization">
-<meta name="keywords" content="Synchronization">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/synchronization/atomic_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/synchronization/ppl_compatibility_synch.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/synchronization/c_11_synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Synchronization">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Synchronization</title>
-</head>
-<body id="Synchronization">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Synchronization"><!-- --></a>
-
-
-    <h1 class="topictitle1">Synchronization</h1>
-
-    
-<div>
-        <div class="section">
-            <p>The library supports mutual exclusion and atomic operations.</p>
-</div>
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/synchronization/mutexes.htm">Mutexes</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/synchronization/atomic_cls.htm">atomic Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/synchronization/ppl_compatibility_synch.htm">PPL Compatibility</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/synchronization/c_11_synchronization.htm">C++11 Synchronization</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/atomic_cls.htm b/doc/help/reference/synchronization/atomic_cls.htm
deleted file mode 100755
index f1adb38..0000000
--- a/doc/help/reference/synchronization/atomic_cls.htm
+++ /dev/null
@@ -1,458 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="atomic Template Class">
-<meta name="DC.subject" content="atomic Template Class">
-<meta name="keywords" content="atomic Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="atomic_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>atomic Template Class</title>
-</head>
-<body id="atomic_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="atomic_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">atomic Template Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for atomic operations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>template<typename T> atomic;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/atomic.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>An 
-		  <samp class="codeph">atomic<T></samp> supports atomic read, write,
-		  fetch-and-add, fetch-and-store, and compare-and-swap. Type T may be an integral
-		  type, enumeration type, or a pointer type. When T is a pointer type, arithmetic
-		  operations are interpreted as pointer arithmetic. For example, if 
-		  <samp class="codeph"><em>x</em></samp> has type 
-		  <samp class="codeph">atomic<float*></samp> and a float occupies four bytes,
-		  then 
-		  <samp class="codeph"><em>++x</em></samp> advances 
-		  <samp class="codeph"><em>x</em></samp> by four bytes. Arithmetic on 
-		  <samp class="codeph">atomic<T></samp> is not allowed if 
-		  <samp class="codeph">T</samp> is an enumeration type, 
-		  <samp class="codeph">void*</samp>, or 
-		  <samp class="codeph">bool</samp>. 
-		</p>
- 
-		<p>Some of the methods have template method variants
-		  that permit more selective memory fencing. On IA-32 and Intel® 64 architecture
-		  processors, they have the same effect as the non-templated variants. On
-		  processors with IA-64 architecture, they may improve performance by allowing
-		  the memory subsystem more latitude on the orders of reads and write. Using them
-		  may improve performance. The table below shows the fencing for the non-template
-		  form. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl29"><!-- --></a><table cellpadding="4" summary="" id="tbl29" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Operation Order Implied by Non-Template
-		  Methods</span></caption> 
-		   
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d95291e103"> 
-				  <p>Kind 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d95291e109"> 
-				  <p>Description 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d95291e115"> 
-				  <p>Default For 
-				  </p>
- 
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e103 "> 
-				  <p>acquire 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e109 "> 
-				  <p>Operations after the atomic operation never
-					 move over it. 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d95291e115 "> 
-				  <p>read 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e103 "> 
-				  <p>release 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e109 "> 
-				  <p>Operations before the atomic operation
-					 never move over it. 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d95291e115 "> 
-				  <p>write 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e103 "> 
-				  <p>sequentially consistent 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d95291e109 "> 
-				  <p>Operations on either side never move over
-					 it and furthermore, the sequentially consistent atomic operations have a global
-					 order. 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d95291e115 "><samp class="codeph"> fetch_and_store,
-					 fetch_and_add, compare_and_swap 
-				  </samp> 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>The copy constructor for class 
-			 <samp class="codeph">atomic<T></samp> is not atomic. To atomically copy
-			 an<samp class="codeph"> atomic<T></samp>, default-construct the copy first and
-			 assign to it. Below is an example that shows the difference. 
-		  </p>
- 
-		</div> 
-		<pre>      
-           atomic<T> y(x);  // Not atomic
-           atomic<T> z;
-           z=x;             // Atomic assignment</pre> 
-		<p>The copy constructor is not atomic because it is
-		  compiler generated. In C++03 introducing any non-trivial constructors might
-		  remove an important property of 
-		  <samp class="codeph">atomic<T></samp>: namespace scope instances are
-		  zero-initialized before namespace scope dynamic initializers run. This property
-		  can be essential for code executing early during program startup. 
-		</p>
- 
-		<p>In C++03, to create an 
-		  <samp class="codeph">atomic<T></samp> with a specific value,
-		  default-construct it first, and afterwards assign a value to it. In C++11 there
-		  is 
-		  <samp class="codeph">constexpr</samp> single argument constructor. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-                enum memory_semantics {
-                    acquire,
-                    release
-                };
-             
-                struct atomic<T> {
-                    typedef T value_type;
-                    
-                    //C++11 specific:
-                    atomic() = default;
-                    constexpr atomic(T arg)
-                    //end of C++11 specific
-             
-                    template<memory_semantics M>
-                    value_type compare_and_swap( value_type new_value, 
-                                                 value_type comparand );
-             
-                    value_type compare_and_swap( value_type new_value, 
-                                                 value_type comparand );
-             
-                    template<memory_semantics M>
-                    value_type fetch_and_store( value_type new_value );
-             
-                    value_type fetch_and_store( value_type new_value );
-             
-                    operator value_type() const;
-             
-                    value_type operator=( value_type new_value );
-                    atomic<T>& operator=( const atomic<T>& value );
-             
-                    // The following members exist only if T is an integral 
-                    // or pointer type.
-             
-                    template<memory_semantics M>
-                    value_type fetch_and_add( value_type addend );
-             
-                    value_type fetch_and_add( value_type addend );
-             
-                    template<memory_semantics M>
-                    value_type fetch_and_increment();
-             
-                    value_type fetch_and_increment();
-             
-                    template<memory_semantics M>
-                    value_type fetch_and_decrement();
-             
-                    value_type fetch_and_decrement();
-             
-                    value_type operator+=(value_type);
-                    value_type operator-=(value_type);
-                    value_type operator++();
-                    value_type operator++(int);
-                    value_type operator--();
-                    value_type operator--(int);
-                };
-            } </pre> 
-		<p>So that an atomic<T*> can be used like a
-		  pointer to T, the specialization atomic<T*> also defines: 
-		</p>
- 
-		<pre>        T* operator->() const;</pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d95291e248">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d95291e251">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">memory_semantics Enum 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Defines values used to select the
-						template variants that permit more selective control over visibility of
-						operations (see the table above). 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">atomic() = default 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>C++11 Specific; 
-					 </p>
- 
-					 <p>Default constructor generated by
-						compiler. This constructor behaves same as if there were no user defined
-						constrcutors declared at all. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">constexpr atomic(value_type arg) 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>C++11 Specific; 
-					 </p>
- 
-					 <p>Initialize 
-						<samp class="codeph">*this</samp> with value of arg. If the argument is
-						a translation time constant, then initialization is performed during
-						translation time, overwise initialization is performed at run time. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">value_type fetch_and_add(
-						value_type addend )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Let 
-						<samp class="codeph"><em>x</em></samp> be the value of 
-						<samp class="codeph">*this</samp>. Atomically updates 
-						<samp class="codeph"><em>x = x +</em></samp> addend. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Original value of 
-						<samp class="codeph"><em>x</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword"> value_type
-						fetch_and_increment()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Let x be the value of 
-						<samp class="codeph">*this</samp>. Atomically updates 
-						<samp class="codeph"><em>x = x + 1</em>. 
-						</samp> 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Original value
-						of<samp class="codeph"><em> x</em>.</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">value_type
-						fetch_and_decrement()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Let 
-						<samp class="codeph"><em>x</em></samp> be the value of *this. Atomically
-						updates 
-						<samp class="codeph"><em>x = x</em> - 1. 
-						</samp> 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Original value
-						of<samp class="codeph"><em> x.</em></samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">value_type
-						compare_and_swap</span> 
-					 <p>value_type compare_and_swap( value_type
-						new_value, value_type comparand ) 
-					 </p>
- 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Let 
-						<em>x</em> be the value of 
-						<samp class="codeph">*this</samp>. Atomically compares 
-						<samp class="codeph"><em>x</em></samp> with comparand, and if they are
-						equal, sets<samp class="codeph"><em> x</em></samp>=new_value. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Original value of 
-						<samp class="codeph">x.</samp> 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d95291e248 "><span class="keyword">value_type fetch_and_store(
-						value_type new_value )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d95291e251 "> 
-					 <p>Let 
-						<samp class="codeph">x</samp> be the value of 
-						<samp class="codeph">*this</samp>. Atomically exchanges old value of 
-						<samp class="codeph"><em>x</em></samp> with new_value. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: Original value of 
-						<samp class="codeph"><em>x</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/synchronization.htm">Synchronization</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/c_11_synchronization.htm b/doc/help/reference/synchronization/c_11_synchronization.htm
deleted file mode 100755
index 969d7fa..0000000
--- a/doc/help/reference/synchronization/c_11_synchronization.htm
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="C++11 Synchronization">
-<meta name="DC.subject" content="C++11 Synchronization">
-<meta name="keywords" content="C++11 Synchronization">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization.htm">
-<meta name="DC.Relation" scheme="URI" content="../general_conventions/namespaces.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="c_11_synchronization">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>C++11 Synchronization</title>
-</head>
-<body id="c_11_synchronization">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="c_11_synchronization"><!-- --></a>
-
-
-    <h1 class="topictitle1">C++11  Synchronization</h1>
-
-    
-<div><div class="section"><p>The Intel® Threading Building Blocks (Intel® TBB) library 
-approximates a portion of C++11 interfaces for condition variables and scoped locking. The approximation is based on the C++11 working draft N3000. The major differences are:</p>
-
-        <ul type="disc">
-            <li><p>The implementation uses the <samp class="codeph">tbb::tick_count</samp> interface instead of the C++11 <chrono> interface. </p>
-</li>
-
-            <li><p>The implementation throws <samp class="codeph">std::runtime_error </samp>instead of a C++11 std::system_error.</p>
-</li>
-
-            <li><p>The implementation omits or approximates features requiring C++11 language support such as <samp class="codeph">constexpr</samp> or <samp class="codeph">explicit</samp> operators.</p>
-</li>
-
-            <li><p>The implementation works in conjunction with tbb::mutex wherever the C++11 specification calls for a <samp class="codeph">std::mutex</samp>. </p>
-</li>
-
-        </ul>
-
-        <p>See the working draft N3000 for a detailed descriptions of the members.</p>
-
-        <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3><p>Implementations may change if the C++11 specification changes. </p>
-</div>
-        <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3><p>When support for <samp class="codeph">std::system_error</samp> becomes available, implementations may throw <samp class="codeph">std::system_error</samp> instead of <samp class="codeph">std::runtime_error</samp>.</p>
-</div>
-        <p>The library defines the C++11 interfaces in namespace std, not namespace tbb, as explained in Section std Namespace.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/compat/condition_variable"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>namespace std {
-        struct defer_lock_t { }; 
-        struct try_to_lock_t { }; 
-        struct adopt_lock_t { }; 
-        const defer_lock_t defer_lock = {};
-        const try_to_lock_t try_to_lock = {};
-        const adopt_lock_t adopt_lock = {};
-     
-        template<typename M>
-        class lock_guard {
-        public:
-            typedef M mutex_type;
-            explicit lock_guard(mutex_type& m);
-            lock_guard(mutex_type& m, adopt_lock_t);
-            ~lock_guard();
-        };
-     
-        template<typename M>
-        class unique_lock: no_copy {
-        public:
-            typedef M mutex_type;
-     
-            unique_lock();
-            explicit unique_lock(mutex_type& m);
-            unique_lock(mutex_type& m, defer_lock_t);
-            unique_lock(mutex_type& m, try_to_lock_t));
-            unique_lock(mutex_type& m, adopt_lock_t);
-            unique_lock(mutex_type& m, const tick_count::interval_t &i);
-            ~unique_lock();
-     
-            void lock();
-     
-            bool try_lock();
-            bool try_lock_for( const tick_count::interval_t &i );
-     
-            void unlock();
-     
-            void swap(unique_lock& u);
-     
-            mutex_type* release();
-     
-            bool owns_lock() const;
-            operator bool() const;
-            mutex_type* mutex() const;
-        };
-     
-        template<typename M>
-        void swap(unique_lock<M>& x, unique_lock<M>& y);
-     
-        enum cv_status {no_timeout, timeout};
-     
-        class condition_variable : no_copy {
-        public:
-            condition_variable();
-            ~condition_variable();
-     
-            void notify_one();
-            void notify_all();
-     
-            void wait(unique_lock<mutex>& lock);
-     
-            template <class Predicate>
-            void wait(unique_lock<mutex>& lock, Predicate pred);
-     
-            cv_status wait_for(unique_lock<mutex>& lock, 
-                               const tick_count::interval_t& i);
-     
-            template<typename Predicate>
-            bool wait_for(unique_lock<mutex>& lock, 
-                          const tick_count::interval_t &i, 
-                          Predicate pred);
-     
-            typedef <em>implementation-defined</em> native_handle_type;
-            native_handle_type native_handle();
-        };
-    } // namespace std
-     </pre></div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/synchronization.htm">Synchronization</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../general_conventions/namespaces.htm">Namespace std</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes.htm b/doc/help/reference/synchronization/mutexes.htm
deleted file mode 100755
index d3c5e83..0000000
--- a/doc/help/reference/synchronization/mutexes.htm
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Mutexes">
-<meta name="DC.subject" content="Mutexes">
-<meta name="keywords" content="Mutexes">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/mutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/hardware_transactional_locking.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/recursive_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/spin_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/speculative_spin_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/queuing_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/readerwritermutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/spin_rw_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/queuing_rw_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/null_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/mutexes/null_rw_mutex_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="mutexes">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Mutexes</title>
-</head>
-<body id="mutexes">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="mutexes"><!-- --></a>
-
-
-    <h1 class="topictitle1">Mutexes</h1>
-
-    
-<div>
-        <div class="section">
-            <p>Mutexes provide MUTual EXclusion of threads from sections of code.</p>
-
-            <p>In general, strive for designs that minimize the use of explicit locking, because it can lead to serial bottlenecks. If explicitly locking is necessary, try to spread it out so that multiple threads usually do not contend to lock the same mutex.</p>
-</div>
- 
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/synchronization.htm">Synchronization</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/mutex_concept.htm">Mutex Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/hardware_transactional_locking.htm">Speculative locking (Transactional Lock Elision)</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/mutex_cls.htm">mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/recursive_mutex_cls.htm">recursive_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/spin_mutex_cls.htm">spin_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/speculative_spin_mutex_cls.htm">speculative_spin_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/queuing_mutex_cls.htm">queuing_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/readerwritermutex_concept.htm">ReaderWriterMutex Concept</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/spin_rw_mutex_cls.htm">spin_rw_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/queuing_rw_mutex_cls.htm">queuing_rw_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/null_mutex_cls.htm">null_mutex Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/mutexes/null_rw_mutex_cls.htm">null_rw_mutex Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/hardware_transactional_locking.htm b/doc/help/reference/synchronization/mutexes/hardware_transactional_locking.htm
deleted file mode 100755
index 79c8e8b..0000000
--- a/doc/help/reference/synchronization/mutexes/hardware_transactional_locking.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Speculative locking (Transactional Lock Elision)">
-<meta name="DC.subject" content="Speculative Locking, Lock Elision">
-<meta name="keywords" content="Speculative Locking, Lock Elision">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="speculative_spin_mutex_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="speculative_spin_rw_mutex_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="hardware_transactional_locking">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Speculative locking (Transactional Lock Elision)</title>
-</head>
-<body id="hardware_transactional_locking">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="hardware_transactional_locking"><!-- --></a>
-
-
-    <h1 class="topictitle1">Speculative locking (Transactional Lock Elision)</h1>
-
-    
-<div>
-    <div class="section">
-            <p>
-                On processors that support hardware transaction memory
-                (such as Intel® Transactional Synchronization Extensions (Intel® TSX))
-                speculative mutexes work by letting multiple threads acquire the same lock, as
-                long as there are no "conflicts" that may generate different results than
-                non-speculative locking.  The exact notion of a "conflict" depends on the hardware,
-                and typically means accessing the same cache line where one of the accesses
-                modifies the cache line.
-            </p>
-
-            <p>
-                On processors that do not support hardware transactional memory, speculative mutexes
-                behave like their non-speculating counterparts, but possibly with worse performance.
-            </p>
-
-            <p>
-                On Intel® processors, speculative mutexes use Intel TSX if available.
-                General guidance for speculative locking on such processors is:
-                <ul type="disc">
-                    <li>The protected critical sections should not conflict at cache-line granularity.</li>
-
-                    <li>The protected critical section should be short enough to not be affected by
-                        an interrupt or context switch.</li>
-
-                    <li> The protected critical section should not perform a system call.</li>
-
-                    <li>The protected critical section should not touch more data than fits in L1 cache.</li>
-
-                    <li>There may be a nesting limit for speculation.</li>
-
-                </ul>
-
-                Careful performance comparison with a non-speculative alternative is recommended.
-            </p>
-
-            <p>
-                For more guidance and examples about using Intel TSX effectively, see the
-                <em>Intel® 64 and IA-32 Architectures Optimization Reference Manual</em>, Chapter 12.
-            </p>
-
-    </div>
-
-        <div class="section"><h2 class="sectiontitle">References</h2>
-             <p>
-                 <a href="http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf" target="_blank">
-                 <em>Intel® 64 and IA-32 Architectures Optimization Reference Manual</em>,
-                 Order Number 248966-027, June 2013
-                 </a>
-                 , Chapter 12.
-             </p>
-
-         </div>
-
-
-</div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutex Concept</a></div>
-<div><a href="speculative_spin_mutex_cls.htm">speculative_spin_mutex</a></div>
-<div><a href="speculative_spin_rw_mutex_cls.htm">speculative_spin_rw_mutex (Community Preview Feature)</a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/mutex_cls.htm b/doc/help/reference/synchronization/mutexes/mutex_cls.htm
deleted file mode 100755
index c8b8770..0000000
--- a/doc/help/reference/synchronization/mutexes/mutex_cls.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="mutex Class">
-<meta name="DC.subject" content="TestMetaData">
-<meta name="keywords" content="TestMetaData">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>mutex Class</title>
-</head>
-<body id="mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">mutex Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Class that models Mutex Concept using underlying OS locks.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class mutex;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/mutex.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">mutex</samp> models the Mutex Concept. It is a wrapper around OS calls that provide mutual exclusion. The advantages of using <samp class="codeph">mutex</samp> instead of the OS calls are:</p>
-
-        <ul type="disc">
-            <li><p>Portable across all operating systems supported by Intel® Threading Building Blocks.</p>
-</li>
-
-            <li><p>Releases the lock if an exception is thrown from the protected region of code.</p>
-</li>
-
-        </ul>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-        <p>See Mutex Concept.</p>
-</div>
-
-        </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutext Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/mutex_concept.htm b/doc/help/reference/synchronization/mutexes/mutex_concept.htm
deleted file mode 100755
index e7d9c24..0000000
--- a/doc/help/reference/synchronization/mutexes/mutex_concept.htm
+++ /dev/null
@@ -1,905 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Mutex Concept">
-<meta name="DC.subject" content="Mutex Concept">
-<meta name="keywords" content="Mutex Concept">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="../c_11_synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="mutex_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Mutex Concept</title>
-</head>
-<body id="mutex_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="mutex_concept"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Mutex Concept</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p>The mutexes and locks here have relatively spartan interfaces that are
-		  designed for high performance. The interfaces enforce the 
-		  <em>scoped locking pattern</em>, which is widely used in C++ libraries
-		  because: 
-		</p>
-
-		<ol class="ol_3"> 
-		  <li>Does not require the programmer to remember to release the lock
-		  </li>
-
-		  <li>Releases the lock if  an exception is thrown out of the mutual
-			 exclusion region protected by the lock 
-		  </li>
- 
-		</ol>
-
-		<p>There are two parts to the pattern: a 
-		  <em>mutex</em> object, for which construction of a 
-		  <em>lock</em> object acquires a lock on the mutex and destruction of the 
-		  <em>lock</em> object releases the lock. Here's an example:
-		</p>
- 
-		<pre>
-{
-    // Construction of myLock acquires lock on myMutex 
-    M::scoped_lock myLock( myMutex );
-    // ... actions to be performed while holding the lock ...
-    // Destruction of myLock releases lock on myMutex
-}
-</pre> 
-		<p>If the actions throw an exception, the lock is automatically released
-		  as the block is exited. 
-		</p>
-
-		<p>The following table shows the requirements for the Mutex concept for a
-		  mutex type M 
-		</p>
-
-		<p>Mutex Concept
-		</p>
-
-	 </div>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all">
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d97337e70"> 
-				  <p><strong>Pseudo-Signature</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e78"> 
-				  <p><strong>Semantics</strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
-
-		  </thead>
-
-		  <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Construct unlocked mutex.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">~M()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Destroy unlocked mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">typename M::scoped_lock</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Corresponding scoped-lock type.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M::scoped_lock()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Construct lock without acquiring mutex.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M::scoped_lock(M&)</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Construct lock and acquire lock on mutex.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M::~scoped_lock()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Release lock (if acquired). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M::scoped_lock::acquire(M&)</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Acquire lock on mutex.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">bool M::scoped_lock::try_acquire(M&)</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Try to acquire lock on mutex. Return true if lock acquired,
-					 false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">M::scoped_lock::release()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>Release lock.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">static const bool M::is_rw_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>True if mutex is reader-writer mutex; false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">static const bool M::is_recursive_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>True if mutex is recursive mutex; false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e70 "> 
-				  <p><samp class="codeph">static const bool M::is_fair_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e78 "> 
-				  <p>True if mutex is fair; false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
-
-	 <div class="section">
-		<p> The following table summarizes the classes that model the Mutex
-		  concept. 
-		</p>
-
-		<p>Mutexes that Model the Mutex Concept
-		</p>
-
-	 </div>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all">
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d97337e322"> 
-				  <p>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e328"> 
-				  <p><strong>Scalable</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e336"> 
-				  <p><strong>Fair</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e344"> 
-				  <p><strong>Reentrant</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e352"> 
-				  <p><strong>Long Wait</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e361"> 
-				  <p><strong>Size</strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
-
-		  </thead>
-
-		  <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>OS dependent
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>OS dependent
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Blocks
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>>=3 words
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">recursive_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>OS dependent
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>OS dependent
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Blocks
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>>=3 words
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">spin_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Yields
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>1 byte
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">speculative_spin_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Yields
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>2 cache lines
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">queuing_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Yields
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>1 word
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">spin_rw_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Yields
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>1 word
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">queuing_rw_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>No
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>Yields
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>1 word
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">null_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>-
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>-
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>empty
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e322 "> 
-				  <p><samp class="codeph">null_rw_mutex</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e328 "> 
-				  <p>-
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e336 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e344 "> 
-				  <p>Yes
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e352 "> 
-				  <p>-
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e361 "> 
-				  <p>empty
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
-
-	 <div class="section">
-		<p>See the Intel® Threading Building Blocks Tutorial for a discussion of
-		  the mutex properties and the rationale for null mutexes.
-		</p>
-
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">C++11 Compatibility</h2>
-		
-		<p>Classes 
-		  <samp class="codeph">mutex, recursive_mutex, spin_mutex,</samp> and 
-		  <samp class="codeph">spin_rw_mutex</samp> support the C++11 interfaces
-		  described in the following table.
-		</p>
-
-		<p>C++11 Methods Available for Some Mutexes.
-		</p>
-
-	 </div>
-
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all">
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d97337e790"> 
-				  <p><strong>Pseudo-Signature</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e798"> 
-				  <p><strong>Semantics</strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
-
-		  </thead>
-
-		  <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e790 "> 
-				  <p><samp class="codeph">void M::lock()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e798 "> 
-				  <p>Acquire lock.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e790 "> 
-				  <p><samp class="codeph">bool M::try_lock()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e798 "> 
-				  <p>Try to acquire lock on mutex. Return true if lock acquired,
-					 false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e790 "> 
-				  <p><samp class="codeph">void M::unlock()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e798 "> 
-				  <p>Release lock.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e790 "> 
-				  <p><samp class="codeph">class lock_guard<M></samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" rowspan="2" valign="top" headers="d97337e798 "> 
-				  <p>See Section C++11 Synchronization
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e790 "> 
-				  <p><samp class="codeph">class unique_lock<M></samp>
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
- 
-	 <div class="section">
-		<p>Classes mutex and recursive mutex also provide the C++11 idiom for
-		  accessing their underlying OS handles, as described in the following table. 
-		</p>
-
-		<p>Native handle interface (M is mutex or recursive_mutex).
-		</p>
-
-	 </div>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all">
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" id="d97337e911"> 
-				  <p><strong>Pseudo-Signature</strong>
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" id="d97337e919"> 
-				  <p><strong>Semantics</strong>
-				  </p>
- 
-				</th>
- 
-			 </tr>
-
-		  </thead>
-
-		  <tbody>
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e911 "> 
-				  <p><samp class="codeph">M::native_handle_type</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e919 "> 
-				  <p>Native handle type.
-				  </p>
- 
-				  <p>For Windows* operating system, LPCRITICAL_SECTION is the
-					 Native handle type.
-				  </p>
- 
-				  <p>For all other operating system, it is (pthread_mutex*).
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" headers="d97337e911 "> 
-				  <p><samp class="codeph">native_handle_type M::native_handle()</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" headers="d97337e919 "> 
-				  <p>Get underlying native handle of mutex M.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
-
-	 <div class="section">
-		<p>As an extension to C++11, class 
-		  <samp class="codeph">spin_rw_mutex</samp> also has methods 
-		  <samp class="codeph">read_lock()</samp> and 
-		  <samp class="codeph">try_read_lock()</samp> for corresponding operations that
-		  acquire reader locks.
-		</p>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../c_11_synchronization.htm">C++11 Synchronization
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/null_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/null_mutex_cls.htm
deleted file mode 100755
index c542345..0000000
--- a/doc/help/reference/synchronization/mutexes/null_mutex_cls.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="null_mutex Class">
-<meta name="DC.subject" content="null_mutex Class">
-<meta name="keywords" content="null_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="null_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>null_mutex Class</title>
-</head>
-<body id="null_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="null_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">null_mutex Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Class that models Mutex Concept buts does nothing.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class null_mutex;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/null_mutex.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">null_mutex</samp> models the Mutex Concept syntactically, but does nothing. It is useful for instantiating a template that expects a Mutex, but no mutual exclusion is actually needed for that instance. </p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-        <p>See Mutex Concept.</p>
-</div>
-
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutext Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/null_rw_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/null_rw_mutex_cls.htm
deleted file mode 100755
index 917b5c2..0000000
--- a/doc/help/reference/synchronization/mutexes/null_rw_mutex_cls.htm
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="null_rw_mutex Class">
-<meta name="DC.subject" content="null_rw_mutex Class">
-<meta name="keywords" content="null_rw_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="readerwritermutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="null_rw_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>null_rw_mutex Class</title>
-</head>
-<body id="null_rw_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="null_rw_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">null_rw_mutex Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Class that models <samp class="codeph">ReaderWriterMutex</samp> Concept but
-                does nothing.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class null_rw_mutex;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/null_rw_mutex.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">null_rw_mutex</samp> models the ReaderWriterMutex Concept syntactically, but does nothing. It is useful for instantiating a template that expects a ReaderWriterMutex, but no mutual exclusion is actually needed for that instance..</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <p>See ReaderWriterMutex concept.</p>
-</div>
-
-          </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="readerwritermutex_concept.htm">ReaderWriterMutex Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/queuing_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/queuing_mutex_cls.htm
deleted file mode 100755
index 15fd0dc..0000000
--- a/doc/help/reference/synchronization/mutexes/queuing_mutex_cls.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="queuing_mutex Class">
-<meta name="DC.subject" content="queuing_mutex Class">
-<meta name="keywords" content="queuing_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="queuing_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>queuing_mutex Class</title>
-</head>
-<body id="queuing_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="queuing_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">queuing_mutex Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Class that models Mutex Concept that is fair and scalable.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class queuing_mutex;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/queuing_mutex.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">queuing_mutex</samp> models the Mutex Concept. A
-                    <samp class="codeph">queuing_mutex</samp> is scalable, in the sense that if a thread has to
-                wait to acquire the mutex, it spins on its own local cache line. A
-                    <samp class="codeph">queuing_mutex</samp> is fair. Threads acquire a lock on a mutex in the
-                order that they request it. A <samp class="codeph">queuing_mutex</samp> is not recursive.</p>
-
-        <p>The current implementation does busy-waiting, so using a <samp class="codeph">queuing_mutex</samp> may degrade system performance if the wait is long. </p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-        <p>See Mutex Concept.</p>
-</div>
-
- </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutext Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/queuing_rw_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/queuing_rw_mutex_cls.htm
deleted file mode 100755
index 26eaba8..0000000
--- a/doc/help/reference/synchronization/mutexes/queuing_rw_mutex_cls.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="queuing_rw_mutex Class">
-<meta name="DC.subject" content="queuing_rw_mutex Class">
-<meta name="keywords" content="queuing_rw_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="readerwritermutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="queuing_rw_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>queuing_rw_mutex Class</title>
-</head>
-<body id="queuing_rw_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="queuing_rw_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">queuing_rw_mutex Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Class that models ReaderWriterMutex Concept that is fair and scalable.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class queuing_rw_mutex;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/queuing_rw_mutex.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">queuing_rw_mutex</samp> models the ReaderWriterMutex Concept. A <samp class="codeph">queuing_rw_mutex</samp> is scalable, in the sense that if a thread has to wait to acquire the mutex, it spins on its own local cache line. A <samp class="codeph">queuing_rw_mutex</samp> is fair. Threads acquire a lock on a <samp class="codeph">queuing_rw_mutex</samp> in the order that they request it. A queuing_rw_mutex is not recursive.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <p>See ReaderWriterMutex concept.</p>
-</div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="readerwritermutex_concept.htm">ReaderWriterMutex Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/readerwritermutex_concept.htm b/doc/help/reference/synchronization/mutexes/readerwritermutex_concept.htm
deleted file mode 100755
index 835269e..0000000
--- a/doc/help/reference/synchronization/mutexes/readerwritermutex_concept.htm
+++ /dev/null
@@ -1,518 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="ReaderWriterMutex Concept">
-<meta name="DC.subject" content="ReaderWriterMutex Concept">
-<meta name="keywords" content="ReaderWriterMutex Concept">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="readerwritermutex_concept">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>ReaderWriterMutex Concept</title>
-</head>
-<body id="readerwritermutex_concept">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="readerwritermutex_concept"><!-- --></a>
-
- 
-  <h1 class="topictitle1">ReaderWriterMutex Concept</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>The ReaderWriterMutex concept extends the Mutex
-		  Concept to include the notion of reader-writer locks. It introduces a boolean
-		  parameter 
-		  <samp class="codeph">write</samp> that specifies whether a writer lock
-		  (<samp class="codeph">write</samp> =true) or reader lock (<samp class="codeph">write</samp> =false)
-		  is being requested. Multiple reader locks can be held simultaneously on a
-		  ReaderWriterMutex if it does not have a writer lock on it. A writer lock on a
-		  ReaderWriterMutex excludes all other threads from holding a lock on the mutex
-		  at the same time. 
-		</p>
- 
-		<p> The following table shows the requirements for a
-		  ReaderWriterMutex 
-		  <samp class="codeph">RW</samp>. They form a superset of the Mutex Concept. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl28"><!-- --></a><table cellpadding="4" summary="" id="tbl28" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">ReaderWriterMutex Concept</span></caption> 
-		   
-		   
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d101181e52"> 
-				  <p>Pseudo-Signature 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d101181e58"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
-
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Construct unlocked mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">~RW()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Destroy unlocked mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">typename RW::scoped_lock</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Corresponding scoped-lock type. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW::scoped_lock()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Construct lock without acquiring mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW::scoped_lock(RW&, bool
-						write=true)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Construct lock and acquire lock on mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW::~scoped_lock()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Release lock (if acquired). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW::scoped_lock::acquire(RW&,bool
-						write=true)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Acquire lock on mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">bool
-						RW::scoped_lock::try_acquire(RW&, bool write=true)</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Try to acquire lock on mutex. Return 
-					 <samp class="codeph">true</samp> if lock acquired, 
-					 <samp class="codeph">false</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">RW::scoped_lock::release()</samp>
-					 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Release lock. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">bool
-						RW::scoped_lock::upgrade_to_writer()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Change reader lock to writer lock. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">bool
-						RW::scoped_lock::downgrade_to_reader()</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>Change writer lock to reader lock. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">static const bool RW::is_rw_mutex =
-						true</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>True. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">static const bool
-						RW::is_recursive_mutex</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>True if mutex is recursive; false
-					 otherwise. For all current reader-writer mutexes, false. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d101181e52 "> 
-				  <p><samp class="codeph">static const bool
-						RW::is_fair_mutex</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d101181e58 "> 
-				  <p>True if mutex is fair; false otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides explain the semantics of the
-		  ReaderWriterMutex concept in detail. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d101181e329">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d101181e332">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">Model Types</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Classes 
-					 <samp class="codeph"><samp class="codeph">spin_rw_mutex</samp></samp> and 
-					 <samp class="codeph"><samp class="codeph">queuing_rw_mutex</samp></samp> model the
-					 ReaderWriterMutex concept. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">ReaderWriterMutex()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Constructs unlocked 
-					 <samp class="codeph">ReaderWriterMutex</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">~ReaderWriterMutex()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Destroys unlocked 
-					 <samp class="codeph">ReaderWriterMutex</samp>. The effect of destroying a
-					 locked 
-					 <samp class="codeph">ReaderWriterMutex</samp> is undefined. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">ReaderWriterMutex::scoped_lock()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Constructs a 
-					 <samp class="codeph">scoped_lock</samp> object that does not hold a lock
-					 on any mutex. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword"> ReaderWriterMutex::scoped_lock(
-					 ReaderWriterMutex& rw, bool write =true)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Constructs a 
-					 <samp class="codeph">scoped_lock</samp> object that acquires a lock on
-					 mutex 
-					 <em>rw</em>. The lock is a writer lock if 
-					 <samp class="codeph"><em>write</em></samp> is true; a reader lock otherwise.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">ReaderWriterMutex::~scoped_lock()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>If the object holds a lock on a 
-					 <samp class="codeph">ReaderWriterMutex</samp>, releases the lock. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">void ReaderWriterMutex::
-					 scoped_lock:: acquire( ReaderWriterMutex& rw,  bool write=true )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Acquires a lock on mutex 
-					 <em>rw</em>. The lock is a writer lock if 
-					 <samp class="codeph"><em>write</em></samp> is true; a reader lock otherwise.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword"> bool ReaderWriterMutex::
-					 scoped_lock::try_acquire( ReaderWriterMutex& rw, bool write=true
-					 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Attempts to acquire a lock on mutex 
-					 <em>rw</em>. The lock is a writer lock if 
-					 <samp class="codeph"><em>write</em></samp> is true; a reader lock otherwise.
-					 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">true</samp> if the lock is acquired, 
-					 <samp class="codeph">false</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword"> void ReaderWriterMutex::
-					 scoped_lock::release()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Releases lock. The effect is undefined if
-					 no lock is held. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">false</samp> if lock was released in favor of another
-					 upgrade request and then reacquired; 
-					 <samp class="codeph">true</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">bool ReaderWriterMutex::
-					 scoped_lock::upgrade_to_writer()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Changes reader lock to a writer lock. The
-					 effect is undefined if the object does not already hold a reader lock. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">false</samp> if lock was released and reacquired; 
-					 <samp class="codeph">true</samp> otherwise. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d101181e329 "><span class="keyword">bool ReaderWriterMutex::
-					 scoped_lock::downgrade_to_reader()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d101181e332 "> 
-				  <p>Changes writer lock to a reader lock. The
-					 effect is undefined if the object does not already hold a writer lock. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">false</samp> if lock was released and reacquired; 
-					 <samp class="codeph">true</samp> otherwise. 
-				  </p>
- 
-				  <p>Intel's current implementations for 
-					 <samp class="codeph">spin_rw_mutex</samp> and 
-					 <samp class="codeph">queuing_rw_mutex</samp> always return 
-					 <samp class="codeph">true</samp>. Different implementations might
-					 sometimes return 
-					 <samp class="codeph">false</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/recursive_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/recursive_mutex_cls.htm
deleted file mode 100755
index eea7ae3..0000000
--- a/doc/help/reference/synchronization/mutexes/recursive_mutex_cls.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="recursive_mutex Class">
-<meta name="DC.subject" content="recursive_mutex Class">
-<meta name="keywords" content="recursive_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="recursive_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>recursive_mutex Class</title>
-</head>
-<body id="recursive_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="recursive_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">recursive_mutex Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            <p>Class that models Mutex Concept using underlying OS locks and permits recursive acquisition.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class recursive_mutex;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/recursive_mutex.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">recursive_mutex</samp> is similar to a mutex, except that a thread may acquire multiple locks on it. The thread must release all locks on a <samp class="codeph">recursive_mutex</samp> before any other thread can acquire a lock on it.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <p>See Mutex Concept.</p>
-</div>
-
-   </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutext Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/speculative_spin_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/speculative_spin_mutex_cls.htm
deleted file mode 100755
index 251fcd9..0000000
--- a/doc/help/reference/synchronization/mutexes/speculative_spin_mutex_cls.htm
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="speculative_spin_mutex Class">
-<meta name="DC.subject" content="speculative_spin_mutex Class">
-<meta name="keywords" content="speculative_spin_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="hardware_transactional_locking.htm">
-<meta name="DC.Relation" scheme="URI" content="spin_mutex_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="speculative_spin_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>speculative_spin_mutex Class</title>
-</head>
-<body id="speculative_spin_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="speculative_spin_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">speculative_spin_mutex Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">speculative_spin_mutex Class</h2>
-            <p>
-                <strong>Summary</strong>
-            </p>
-
-            <p>
-                Class that models Mutex Concept using a spin lock, and for processors which
-                support hardware transactional memory (such as Intel® Transactional
-                Synchronization Extensions (Intel® TSX)) may be implemented in a
-                way that allows non-contending changes to the protected data to proceed
-                in parallel.
-            </p>
-
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class speculative_spin_mutex;</pre>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/spin_mutex.h"</pre>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>
-                A <samp class="codeph">speculative_spin_mutex</samp> models the Mutex Concept.  It is not
-                fair and not recursive.  A <samp class="codeph">speculative_spin_mutex</samp> is like a
-                <samp class="codeph">spin_mutex</samp>, but may provide better throughput than
-                non-speculative mutexes when
-                <ul type="disc">
-                <li>used on a processor that supports hardware transactional memory <em>and</em></li>
-
-                <li>
-                    multiple threads can usually execute the critical section(s) protected by
-                    the mutex concurrently without conflicting.
-                </li>
-
-                </ul>
-
-                Otherwise it performs like a <samp class="codeph">spin_mutex</samp>, possibly with
-                worse throughput.
-            </p>
-
-            <p>
-                Please see the Speculative locking section for more details.
-            </p>
-
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    The <samp class="codeph">speculative_spin_mutex</samp> is padded to ensure each instance appears on
-                    a separate cache line not shared with any other data.  Because of that the size of the
-                    mutex is twice the cache line size.
-                </p>
-
-            </div>
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    For the implementation of <samp class="codeph">speculative_spin_mutex</samp>
-                    in Intel® Threading Building Blocks (Intel® TBB)) version 4.2
-                    running on a 4<sup>th</sup> generation Intel® Core™ processor,
-                    any lock nesting may thwart speculation.
-                </p>
-
-            </div>
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    Depending on the version of Intel TBB and the hardware, other caveats may apply.
-                    Please check the Release Notes for more information.
-                </p>
-
-            </div>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">References</h2>
-             <p>
-                 <a href="http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf" target="_blank">
-                 <em>Intel® 64 and IA-32 Architectures Optimization Reference Manual</em>,
-                 Order Number 248966-027, June 2013
-                 </a>
-                 , Chapter 12.
-             </p>
-
-         </div>
-
-         <div class="section"><h2 class="sectiontitle">Members</h2>
-             <p>See Mutex Concept.</p>
-
-         </div>
-
-
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutex Concept</a></div>
-<div><a href="hardware_transactional_locking.htm">Speculative locking (Transactional Lock Elision)</a></div>
-<div><a href="spin_mutex_cls.htm">spin_mutex</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm
deleted file mode 100755
index 56f65b5..0000000
--- a/doc/help/reference/synchronization/mutexes/speculative_spin_rw_mutex_cls.htm
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="speculative_spin_rw_mutex Class (Community Preview Feature)">
-<meta name="DC.subject" content="speculative_spin_rw_mutex Class">
-<meta name="keywords" content="speculative_spin_rw_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/appendices/community_preview_features.htm">
-<meta name="DC.Relation" scheme="URI" content="readerwritermutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="hardware_transactional_locking.htm">
-<meta name="DC.Relation" scheme="URI" content="spin_rw_mutex_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="speculative_spin_rw_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>speculative_spin_rw_mutex Class (Community Preview Feature)</title>
-</head>
-<body id="speculative_spin_rw_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="speculative_spin_rw_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">speculative_spin_rw_mutex Class (Community Preview Feature)</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">speculative_spin_rw_mutex Class (Community Preview Feature)</h2>
-            <p>
-                <strong>Summary</strong>
-            </p>
-
-            <p>
-                Class that models ReaderWriterMutex Concept, and for processors which
-                support hardware transactional memory (such as Intel® Transactional
-                Synchronization Extensions (Intel® TSX)) may be implemented in a
-                way that allows non-contending changes to the protected data to proceed
-                in parallel.
-            </p>
-
-            <p>
-                The <samp class="codeph">speculative_spin_rw_mutex</samp> is a Community Preview Feature
-                that requires linkage with the Community Preview shared library.
-            </p>
-
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class speculative_spin_rw_mutex;</pre>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>
-#define TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-#include "tbb/spin_rw_mutex.h"
-            </pre>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>
-                A <samp class="codeph">speculative_spin_rw_mutex</samp> models the ReaderWriterMutex Concept.  It is not
-                scalable, fair or recursive.  A <samp class="codeph">speculative_spin_rw_mutex</samp> is like a
-                <samp class="codeph">spin_rw_mutex</samp>, but may provide better throughput than
-                non-speculative mutexes when
-                <ul type="disc">
-                <li>used on a processor that supports hardware transactional memory <em>and</em></li>
-
-                <li>
-                    multiple threads can usually execute the critical section(s) protected by
-                    the mutex concurrently without conflicting.
-                </li>
-
-                </ul>
-
-                Otherwise it performs like a <samp class="codeph">spin_rw_mutex</samp>, possibly with
-                worse throughput.
-            </p>
-
-            <p>
-                Please see the Speculative locking section for more details.
-            </p>
-
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    The <samp class="codeph">speculative_spin_rw_mutex</samp> is padded to ensure each instance appears on
-                    a separate cache line not shared with any other data.  Because of that the size of the
-                    mutex is three times the cache line size.
-                </p>
-
-            </div>
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    For the implementation of <samp class="codeph">speculative_spin_rw_mutex</samp>
-                    in Intel® Threading Building Blocks (Intel® TBB)) version 4.2
-                    running on a 4<sup>th</sup> generation Intel® Core™ processor,
-                    any lock nesting may thwart speculation.
-                </p>
-
-            </div>
-            <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                <p>
-                    Depending on the version of Intel TBB and the hardware, other caveats may apply.
-                    Please check the Release Notes for more information.
-                </p>
-
-            </div>
-        </div>
-
-        <div class="section"><h2 class="sectiontitle">References</h2>
-             <p>
-                 <a href="http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf" target="_blank">
-                 <em>Intel® 64 and IA-32 Architectures Optimization Reference Manual</em>,
-                 Order Number 248966-027, June 2013
-                 </a>
-                 , Chapter 12.
-             </p>
-
-         </div>
-
-         <div class="section"><h2 class="sectiontitle">Members</h2>
-             <p>See ReaderWriterMutex Concept.</p>
-
-         </div>
-
-
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/appendices/community_preview_features.htm">Community Preview Features</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="readerwritermutex_concept.htm">ReaderWriterMutex Concept</a></div>
-<div><a href="hardware_transactional_locking.htm">Speculative locking (Transactional Lock Elision)</a></div>
-<div><a href="spin_rw_mutex_cls.htm">spin_rw_mutex</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/spin_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/spin_mutex_cls.htm
deleted file mode 100755
index 613acec..0000000
--- a/doc/help/reference/synchronization/mutexes/spin_mutex_cls.htm
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="spin_mutex Class">
-<meta name="DC.subject" content="spin_mutex Class">
-<meta name="keywords" content="spin_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="mutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="spin_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>spin_mutex Class</title>
-</head>
-<body id="spin_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="spin_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">spin_mutex Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle"> spin_mutex Class</h2>
-            <p><strong>Summary</strong></p>
-
-            <p>Class that models Mutex Concept using a spin lock.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class spin_mutex;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/spin_mutex.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">spin_mutex</samp> models the Mutex Concept. A <samp class="codeph">spin_mutex</samp> is not scalable, fair, or recursive. It is ideal when the lock is lightly contended and is held for only a few machine instructions. If a thread has to wait to acquire a <samp class="codeph">spin_mutex</samp>, it busy waits, which can degrade system performance if the wait is long. However, if the wait is typically short, a <samp class="codeph">spin_mutex</samp> sign [...]
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <p>See Mutex Concept.</p>
-</div>
-    
-        
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="mutex_concept.htm">Mutext Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/mutexes/spin_rw_mutex_cls.htm b/doc/help/reference/synchronization/mutexes/spin_rw_mutex_cls.htm
deleted file mode 100755
index 028ae8d..0000000
--- a/doc/help/reference/synchronization/mutexes/spin_rw_mutex_cls.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="spin_rw_mutex Class">
-<meta name="DC.subject" content="spin_rw_mutex Class">
-<meta name="keywords" content="spin_rw_mutex Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="readerwritermutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="spin_rw_mutex_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>spin_rw_mutex Class</title>
-</head>
-<body id="spin_rw_mutex_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="spin_rw_mutex_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">spin_rw_mutex Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Class that models ReaderWriterMutex Concept that is unfair and not scalable.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class spin_rw_mutex;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/spin_rw_mutex.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">spin_rw_mutex</samp> models the ReaderWriterMutex Concept. A <samp class="codeph">spin_rw_mutex</samp> is not scalable, fair, or recursive. It is ideal when the lock is lightly contended and is held for only a few machine instructions. If a thread has to wait to acquire a <samp class="codeph">spin_rw_mutex</samp>, it busy waits, which can degrade system performance if the wait is long. However, if the wait is typically short, a <samp class="codeph">spin_ [...]
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-        <p>See ReaderWriterMutex concept.</p>
-</div>
-
-        </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/mutexes.htm">Mutexes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="readerwritermutex_concept.htm">ReaderWriterMutex Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/ppl_compatibility/critical_section.htm b/doc/help/reference/synchronization/ppl_compatibility/critical_section.htm
deleted file mode 100755
index 299db8a..0000000
--- a/doc/help/reference/synchronization/ppl_compatibility/critical_section.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="critical_section">
-<meta name="DC.subject" content="critical_section">
-<meta name="keywords" content="critical_section">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/ppl_compatibility_synch.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="critical_section">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>critical_section</title>
-</head>
-<body id="critical_section">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="critical_section"><!-- --></a>
-
-
-    <h1 class="topictitle1">critical_section</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>A PPL-compatible mutex.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class critical_section;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/critical_section.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A critical_section implements a PPL <samp class="codeph">critical_section</samp>. Its functionality is a subset of the functionality of a <samp class="codeph">tbb::mutex</samp>.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>namespace tbb {
-        class critical_section {
-        public:
-            critical_section();
-            ~critical_section();
-            void lock();
-            bool try_lock();
-            void unlock();
-     
-            class scoped_lock {
-            public:
-                scoped_lock( critical_section& mutex );
-                ~scoped_lock();
-            };
-       };
-    }</pre></div>
-
- 
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/ppl_compatibility_synch.htm">PPL Compatibility</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm b/doc/help/reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm
deleted file mode 100755
index ed58ebb..0000000
--- a/doc/help/reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="reader_writer_lock Class">
-<meta name="DC.subject" content="reader_writer_lock Class">
-<meta name="keywords" content="reader_writer_lock Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/synchronization/ppl_compatibility_synch.htm">
-<meta name="DC.Relation" scheme="URI" content="../mutexes/mutex_concept.htm">
-<meta name="DC.Relation" scheme="URI" content="../mutexes/readerwritermutex_concept.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="reader_writer_lock_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>reader_writer_lock Class</title>
-</head>
-<body id="reader_writer_lock_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="reader_writer_lock_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">reader_writer_lock Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>A PPL-compatible reader-writer mutex that is scalable and gives
-                preference to writers.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-                    
-                    <pre>class reader_writer_lock;</pre>
-                </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-                    <pre>#include "tbb/reader_writer_lock.h"</pre>
-                </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-                    <p>A <samp class="codeph">reader_writer_lock</samp> implements a PPL-compatible
-                        reader-writer mutex. A <samp class="codeph">reader_writer_lock</samp> is scalable and
-                        nonrecursive. The implementation handles lock requests on a first-come first-serve
-                        basis except that writers have preference over readers. Waiting threads busy wait,
-                        which can degrade system performance if the wait is long. However, if the wait is
-                        typically short, a <samp class="codeph">reader_writer_lock</samp> can provide performance
-                        competitive with other mutexes.</p>
-
-                    <p>A<samp class="codeph"> reader_writer_lock</samp> models part of the
-                        ReaderWriterMutex Concept and part of the C++11 compatibility interface. The
-                        major differences are:</p>
-
-                    <ul type="disc">
-                        <li>
-                            <p>The scoped interfaces support only strictly scoped locks.
-                                For example, the method <samp class="codeph">scoped_lock::release()</samp> is not
-                                supported.</p>
-
-                        </li>
-
-                        <li>
-                            <p>Reader locking has a separate interface. For example,
-                                there is separate scoped interface scoped_lock_read for reader locking,
-                                instead of a flag to distinguish the reader cases as in the
-                                ReaderWriterMutex Concept.</p>
-
-                        </li>
-
-                    </ul>
-
-                </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-                    <pre>namespace tbb {
-    class reader_writer_lock {
-    public:
-        reader_writer_lock();
-        ~reader_writer_lock();
-        void lock();
-        void lock_read();
-        bool try_lock();
-        bool try_lock_read();
-        void unlock();
-         class scoped_lock {
-        public:
-            scoped_lock( reader_writer_lock& mutex );
-            ~scoped_lock();
-        };
-        class scoped_lock_read {
-        public:
-            scoped_lock_read( reader_writer_lock& mutex );
-            ~scoped_lock_read();
-        };
-   };}</pre>
-                    <p>The following table summarizes the semantics.</p>
-
-                    
-<div class="tablenoborder"><a name="tbl30"><!-- --></a><table cellpadding="4" summary="" id="tbl30" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">reader_writer_lock Members Summary</span></caption>
-                            
-                            
-                            <thead align="left">
-                                <tr>
-                                    <th class="cellrowborder" valign="top" width="NaN%" id="d104211e109">
-                                        <p>Member</p>
-
-                                    </th>
-
-                                    <th class="row-nocellborder" valign="top" width="NaN%" id="d104211e115">
-                                        <p>Semantics</p>
-
-                                    </th>
-
-                                </tr>
-
-                            </thead>
-
-                            <tbody>
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">reader_writer_lock()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Construct unlocked mutex.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 "><samp class="codeph">
-                                        ~reader_writer_lock()
-                                    </samp></td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Destroy unlocked mutex.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">void
-                                            reader_writer_lock::lock()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Acquire write lock on mutex. </p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">void
-                                            reader_writer_lock::lock_read()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Acquire read lock on mutex.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">bool
-                                            reader_writer_lock::try_lock()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Try to acquire write lock on mutex. Returns
-                                            <em>true</em> if lock acquired, <em>false</em> otherwise.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">bool
-                                            reader_writer_lock::try_lock_read()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Try to acquire read lock on mutex. Returns
-                                            <em>true</em> if lock acquired, <em>false</em> otherwise.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">reader_writer_lock::unlock()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Release lock.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 "><samp class="codeph"> reader_writer_lock::scoped_lock
-                                          (reader_writer_lock& m) </samp></td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Acquire write lock on mutex m.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">reader_writer_lock::~scoped_lock()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Release write lock (if acquired).</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 "><p><samp class="codeph">
-                                        reader_writer_lock::scoped_lock_read
-                                          (reader_writer_lock& m)
-                                    </samp></p>
-</td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Acquire read lock on mutex m.</p>
-
-                                    </td>
-
-                                </tr>
-
-                                <tr>
-                                    <td class="cellrowborder" valign="top" width="NaN%" headers="d104211e109 ">
-                                        <p><samp class="codeph">reader_writer_lock::~scoped_lock_read()</samp></p>
-
-                                    </td>
-
-                                    <td class="row-nocellborder" valign="top" width="NaN%" headers="d104211e115 ">
-                                        <p>Release read lock (if acquired). </p>
-
-                                    </td>
-
-                                </tr>
-
-                            </tbody>
-
-                        </table>
-</div>
-
-                </div>
-
-    </div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/synchronization/ppl_compatibility_synch.htm">PPL Compatibility</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../mutexes/mutex_concept.htm">Mutext Concept</a></div>
-<div><a href="../mutexes/readerwritermutex_concept.htm">ReaderWriterMutex Concept</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/synchronization/ppl_compatibility_synch.htm b/doc/help/reference/synchronization/ppl_compatibility_synch.htm
deleted file mode 100755
index da6c960..0000000
--- a/doc/help/reference/synchronization/ppl_compatibility_synch.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="PPL Compatibility">
-<meta name="DC.subject" content="PPL Compatibility">
-<meta name="keywords" content="PPL Compatibility">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/ppl_compatibility/critical_section.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="ppl_compatibility_synch">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>PPL Compatibility</title>
-</head>
-<body id="ppl_compatibility_synch">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="ppl_compatibility_synch"><!-- --></a>
-
-
-    <h1 class="topictitle1">PPL Compatibility</h1>
-
-    
-<div>
-        <div class="section">
-            <p>Classes <samp class="codeph">critical_section</samp> and <samp class="codeph">reader_writer_lock</samp> exist for compatibility with the Microsoft Parallel Patterns Library (PPL). They do not follow all of the conventions of other mutexes in Intel® Threading Building Blocks.</p>
-</div>
-
-        
-            </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/synchronization.htm">Synchronization</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/synchronization/ppl_compatibility/critical_section.htm">critical_section</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/synchronization/ppl_compatibility/reader_writer_lock_cls.htm">reader_writer_lock Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups.htm b/doc/help/reference/task_groups.htm
deleted file mode 100755
index 7c72042..0000000
--- a/doc/help/reference/task_groups.htm
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Task Groups">
-<meta name="DC.subject" content="Task Groups">
-<meta name="keywords" content="Task Groups">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/task_group_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/task_group_status_enum.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/task_handle_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/make_task_func.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/structured_task_group_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_groups/is_current_task_group_canceling_func.htm">
-<meta name="DC.Relation" scheme="URI" content="task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="taskgroups">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Task Groups</title>
-</head>
-<body id="taskgroups">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="taskgroups"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Task Groups</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p> 
-		</p>
- 
-		<p>This section covers the high-level interface to the
-		  task scheduler. The Task Scheduler section covers the low-level interface. The
-		  high-level interface lets you easily create groups of potentially parallel
-		  tasks from functors or lambda expressions. The low-level interface permits more
-		  detailed control, such as control over exception propagation and affinity.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Summary</h2>
-		 
-		<p>High-level interface for running functions in
-		  parallel.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		
-		<pre>    template<typename Func> task_handle;
-    template<typename Func> task_handle<Func> make_task( const Func& f );
-    enum task_group_status;
-    class task_group;
-    class structured_task_group;
-    bool is_current_task_group_canceling();</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		
-		<pre>        #include "tbb/task_group.h"</pre> 
-		<p><strong>Requirements</strong>
-		</p>
- 
-		<p>Functor arguments for various methods in this
-		  section should meet the requirements in the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl31"><!-- --></a><table cellpadding="4" summary="" id="tbl31" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Requirements on functor arguments</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d105221e75">
-				  <p>Pseudo-Signature
-				  </p>
-
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d105221e81">
-				  <p>Semantics
-				  </p>
-
-				</th>
- 
-			 </tr>
- 
-		  </thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d105221e75 ">
-				  <p><samp class="codeph">Func::Func (const
-						Func&)</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d105221e81 ">
-				  <p>Copy constructor.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d105221e75 ">
-				  <p><samp class="codeph">Func::~Func ()</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d105221e81 ">
-				  <p>Destructor.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d105221e75 ">
-				  <p><samp class="codeph">void Func::operator()()
-						const;</samp>
-				  </p>
-
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d105221e81 ">
-				  <p>Evaluate functor.
-				  </p>
-
-				</td>
- 
-			 </tr>
-
-		  </tbody>
-
-		</table>
-</div>
- 
-	 </div>
-
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/task_groups/task_group_cls.htm">task_group Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_groups/task_group_status_enum.htm">task_group_status Enum</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_groups/task_handle_cls.htm">task_handle Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_groups/make_task_func.htm">make_task Template Function</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_groups/structured_task_group_cls.htm">structured_task_group Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_groups/is_current_task_group_canceling_func.htm">is_current_task_group_canceling Function</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_scheduler.htm">Task Scheduler 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/is_current_task_group_canceling_func.htm b/doc/help/reference/task_groups/is_current_task_group_canceling_func.htm
deleted file mode 100755
index 705aabe..0000000
--- a/doc/help/reference/task_groups/is_current_task_group_canceling_func.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="is_current_task_group_canceling Function">
-<meta name="DC.subject" content="is_current_task_group_canceling Function">
-<meta name="keywords" content="is_current_task_group_canceling Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="is_current_task_group_canceling_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>is_current_task_group_canceling Function</title>
-</head>
-<body id="is_current_task_group_canceling_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="is_current_task_group_canceling_func"><!-- --></a>
-
-
-    <h1 class="topictitle1">is_current_task_group_canceling Function</h1>
-
-    
-<div><div class="section"><p><strong>Returns</strong></p>
-
-        <p>True if innermost task group executing on this thread is cancelling its tasks.</p>
-
-        <p> </p>
-</div>
-
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/make_task_func.htm b/doc/help/reference/task_groups/make_task_func.htm
deleted file mode 100755
index 37e809b..0000000
--- a/doc/help/reference/task_groups/make_task_func.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="make_task Template Function">
-<meta name="DC.subject" content="make_task Template Function">
-<meta name="keywords" content="make_task Template Function">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Relation" scheme="URI" content="task_handle_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="make_task_func">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>make_task Template Function</title>
-</head>
-<body id="make_task_func">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="make_task_func"><!-- --></a>
-
-
-    <h1 class="topictitle1">make_task Template Function</h1>
-
-    
-<div>
-            <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Template function for creating a <samp class="codeph">task_handle</samp> from a function or functor.</p>
-
-          </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>template<typename Func> 
- task_handle<Func> make_task( const Func& f ); </pre><p><strong>Returns</strong></p>
-<samp class="codeph">
-                task_handle<Func>(<em>f</em>)  </samp></div>
-
-</div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_handle_cls.htm">task_handle Template Class</a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/structured_task_group_cls.htm b/doc/help/reference/task_groups/structured_task_group_cls.htm
deleted file mode 100755
index d3a210e..0000000
--- a/doc/help/reference/task_groups/structured_task_group_cls.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="structured_task_group Class">
-<meta name="DC.subject" content="structured_task_group Class">
-<meta name="keywords" content="structured_task_group Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Relation" scheme="URI" content="task_handle_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="task_group_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="structured_task_group_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>structured_task_group Class</title>
-</head>
-<body id="structured_task_group_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="structured_task_group_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">structured_task_group Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>A <samp class="codeph">structured_task_group</samp> is like a <samp class="codeph">task_group</samp>, but has only a subset of the functionality. It may permit performance optimizations in the future. The restrictions are:</p>
-
-        <ul type="disc" class="ul_3">
-            <li class="li_2">Methods <samp class="codeph">run</samp> and <samp class="codeph">run_and_wait</samp> take only <samp class="codeph">task_handle</samp> arguments, not general functors.</li>
-
-            <li class="li_2">Methods <samp class="codeph">run</samp> and
-                        <samp class="codeph">run_and_wait</samp> do not copy their <samp class="codeph">task_handle</samp>
-                    arguments. The caller must not destroy those arguments until after wait
-                        or<samp class="codeph"> run_</samp>and<samp class="codeph">_wait</samp> returns.</li>
-
-            <li class="li_2">Methods <samp class="codeph">run</samp>, <samp class="codeph">run_and_wait</samp>, <samp class="codeph">cancel</samp>, and <samp class="codeph">wait</samp> should be called only by the thread that created the <samp class="codeph">structured_task_group</samp>.</li>
-
-            <li class="li_2">Method <samp class="codeph">wait</samp> (or <samp class="codeph">run_and_wait</samp>) should be called only once on a given instance of <samp class="codeph">structured_task_group</samp>.</li>
-
-        </ul>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Example</h2>
-        <p>The function <samp class="codeph">fork_join</samp> below evaluates <samp class="codeph">f1()</samp> and <samp class="codeph">f2()</samp>, in parallel if resources permit.</p>
-
-<pre>    #include "tbb/task_group.h"
-     
-    using namespace tbb;
-     
-    template<typename Func1, typename Func2>
-    void fork_join( const Func1& f1, const Func2& f2 ) {
-        structured_task_group group;
-     
-        task_handle<Func1> h1(f1);
-        group.run(h1);              // spawn a task
-     
-        task_handle<Func2> h2(f2);
-        group.run(h2);              // spawn another task
-     
-        group.wait();               // wait for both tasks to complete
-        // now safe to destroy h1 and h2
-    }</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre> namespace tbb {
-        class structured_task_group {
-        public:
-            structured_task_group();
-            ~structured_task_group();
-     
-            template<typename Func> 
-            void run( task_handle<Func>& handle );
-     
-            template<typename Func>
-            void run_and_wait( task_handle<Func>& handle );
-     
-            task_group_status wait(); 
-            bool is_canceling();
-            void cancel();
-        };
-    }
-     </pre></div>
-</div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_handle_cls.htm">task_handle Template Class</a></div>
-<div><a href="task_group_cls.htm">task_group Class</a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/task_group_cls.htm b/doc/help/reference/task_groups/task_group_cls.htm
deleted file mode 100755
index e896f94..0000000
--- a/doc/help/reference/task_groups/task_group_cls.htm
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_group Class">
-<meta name="DC.subject" content="task_group Class">
-<meta name="keywords" content="task_group Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups/task_group_cls/task_group_cls_members.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_group_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_group Class</title>
-</head>
-<body id="task_group_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_group_cls"><!-- --></a>
-
-
-           <h1 class="topictitle1">task_group Class</h1>
-
-           
-           <div>
-                      <div class="section"><h2 class="sectiontitle">Description</h2>
-                                 
-                                 <p>A <samp class="codeph">task_group</samp> represents
-                                            concurrent execution of a group of tasks. Tasks may be
-                                            dynamically added to the group as it is executing. </p>
-
-                      </div>
-
-                      <div class="section"><h2 class="sectiontitle">Example with Lambda Expressions</h2>
-                                 
-                                 <pre>#include "tbb/task_group.h"
-     
-    using namespace tbb;
-     
-    int Fib(int n) {
-        if( n<2 ) {
-            return n;
-        } else {
-            int x, y;
-            task_group g;
-            g.run([&]{x=Fib(n-1);}); // spawn a task
-            g.run([&]{y=Fib(n-2);}); // spawn another task
-            g.wait();                // wait for both tasks to complete
-            return x+y;
-        }
-    }</pre>
-                                 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-                                            <p>Creating a large number of tasks
-                                                  for a single task_group is not scalable, because
-                                                  task creation becomes a serial bottleneck. If
-                                                  creating more than a small number of concurrent
-                                                  tasks, consider using
-                                                  <samp class="codeph">parallel_for</samp> or
-                                                  <samp class="codeph">parallel_invoke</samp> instead, or
-                                                  structure the spawning as a recursive tree.</p>
-
-                                 </div>
-                      </div>
-
-                      <div class="section"><h2 class="sectiontitle">Members</h2>
-                                 
-                                 <pre>namespace tbb {
-        class task_group {
-        public:
-            task_group();
-            ~task_group();
-     
-            template<typename Func>
-            void run( const Func& f );
-     
-            template<typename Func> 
-            void run( task_handle<Func>& handle );
-     
-            template<typename Func>
-            void run_and_wait( const Func& f );
-     
-            template<typename Func> 
-            void run_and_wait( task_handle<Func>& handle );
-     
-            task_group_status wait(); 
-            bool is_canceling();
-            void cancel();
-        }
-    }</pre>
-                      </div>
-
-           </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/task_groups/task_group_cls/task_group_cls_members.htm">task_group Class Members</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/task_group_cls/task_group_cls_members.htm b/doc/help/reference/task_groups/task_group_cls/task_group_cls_members.htm
deleted file mode 100755
index 4762ffb..0000000
--- a/doc/help/reference/task_groups/task_group_cls/task_group_cls_members.htm
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_group Class Members">
-<meta name="DC.subject" content="TestMetaData">
-<meta name="keywords" content="TestMetaData">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_groups/task_group_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_group_cls_members">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task_group Class Members</title>
-</head>
-<body id="task_group_cls_members">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_group_cls_members"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_group Class Members</h1>
- 
-  
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d106203e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d106203e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">task_group()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Constructs an empty 
-					 <samp class="codeph">task group</samp>.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">~task_group()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p><strong>Requires</strong>: Method 
-					 <samp class="codeph">wait</samp> must be called before destroying a 
-					 <samp class="codeph">task_group</samp>, otherwise the destructor throws an
-					 exception. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">template<typename Func> void
-					 run( const Func& f )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Spawn a task that computes<samp class="codeph"><em>
-						  f()</em></samp> and return immediately.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">template<typename Func> void
-					 run ( task_handle<Func>& handle );</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Spawn a task that computes 
-					 <samp class="codeph"><em>handle()</em></samp> and return immediately.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">template<typename Func> void
-					 run_and_wait( const Func& f )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Equivalent to 
-					 <samp class="codeph">{run(<em>f</em>); wait();}</samp>, but guarantees
-					 that<samp class="codeph"><em> f</em></samp> runs on the current thread. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-					 <p>Template method 
-						<samp class="codeph">run_and_wait</samp> is intended to be more
-						efficient than separate calls to 
-						<samp class="codeph">run</samp> and 
-						<samp class="codeph">wait</samp>.
-					 </p>
-
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">template<typename Func> void
-					 run _and_wait( task_handle<Func>& handle );</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Equivalent to 
-					 <samp class="codeph">{run(<em>handle</em>); wait();}</samp>, but guarantees
-					 that 
-					 <samp class="codeph"><em>handle()</em></samp> runs on the current thread.
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-					 <p>Template method 
-						<samp class="codeph">run_and_wait</samp> is intended to be more
-						efficient than separate calls to 
-						<samp class="codeph">run</samp> and 
-						<samp class="codeph">wait</samp>.
-					 </p>
-
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">task_group_status wait()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Wait for all tasks in the group to complete
-					 or be cancelled.
-				  </p>
-
-				  <p><strong>Returns</strong>: True if this task group is
-					 cancelling its tasks.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">bool is_canceling()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p><strong>Returns</strong>: True if this task group is
-					 cancelling its tasks.
-				  </p>
- 
-				</td>
- 
-			 </tr>
-
-			 <tr>
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d106203e29 "><span class="keyword">void cancel()</span> 
-				</td>
-
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d106203e32 ">
-				  <p>Cancel all tasks in this 
-					 <samp class="codeph">task_group</samp>.
-				  </p>
-
-				</td>
-
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_groups/task_group_cls.htm">task_group Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/task_group_status_enum.htm b/doc/help/reference/task_groups/task_group_status_enum.htm
deleted file mode 100755
index 5e91b3b..0000000
--- a/doc/help/reference/task_groups/task_group_status_enum.htm
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_group_status Enum">
-<meta name="DC.subject" content="task_group_status Enum">
-<meta name="keywords" content="task_group_status Enum">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_group_status_enum">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_group_status Enum</title>
-</head>
-<body id="task_group_status_enum">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_group_status_enum"><!-- --></a>
-
-
-    <h1 class="topictitle1">task_group_status Enum</h1>
-
-    
-<div>
-        <div class="section">
-            <p>A <samp class="codeph">task_group_status</samp> represents the status of a <samp class="codeph">task_group</samp>.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <pre>namespace tbb {
-                    enum task_group_status {
-                        not_complete, // Not cancelled and not all tasks in group have completed. 
-                        complete,     // Not cancelled and all tasks in group have completed
-                        canceled      // Task group received cancellation request
-     };
- }</pre></div>
-
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_groups/task_handle_cls.htm b/doc/help/reference/task_groups/task_handle_cls.htm
deleted file mode 100755
index 663c477..0000000
--- a/doc/help/reference/task_groups/task_handle_cls.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_handle Template Class">
-<meta name="DC.subject" content="task_handle Template Class">
-<meta name="keywords" content="task_handle Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_groups.htm">
-<meta name="DC.Relation" scheme="URI" content="structured_task_group_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="make_task_func.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_handle_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_handle Template Class</title>
-</head>
-<body id="task_handle_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_handle_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">task_handle Template Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Template class used to wrap a function object in conjunction with class <samp class="codeph">structured_task_group</samp>.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>Class <samp class="codeph">task_handle</samp> is used primarily in conjunction with class <samp class="codeph">structured_task_group</samp>. For sake of uniformity, class <samp class="codeph">task_group</samp> also accepts <samp class="codeph">task_handle</samp> arguments.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            
-            <pre> template<typename Func>
-    class task_handle {
-    public:
-        task_handle( const Func& f );
-        void operator()() const;
-    };</pre>
-        </div>
-
-</div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_groups.htm">Task Groups</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="structured_task_group_cls.htm">class structured_task_group</a></div>
-<div><a href="make_task_func.htm">make_task Function Template</a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler.htm b/doc/help/reference/task_scheduler.htm
deleted file mode 100755
index 5380900..0000000
--- a/doc/help/reference/task_scheduler.htm
+++ /dev/null
@@ -1,182 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Task Scheduler">
-<meta name="DC.subject" content="Task Scheduler">
-<meta name="keywords" content="Task Scheduler">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/scheduling_algorithm.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/explicit_task_destruction.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/recycling_tasks.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/synchronization.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/cancellation.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/priorities.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/affinity.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_debugging.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/empty_task_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_list_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_scheduler_observer.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/catalog_of_recommended_task_patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="algorithms.htm">
-<meta name="DC.Relation" scheme="URI" content="task_groups.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Task Scheduler</title>
-</head>
-<body id="task_scheduler">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Task Scheduler</h1>
- 
-  
-  <div> 
-	 <div class="section"> 
-		<p>Intel® Threading Building Blocks (Intel® TBB)
-		  provides a task scheduler, which is the engine that drives the algorithm
-		  templates and task groups. You may also call it directly. Using tasks is often
-		  simpler and more efficient than using threads, because the task scheduler takes
-		  care of a lot of details. 
-		</p>
- 
-		<p>The tasks are quanta of computation. The scheduler
-		  maps these onto physical threads. The mapping is non-preemptive. Each thread
-		  has a method 
-		  <samp class="codeph">execute(</samp>). Once a thread starts running 
-		  <samp class="codeph">execute()</samp>, the task is bound to that thread until 
-		  <samp class="codeph">execute()</samp> returns. During that time, the thread
-		  services other tasks only when it waits on its predecessor tasks, at which time
-		  it may run the predecessor tasks, or if there are no pending predecessor tasks,
-		  the thread may service tasks created by other threads.
-		</p>
- 
-		<p>The task scheduler is intended for parallelizing
-		  computationally intensive work. Because task objects are not scheduled
-		  preemptively, they should generally avoid making calls that might block for
-		  long periods, because meanwhile that thread is precluded from servicing other
-		  tasks. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		  <p>There is no guarantee that 
-			 <em>potentially</em> parallel tasks 
-			 <em>actually</em> execute in parallel, because the scheduler adjusts
-			 actual parallelism to fit available worker threads. For example, given a single
-			 worker thread, the scheduler creates no actual parallelism. For example, it is
-			 generally unsafe to use tasks in a producer consumer relationship, because
-			 there is no guarantee that the consumer runs at all while the producer is
-			 running.
-		  </p>
-
-		</div> 
-		<p>Potential parallelism is typically generated by a 
-		  <em>split/join</em> pattern. Two basic patterns of split/join are
-		  supported. The most efficient is continuation-passing form, in which the
-		  programmer constructs an explicit "continuation" task. The parent task creates
-		  child tasks and specifies a continuation task to be executed when the children
-		  complete. The continuation inherits the parent's ancestor. The parent task then
-		  exits; it does not block on its children. The children subsequently run, and
-		  after they (or their continuations) finish, the continuation task starts
-		  running. The figure, "Continuation-passing Style," shows the steps. The running
-		  tasks at each step are shaded.
-		</p>
- 
-		<div class="fignone" id="fig4"><a name="fig4"><!-- --></a><span class="figcap">Continuation-passing Style</span>
-		   
-		  <br><img src="Resources/06000005.png"><br>
-		</div>
- 
-		<p>Explicit continuation passing is efficient, because
-		  it decouples the thread's stack from the tasks. However, it is more difficult
-		  to program. A second pattern is "blocking style", which uses implicit
-		  continuations. It is sometimes less efficient in performance, but more
-		  convenient to program. In this pattern, the parent task blocks until its
-		  children complete, as shown in the figure below.
-		</p>
- 
-		<div class="fignone" id="fig5"><a name="fig5"><!-- --></a><span class="figcap">Blocking Style</span>
-		   
-		  <br><img src="Resources/08000006.png"><br>
-		</div>
- 
-		<p>The convenience comes with a price. Because the
-		  parent blocks, its thread's stack cannot be popped yet. The thread must be
-		  careful about what work it takes on, because continually stealing and blocking
-		  could cause the stack to grow without bound. To solve this problem, the
-		  scheduler constrains a blocked thread such that it never executes a task that
-		  is less deep than its deepest blocked task. This constraint may impact
-		  performance because it limits available parallelism, and tends to cause threads
-		  to select smaller (deeper) subtrees than they would otherwise choose.
-		</p>
-
-	 </div>
-
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/task_scheduler/scheduling_algorithm.htm">Scheduling Algorithm</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_cls.htm">task Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_allocation.htm">task Allocation</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/explicit_task_destruction.htm">Explicit task Destruction</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/recycling_tasks.htm">Recycling Tasks</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/synchronization.htm">Synchronization</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_context.htm">task Context</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/cancellation.htm">Cancellation</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/priorities.htm">Priorities</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/affinity.htm">Affinity</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_debugging.htm">task Debugging</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/empty_task_cls.htm">empty_task Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_list_cls.htm">task_list Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_group_context.htm">task_group_context</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/task_scheduler_observer.htm">task_scheduler_observer</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/task_scheduler/catalog_of_recommended_task_patterns.htm">Catalog of Recommended task Patterns</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="algorithms.htm">Algorithms
-		  </a></div>
-<div><a href="task_groups.htm">Task Groups
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/affinity.htm b/doc/help/reference/task_scheduler/affinity.htm
deleted file mode 100755
index 1e3f3a8..0000000
--- a/doc/help/reference/task_scheduler/affinity.htm
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Affinity">
-<meta name="DC.subject" content="Affinity">
-<meta name="keywords" content="Affinity">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="affinity">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Affinity</title>
-</head>
-<body id="affinity">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="affinity"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Affinity</h1>
- 
-  
-  <div> 
-	 <div class="section">
-		<p>These methods enable optimizing for cache affinity. They enable you to
-		  hint that a later task should run on the same thread as another task that was
-		  executed earlier. To do this:
-		</p>
-
-		<ol class="ol_3"> 
-		  <li>In the earlier task, override 
-			 <samp class="codeph">note_affinity(<em>id</em>)</samp> with a definition that
-			 records 
-			 <samp class="codeph"><em>id</em></samp>.
-		  </li>
- 
-		  <li>Before spawning the later task, run 
-			 <samp class="codeph">set_affinity(<em>id</em>)</samp> using the 
-			 <em>id</em> recorded in step 1, 
-		  </li>
- 
-		</ol>
-
-		<p>The 
-		  <em>id</em> is a hint and may be ignored by the scheduler.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d107439e68">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d107439e71">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107439e68 "><span class="keyword">affinity_id</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107439e71 ">
-					 <p>The type 
-						<samp class="codeph">task::affinity_id</samp> is an
-						implementation-defined unsigned integral type. A value of 0 indicates no
-						affinity. Other values represent affinity to a particular thread. Do not assume
-						anything about non-zero values. The mapping of non-zero values to threads is
-						internal to the Intel® Threading Building Blocks (Intel® TBB) library implementation.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107439e68 "><span class="keyword">virtual void note_affinity (
-						affinity_id id )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107439e71 ">
-					 <p>The task scheduler invokes 
-						<samp class="codeph">note_affinity</samp> before invoking 
-						<samp class="codeph">execute()</samp> when:
-					 </p>
-
-					 <ul type="disc" class="ul_1"> 
-						<li class="li_1">The task has no affinity, but will
-						  execute on a thread different than the one that spawned it. 
-						</li>
- 
-					 </ul>
-
-					 <ul type="disc" class="ul_1"> 
-						<li class="li_1">The task has affinity, but will
-						  execute on a thread different than the one specified by the affinity. 
-						</li>
- 
-					 </ul>
-
-					 <p>You can override this method to record the id, so that it
-						can be used as the argument to 
-						<samp class="codeph">set_affinity(id)</samp> for a later task.
-					 </p>
-
-					 <p><strong>Effects</strong>: The default definition has no effect.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107439e68 "><span class="keyword">set_affinity ( affinity_id id ) </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107439e71 ">
-					 <p>Sets affinity of this task to 
-						<em>id</em>. The 
-						<em>id</em> should be either 0 or obtained from 
-						<samp class="codeph">note_affinity</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107439e68 "><span class="keyword">affinity_id affinity()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107439e71 ">
-					 <p><strong>Returns</strong>: Affinity of this task as set by
-						set_affinity.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/cancellation.htm b/doc/help/reference/task_scheduler/cancellation.htm
deleted file mode 100755
index d2bfc41..0000000
--- a/doc/help/reference/task_scheduler/cancellation.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Cancellation">
-<meta name="DC.subject" content="Cancellation">
-<meta name="keywords" content="Cancellation">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="task_group_context.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="cancellation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Cancellation</title>
-</head>
-<body id="cancellation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="cancellation"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Cancellation</h1>
- 
-  
-  <div> 
-	 <div class="section">
-		<p>A 
-		  <em>task</em> is a quantum of work that is cancelled or executes to
-		  completion. A cancelled task skips its method 
-		  <samp class="codeph">execute()</samp> if that method has not yet started.
-		  Otherwise cancellation has no direct effect on the task. A task can poll 
-		  <samp class="codeph">task::is_cancelled()</samp> to see if cancellation was
-		  requested after it started running.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d107917e43">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d107917e46">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107917e43 "><span class="keyword">bool
-						cancel_group_execution()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107917e46 ">
-					 <p>Requests cancellation of all tasks in its group and its
-						subordinate groups. 
-					 </p>
-
-					 <p><strong>Returns</strong>: False if the task's group already received a
-						cancellation request; true otherwise.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d107917e43 "><span class="keyword">bool is_cancelled()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d107917e46 ">
-					 <p><strong>Returns</strong>: True if task's group has received a
-						cancellation request; false otherwise.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_group_context.htm">task_group_context
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/catalog_of_recommended_task_patterns.htm b/doc/help/reference/task_scheduler/catalog_of_recommended_task_patterns.htm
deleted file mode 100755
index 816d648..0000000
--- a/doc/help/reference/task_scheduler/catalog_of_recommended_task_patterns.htm
+++ /dev/null
@@ -1,194 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Catalog of Recommended task Patterns">
-<meta name="DC.subject" content="Catalog of Recommended task Patterns">
-<meta name="keywords" content="Catalog of Recommended task Patterns">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="empty_task_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="catalog_of_recommended_task_patterns">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Catalog of Recommended task Patterns</title>
-</head>
-<body id="catalog_of_recommended_task_patterns">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="catalog_of_recommended_task_patterns"><!-- --></a>
-
-
-    <h1 class="topictitle1">Catalog of Recommended task Patterns</h1>
-
-   
-<div>
-       <div class="section">
-           <p>This section catalogues recommended task patterns. In each pattern, class T is assumed to derive from class <samp class="codeph">task</samp>. Subtasks are labeled t<sub>1</sub>, t<sub>2</sub>, ... t<sub>k</sub>. The subscripts indicate the order in which the subtasks execute if no parallelism is available. If parallelism is available, the subtask execution order is non-deterministic, except that t<sub>1</sub> is guaranteed to be executed by the spawning thread.</p>
-
-           <p>Recursive task patterns are recommended for efficient scalable parallelism, because they allow the task scheduler to unfold potential parallelism to match available parallelism. A recursive task pattern begins by creating a root task t<sub>0</sub> and running it as follows. </p>
-
-           <pre>T& t<sub>0</sub> = *new(allocate_root()) T(...);  
-           task::spawn_root_and_wait(t<sub>0</sub>);</pre>
-           <p>The root task's method <samp class="codeph">execute()</samp> recursively
-                creates more tasks as described in subsequent subsections. </p>
-</div>
-
-       <div class="section"><h2 class="sectiontitle">Blocking Style With <em>k </em>Children</h2>
-               <p>The following shows the recommended style for a recursive task
-                of type <em>T</em> where each level spawns <em>k</em> children.</p>
-
-<pre>           task* T::execute() {
-        if( not recursing any further ) {
-            ...
-        } else {
-            set_ref_count(k+1);
-            task& t<sub>k</sub> = *new(allocate_child()) T(...);  spawn(t<sub>k</sub>);
-            task& t<sub>k-1</sub>= *new(allocate_child()) T(...);  spawn(t<sub>k-1</sub>);
-            ...
-            task& t<sub>1</sub><sub></sub>= *new(allocate_child()) T(...);   
-            spawn_and_wait_for_all(t<sub>1</sub>);
-        }
-        return NULL;
-    }</pre>
-               <p>Child construction and spawning may be reordered if convenient, as long as a task is constructed before it is spawned. </p>
-
-               <p>The key points of the pattern are:</p>
-
-               <ul type="disc">
-                   <li><p>The call to <samp class="codeph">set_ref_count</samp> uses <em>k</em>+1 as its argument. The extra 1 is critical.</p>
-</li>
-
-                   <li><p>Each task is allocated by <samp class="codeph">allocate_child</samp>.</p>
-</li>
-
-                   <li><p>The call <samp class="codeph">spawn_and_wait_for_all</samp> combines spawning and waiting. A more uniform but slightly less efficient alternative is to spawn all tasks with spawn and wait by calling <samp class="codeph">wait_for_all</samp>. </p>
-</li>
-
-               </ul>
-</div>
-
-               <div class="section"><h2 class="sectiontitle">Continuation-Passing Style With <em>k</em> Children</h2>
-                   <p>There are two recommended styles. They differ in whether it is more convenient to recycle the parent as the continuation or as a child. The decision should be based upon whether the continuation or child acts more like the parent.</p>
-
-                   <p>Optionally, as shown in the following examples, the code can return a pointer to one of the children instead of spawning it. Doing so causes the child to execute immediately after the parent returns. This option often improves efficiency because it skips pointless overhead of putting the task into the task pool and taking it back out.</p>
-</div>
-
-               <div class="section"><h2 class="sectiontitle">Recycling Parent as Continuation</h2>
-                   <p>This style is useful when the continuation needs to inherit much of the state of the parent and the child does not need the state. The continuation must have the same type as the parent.</p>
-
-<pre>task* T::execute() {
-        if( not recursing any further ) {
-            ...
-            return NULL;
-        } else {
-            set_ref_count(k);
-            recycle_as_continuation();
-            task& t<sub>k </sub> = *new(allocate_child()) T(...); spawn(t<sub>k</sub>);
-            task& t<sub>k</sub><sub class="sub_1">-</sub><sub>1 </sub>= *new(allocate_child()) T(...); spawn(t<sub>k</sub><sub class="sub_1">-</sub><sub>1</sub>);
-            ...
-            // Return pointer to first child instead of spawning it,
-            // to remove unnecessary overhead.
-            task& t<sub>1</sub> = *new(allocate_child()) T(...);
-            return &t<sub>1</sub>;
-        }
-    }    </pre>              
-                   <p>The key points of the pattern are:</p>
-
-                   <ul type="disc">
-                       <li><p>The call to <samp class="codeph">set_ref_count</samp> uses <em>k</em> as its argument. There is no extra +1 as there is in blocking style discussed in Section Blocking Style With k Children.</p>
-</li>
-
-                       <li><p>Each child task is allocated by <samp class="codeph">allocate_child</samp>.</p>
-</li>
-
-                       <li><p>The continuation is recycled from the parent, and hence gets the parent's state without doing copy operations.</p>
-</li>
-
-                   </ul>
-</div>
-
-               <div class="section"><h2 class="sectiontitle">Recycling Parent as a Child</h2>
-                   <p>This style is useful when the child inherits much of its
-                state from a parent and the continuation does not need the state of the parent. The
-                child must have the same type as the parent. In the example, C is the type of the
-                continuation, and must derive from class <samp class="codeph">task</samp>. If C does nothing
-                except wait for all children to complete, then C can be the class
-                    <samp class="codeph">empty_task</samp>.</p>
-
-<pre>task* T::execute() {
-        if( not recursing any further ) {
-            ...
-            return NULL;
-        } else {
-            // Construct continuation
-            C& c = allocate_continuation();
-            c.set_ref_count(k);
-            // Recycle self as first child
-            task& t<sub>k</sub><sub></sub> = *new(c.allocate_child()) T(...); spawn(t<sub>k</sub>);
-            task& t<sub>k</sub><sub class="sub_1">-</sub><sub>1 </sub>= *new(c.allocate_child()) T(...); spawn(t<sub>k</sub><sub class="sub_1">-</sub><sub>1</sub>);
-            ...
-            task& t<sub>2</sub> = *new(c.allocate_child()) T(...);  spawn(t<sub>2</sub>);
-            // task t<sub>1</sub> is our recycled self.
-            recycle_as_child_of(c);
-            update fields of *this to subproblem to be solved by t<sub>1</sub>
-            return this;
-        }
-    }</pre>
-                   <p>The key points of the pattern are:</p>
-
-                   <ul type="disc">
-                       <li><p>The call to <samp class="codeph">set_ref_count</samp> uses <em>k</em> as its argument. There is no extra 1 as there is in blocking style discussed in Section Blocking Style With k Children .</p>
-</li>
-
-                       <li><p>Each child task except for t<sub>1</sub> is allocated by c.<samp class="codeph">allocate_child</samp>. It is critical to use <samp class="codeph">c.allocate_child</samp>, and not <samp class="codeph">(*this).allocate_child; </samp>otherwise the task graph will be wrong.</p>
-</li>
-
-                       <li><p>Task t<sub>1</sub>is recycled from the parent, and hence gets the parent's state without performing copy operations. Do not forget to update the state to represent a child subproblem; otherwise infinite recursion will occur.</p>
-</li>
-
-                   </ul>
-</div>
-
-       <div class="section"><h2 class="sectiontitle">Letting Main Thread Work While Child Tasks Run</h2>
-           <p>Sometimes it is desirable to have the main thread continue execution while child tasks
-                are running. The following pattern does this by using a dummy
-                    <samp class="codeph">empty_task</samp>.</p>
-
-          <pre>task* dummy = new( task::allocate_root() ) empty_task;
-dummy->set_ref_count(k+1);
-task& t<sub>k</sub> = *new( dummy->allocate_child() ) T;  dummy->spawn(t<sub>k</sub>);
-task& t<sub>k-1</sub> = *new( dummy->allocate_child() ) T;  dummy->spawn(t<sub>k-1</sub>);
-...
-task& t<sub>1</sub> = *new( dummy->allocate_child() ) T;  dummy->spawn(t<sub>1</sub>);
-...do any other work...
-dummy->wait_for_all();
-dummy->destroy(*dummy);</pre>
-          <p> The key points of the pattern are:</p>
-
-           <ol><li>The dummy task is a placeholder and never runs.</li>
-
-               <li>The call to <samp class="codeph">set_ref_count</samp> uses <em>k</em>+1 as its argument. </li>
-
-               <li>The dummy task must be explicitly destroyed.</li>
-</ol>
- 
-       </div>
-
-       
-   </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="empty_task_cls.htm">empty_task Class</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/empty_task_cls.htm b/doc/help/reference/task_scheduler/empty_task_cls.htm
deleted file mode 100755
index 6a839e2..0000000
--- a/doc/help/reference/task_scheduler/empty_task_cls.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="empty_task Class">
-<meta name="DC.subject" content="empty_task Class">
-<meta name="keywords" content="empty_task Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="empty_task_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>empty_task Class</title>
-</head>
-<body id="empty_task_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="empty_task_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">empty_task Class</h1>
-
-    
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-        <p>Subclass of <em>task</em> that represents doing nothing.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-        <pre>class empty_task;</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-        <pre>#include "tbb/task.h"</pre>
-        </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-        <p>An <samp class="codeph">empty_task</samp> is a task that does nothing. It is useful as a continuation of a parent task when the continuation should do nothing except wait for its predecessors to complete.</p>
-
-        </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre> namespace tbb {
-        class empty_task: public task {
-            /*override*/ task* execute() {return NULL;}
-        };  
- } </pre></div>
-
-        </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/explicit_task_destruction.htm b/doc/help/reference/task_scheduler/explicit_task_destruction.htm
deleted file mode 100755
index 6259d43..0000000
--- a/doc/help/reference/task_scheduler/explicit_task_destruction.htm
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Explicit task Destruction">
-<meta name="DC.subject" content="Explicit task Destruction">
-<meta name="keywords" content="Explicit task Destruction">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="explicit_task_destruction">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Explicit task Destruction</title>
-</head>
-<body id="explicit_task_destruction">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="explicit_task_destruction"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Explicit task Destruction</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Usually, a 
-		  <samp class="codeph">task</samp> is automatically destroyed by the scheduler after
-		  its method 
-		  <samp class="codeph">execute</samp> returns. But sometimes 
-		  <samp class="codeph">task</samp> objects are used idiomatically (such as for
-		  reference counting) without ever running  
-		  <samp class="codeph">execute</samp>. Such tasks should be disposed with method 
-		  <samp class="codeph">destroy</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">static void destroy ( task& victim
-		  )</h2> 
-		 
-		<p><strong>Requirements</strong> 
-		</p>
- 
-		<p>The refcount of 
-		  <samp class="codeph">victim</samp> must be zero. This requirement is checked in
-		  the debug version of the library. 
-		</p>
- 
-		<p><strong>Effects</strong> 
-		</p>
- 
-		<p>Calls destructor and deallocates memory for 
-		  <samp class="codeph"><em>victim</em></samp>. If 
-		  <samp class="codeph"><em>victim</em></samp>.<samp class="codeph"><em>parent</em></samp> is not
-		  null, atomically decrements 
-		  <samp class="codeph"><em>victim.parent->refcount</em></samp>. The parent is 
-		  <strong>not</strong> put into the ready pool if its 
-		  <em>refcount</em> becomes zero. The figure below summarizes the state
-		  transition. 
-		</p>
- 
-		<div class="fignone"><span class="figcap">Effect of destroy(victim).</span> 
-		   
-		  <br><img src="../Resources/0600000C.png"><br> 
-		</div>
- 
-		<p> 
-		  <samp class="codeph"><em>refcount</em></samp> adjustment is skipped if parent is
-		  null. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/priorities.htm b/doc/help/reference/task_scheduler/priorities.htm
deleted file mode 100755
index 36df055..0000000
--- a/doc/help/reference/task_scheduler/priorities.htm
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Priorities">
-<meta name="DC.subject" content="Priority">
-<meta name="keywords" content="Priority">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="task_group_context.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="priorities">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Priorities</title>
-</head>
-<body id="priorities">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="priorities"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Priorities</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Priority levels can be assigned to individual tasks or task groups.
-		  The library supports three levels {low, normal, high} and two kinds of
-		  priority: 
-		</p>
- 
-		<p> 
-		<ul type="disc"> 
-		  <li>Static priority for enqueued tasks. 
-		  </li>
- 
-		  <li>Dynamic priority for task groups. 
-		  </li>
- 
-		</ul>
- 
-		</p>
- 
-		<p> The former is specified by an optional argument of the 
-		  <samp class="codeph">task::enqueue()</samp> method, affects a specific task only,
-		  and cannot be changed afterwards. Tasks with higher priority are dequeued
-		  before tasks with lower priorities. The latter affects all the tasks in a group
-		  and can be changed at any time either via the associated 
-		  <samp class="codeph">task_group_context</samp> object or via any task belonging to
-		  the group. The priority-related methods in 
-		  <samp class="codeph">task_group_context</samp> are described in Section
-		  task_group_context. The task scheduler tracks the highest priority of ready
-		  tasks (both enqueued and spawned), and postpones execution of tasks with lower
-		  priority until all higher priority task are executed. By default, all tasks and
-		  task groups are created with normal priority. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p> Priority changes may not come into effect
-			 immediately in all threads. So it is possible that lower priority tasks are
-			 still being executed for some time even in the presence of higher priority
-			 ones. 
-		  </p>
- 
-		</div> 
-		<p>When several user threads (masters) concurrently execute parallel
-		  algorithms, the pool of worker threads is partitioned between them
-		  proportionally to the requested concurrency levels. In the presence of tasks
-		  with different priorities, the pool of worker threads is proportionally divided
-		  among the masters with the highest priority first. Only after fully satisfying
-		  the requests of these higher priority masters, will the remaining threads be
-		  provided to the other masters. 
-		</p>
- 
-		<p>Though masters with lower priority tasks may be left without workers,
-		  the master threads are never stalled themselves. Task priorities also do not
-		  affect and are not affected by OS thread priority settings. 
-		  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-			 <p> Worker thread migration from one master thread
-				to another may not happen immediately. 
-			 </p>
- 
-		  </div> 
-		</p>
- 
-		<p><strong>Related Constants and Methods</strong> 
-		</p>
- 
-		<p> 
-		  <pre>namespace tbb {
-    enum priority_t {
-        priority_normal = implementation-defined,
-        priority_low = implementation-defined,
-        priority_high = implementation-defined
-    };
-
-    class task {
-        // . . .
-        static void enqueue( task&, priority_t );
-        void set_group_priority ( priority_t );
-        priority_t group_priority () const;        
-        // . . .
-    };
-}
-</pre> 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d109329e88">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d109329e91">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109329e88 "><span class="keyword">void enqueue ( task& t,
-						priority_t p ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109329e91 "> 
-					 <p>Enqueues task 
-						<samp class="codeph">t</samp> at the priority level 
-						<samp class="codeph">p</samp>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>The priority of an enqueued task does
-						  not affect priority of the task group, from the scope of which 
-						  <samp class="codeph">task::enqueue()</samp> is invoked. That is, the
-						  group, which the task returned by 
-						  <samp class="codeph">task::self()</samp> method belongs to. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109329e88 "><span class="keyword">void set_group_priority (
-						priority_t )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109329e91 "> 
-					 <p>Changes priority of the task group, which this task belongs
-						to. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109329e88 "><span class="keyword">priority_t group_priority ()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109329e91 "> 
-					 <p><strong>Returns</strong>: Priority of the task group, which this task
-						belongs to. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_group_context.htm">task_group_context 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/recycling_tasks.htm b/doc/help/reference/task_scheduler/recycling_tasks.htm
deleted file mode 100755
index 4c6948d..0000000
--- a/doc/help/reference/task_scheduler/recycling_tasks.htm
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Recycling Tasks">
-<meta name="DC.subject" content="Recycling Tasks">
-<meta name="keywords" content="Recycling Tasks">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="recycling_tasks">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Recycling Tasks</title>
-</head>
-<body id="recycling_tasks">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="recycling_tasks"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Recycling Tasks</h1>
-
-  
-  <div> 
-	 <div class="section"> 
-		<p>It is often more efficient to recycle a task object
-		  rather than reallocate one from scratch. Often the parent can become the
-		  continuation, or one of the predecessors. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		  <p><strong>Overlap rule</strong>: A recycled task 
-			 <em>t</em> must not be put in jeopardy of having 
-			 <samp class="codeph"><em>t</em>.execute()</samp> rerun while the previous
-			 invocation of 
-			 <samp class="codeph"><em>t</em>.execute()</samp> is still running. The debug
-			 version of the library detects some violations of this rule.
-		  </p>
-
-		</div> 
-		<p>For example, 
-		  <samp class="codeph"><em>t</em>.execute()</samp> should never spawn 
-		  <samp class="codeph"><em>t</em></samp> directly after recycling it. Instead, 
-		  <samp class="codeph"><em>t</em>.execute()</samp> should return a pointer to 
-		  <samp class="codeph"><em>t</em></samp>, so that 
-		  <samp class="codeph">t</samp> is spawned after 
-		  <samp class="codeph"><em>t</em>.execute()</samp> completes.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d109721e85">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d109721e88">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109721e85 "><span class="keyword">void
-						recycle_as_continuation()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109721e88 ">
-					 <p><strong>Requirements</strong>: Must be called while
-						method 
-						<samp class="codeph">execute()</samp> is running.
-					 </p>
- 
-					 <p>The 
-						<samp class="codeph"><em>refcount</em></samp> for the recycled task should
-						be set to 
-						<samp class="codeph"><em>n</em></samp>, where 
-						<samp class="codeph"><em>n</em></samp> is the number of predecessors of
-						the continuation task.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>The caller must guarantee that the
-						  task's 
-						  <samp class="codeph"><em>refcount</em></samp> does not become zero until
-						  after method 
-						  <samp class="codeph">execute()</samp> returns, otherwise the overlap
-						  rule is broken. If the guarantee is not possible, use method 
-						  <samp class="codeph">recycle_as_safe_continuation()</samp> instead,
-						  and set the 
-						  <samp class="codeph"><em>refcount</em></samp> to 
-						  <samp class="codeph"><em>n</em>+1</samp>. 
-						</p>
-
-					 </div> 
-					 <p>The race can occur for a task 
-						<samp class="codeph"><em>t</em></samp> when:
-					 </p>
- 
-					 <p><samp class="codeph"><em>t</em>.execute()</samp>
-						recycles 
-						<samp class="codeph"><em>t</em></samp> as a continuation.
-					 </p>
- 
-					 <p>The continuation has predecessors that
-						all complete before 
-						<samp class="codeph"><em>t</em>.execute()</samp> returns.
-					 </p>
- 
-					 <p>Hence the recycled 
-						<samp class="codeph"><em>t 
-						  </em></samp>will be implicitly respawned with the original
-						
-						<samp class="codeph"><em>t</em>.execute()</samp>still running, which
-						breaks the overlap rule.
-					 </p>
- 
-					 <p>Patterns that use 
-						<samp class="codeph">recycle_as_continuation()</samp> typically avoid
-						the race by making 
-						<samp class="codeph"><em>t</em>.execute()</samp> return a pointer to one
-						of the predecessors instead of explicitly spawning that predecessor. The
-						scheduler implicitly spawns that predecessor after 
-						<samp class="codeph"><em>t</em>.execute()</samp> returns, thus
-						guaranteeing that the recycled t does not rerun prematurely.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Causes 
-						<samp class="codeph">this</samp> to not be destroyed when method 
-						<samp class="codeph">execute()</samp> returns.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109721e85 "><span class="keyword">void
-						recycle_as_safe_continuation()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109721e88 ">
-					 <p><strong>Requirements</strong>: Must be called while
-						method 
-						<samp class="codeph">execute()</samp> is running.
-					 </p>
- 
-					 <p>The 
-						<samp class="codeph"><em>refcount</em></samp> for the recycled task should
-						be set to 
-						<samp class="codeph"><em>n</em>+1</samp>, where 
-						<samp class="codeph"><em>n</em></samp> is the number of predecessors of
-						the continuation task. The additional 
-						<samp class="codeph">+1</samp> represents the task to be recycled.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Causes 
-						<samp class="codeph">this</samp> to not be destroyed when method 
-						<samp class="codeph">execute()</samp> returns. 
-					 </p>
- 
-					 <p>This method avoids the race discussed for
-						recycle_as_continuation because the additional +1 in the 
-						<samp class="codeph"><em>refcount</em></samp> prevents the continuation
-						from executing until the original invocation of 
-						<samp class="codeph">execute() 
-						</samp>completes.
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d109721e85 "><span class="keyword">void recycle_as_child_of(
-						task& new_successor )</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d109721e88 ">
-					 <p><strong>Requirements</strong>: Must be called while
-						method 
-						<samp class="codeph">execute()</samp> is running.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Causes 
-						<samp class="codeph">this</samp> to become a predecessor of 
-						<samp class="codeph"><em>new_successor</em></samp>, and not be destroyed
-						when method 
-						<samp class="codeph">execute()</samp> returns.
-					 </p>
-
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/scheduling_algorithm.htm b/doc/help/reference/task_scheduler/scheduling_algorithm.htm
deleted file mode 100755
index dd006b0..0000000
--- a/doc/help/reference/task_scheduler/scheduling_algorithm.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Scheduling Algorithm">
-<meta name="DC.subject" content="Scheduling Algorithm">
-<meta name="keywords" content="Scheduling Algorithm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="scheduling_algorithm">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Scheduling Algorithm</title>
-</head>
-<body id="scheduling_algorithm">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="scheduling_algorithm"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Scheduling Algorithm</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>The scheduler employs a technique known as 
-		  <em>work stealing</em>. Each thread keeps a "ready pool" of tasks that
-		  are ready to run. The ready pool is structured as a deque (double-ended queue)
-		  of task objects that were 
-		  <em>spawned</em>. Additionally, there is a shared queue of 
-		  <samp class="codeph">task</samp> objects that were 
-		  <em>enqueued</em>. The distinction between spawning a task and enqueuing
-		  a task affects when the scheduler runs the task. 
-		</p>
- 
-		<p>After completing a task 
-		  <samp class="codeph"><em>t</em></samp>, a thread chooses its next task according to
-		  the first applicable rule below: 
-		</p>
- 
-		<ol class="ol_3"> 
-		  <li>The task returned by 
-			 <samp class="codeph"><em>t</em>.execute()</samp> 
-		  </li>
- 
-		  <li>The successor of 
-			 <samp class="codeph"><em>t</em></samp> if 
-			 <samp class="codeph"><em>t</em></samp> was its last completed predecessor. 
-		  </li>
- 
-		  <li>A task popped from the end of the thread’s own deque. 
-		  </li>
- 
-		  <li>A task with affinity for the thread. 
-		  </li>
- 
-		  <li>A task popped from approximately the beginning of the shared queue.
-			 
-		  </li>
- 
-		  <li>A task popped from the beginning of another randomly chosen
-			 thread’s deque. 
-		  </li>
- 
-		</ol>
- 
-		<p>When a thread 
-		  <samp class="codeph"><em>spawns</em></samp> a task, it pushes it onto the end of its
-		  own deque. Hence rule (3) above gets the task most recently spawned by the
-		  thread, whereas rule (6) gets the least recently spawned task of another
-		  thread. 
-		</p>
- 
-		<p>When a thread 
-		  <em>enqueues</em> a task, it pushes it onto the end of the shared queue.
-		  Hence rule (5) gets one of the less recently enqueued tasks, and has no
-		  preference for tasks that are enqueued. This is in contrast to spawned tasks,
-		  where by rule (3) a thread prefers its own most recently spawned task. 
-		</p>
- 
-		<p>Note the “approximately” in rule (5). For scalability reasons, the
-		  shared queue does 
-		  <strong>not</strong> guarantee precise first-in first-out behavior. If strict
-		  first-in first-out behavior is desired, put the real work in a separate queue,
-		  and create tasks that pull work from that queue. The Non-Preemptive Priorities
-		  section in the User Guide section explains the technique. 
-		</p>
- 
-		<p>It is important to understand the implications of spawning versus
-		  enqueuing for nested parallelism. 
-		</p>
- 
-		<ul type="disc" class="ul_1"> 
-		  <li class="li_1">Spawned tasks emphasize locality. Enqueued tasks
-			 emphasize fairness. 
-		  </li>
- 
-		</ul>
- 
-		<ul type="disc" class="ul_1"> 
-		  <li class="li_1">For nested parallelism, spawned tasks tend
-			 towards depth-first execution, whereas enqueued tasks cause breadth-first
-			 execution. Because the space demands of breadth-first execution can be
-			 exponentially higher than depth-first execution, enqueued tasks should be used
-			 with care. 
-		  </li>
- 
-		</ul>
- 
-		<ul type="disc" class="ul_1"> 
-		  <li class="li_1">A spawned task might never be executed until a
-			 thread explicitly waits on the task to complete. An enqueued tasks will
-			 eventually run if all previously enqueued tasks complete. In the case where
-			 there would ordinarily be no other worker thread to execute an enqueued task,
-			 the scheduler creates an extra worker. 
-		  </li>
- 
-		</ul>
- 
-		<p>In general, use spawned tasks unless there is a clear reason to use an
-		  enqueued task. Spawned tasks yield the best balance between locality of
-		  reference, space efficiency, and parallelism. The algorithm for spawned tasks
-		  is similar to the work-stealing algorithm used by Cilk (Blumofe 1995). The
-		  notion of work-stealing dates back to the 1980s (Burton 1981). The thread
-		  affinity support is more recent (Acar 2000). 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div>
-<br clear="all">
-<div class="linklist">
-<div><a href="../../tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">Non-Preemptive Priorities
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/synchronization.htm b/doc/help/reference/task_scheduler/synchronization.htm
deleted file mode 100755
index 974befe..0000000
--- a/doc/help/reference/task_scheduler/synchronization.htm
+++ /dev/null
@@ -1,467 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Synchronization">
-<meta name="DC.subject" content="Synchronization">
-<meta name="keywords" content="Synchronization">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="scheduling_algorithm.htm">
-<meta name="DC.Relation" scheme="URI" content="task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="task_cls/task_derivation.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="synchronization">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Synchronization</title>
-</head>
-<body id="synchronization">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="synchronization"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Synchronization</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Spawning a task 
-		  <em>t</em> either causes the calling thread to invoke 
-		  <em>t</em>.<samp class="codeph">execute()</samp>, or causes<samp class="codeph"><em>
-				t</em></samp> to be put into the ready pool. Any thread participating in task
-		  scheduling may then acquire the task and invoke 
-		  <em>t</em>.<samp class="codeph">execute()</samp>. Section Scheduling Algorithm
-		  describes the structure of the ready pool. 
-		</p>
- 
-		<p>The calls that spawn come in two forms: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Spawn a single 
-				<samp class="codeph">task</samp>. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Spawn multiple 
-				<samp class="codeph">task</samp> objects specified by a 
-				<samp class="codeph">task_list</samp> and clear 
-				<samp class="codeph">task_list</samp>. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Some calls distinguish between spawning root tasks
-		  and non-root tasks. A root task is one that was created using method 
-		  <samp class="codeph">allocate_root</samp>. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>A 
-			 <samp class="codeph">task</samp> should not spawn any predecessor task until it
-			 has called method 
-			 <samp class="codeph">set_ref_count</samp> to indicate both the number of
-			 predecessors and whether it intends to use one of the "wait_for_all" methods. 
-		  </p>
- 
-		</div> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d110779e108">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d110779e111">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">void set_ref_count( int count
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p><strong>Requirements</strong>: count>=0. If the
-						intent is to subsequently spawn 
-						<em>n</em> predecessors and wait, then 
-						<em>count</em> should be 
-						<em>n</em>+1. Otherwise count should be 
-						<em>n</em>. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Sets the 
-						<em>refcount</em> attribute to 
-						<samp class="codeph"><em>count</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">void
-						increment_ref_count();</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>Atomically increments 
-						<em>refcount</em> attribute. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">int
-						decrement_ref_count();</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>Atomically decrements 
-						<em>refcount</em> attribute. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: New value of refcount
-						attribute. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>Explicit use of 
-						  <samp class="codeph">increment_ref_count</samp> and 
-						  <samp class="codeph">decrement_ref_count</samp> is typically necessary
-						  only when a task has more than one immediate successor task. Section "General
-						  Acyclic Graphs of Tasks" of the Tutorial explains more. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">void wait_for_all()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p><strong>Requirements</strong>: 
-						<samp class="codeph"><em>refcount</em>=<em>n</em>+1</samp>, where 
-						<em>n</em> is the number of predecessors that are still
-						running. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Executes tasks in ready
-						pool until 
-						<em>refcount</em> is 1. Afterwards, leaves 
-						<em>refcount</em>=1 if the task's 
-						<samp class="codeph">task_group_context</samp> specifies 
-						<samp class="codeph">concurrent_wait</samp>, otherwise sets refcount to
-						0. The figure below summarizes the state transitions. 
-					 </p>
- 
-					 <p>Also, 
-						<samp class="codeph">wait_for_all()</samp>automatically resets the
-						cancellation state of the 
-						<samp class="codeph">task_group_context</samp> implicitly associated
-						with the task , when all of the following conditions hold: 
-					 </p>
- 
-					 <ul type="disc"> 
-						<li> 
-						  <p>The task was allocated without
-							 specifying a context. 
-						  </p>
- 
-						</li>
- 
-						<li> 
-						  <p>The calling thread is a user-created
-							 thread, not an Intel® Threading Building Blocks (Intel® TBB) worker thread. 
-						  </p>
- 
-						</li>
- 
-						<li> 
-						  <p>It is the outermost call to 
-							 <samp class="codeph">wait_for_all()</samp> by the thread. 
-						  </p>
- 
-						</li>
- 
-					 </ul>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-						<p>Under such conditions there is no way to know afterwards
-						  if the 
-						  <samp class="codeph">task_group_context</samp> was cancelled. Use an
-						  explicit 
-						  <samp class="codeph">task_group_context</samp> if you need to know. 
-						</p>
- 
-					 </div> 
-					 <div class="fignone"><span class="figcap">Effect of wait_for_all</span> 
-						 
-						<br><img src="../Resources/0600000D.png"><br> 
-					 </div>
-
-					 <p>k=0 by default
-					 </p>
-
-					 <p>k= 1 if corresponding 
-						<samp class="codeph">task_group_context</samp> specifies 
-						<samp class="codeph">concurrent_wait</samp>
-					 </p>
-
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">static void spawn( task& t
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>Puts task 
-						<em>t</em> into the ready pool and immediately returns. 
-					 </p>
- 
-					 <p>If the 
-						<em>successor</em> of 
-						<samp class="codeph">t</samp> is not null, then 
-						<samp class="codeph">set_ref_count</samp> must be called on that 
-						<em>successor</em> before spawning any child tasks, because
-						once the child tasks commence, their completion will cause 
-						<em>successor</em>.<em>refcount</em> to be decremented
-						asynchronously. The debug version of the library often detects when a required
-						call to 
-						<samp class="codeph">set_ref_count</samp> is not made, or is made too
-						late. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">static void spawn ( task_list&
-						list )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>Equivalent to executing spawn on each
-						task in 
-						<em>list</em> and clearing 
-						<em>list</em>, but may be more efficient. If 
-						<em>list</em> is empty, there is no effect. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-						<p>Spawning a long linear list of tasks
-						  can introduce a bottleneck, because tasks are stolen individually. Instead,
-						  consider using a recursive pattern or a parallel loop template to create many
-						  pieces of independent work. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">void spawn_and_wait_for_all(
-						task& t )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p><strong>Requirements</strong>: Any other
-						predecessors of 
-						<samp class="codeph">this</samp> must already be spawned. The 
-						<samp class="codeph">task</samp> 
-						<em>t</em> must have a non-null attribute 
-						<em>successor</em>. There must be a chain of 
-						<em>successor</em> links from 
-						<em>t</em> to the calling 
-						<samp class="codeph">task</samp>. Typically, this chain contains a
-						single link. That is, 
-						<em>t</em> is typically an immediate predecessor of 
-						<samp class="codeph">this</samp>. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Similar to 
-						<samp class="codeph">{spawn(<em>t</em>); wait_for_all();}</samp>, but
-						often more efficient. Furthermore, it guarantees that 
-						<em>task</em> is executed by the current thread. This
-						constraint can sometimes simplify synchronization. The figure below illustrates
-						the state transitions. It is similar to the figure above, with task 
-						<em>t</em> being the 
-						<em>n</em>th task. 
-					 </p>
- 
-					 <div class="fignone" id="fig13"><a name="fig13"><!-- --></a><span class="figcap">Effect of
-						  spawn_and_wait_for_all</span> 
-						 
-						<br><img src="../Resources/0600000E.png"><br> 
-					 </div>
-
-					 <p>k=0 by default
-					 </p>
-
-					 <p>k= 1 if corresponding 
-						<samp class="codeph">task_group_context</samp> specifies 
-						<samp class="codeph">concurrent_wait</samp>
-					 </p>
-
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">void spawn_and_wait_for_all(
-						task_list& list )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>Similar to 
-						<samp class="codeph">{spawn(<em>list</em>); wait_for_all();}</samp>, but
-						often more efficient. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">static void spawn_root_and_wait(
-						task& root )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p><strong>Requirements</strong>: The memory for task 
-						<em>root</em> was allocated by 
-						<samp class="codeph">task::allocate_root()</samp>. 
-					 </p>
- 
-					 <p><strong>Effects</strong>: Sets 
-						<em>parent</em> attribute of 
-						<em>root</em> to an undefined value and execute root as
-						described in Section Processing of execute(). Destroys 
-						<em>root</em> afterwards unless 
-						<em>root</em> was recycled. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">static void spawn_root_and_wait(
-						task_list& root_list )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p><strong>Requirements</strong>: Each 
-						<samp class="codeph">task</samp> object 
-						<em>t</em> in 
-						<em>root_list</em> must meet the requirements in static void
-						spawn_root_and_wait( task& root ). 
-					 </p>
- 
-					 <p><strong>Effects</strong>: For each 
-						<samp class="codeph">task</samp> object 
-						<em>t</em> in root_list, performs 
-						<samp class="codeph">spawn_root_and_wait(<em>t</em>)</samp>, possibly in
-						parallel. Section static void spawn_root_and_wait( task& root ) describes
-						the actions of 
-						<samp class="codeph">spawn_root_and_wait(<em>t</em>)</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d110779e108 "><span class="keyword">static void enqueue ( task&
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d110779e111 "> 
-					 <p>The task is scheduled for eventual
-						execution by a worker thread even if no thread ever explicitly waits for the
-						task to complete. If the total number of worker threads is zero, a special
-						additional worker thread is created to execute enqueued tasks. 
-					 </p>
- 
-					 <p>Enqueued tasks are processed in roughly,
-						but not precisely, first-come first-serve order. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>Using enqueued tasks for recursive
-						  parallelism can cause high memory usage, because the recursion will expand in a
-						  breadth-first manner. Use ordinary spawning for recursive parallelism. 
-						</p>
- 
-					 </div> 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-						<p>Explicitly waiting on an enqueued task
-						  should be avoided, because other enqueued tasks from unrelated parts of the
-						  program might have to be processed first. The recommended pattern for using an
-						  enqueued task is to have it asynchronously signal its completion, for example,
-						  by posting a message back to the thread that enqueued it. See the Intel®
-						  Threading Building Blocks 
-						  <em>Design Patterns</em> manual for such an example. 
-						</p>
- 
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="scheduling_algorithm.htm">Scheduling Algorithm 
-		  </a></div>
-<div><a href="task_group_context.htm">task_group_context 
-		  </a></div>
-<div><a href="task_cls/task_derivation.htm">task Derivation, Processing of execute() 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_allocation.htm b/doc/help/reference/task_scheduler/task_allocation.htm
deleted file mode 100755
index 27d09b7..0000000
--- a/doc/help/reference/task_scheduler/task_allocation.htm
+++ /dev/null
@@ -1,248 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task Allocation">
-<meta name="DC.subject" content="task Allocation">
-<meta name="keywords" content="task Allocation">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="task_list_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_allocation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task Allocation</title>
-</head>
-<body id="task_allocation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_allocation"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task Allocation</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Always allocate memory for 
-		  <samp class="codeph">task</samp> objects using one of the special overloaded new
-		  operators. The allocation methods do not construct the 
-		  <samp class="codeph">task</samp>. Instead, they return a proxy object that can be
-		  used as an argument to an overloaded version of operator new provided by the
-		  library. 
-		</p>
- 
-		<p>In general, the allocation methods must be called
-		  before any of the tasks allocated are spawned. The exception to this rule is 
-		  <samp class="codeph">allocate_additional_child_of(t)</samp>, which can be called
-		  even if 
-		  <samp class="codeph">task</samp> 
-		  <samp class="codeph"><em>t</em></samp> is already running. The proxy types are
-		  defined by the implementation. The only guarantee is that the phrase
-		  "new(proxy) T(...)" allocates and constructs a task of type 
-		  <em>T</em>. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>Allocating tasks larger than 216 bytes might be
-			 significantly slower than allocating smaller tasks. In general, task objects
-			 should be small lightweight entities. 
-		  </p>
- 
-		</div> 
-		<p>Because these methods are used idiomatically, the
-		  members in the following table show the idiom, not the declaration. The
-		  argument 
-		  <samp class="codeph">this</samp> is typically implicit, but shown explicitly in
-		  the headings to distinguish instance methods from static methods. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d112273e65">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d112273e68">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d112273e65 "><span class="keyword">new( task::allocate_root(
-						task_group_context& group ) ) T 
-					 </span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d112273e68 "> 
-					 <p>Allocate a 
-						<samp class="codeph">task</samp> of type 
-						<em>T 
-						</em>with the specified cancellation group. The figure below
-						summarizes the state transition. 
-					 </p>
- 
-					 <div class="fignone" id="fig7"><a name="fig7"><!-- --></a><span class="figcap">Effect of
-						  task::allocate_root()</span> 
-						 
-						<br><img src="../Resources/06000008.png"><br> 
-					 </div>
- 
-					 <p>Use method 
-						<samp class="codeph">spawn_root_and_wait</samp> to execute the 
-						<samp class="codeph">task</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d112273e65 "><span class="keyword">new( task::allocate_root() )
-						T</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d112273e68 "> 
-					 <p>Like 
-						<samp class="codeph">new(task::allocate_root(task_group_context&))</samp>
-						except that cancellation group is the current innermost cancellation group. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d112273e65 "><span class="keyword">new( x.allocate_continuation() )
-						T</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d112273e68 "> 
-					 <p>Allocates and constructs a task of type 
-						<samp class="codeph"><em>T</em></samp>, and transfers the 
-						<em>successor</em> from 
-						<samp class="codeph"><em>x</em></samp> to the new task. No reference
-						counts change. The figure below summarizes the state transition. 
-					 </p>
- 
-					 <div class="fignone" id="fig8"><a name="fig8"><!-- --></a><span class="figcap">Effect of
-						  allocate_continuation()</span> 
-						 
-						<br><img src="../Resources/06000009.png"><br> 
-					 </div>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d112273e65 "><span class="keyword">new( x.allocate_child() )
-						T</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d112273e68 "> 
-					 <p>Allocates a 
-						<samp class="codeph">task</samp> with 
-						<samp class="codeph">this</samp> as its 
-						<em>successor</em>. The figure below summarizes the state
-						transition. 
-					 </p>
- 
-					 <div class="fignone" id="fig9"><a name="fig9"><!-- --></a><span class="figcap">Effect of
-						  allocate_child()</span> 
-						 
-						<br><img src="../Resources/0600000A.png"><br> 
-					 </div>
- 
-					 <p>If using explicit continuation passing,
-						then the continuation, not the 
-						<samp class="codeph"><em>successor</em></samp>, should call the allocation
-						method, so that successor is set correctly. 
-					 </p>
- 
-					 <p>If the number of tasks is not a small
-						fixed number, consider building a 
-						<samp class="codeph">task_list</samp> of the predecessors first, and
-						spawning them with a single call to<samp class="codeph"> task::spawn</samp>. If a 
-						<samp class="codeph">task</samp> must spawn some predecessors before all
-						are constructed, it should use 
-						<samp class="codeph">task::allocate_additional_child_of(*this)</samp>
-						instead, because that method atomically increments 
-						<samp class="codeph"><em>refcount</em></samp>, so that the additional
-						predecessor is properly accounted. However, if doing so, the task must protect
-						against premature zeroing of 
-						<samp class="codeph"><em>refcount</em></samp> by using a blocking-style
-						task pattern. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d112273e65 "><span class="keyword">new(task::allocate_additional_child_of( y ))
-						T</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d112273e68 "> 
-					 <p>Allocates a 
-						<samp class="codeph">task</samp> as a predecessor of another 
-						<samp class="codeph">task 
-						  <em>y</em></samp>. Task 
-						<samp class="codeph">y</samp> may be already running or have other
-						predecessors running. The figure below summarizes the state transition. 
-					 </p>
- 
-					 <div class="fignone" id="fig10"><a name="fig10"><!-- --></a><span class="figcap">Effect of
-						  allocate_additional_child_of(successor)</span> 
-						 
-						<br><img src="../Resources/0600000B.png"><br> 
-					 </div>
- 
-					 <p>Because 
-						<samp class="codeph"><em>y</em></samp> may already have running
-						predecessors, the increment of 
-						<samp class="codeph"><em>y</em></samp>.<samp class="codeph"><em>refcount</em></samp> is
-						atomic (unlike the other allocation methods, where the increment is not
-						atomic). When adding a predecessor to a task with other predecessors running,
-						it is up to the programmer to ensure that the successor's 
-						<samp class="codeph"><em>refcount</em></samp> does not prematurely reach 0
-						and trigger execution of the successor before the new predecessor is added. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_list_cls.htm">task_list Class 
-		  </a></div>
-<div><a href="synchronization.htm">Synchronization 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_cls.htm b/doc/help/reference/task_scheduler/task_cls.htm
deleted file mode 100755
index b0d36e8..0000000
--- a/doc/help/reference/task_scheduler/task_cls.htm
+++ /dev/null
@@ -1,326 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task Class">
-<meta name="DC.subject" content="task Class">
-<meta name="keywords" content="task Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler/task_cls/task_derivation.htm">
-<meta name="DC.Relation" scheme="URI" content="task_allocation.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task Class</title>
-</head>
-<body id="task_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Base class for tasks. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>class task;</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p><samp class="codeph">#include "tbb/task.h"</samp> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>Class task is the base class for tasks. You are
-		  expected to derive classes from task, and at least override the virtual method 
-		  <samp class="codeph">task* task::execute()</samp>. 
-		</p>
- 
-		<p>Each instance of 
-		  <samp class="codeph">task</samp> has associated attributes, that while not
-		  directly visible, must be understood to fully grasp how task objects are used.
-		  The attributes are described in the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl33"><!-- --></a><table cellpadding="4" summary="" id="tbl33" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Task Attributes</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d113000e86"> 
-				  <p>Attribute 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d113000e92"> 
-				  <p>Description 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d113000e86 "> 
-				  <p><samp class="codeph">successor</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d113000e92 "> 
-				  <p>Either null, or a pointer to another task
-					 whose refcount field will be decremented after the present task completes.
-					 Typically, the successor is the task that allocated the present task, or a task
-					 allocated as the continuation of that task. 
-				  </p>
- 
-				  <p>Methods of class 
-					 <samp class="codeph">task</samp> call the successor "parent" and its
-					 preceding task the "child", because this was a common use case. But the library
-					 has evolved such that a child-parent relationship is no longer required between
-					 the predecessor and successor. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d113000e86 "> 
-				  <p><samp class="codeph">refcount</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d113000e92 "> 
-				  <p>The number of Tasks that have this as their
-					 parent. Increments and decrement of refcount are always atomic. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>Always allocate memory for 
-			 <samp class="codeph">task</samp> objects using special overloaded new operators
-			 provided by the library, otherwise the results are undefined. Destruction of a 
-			 <samp class="codeph">task</samp> is normally implicit. The copy constructor and
-			 assignment operators for task are not accessible. This prevents accidental
-			 copying of a task, which would be ill-defined and corrupt internal data
-			 structures. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Notation</h2> 
-		 
-		<p>Some member descriptions illustrate effects by
-		  diagrams such as in the figure below. 
-		</p>
- 
-		<div class="fignone" id="fig6"><a name="fig6"><!-- --></a><span class="figcap">Example Effect Diagram</span> 
-		   
-		  <br><img src="../Resources/06000007.png"><br> 
-		</div>
- 
-		<p>Conventions in these diagrams are as follows: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>The big arrow denotes the transition from the
-				old state to the new state. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Each task's state is shown as a box divided
-				into 
-				<em>parent</em> and 
-				<em>refcount</em> sub-boxes. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Gray denotes state that is ignored. Sometimes
-				ignored state is left blank. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Black denotes state that is read. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Blue denotes state that is written. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<p>In the description below, types 
-		  <em>proxy1...proxy5</em> are internal types. Methods returning such types
-		  should only be used in conjunction with the special overloaded new operators,
-		  as described in Section task Allocation. 
-		</p>
- 
-		<pre>namespace tbb {
-        class task {
-        protected:
-            task();
-     
-        public:
-            virtual ~task() {}
-     
-            virtual task* execute() = 0;
-     
-            // Allocation
-            static proxy1 allocate_root();
-            static proxy2 allocate_root( task_group_context& );
-            proxy3 allocate_continuation();
-            proxy4 allocate_child();
-            static proxy5 allocate_additional_child_of( task& );
-     
-            // Explicit destruction
-            static void destroy( task& victim );
-     
-            // Recycling
-            void recycle_as_continuation();
-            void recycle_as_safe_continuation();
-            void recycle_as_child_of( task& new_parent );
-     
-            // Synchronization
-            void set_ref_count( int count );
-            void increment_ref_count();
-            int decrement_ref_count();
-            void wait_for_all();
-            static void spawn( task& t );        
-            static void spawn( task_list& list );
-            void spawn_and_wait_for_all( task& t );  
-            void spawn_and_wait_for_all( task_list& list );  
-            static void spawn_root_and_wait( task& root );
-            static void spawn_root_and_wait( task_list& root );
-            static void enqueue( task& );
-     
-            // Task context
-            static task& self();
-            task* parent() const;
-				void set_parent(task *p);				
-            bool is_stolen_task() const;
-            task_group_context* group();
-            void change_group( task_group_context& ctx );
-     
-            // Cancellation
-            bool cancel_group_execution();
-            bool is_cancelled() const;
-            
-            // Affinity
-            typedef implementation-defined-unsigned-type affinity_id;
-            virtual void note_affinity( affinity_id id );
-            void set_affinity( affinity_id id );
-            affinity_id affinity() const;
-     
-            // Debugging
-            enum state_type {
-                executing,
-                reexecute,
-                ready,
-                allocated,
-                freed
-            };
-            int ref_count() const;
-            state_type state() const;
-        };
-    } // namespace tbb
-     
-    void *operator new( size_t bytes, const proxy1& p );
-    void operator delete( void* task, const proxy1& p );
-    void *operator new( size_t bytes, const proxy2& p );
-    void operator delete( void* task, const proxy2& p );
-    void *operator new( size_t bytes, const proxy3& p );
-    void operator delete( void* task, const proxy3& p );
-    void *operator new( size_t bytes, proxy4& p );
-    void operator delete( void* task, proxy4& p );
-    void *operator new( size_t bytes, proxy5& p );
-    void operator delete( void* task, proxy5& p );</pre> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>Prior to Intel® Threading Building Blocks (Intel®
-			 TBB) 3.0, methods 
-			 <samp class="codeph">allocate_additional_child_of</samp>, 
-			 <samp class="codeph">destroy</samp>, and 
-			 <samp class="codeph">spawn</samp> were non-static. Evolution of the library made
-			 the 
-			 <samp class="codeph">this</samp> argument superfluous for these calls. The
-			 change preserves source compatibility except in cases where the address of the
-			 method was taken. Executables compiled with the older headers that had the
-			 non-static form will continue to work when linked against the current Intel®
-			 TBB 3.0 run-time libraries. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/task_scheduler/task_cls/task_derivation.htm">task Derivation</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_allocation.htm">task Allocation 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_cls/task_derivation.htm b/doc/help/reference/task_scheduler/task_cls/task_derivation.htm
deleted file mode 100755
index f9a68f5..0000000
--- a/doc/help/reference/task_scheduler/task_cls/task_derivation.htm
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task Derivation">
-<meta name="DC.subject" content="task Derivation">
-<meta name="keywords" content="task Derivation">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_scheduler/task_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../recycling_tasks.htm">
-<meta name="DC.Relation" scheme="URI" content="../affinity.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_derivation">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task Derivation</title>
-</head>
-<body id="task_derivation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_derivation"><!-- --></a>
-
-
-    <h1 class="topictitle1">task Derivation</h1>
-
-
-<div>
-    <div class="section"><p>Class <samp class="codeph">task</samp> is an abstract base class. You <strong>must</strong> override method
-                    <samp class="codeph">task::execute</samp>. Method <samp class="codeph">execute</samp> should perform
-                the necessary actions for running the task, and then return the next
-                    <samp class="codeph">task</samp> to execute, or NULL if the scheduler should choose the
-                next task to execute. Typically, if non-NULL, the returned task is one of the
-                predecessor tasks of <samp class="codeph">this</samp>. Unless one of the recycle/reschedule
-                methods, described in Section Recycling Tasks, is called while method
-                    <samp class="codeph">execute()</samp> is running, the <samp class="codeph">this</samp> object will be
-                implicitly destroyed after method <samp class="codeph">execute</samp> returns.</p>
-<p>Override the virtual destructor if necessary to release resources allocated by the constructor.</p>
-<p>Override <samp class="codeph">note_affinity</samp> to improve cache reuse across tasks, as described in Section Affinity.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Processing of execute()</h2><p>When the scheduler decides that a thread should begin executing a <em>task</em>, it performs the
-                following steps:</p>
-
-      <ol class="ol_3">
-            <li>Invokes <samp class="codeph">execute()</samp> and waits for it to return.</li>
-
-            <li>If the task has not been marked by a method <samp class="codeph">recycle_*</samp>:<ol type="a">
-                        <li>Calls the task's destructor.</li>
-
-                        <li>If the task's <em>parent</em> is not null, then atomically decrements
-                                <em>successor</em>-><em>refcount</em>, and if becomes zero, puts the
-                            successor into the ready pool. </li>
-
-                        <li>Frees the memory of the task for reuse.</li>
-
-                    </ol>
-</li>
-
-
-           <li>If the task has been marked for recycling:<ol type="a">
-                        <li>If marked by <em>recycle_to_reexecute</em>(deprecated), puts the task back
-                        into the ready pool.</li>
-
-               <li>Otherwise it was marked by <em>recycle_as_child</em> or <em>recycle_as_continuation</em>. </li>
-     
-                    </ol>
-</li>
-
-          
-          
-      </ol>
-
-                </div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_scheduler/task_cls.htm">task Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../recycling_tasks.htm">Recycling Tasks</a></div>
-<div><a href="../affinity.htm">Affinity</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_context.htm b/doc/help/reference/task_scheduler/task_context.htm
deleted file mode 100755
index 8c86d17..0000000
--- a/doc/help/reference/task_scheduler/task_context.htm
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task Context">
-<meta name="DC.subject" content="task Context">
-<meta name="keywords" content="task Context">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_context">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task Context</title>
-</head>
-<body id="task_context">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_context"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task Context</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p> The methods detailed in the following table expose
-		  relationships between 
-		  <em>task</em> objects, and between 
-		  <em>task</em> objects and the underlying physical threads.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d113806e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d113806e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">static task& self()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p><strong>Returns</strong>: Reference to innermost 
-						<em>task</em> that the calling thread is running. A task is
-						considered running if its methods 
-						<samp class="codeph">execute(), note_affinity()</samp>, or destructor
-						are running. If the calling thread is a user-created thread that is not running
-						any task, 
-						<samp class="codeph">self()</samp> returns a reference to an implicit
-						dummy task associated with the thread.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">task* parent() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p><strong>Returns</strong>: Value of the attribute 
-						<em>successor</em>. The result is an undefined value if the
-						task was allocated by 
-						<samp class="codeph">allocate_root</samp> and is currently running under
-						control of 
-						<samp class="codeph">spawn_root_and_wait</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">void set_parent(task* p)</span>
-					 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p><strong>Requirements</strong>: Both tasks must be
-						in the same task group. For example, for 
-						<samp class="codeph">task t, t.group() == p->group()</samp>
-					 </p>
-
-					 <p><strong>Effects</strong>: Sets parent task pointer
-						to specified value 
-						<samp class="codeph">p</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">bool is_stolen_task()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p><strong>Returns</strong>: 
-						<em>true</em> if task is running on a thread different than the
-						thread that spawned it.
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>Tasks enqueued with 
-						  <samp class="codeph">task::enqueue()</samp> are never reported as
-						  stolen.
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">task_group_context*
-						group()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p><strong>Returns</strong>: Descriptor of the task
-						group, which this task belongs to.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d113806e37 "><span class="keyword">void change_group(
-						task_group_context& ctx )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d113806e40 ">
-					 <p>Moves the task from its current task
-						group into the one specified by the 
-						<samp class="codeph">ctx</samp> argument.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_debugging.htm b/doc/help/reference/task_scheduler/task_debugging.htm
deleted file mode 100755
index 8c82a3a..0000000
--- a/doc/help/reference/task_scheduler/task_debugging.htm
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task Debugging">
-<meta name="DC.subject" content="task Debugging">
-<meta name="keywords" content="task Debugging">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_debugging">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task Debugging</title>
-</head>
-<body id="task_debugging">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_debugging"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task Debugging</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Methods in this subsection are useful for
-		  debugging. They may change in future implementations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">state_type state() const</h2> 
-		 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>This method is intended for debugging only. Its
-			 behavior or performance may change in future implementations. The definition
-			 of<samp class="codeph"> task::state_type</samp> may change in future implementations. This
-			 information is being provided because it can be useful for diagnosing problems
-			 during debugging. 
-		  </p>
- 
-		</div> 
-		<p><strong>Returns</strong> 
-		</p>
- 
-		<p>Current state of the task. The table below
-		  describes valid states. Any other value is the result of memory corruption,
-		  such as using a task whose memory has been deallocated. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl34"><!-- --></a><table cellpadding="4" summary="" id="tbl34" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Values Returned by task::state()</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d114348e60"> 
-				  <p>Value 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d114348e66"> 
-				  <p>Description 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d114348e60 "> 
-				  <p>allocated 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d114348e66 "> 
-				  <p>Task is freshly allocated or recycled. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d114348e60 "> 
-				  <p>ready 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d114348e66 "> 
-				  <p>Task is in ready pool, or is in process of
-					 being transferred to/from there. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d114348e60 "> 
-				  <p>executing 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d114348e66 "> 
-				  <p>Task is running, and will be destroyed
-					 after method execute() returns. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d114348e60 "> 
-				  <p>freed 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d114348e66 "> 
-				  <p>Task is on internal free list, or is in
-					 process of being transferred to/from there. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d114348e60 "> 
-				  <p>reexecute 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d114348e66 "> 
-				  <p>Task is running, and will be respawned
-					 after method execute() returns. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>The figure below summarizes possible state
-		  transitions for a 
-		  <samp class="codeph">task</samp>. 
-		</p>
- 
-		<div class="fignone" id="fig14"><a name="fig14"><!-- --></a><span class="figcap">Typical task::state() Transitions</span> 
-		  
-		  
-		  <br><img src="../Resources/0600000F.png"><br> 
-		</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">int ref_count() const</h2> 
-		 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>This method is intended for debugging only. Its
-			 behavior or performance may change in future implementations. 
-		  </p>
- 
-		</div> 
-		<p><strong>Returns</strong> 
-		</p>
- 
-		<p>The value of the attribute 
-		  <em>refcount</em>. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_group_context.htm b/doc/help/reference/task_scheduler/task_group_context.htm
deleted file mode 100755
index 1c5a7c6..0000000
--- a/doc/help/reference/task_scheduler/task_group_context.htm
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_group_context">
-<meta name="DC.subject" content="task_group_context">
-<meta name="keywords" content="task_group_context">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler/task_group_context/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="priorities.htm">
-<meta name="DC.Relation" scheme="URI" content="task_scheduler_init_cls/task_scheduler_init_1.htm">
-<meta name="DC.Relation" scheme="URI" content="task_context.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_group_context">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_group_context</title>
-</head>
-<body id="task_group_context">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_group_context"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_group_context</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>A cancellable group of tasks. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class task_group_context;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/task.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">task_group_context</samp> represents a group of tasks that
-		  can be cancelled, or have their priority level set, together. All tasks belong
-		  to some group. A task can be a member of only one group at any moment. 
-		</p>
- 
-		<p>A root task is associated with a group by passing 
-		  <samp class="codeph">task_group_context 
-		  </samp>object into<samp class="codeph"> task::allocate_root()</samp> call. A
-		  child task automatically joins its parent task's group. A task can be moved
-		  into other group using 
-		  <samp class="codeph">task::change_group() 
-		  </samp>method. 
-		</p>
- 
-		<p>The 
-		  <samp class="codeph">task_group_context</samp> objects form a forest of trees.
-		  Each tree's root is a 
-		  <samp class="codeph">task_group_context</samp> constructed as 
-		  <samp class="codeph">isolated</samp>. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">task_group_context</samp> is cancelled explicitly by request,
-		  or implicitly when an exception is thrown out of a task. Canceling a 
-		  <samp class="codeph">task_group_context</samp> causes the entire subtree rooted at
-		  it to be cancelled. 
-		</p>
- 
-		<p>The priorities for all the tasks in a group can be
-		  changed at any time either via the associated 
-		  <samp class="codeph">task_group_context</samp> object, or via any task belonging
-		  to the group. Priority changes propagate into the child task groups similarly
-		  to cancellation. The effect of priorities on task execution is described in
-		  Section Priorities. 
-		</p>
- 
-		<p>Each user thread that creates a 
-		  <samp class="codeph">task_scheduler_init</samp> implicitly has an 
-		  <samp class="codeph">isolated task_group_context</samp> that acts as the root of
-		  its initial tree. This context is associated with the dummy task returned by 
-		  <samp class="codeph">task::self()</samp> when the user thread is not running any
-		  task. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> namespace tbb {
-        class task_group_context {
-        public:
-            enum kind_t {
-                isolated = implementation-defined,
-                bound = implementation-defined
-            };
-
-            enum traits_type {
-                exact_exception = implementation-defined,
-                concurrent_wait = implementation-defined,
-    #if TBB_USE_CAPTURED_EXCEPTION
-                default_traits = 0
-    #else
-                default_traits = exact_exception
-    #endif /* !TBB_USE_CAPTURED_EXCEPTION */
-            };
-            task_group_context( kind_t relation_with_parent = bound, 
-                                uintptr_t traits = default_traits );
-            ~task_group_context();
-            void reset();
-            bool cancel_group_execution();
-            bool is_group_execution_cancelled() const;
-            void set_priority ( priority_t );
-            priority_t priority () const;
-        };  
-    }</pre> 
-	 </div>
- 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d114825e130">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d114825e133">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">task_group_context( kind_t
-					 relation_to_parent=bound, uintptr_t traits=default_traits )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p>Constructs an empty 
-					 <samp class="codeph">task_group_context</samp>. If 
-					 <em>relation_to_parent</em> is bound, the 
-					 <samp class="codeph">task_group_context</samp> will become a child of the
-					 innermost running task's group when it is first passed into the call to 
-					 <samp class="codeph">task::allocate_root(task_group_context&)</samp>.
-					 If this call is made directly from the user thread, the effect will be as if 
-					 <samp class="codeph"><em>relation_to_parent</em></samp> were isolated. If 
-					 <samp class="codeph"><em>relation_to_parent</em></samp> is 
-					 <em>isolated</em>, it has no parent 
-					 <samp class="codeph">task_group_context</samp>. 
-				  </p>
- 
-				  <p>The 
-					 <em>traits</em> argument should be the bitwise OR of 
-					 <em>traits_type</em> values. The flag 
-					 <samp class="codeph">exact_exception</samp> controls how precisely
-					 exceptions are transferred between threads. See Section Exceptions for details.
-					 The flag 
-					 <samp class="codeph">concurrent_wait</samp> controls the
-					 reference-counting behavior of methods 
-					 <samp class="codeph">task::wait_for_all</samp> and 
-					 <samp class="codeph">task::spawn_and_wait_for_all</samp>. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">~task_group_context()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p>Destroys an empty task_group_context. It is
-					 a programmer error if there are still extant tasks in the group. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword"> bool
-					 cancel_group_execution()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p>Requests that tasks in group be cancelled. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: False if group is already
-					 cancelled; true otherwise. If concurrently called by multiple threads, exactly
-					 one call returns true and the rest return false. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">bool is_group_execution_cancelled()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p><strong>Returns</strong>: True if group has received
-					 cancellation. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">void reset()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p>Reinitializes this to uncancelled state. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-					 <p>This method is only safe to call once all tasks associated
-						with the group's subordinate groups have completed. This method must not be
-						invoked concurrently by multiple threads. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">void set_priority ( priority_t
-					 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p>Changes priority of the task group. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d114825e130 "><span class="keyword">priority_t priority ()
-					 const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d114825e133 "> 
-				  <p><strong>Returns</strong>: Priority of the task group.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/task_scheduler/task_group_context/task_group_context.htm">task_group_context Members</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="priorities.htm">Priorities 
-		  </a></div>
-<div><a href="task_scheduler_init_cls/task_scheduler_init_1.htm">task_scheduler_init 
-		  </a></div>
-<div><a href="task_context.htm">Task Context, static task& self() 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_group_context/task_group_context.htm b/doc/help/reference/task_scheduler/task_group_context/task_group_context.htm
deleted file mode 100755
index 04be1ed..0000000
--- a/doc/help/reference/task_scheduler/task_group_context/task_group_context.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_group_context Members">
-<meta name="DC.subject" content="task_group_context">
-<meta name="keywords" content="task_group_context">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_scheduler/task_group_context.htm">
-<meta name="DC.Relation" scheme="URI" content="../../exceptions.htm">
-<meta name="DC.Relation" scheme="URI" content="../synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_group_context">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task_group_context Members</title>
-</head>
-<body id="task_group_context">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_group_context"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_group_context Members</h1>
- 
-   
-  <div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_scheduler/task_group_context.htm">task_group_context</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../../exceptions.htm">Exceptions 
-		  </a></div>
-<div><a href="../synchronization.htm">Synchronization Methods 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_list_cls.htm b/doc/help/reference/task_scheduler/task_list_cls.htm
deleted file mode 100755
index 0d81cce..0000000
--- a/doc/help/reference/task_scheduler/task_list_cls.htm
+++ /dev/null
@@ -1,203 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_list Class">
-<meta name="DC.subject" content="task_list Class">
-<meta name="keywords" content="task_list Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../synchronization.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_list_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_list Class</title>
-</head>
-<body id="task_list_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_list_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_list Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>List of 
-		  <em>task</em> objects. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<pre>class task_list;</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<pre>#include "tbb/task.h"</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>A 
-		  <samp class="codeph">task_list</samp> is a list of references to<em> task
-			 objects</em>. The purpose of 
-		  <samp class="codeph">task_list</samp> is to allow a 
-		  <em>task</em> to create a list of tasks and spawn them all at once via
-		  the method 
-		  <samp class="codeph">task::spawn(task_list&)</samp>, as described in Section
-		  static void spawn ( task_list& list ). 
-		</p>
- 
-		<p>A 
-		  <em>task</em> can belong to at most one 
-		  <samp class="codeph">task_list</samp> at a time, and on that 
-		  <samp class="codeph">task_list</samp> at most once. A 
-		  <em>task</em> that has been spawned, but not started running, must not
-		  belong to a 
-		  <samp class="codeph">task_list</samp>. A 
-		  <samp class="codeph">task_list</samp> cannot be copy-constructed or assigned. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>namespace tbb {
-               class task_list {
-                public:
-                    task_list();
-                    ~task_list();
-                    bool empty() const;
-                    void push_back( task& task );
-                    task& pop_front();
-                    void clear();
-                };
-            } </pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d115689e113">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d115689e116">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">task_list()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p>Constructs an empty list. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">~task_list()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p>Destroys the list. Does not destroy the task objects. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">bool empty() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p><strong>Returns</strong>: True if list is empty; false otherwise. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">push_back( task& task
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p>Inserts a reference to 
-						<em>task</em> at back of the list. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">task& task
-						pop_front()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p>Removes a 
-						<em>task</em> reference from front of list. 
-					 </p>
- 
-					 <p><strong>Returns</strong>: The reference that was removed. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d115689e113 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d115689e116 "> 
-					 <p>Removes all 
-						<em>task</em> references from the list. Does not destroy the
-						task objects. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-		
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../synchronization.htm">Synchronization, static void spawn ( task_list& list ) 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_scheduler_init_cls.htm b/doc/help/reference/task_scheduler/task_scheduler_init_cls.htm
deleted file mode 100755
index e72e2ff..0000000
--- a/doc/help/reference/task_scheduler/task_scheduler_init_cls.htm
+++ /dev/null
@@ -1,201 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_scheduler_init Class">
-<meta name="DC.subject" content="task_scheduler_init Class">
-<meta name="keywords" content="task_scheduler_init Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_init_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_scheduler_init Class</title>
-</head>
-<body id="task_scheduler_init_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_init_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_scheduler_init Class</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class that explicitly represents thread's interest
-		  in task scheduling services. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2> 
-		 
-		<p> 
-		  <pre>class task_scheduler_init;</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Header</h2> 
-		 
-		<p> 
-		  <pre>#include "tbb/task_scheduler_init.h"</pre> 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>Using 
-		  <samp class="codeph">task_scheduler_init</samp> is optional in Intel® Threading Building Blocks (Intel® TBB) 2.2. By
-		  default, Intel® TBB 2.2 automatically creates a task scheduler the first time
-		  that a thread uses task scheduling services and destroys it when the last such
-		  thread exits. 
-		</p>
- 
-		<p>An instance of 
-		  <samp class="codeph">task_scheduler_init</samp> can be used to control the
-		  following aspects of the task scheduler: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>When the task scheduler is constructed and
-				destroyed. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The number of threads used by the task
-				scheduler. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The stack size for worker threads. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>To override the automatic defaults for task
-		  scheduling, a<samp class="codeph"> task_scheduler_init</samp> must become active before
-		  the first use of task scheduling services. 
-		</p>
- 
-		<p>A 
-		  <samp class="codeph">task_scheduler_init</samp> is either "active" or "inactive". 
-		</p>
- 
-		<p>The default constructor for a 
-		  <samp class="codeph">task_scheduler_init</samp> activates it, and the destructor
-		  deactivates it. To defer activation, pass the value 
-		  <samp class="codeph">task_scheduler_init::deferred</samp> to the constructor. Such
-		  a 
-		  <samp class="codeph">task_scheduler_init</samp> may be activated later by calling
-		  method 
-		  <samp class="codeph">initialize</samp>. Destruction of an active 
-		  <samp class="codeph">task_scheduler_init</samp> implicitly deactivates it. To
-		  deactivate it earlier, call method 
-		  <samp class="codeph">terminate</samp>. 
-		</p>
- 
-		<p>An optional parameter to the constructor and method
-		  
-		  <samp class="codeph">initialize</samp> allows you to specify the number of threads
-		  to be used for 
-		  <samp class="codeph">task</samp> execution. This parameter is useful for scaling
-		  studies during development, but should not be set for production use. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		  <p>The reason for not specifying the number of
-			 threads in production code is that in a large software project, there is no way
-			 for various components to know how many threads would be optimal for other
-			 threads. Hardware threads are a shared global resource. It is best to leave the
-			 decision of how many threads to use to the task scheduler. 
-		  </p>
- 
-		</div> 
-		<p>To minimize time overhead, it is best to rely upon
-		  automatic creation of the task scheduler, or create a single 
-		  <samp class="codeph">task_scheduler_init</samp> object whose activation spans all
-		  uses of the library's task scheduler. A 
-		  <samp class="codeph">task_scheduler_init</samp> is not assignable or
-		  copy-constructible. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<pre>// Sketch of one way to do a scaling study
-#include <iostream>
-#include "tbb/task_scheduler_init.h"
- 
-int main() {
-     int n = task_scheduler_init::default_num_threads();
-     for( int p=1; p<=n; ++p ) {
-         // Construct task scheduler with p threads
-         task_scheduler_init init(p);
-         tick_count t0 = tick_count::now();
-          ... execute parallel algorithm using task or
-              template algorithm here...
-         tick_count t1 = tick_count::now();
-         double t = (t1-t0).seconds();
-         cout << "time = " << t << " with " << p << "threads\n";
-         // Implicitly destroy task scheduler.
-     }
-     return 0;
-}</pre> 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre>  namespace tbb {
-        typedef <em>unsigned-integral-type</em> stack_size_type;
-     
-        class task_scheduler_init {
-        public:
-            static const int automatic = <em>implementation-defined</em>;
-            static const int deferred = <em>implementation-defined</em>;
-            task_scheduler_init( int max_threads=automatic, 
-                                 stack_size_type thread_stack_size=0 );
-            ~task_scheduler_init();
-            void initialize( int max_threads=automatic );
-            void terminate();
-            static int default_num_threads();
-            bool is_active() const;
-        };
-    } // namespace tbb</pre> 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm">task_scheduler_init( int max_threads=automatic, stack_size_type thread_stack_size=0 )</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm">~task_scheduler_init()</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm b/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm
deleted file mode 100755
index 344f463..0000000
--- a/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init.htm
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_scheduler_init( int max_threads=automatic, stack_size_type thread_stack_size=0 )">
-<meta name="DC.subject" content="task_scheduler_init">
-<meta name="keywords" content="task_scheduler_init">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_init">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task_scheduler_init( int max_threads=automatic, stack_size_type thread_stack_size=0 )</title>
-</head>
-<body id="task_scheduler_init">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_init"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_scheduler_init( int max_threads=automatic,
-	 stack_size_type thread_stack_size=0 )</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p><strong>Requirements</strong> 
-		</p>
- 
-		<p>The value 
-		  <samp class="codeph">max_threads</samp> shall be one of the values in the table
-		  below. 
-		</p>
- 
-		<p><strong>Effects</strong> 
-		</p>
- 
-		<p>If 
-		  <samp class="codeph">max_threads==task_scheduler_init::deferred</samp>, nothing
-		  happens, and the 
-		  <samp class="codeph">task_scheduler_init</samp> remains inactive. Otherwise, the
-		  task_scheduler_init is activated as follows. If the thread has no other active 
-		  <samp class="codeph">task_scheduler_init</samp> objects, the thread allocates
-		  internal thread-specific resources required for scheduling task objects. If
-		  there were no threads with active 
-		  <samp class="codeph">task_scheduler_init</samp> objects yet, then internal worker
-		  threads are created as described in the table below. These workers sleep until
-		  needed by the task scheduler. Each worker created by the scheduler has an
-		  implicit active 
-		  <samp class="codeph">task_scheduler_init</samp> object. 
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>As of Intel® Threading Building Blocks (Intel® TBB) 3.0, it is meaningful for the parameter
-			 
-			 <samp class="codeph">max_threads</samp> to differ for different calling threads.
-			 For example, if thread A specifies 
-			 <samp class="codeph">max_threads=3</samp> and thread B specifies 
-			 <samp class="codeph">max_threads=7</samp>, then A is limited to having 2
-			 workers, but B can have up to 6 workers. Since workers may be shared between A
-			 and B, the total number of worker threads created by the scheduler could be 6. 
-		  </p>
- 
-		</div> 
-		<div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		  <p>Some implementations create more workers than
-			 necessary. However, the excess workers remain asleep unless needed. 
-		  </p>
- 
-		</div> 
-		<p>The optional parameter 
-		  <samp class="codeph">thread_stack_size</samp> specifies the stack size of each
-		  worker thread. A value of 0 specifies use of a default stack size. The first
-		  active 
-		  <samp class="codeph">task_scheduler_init</samp> establishes the stack size for all
-		  worker threads. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl32"><!-- --></a><table cellpadding="4" summary="" id="tbl32" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Values for max_threads</span></caption> 
-		   
-		   
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d116671e99"> 
-				  <p>max_threads 
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d116671e105"> 
-				  <p>Semantics 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d116671e99 "> 
-				  <p><samp class="codeph">task_scheduler_init::automatic</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d116671e105 "> 
-				  <p>Let library determine 
-					 <samp class="codeph">max_threads 
-					 </samp>based on hardware configuration. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d116671e99 "> 
-				  <p><samp class="codeph">task_scheduler_init::deferred</samp> 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d116671e105 "> 
-				  <p>Defer activation actions. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d116671e99 "> 
-				  <p>positive integer 
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d116671e105 "> 
-				  <p>Request that up to 
-					 <samp class="codeph">max_threads</samp><span>-</span>1
-					 worker threads work on behalf of the calling thread at any one time. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm b/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm
deleted file mode 100755
index 457c0f9..0000000
--- a/doc/help/reference/task_scheduler/task_scheduler_init_cls/task_scheduler_init_1.htm
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="~task_scheduler_init()">
-<meta name="DC.subject" content="~task_scheduler_init">
-<meta name="keywords" content="~task_scheduler_init">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_scheduler/task_scheduler_init_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="task_scheduler_init.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_init_1">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>~task_scheduler_init()</title>
-</head>
-<body id="task_scheduler_init_1">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_init_1"><!-- --></a>
-
-
-    <h1 class="topictitle1">~task_scheduler_init()</h1>
-
-   
-<div><div class="section"><p><strong>Effects</strong></p>
-
-        <p>If the <samp class="codeph">task_scheduler_init</samp> is inactive, nothing happens. Otherwise, the <samp class="codeph">task_scheduler_init</samp> is deactivated as follows. If the thread has no other active <samp class="codeph">task_scheduler_init</samp> objects, the thread deallocates internal thread-specific resources required for scheduling <samp class="codeph">task</samp> objects. If no existing thread has any active <samp class="codeph">task_scheduler_init</samp> object [...]
-</div>
-
-        <div class="section"><h2 class="sectiontitle">void initialize( int max_threads=automatic )</h2>
-            <p><strong>Requirements</strong></p>
-
-            <p>The <samp class="codeph">task_scheduler_init</samp> shall be inactive.</p>
-
-            <p><strong>Effects</strong></p>
-
-            <p>Similar to constructor.</p>
-</div>
-
-        <div class="section"><h2 class="sectiontitle">void terminate()</h2>
-            <p><strong>Requirements</strong></p>
-
-            <p>The <samp class="codeph">task_scheduler_init</samp> shall be active.</p>
-
-            <p><strong>Effects</strong></p>
-
-            <p>Deactivates the <samp class="codeph">task_scheduler_init</samp> without destroying it. The description of the destructor specifies what deactivation entails.</p>
-</div>
-
-        <div class="section"><h2 class="sectiontitle">int default_num_threads()</h2>
-            <p><strong>Returns</strong></p>
-
-            <p>One more than the number of worker threads that <samp class="codeph">task_scheduler_init</samp> creates by default. </p>
-</div>
-
-        <div class="section"><h2 class="sectiontitle">bool is_active() const</h2>
-            <p><strong>Returns</strong></p>
-
-            <p>True if <samp class="codeph">*this</samp> is active as described in Section task_scheduler_init Class ; false otherwise. </p>
-</div>
-
-        <div class="section"><h2 class="sectiontitle">Mixing with OpenMP </h2>
-            <p>Mixing OpenMP with Intel® Threading Building Blocks is supported. Performance may be less than a pure OpenMP or pure Intel® Threading Building Blocks solution if the two forms of parallelism are nested.</p>
-
-            <p>An OpenMP parallel region that plans to use the
-                    <samp class="codeph">task</samp> scheduler should create a
-                    <samp class="codeph">task_scheduler_init</samp> inside the parallel region, because the
-                parallel region may create new threads unknown to Intel® Threading Building
-                Blocks. Each of these new OpenMP threads, like native threads, must create a
-                    <samp class="codeph">task_scheduler_init</samp> object before using Intel® Threading
-                Building Blocks algorithms. The following example demonstrates how to do this.</p>
-
-            <pre>void OpenMP_Calls_TBB( int n ) {
-#pragma omp parallel
-     {
-         task_scheduler_init init;
-#pragma omp for
-         for( int i=0; i<n; ++i ) {
-             ...can use class task or 
-                Intel® Threading Building Blocks algorithms here ...
-         }
-     }
-}</pre>
-            
-        </div>
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_scheduler/task_scheduler_init_cls.htm">task_scheduler_init Class</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="task_scheduler_init.htm">task_scheduler_init int max_threads</a></div></div>
-</div>
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_scheduler_observer.htm b/doc/help/reference/task_scheduler/task_scheduler_observer.htm
deleted file mode 100755
index e83e2aa..0000000
--- a/doc/help/reference/task_scheduler/task_scheduler_observer.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_scheduler_observer">
-<meta name="DC.subject" content="task_scheduler_observer">
-<meta name="keywords" content="task_scheduler_observer">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_observer_member">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>task_scheduler_observer</title>
-</head>
-<body id="task_scheduler_observer_member">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_observer_member"><!-- --></a>
-
-
-    <h1 class="topictitle1">task_scheduler_observer</h1>
-
-    
-    <div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2><p>Class that represents thread's interest in task scheduling services.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class task_scheduler_observer;</pre></div>
-<div class="section"><h2 class="sectiontitle">Header</h2><p>
-                <pre>#include "tbb/task_scheduler_observer.h"</pre>
-            </p>
-</div>
-<div class="section"><h2 class="sectiontitle">Description</h2><p>A <samp class="codeph">task_scheduler_observer</samp> permits clients to observe when a thread starts or
-                stops participating in task scheduling (globally). You typically derive your own observer class
-                from task_scheduler_observer, and override virtual methods
-                    <samp class="codeph">on_scheduler_entry</samp> or <samp class="codeph">on_scheduler_exit</samp>. An
-                instance has a state <em>observing or not observing</em>. Remember to call
-                    <samp class="codeph">observe()</samp> to enable observation.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <pre>namespace tbb {
-    class task_scheduler_observer {
-    public:
-        task_scheduler_observer();
-        virtual ~task_scheduler_observer();
-        void observe( bool state=true );
-        bool is_observing() const;
-        virtual void on_scheduler_entry( bool is_worker ) {}
-        virtual void on_scheduler_exit( bool is_worker } {}
-    };
-  }</pre></div>
-
- </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/task_scheduler.htm">Task Scheduler</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm">task_scheduler_observer Members</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm b/doc/help/reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm
deleted file mode 100755
index 42514ee..0000000
--- a/doc/help/reference/task_scheduler/task_scheduler_observer/task_scheduler_observer_member.htm
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="task_scheduler_observer Members">
-<meta name="DC.subject" content="task_scheduler_observer">
-<meta name="keywords" content="task_scheduler_observer">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/task_scheduler/task_scheduler_observer.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="task_scheduler_observer_member">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>task_scheduler_observer Members</title>
-</head>
-<body id="task_scheduler_observer_member">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="task_scheduler_observer_member"><!-- --></a>
-
- 
-  <h1 class="topictitle1">task_scheduler_observer Members</h1>
- 
-  
-  <div>
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d117586e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d117586e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">task_scheduler_observer()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p>Constructs instance with observing
-					 disabled.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">~task_scheduler_observer()</span>
-				  
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p>Disables observing. Waits for extant
-					 invocations of 
-					 <samp class="codeph">on_scheduler_entry</samp> or 
-					 <samp class="codeph">on_scheduler_exit</samp> to complete.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">void observe( bool state=true
-					 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p>Enables observing if state is true;
-					 disables observing if state is false.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">bool is_observing() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p><strong>Returns</strong>: True if observing is
-					 enabled; false otherwise.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">virtual void on_scheduler_entry(
-					 bool is_worker)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p>
-					 The task scheduler invokes this method once per each thread participating in TBB work
-					 after enabling the observation and before it starts participating for the first time,
-					 or before it executes the first task stolen after enabling the observation.
-				  </p>
- 
-				  <p>The flag 
-					 <samp class="codeph">is_worker</samp> is true if the thread was created by
-					 the task scheduler; false otherwise.
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-					 <p>If a thread enables observing before
-						spawning a task, it is guaranteed that the thread that executes the task will
-						have invoked 
-						<samp class="codeph">on_scheduler_entry</samp> before executing the
-						task. 
-					 </p>
-
-				  </div> 
-				  <p><strong>Effects</strong>: The default behavior does
-					 nothing.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d117586e29 "><span class="keyword">virtual void on_scheduler_exit( bool
-					 is_worker )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d117586e32 ">
-				  <p>The task scheduler invokes this method when
-					 a thread stops participating in task scheduling, if observing is enabled. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-					 <p>Sometimes 
-						<samp class="codeph">on_scheduler_exit</samp> is invoked for a thread
-						but not 
-						<samp class="codeph">on_scheduler_entry</samp>. This situation can arise
-						if a thread never steals a task.
-					 </p>
-
-				  </div> 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-					 <p>A process does not wait for the
-						worker threads to clean up. Thus a process can terminate before 
-						<samp class="codeph">on_scheduler_exit</samp> is invoked.
-					 </p>
-
-				  </div> 
-				  <p><strong>Effects</strong>: The default behavior does
-					 nothing.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/task_scheduler/task_scheduler_observer.htm">task_scheduler_observer</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage.htm b/doc/help/reference/thread_local_storage.htm
deleted file mode 100755
index 9da5d24..0000000
--- a/doc/help/reference/thread_local_storage.htm
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Thread Local Storage">
-<meta name="DC.subject" content="Thread Local Storage">
-<meta name="keywords" content="Thread Local Storage">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/thread_local_storage/combinable_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/thread_local_storage/flattened2d_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="threadlocalstorage">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Thread Local Storage</title>
-</head>
-<body id="threadlocalstorage">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="threadlocalstorage"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Thread Local Storage</h1>
- 
-  
-  <div> 
-	 <div class="section">
-		<p>Intel® Threading Building Blocks (Intel® TBB)
-		  provides two template classes for thread local storage. Both provide a
-		  thread-local element per thread. Both lazily create the elements on demand.
-		  They differ in their intended use models:
-		</p>
- 
-		<p><samp class="codeph">combinable</samp> provides thread-local
-		  storage for holding per-thread subcomputations that will later be reduced to a
-		  single result. It is PPL compatible. 
-		</p>
- 
-		<p><samp class="codeph">enumerable_thread_specific</samp>
-		  provides thread-local storage that acts like an STL container with one element
-		  per thread. The container permits iterating over the elements using the usual
-		  STL iteration idioms.
-		</p>
- 
-		<p>This section also describes template class 
-		  <samp class="codeph">flatten2d</samp>, which assists a common idiom where an 
-		  <samp class="codeph">enumerable_thread_specific</samp> represents a container
-		  partitioner across threads. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/thread_local_storage/combinable_cls.htm">combinable Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/combinable_cls.htm b/doc/help/reference/thread_local_storage/combinable_cls.htm
deleted file mode 100755
index cd6a6e9..0000000
--- a/doc/help/reference/thread_local_storage/combinable_cls.htm
+++ /dev/null
@@ -1,292 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="combinable Template Class">
-<meta name="DC.subject" content="combinable Template Class">
-<meta name="keywords" content="combinable Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="combinable_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>combinable Template Class</title>
-</head>
-<body id="combinable_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="combinable_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">combinable Template Class</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Template class for holding thread-local values
-		  during a parallel computation that will be merged into a final value.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		 
-		<pre>template<typename T> class combinable;</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		 
-		<pre>#include "tbb/combinable.h"</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		 
-		<p>A 
-		  <samp class="codeph">combinable<T></samp> provides each thread with its own
-		  local instance of type 
-		  <samp class="codeph">T</samp>. 
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>namespace tbb {
-        template <typename T>
-        class combinable {
-        public:
-            combinable();
-     
-            template <typename FInit>
-            combinable(FInit finit);}
-     
-            combinable(const combinable& other);
-     
-            ~combinable();
-     
-            combinable& operator=( const combinable& other);
-            void clear();
-     
-            T& local();
-            T& local(bool & exists);
-     
-            template<typename FCombine> T combine(FCombine fcombine);
-            template<typename Func> void combine_each(Func f);
-        };
-}</pre>
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d118194e79">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d118194e82">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">combinable()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Constructs 
-						<samp class="codeph">combinable</samp> such that any thread-local
-						instances of 
-						<samp class="codeph">T</samp> will be created using default
-						construction.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">template<typename FInit>
-						combinable(FInit finit)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Constructs 
-						<samp class="codeph">combinable</samp> such that any thread-local
-						element will be created by copying the result of 
-						<em>finit()</em>. 
-					 </p>
-
-					 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-						<p>The expression finit() must be safe to evaluate
-						  concurrently by multiple threads. It is evaluated each time a thread-local
-						  element is created.
-						</p>
- 
-					 </div>
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">combinable( const combinable&
-						other );</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Construct a copy of 
-						<em>other</em>, so that it has copies of each element in 
-						<em>other</em> with the same thread mapping.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">~combinable()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Destroy all thread-local elements in 
-						<samp class="codeph">*this</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">combinable& operator=( const
-						combinable& other )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Set<samp class="codeph"> *this</samp> to be a copy of 
-						<em>other</em>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">void clear()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Remove all elements from 
-						<samp class="codeph">*this</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">T& local()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>If thread-local element does not exist, create it.
-					 </p>
-
-					 <p><strong>Returns</strong>: Reference to thread-local element.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">T& local( bool& exists
-						)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p>Similar to 
-						<samp class="codeph">local()</samp>, except that 
-						<em>exists</em> is set to true if an element was already
-						present for the current thread; false otherwise.
-					 </p>
-
-					 <p><strong>Returns</strong>: Reference to thread-local element. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">template<typename FCombine>T
-						combine(FCombine fcombine)</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p><strong>Requires</strong>: Parameter 
-						<samp class="codeph"><em>fcombine</em></samp> should be an associative
-						binary functor with the signature 
-						<samp class="codeph">T(T,T)</samp> or<samp class="codeph"> T(const T&,const
-						  T&)</samp>.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Computes a reduction over
-						all elements using binary functor 
-						<em>fcombine</em>. If there are no elements, creates the result
-						using the same rules as for creating a thread-local element.
-					 </p>
- 
-					 <p><strong>Returns</strong>: Result of the reduction.
-					 </p>
-
-				  </td>
-
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d118194e79 "><span class="keyword">template<typename Func> void
-						combine_each(Func f)</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d118194e82 ">
-					 <p><strong>Requires</strong>: Parameter 
-						<samp class="codeph"><em>f 
-						  </em></samp>should be a unary functor with the signature 
-						<samp class="codeph">void(T)</samp> or 
-						<samp class="codeph">void(const T&)</samp>.
-					 </p>
- 
-					 <p><strong>Effects</strong>: Evaluates 
-						<samp class="codeph"><em>f(x)</em></samp> for each instance 
-						<samp class="codeph"><em>x</em></samp> of 
-						<samp class="codeph">T</samp> in 
-						<samp class="codeph">*this</samp>.
-					 </p>
- 
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/thread_local_storage.htm">Thread Local Storage</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls.htm
deleted file mode 100755
index 29538a7..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls.htm
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="enumerable_thread_specific Template Class">
-<meta name="DC.subject" content="enumerable_thread_specific Template Class">
-<meta name="keywords" content="enumerable_thread_specific Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="enumerable_thread_specific_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>enumerable_thread_specific Template Class</title>
-</head>
-<body id="enumerable_thread_specific_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="enumerable_thread_specific_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">enumerable_thread_specific Template Class</h1>
-
-     
-<div>
-         <div class="section"><h2 class="sectiontitle">Summary</h2><p>Template class for
-                thread local storage.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2><p>
-                <pre>enum ets_key_usage_type {
-    ets__key_per_instance,
-    ets_no_key
-    };
-
-template <typename T,
-    typename Allocator=cache_aligned_allocator<T>,
-    ets_key_usage_type ETS_key_type=ets_no_key>
-class enumerable_thread_specific;</pre>
-             
-            </p>
-</div>
-<div class="section"><h2 class="sectiontitle">Header</h2><p>
-                <pre>#include "tbb/enumerable_thread_specific.h"</pre>
-            </p>
-</div>
-<div class="section"><h2 class="sectiontitle">Description</h2><p>An
-                    <samp class="codeph">enumerable_thread_specific</samp> provides thread local storage (TLS)
-                for elements of type <samp class="codeph">T</samp>. An enumerable_thread_specific acts as a
-                container by providing iterators and ranges across all of the thread-local
-                elements.</p>
-<p>The thread-local elements are created lazily. A freshly constructed
-                    <samp class="codeph">enumerable_thread_specific</samp> has no elements. When a thread
-                requests access to an <samp class="codeph">enumerable_thread_specific</samp>, it creates an
-                element corresponding to that thread. The number of elements is equal to the number
-                of distinct threads that have accessed the
-                    <samp class="codeph">enumerable_thread_specific</samp> and not the number of threads in use
-                by the application. Clearing an <samp class="codeph">enumerable_thread_specific</samp> removes
-                all of its elements.</p>
-<p>The <samp class="codeph">ETS_key_usage_type</samp> parameter can be
-                used to select between an implementation that consumes no native TLS keys and a
-                specialization that offers higher performance but consumes 1 native TLS key per
-                enumerable_thread_specific instance. If no <samp class="codeph">ETS_key_usage_type</samp>
-                parameter is provided, <samp class="codeph">ets_no_key</samp> is used by
-                default.</p>
-<span>Caution: </span>
-               <p> The number of native TLS keys is limited and can be fairly small, for example 64
-                    or 128. Therefore it is recommended to restrict the use of the
-                        <samp class="codeph">ets_key_per_instance</samp> specialization to only the most
-                    performance critical cases.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Example</h2><p>The following code shows a simple example usage of
-                <samp class="codeph">enumerable_thread_specific</samp>. The number of calls to
-                <samp class="codeph">null_parallel_for_body::operator()</samp> and total number of iterations executed are
-                counted by each thread that participates in the <samp class="codeph">parallel_for</samp>, and these counts are
-                printed at the end of main. </p>
-
-<pre>#include <cstdio>
-#include <utility> 
-
-#include "tbb/task_scheduler_init.h"
-#include "tbb/enumerable_thread_specific.h"
-#include "tbb/parallel_for.h"
-#include "tbb/blocked_range.h" 
-
-using namespace tbb; 
-
-typedef enumerable_thread_specific< std::pair<int,int> > CounterType; 
-CounterType MyCounters (std::make_pair(0,0));
-
-struct Body {
-     void operator()(const tbb::blocked_range<int> &r) const {
-         CounterType::reference my_counter = MyCounters.local();
-          ++my_counter.first;         
-          for (int i = r.begin(); i != r.end(); ++i)             
-              ++my_counter.second;    
-     }
-}; 
-
-int main() {
-     parallel_for( blocked_range<int>(0, 100000000), Body());
-     
-     for (CounterType::const_iterator i = MyCounters.begin();
-          i != MyCounters.end();  ++i)
-    {
-         printf("Thread stats:\n");
-            printf("  calls to operator(): %d", i->first);
-            printf("  total # of iterations executed: %d\n\n",
-                 i->second);
-    }
-}</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Example with Lambda Expressions</h2><p>Class
-                    <samp class="codeph">enumerable_thread_specific</samp> has a method
-                        <samp class="codeph">combine(<em>f</em>)</samp> that does a reduction using binary functor
-                        <samp class="codeph"><em>f</em></samp>, which can be written using a lambda expression.
-                For example, the previous example can be extended to sum the thread-local values by
-                adding the following lines to the end of function
-            <samp class="codeph">main</samp>:</p>
-
-<pre>std::pair<int,int> sum =
-    MyCounters.combine([](std::pair<int,int> x,
-                          std::pair<int,int> y) {
-        return std::make_pair(x.first+y.first,
-                              x.second+y.second);
-    });
-printf("Total calls to operator() = %d, "
-         "total iterations = %d\n", sum.first, sum.second);</pre>
-</div>
-
-<div class="section"><h2 class="sectiontitle">Members</h2><pre>namespace tbb {
-    template <typename T,
-        typename Allocator=cache_aligned_allocator<T>,
-        ets_key_usage_type ETS_key_type=ets_no_key >
-    class enumerable_thread_specific {
-    public:
-        // Basic types
-        typedef Allocator allocator_type;
-        typedef T value_type;
-        typedef T& reference;
-        typedef const T& const_reference;
-        typedef T* pointer;
-        typedef <em>implementation-dependent</em> size_type;
-        typedef <em>implementation-dependent</em> difference_type;
-
-        // Iterator types
-        typedef <em>implementation-dependent</em> iterator;
-        typedef <em>implementation-dependent</em> const_iterator;
-
-        // Parallel range types
-        typedef <em>implementation-dependent</em> range_type;
-        typedef <em>implementation-dependent</em> const_range_type;
-        
-        // Whole container operations
-        enumerable_thread_specific();
-        enumerable_thread_specific(
-            const enumerable_thread_specific &other 
-        );
-        template<typename U, typename Alloc, 
-           ets_key_usage_type Cachetype>
-        enumerable_thread_specific( 
-          const enumerable_thread_specific<U, Alloc, 
-              Cachetype>& other );
-        template <typename Finit>
-        enumerable_thread_specific( Finit finit );
-        enumerable_thread_specific(const T &exemplar);
-        ~enumerable_thread_specific();
-        enumerable_thread_specific&
-        operator=(const enumerable_thread_specific& other);
-        template<typename U, typename Alloc,
-            ets_key_usage_type Cachetype>
-        enumerable_thread_specific&
-        operator=(
-            const enumerable_thread_specific<U, Alloc, Cachetype>&
-                other
-        );
-        void clear();
-        
-        // Concurrent operations
- reference local(); 
- reference local(bool& existis);
-        size_type size() const;
-        bool empty() const;
-        
-        // Combining
-        template<typename FCombine> T combine(FCombine fcombine);
-        template<typename Func> void combine_each(Func f);
-        
-        // Parallel iteration
-        range_type range( size_t grainsize=1 );
-        const_range_type range( size_t grainsize=1 ) const;
-        
-        // Iterators
-        iterator begin();
-        iterator end();
-        const_iterator begin() const;
-        const_iterator end() const;
-    }; 
-}</pre></div>
-</div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/thread_local_storage.htm">Thread Local Storage</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm">Whole Container Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm">Concurrent Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm">Combining</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm">Parallel Iteration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm">Iterators</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm
deleted file mode 100755
index 9501cec..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/combining.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Combining">
-<meta name="DC.subject" content="Combining">
-<meta name="keywords" content="Combining">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="combining">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Combining</title>
-</head>
-<body id="combining">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="combining"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Combining</h1>
- 
-  
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The methods in this section iterate across the entire container. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d119565e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d119565e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119565e29 "><span class="keyword">template<typename FCombine>T
-					 combine(FCombine fcombine)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119565e32 ">
-				  <p><strong>Requires</strong>: Parameter 
-					 <samp class="codeph"><em>fcombine</em></samp> should be an associative
-					 binary functor with the signature 
-					 <samp class="codeph">T(T,T)</samp> or<samp class="codeph"> T(const T&,const
-						T&)</samp>.
-				  </p>
- 
-				  <p><strong>Effects</strong>: Computes reduction over all
-					 elements using binary functor 
-					 <em>fcombine</em>. If there are no elements, creates the result
-					 using the same rules as for creating a thread-local element.
-				  </p>
- 
-				  <p><strong>Returns</strong>: Result of the reduction.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119565e29 "><span class="keyword">template<typename Func> void
-					 combine_each(Func f)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119565e32 ">
-				  <p><strong>Requires</strong>: Parameter 
-					 <samp class="codeph"><em>f 
-						</em></samp>should be a unary functor with the signature 
-					 <samp class="codeph">void(T)</samp> or 
-					 <samp class="codeph">void(const T&)</samp>.
-				  </p>
- 
-				  <p><strong>Effects</strong>: Evaluates 
-					 <samp class="codeph"><em>f(x)</em></samp> for each instance 
-					 <samp class="codeph"><em>x</em></samp> of 
-					 <samp class="codeph">T</samp> in 
-					 <samp class="codeph">*this</samp>.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm
deleted file mode 100755
index b5f5941..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/concurrent_operations1.htm
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Concurrent Operations">
-<meta name="DC.subject" content="Concurrent Operations">
-<meta name="keywords" content="Concurrent Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_operations1">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Concurrent Operations</title>
-</head>
-<body id="concurrent_operations1">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_operations1"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Concurrent Operations</h1>
- 
-   
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d119893e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d119893e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119893e29 "><span class="keyword">reference local()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119893e32 "> 
-				  <p>If there is no current element
-					 corresponding to the current thread, then this method constructs a new element.
-					 A new element is copy-constructed if an exemplar was provided to the
-					 constructor for 
-					 <samp class="codeph">*this</samp>, otherwise a new element is default
-					 constructed. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: A reference to the element
-					 of 
-					 <samp class="codeph">*this</samp> that corresponds to the current thread. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119893e29 "><span class="keyword">reference local( bool& exists
-					 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119893e32 "> 
-				  <p>Similar to 
-					 <samp class="codeph">local()</samp>, except that 
-					 <samp class="codeph"><em>exists</em></samp> is set to true if an element was
-					 already present for the current thread; false otherwise. 
-				  </p>
- 
-				  <p><strong>Returns</strong>: Reference to thread-local
-					 element. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119893e29 "><span class="keyword">size_type size() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119893e32 "> 
-				  <p><strong>Returns</strong>: The number of elements in 
-					 <samp class="codeph">*this</samp>. The value is equal to the number of
-					 distinct threads that have called local() after 
-					 <samp class="codeph">*this</samp> was constructed or most recently
-					 cleared. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d119893e29 "><span class="keyword">bool empty() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d119893e32 "> 
-				  <p><strong>Returns</strong>: 
-					 <samp class="codeph">size()==0</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm
deleted file mode 100755
index 7bcbd6d..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/iterators_specific_cls.htm
+++ /dev/null
@@ -1,161 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="iterators_specific_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="iterators_specific_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="iterators_specific_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-  
-  <div> 
-	 <div class="section"> 
-		<p>Template class 
-		  <samp class="codeph">enumerable_thread_specific</samp> supports random access
-		  iterators, which enable iteration over the set of all elements in the
-		  container.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d120275e37">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d120275e40">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword">iterator begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to the beginning of the
-						set of elements.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword">iterator end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to the end of the set of
-						elements.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword">const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the beginning of
-						the set of elements. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword">const_iterator end()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 ">
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the end of the
-						set of elements. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword"></span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 "> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword"></span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 "> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword"></span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 "> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120275e37 "><span class="keyword"></span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120275e40 "> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm
deleted file mode 100755
index 7f5f09e..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/parallel_literation_specific_cls.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Parallel Iteration">
-<meta name="DC.subject" content="Parallel Iteration">
-<meta name="keywords" content="Parallel Iteration">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="parallel_literation_specific_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Parallel Iteration</title>
-</head>
-<body id="parallel_literation_specific_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="parallel_literation_specific_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallel Iteration</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p>Types 
-		  <samp class="codeph">const_range_type</samp> and 
-		  <samp class="codeph">range_type</samp> model the Container Range concept. The
-		  types differ only in that the bounds for a 
-		  <samp class="codeph">const_range_type</samp> are of type 
-		  <samp class="codeph">const_iterator</samp>, whereas the bounds for a 
-		  <samp class="codeph">range_type</samp> are of type iterator.
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d120835e49">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d120835e52">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120835e49 "><span class="keyword">const_range_type range( size_t
-						grainsize=1 ) const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120835e52 ">
-					 <p><strong>Returns</strong>: A 
-						<samp class="codeph">const_range_type</samp> representing all elements
-						in 
-						<samp class="codeph">*this</samp>. The parameter 
-						<samp class="codeph">grainsize</samp> is in units of elements.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d120835e49 "><span class="keyword">range_type range( size_t
-						grainsize=1 )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d120835e52 ">
-					 <p><strong>Returns</strong>: A 
-						<samp class="codeph">range_type</samp> representing all elements in 
-						<samp class="codeph">*this</samp>. The parameter 
-						<samp class="codeph">grainsize</samp> is in units of elements.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm b/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm
deleted file mode 100755
index d569259..0000000
--- a/doc/help/reference/thread_local_storage/enumerable_thread_specific_cls/whole_container_operations_specific_cls.htm
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Whole Container Operations">
-<meta name="DC.subject" content="Whole Container Operations">
-<meta name="keywords" content="Whole Container Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="whole_container_operations_specific_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Whole Container Operations</title>
-</head>
-<body id="whole_container_operations_specific_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="whole_container_operations_specific_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Whole Container Operations</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p><strong>Safety</strong>
-		</p>
- 
-		<p>These operations must not be invoked concurrently
-		  on the same instance of 
-		  <samp class="codeph">enumerable_thread_specific</samp>. 
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d121119e42">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d121119e45">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">enumerable_thread_specific()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Constructs an 
-						<samp class="codeph">enumerable_thread_specific</samp> where each local
-						copy will be default constructed.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">enumerable_thread_specific(const
-						enumerable_thread_specific &other)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Copy construct an 
-						<samp class="codeph">enumerable_thread_specific</samp>. The values are
-						copy constructed from the values in 
-						<samp class="codeph"><em>other</em></samp> and have same thread
-						correspondence.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword"> template<typename U, typename
-						Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific( const
-						enumerable_thread_specific<U, Alloc, Cachetype>& other )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Copy construct an 
-						<samp class="codeph">enumerable_thread_specific</samp>. The values are
-						copy constructed from the values in 
-						<samp class="codeph"><em>other</em></samp> and have same thread
-						correspondence.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">template< typename Finit>
-						enumerable_thread_specific(Finit finit)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Constructs 
-						<samp class="codeph">enumerable_thread_specific</samp> such that any
-						thread-local element will be created by copying the result of 
-						<samp class="codeph">finit()</samp>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>The expression 
-						  <samp class="codeph">finit()</samp> must be safe to evaluate
-						  concurrently by multiple threads. It is evaluated each time a thread-local
-						  element is created.
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">enumerable_thread_specific(const
-						T& exemplar)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Constructs an 
-						<samp class="codeph">enumerable_thread_specific</samp> where each local
-						copy will be copy constructed from 
-						<samp class="codeph"><em>exemplar</em></samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">~enumerable_thread_specific()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Destroys all elements in 
-						<samp class="codeph">*this</samp>. Destroys any native TLS keys that
-						were created for this instance.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword"> enumerable_thread_specific&
-						operator=(const enumerable_thread_specific& other);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Sets 
-						<samp class="codeph">*this</samp> to be a copy of 
-						<samp class="codeph"><em>other</em></samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword">template< typename U, typename
-						Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific&
-						operator=(const enumerable_thread_specific<U, Alloc, Cachetype>&
-						other);</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Sets 
-						<samp class="codeph">*this</samp> to be a copy of 
-						<samp class="codeph"><em>other</em></samp>. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>The allocator and key usage
-						  specialization is unchanged by this call.
-						</p>
-
-					 </div> 
-				  </td>
- 
-				</tr>
-
-				<tr>
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d121119e42 "><span class="keyword"> void clear()</span> 
-				  </td>
-
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d121119e45 ">
-					 <p>Destroys all elements in 
-						<samp class="codeph">*this</samp>. Destroys and then recreates any
-						native TLS keys used in the implementation. 
-					 </p>
- 
-					 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3>
-						<p>In the current implementation, there is
-						  no performance advantage of using clear instead of destroying and
-						  reconstructing an 
-						  <samp class="codeph">enumerable_thread_specific</samp>. 
-						</p>
-
-					 </div>
-				  </td>
-
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/enumerable_thread_specific_cls.htm">enumerable_thread_specific Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/flattened2d_cls.htm b/doc/help/reference/thread_local_storage/flattened2d_cls.htm
deleted file mode 100755
index c6b063f..0000000
--- a/doc/help/reference/thread_local_storage/flattened2d_cls.htm
+++ /dev/null
@@ -1,163 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="flattened2d Template Class">
-<meta name="DC.subject" content="flattened2d Template Class">
-<meta name="keywords" content="flattened2d Template Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/thread_local_storage/flattened2d_cls/utility_funcs.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="flattened2d_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>flattened2d Template Class</title>
-</head>
-<body id="flattened2d_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="flattened2d_cls"><!-- --></a>
-
-
-        <h1 class="topictitle1">flattened2d Template Class</h1>
-
-        
-<div><div class="section"><h2 class="sectiontitle">Summary</h2>
-            <p>Adaptor that provides a flattened view of a container of containers. </p>
-
-           </div>
-<div class="section"><h2 class="sectiontitle">Syntax </h2> 
-<pre>
-    template<typename Container>
-    class flattened2;
-     
-    template <typename Container>
-    flattened2d<Container> flatten2d(const Container &c); 
-     
-    template <typename Container>
-    flattened2d<Container> flatten2d(
-        const Container &c, 
-        const typename Container::const_iterator b, 
-        const typename Container::const_iterator e); </pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/enumerable_thread_specific.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">flattened2d</samp> provides a flattened view of a container of containers. Iterating from <samp class="codeph">begin()</samp> to <samp class="codeph">end()</samp>visits all of the elements in the inner containers. This can be useful when traversing an <samp class="codeph">enumerable_thread_specific</samp> whose elements are containers. </p>
-
-            <p>The utility function <samp class="codeph">flatten2d</samp> creates a <samp class="codeph">flattened2d</samp> object from a container.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Example</h2>
-            <p>The following code shows a simple example usage of <samp class="codeph">flatten2d</samp> and <samp class="codeph">flattened2d</samp>. Each thread collects the values of <samp class="codeph">i</samp> that are evenly divisible by <samp class="codeph">K</samp> in a thread-local vector. In main, the results are printed by using a <samp class="codeph">flattened2d</samp> to simplify the traversal of all of the elements in all of the local vectors. </p>
-
-<pre>    
-             #include <iostream>
-             #include <utility>
-             #include <vector>
-              
-             #include "tbb/task_scheduler_init.h"
-             #include "tbb/enumerable_thread_specific.h"
-             #include "tbb/parallel_for.h"
-             #include "tbb/blocked_range.h"
-              
-             using namespace tbb;
-              
-             // A VecType has a separate std::vector<int> per thread
-             typedef enumerable_thread_specific< std::vector<int> > VecType;
-             VecType MyVectors; 
-             int K = 1000000;
-              
-             struct Func {
-                 void operator()(const blocked_range<int>& r) const {
-                     VecType::reference v = MyVectors.local();
-                     for (int i=r.begin(); i!=r.end(); ++i) 
-                         if( i%k==0 ) 
-                             v.push_back(i);
-                 } 
-             };
-              
-             int main() {
-                 parallel_for(blocked_range<int>(0, 100000000), 
-                              Func());
-              
-                 flattened2d<VecType> flat_view = flatten2d( MyVectors );
-                 for( flattened2d<VecType>::const_iterator 
-                      i = flat_view.begin(); i != flat_view.end(); ++i) 
-                     cout << *i << endl;
-                 return 0;
-             }
-              </pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <pre>namespace tbb {
-            
-                template<typename Container>
-                class flattened2d {
-             
-                public:
-                    // Basic types
-                    typedef <em>implementation-dependent</em> size_type;
-                    typedef <em>implementation-dependent</em> difference_type;
-                    typedef <em>implementation-dependent</em> allocator_type;
-                    typedef <em>implementation-dependent</em> value_type;
-                    typedef <em>implementation-dependent</em> reference;
-                    typedef <em>implementation-dependent</em> const_reference;
-                    typedef <em>implementation-dependent</em> pointer;
-                    typedef <em>implementation-dependent</em> const_pointer;
-             
-                    typedef <em>implementation-dependent</em> iterator;
-                    typedef <em>implementation-dependent</em> const_iterator;
-             
-                    flattened2d( const Container& c );
-             
-                    flattened2d( const Container& c, 
-                                 typename Container::const_iterator first,
-                                typename Container::const_iterator last );
-             
-                    iterator begin();
-                    iterator end();
-                    const_iterator begin() const;
-                    const_iterator end() const;
-             
-                    size_type size() const;
-                };
-             
-                template <typename Container>
-                flattened2d<Container> flatten2d(const Container &c);
-             
-                template <typename Container>
-                flattened2d<Container> flatten2d(
-                    const Container &c, 
-                    const typename Container::const_iterator first, 
-                    const typename Container::const_iterator last);
-            }</pre></div>
-</div>
-
-    
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/thread_local_storage.htm">Thread Local Storage</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm">Whole Container Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm">Concurrent Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm">Iterators</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/thread_local_storage/flattened2d_cls/utility_funcs.htm">Utility Functions</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm b/doc/help/reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm
deleted file mode 100755
index 102b39d..0000000
--- a/doc/help/reference/thread_local_storage/flattened2d_cls/concurrent_operations.htm
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Concurrent Operations">
-<meta name="DC.subject" content="Concurrent Operations">
-<meta name="keywords" content="Concurrent Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/flattened2d_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="concurrent_operations">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Concurrent Operations</title>
-</head>
-<body id="concurrent_operations">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="concurrent_operations"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Concurrent Operations</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p><strong>Safety</strong> 
-		</p>
- 
-		<p>These operations may be invoked concurrently on the
-		  same 
-		  <samp class="codeph">flattened2d</samp>. 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the member
-			 of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d122179e41">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d122179e44">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122179e41 "><span class="keyword">size_type size() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122179e44 "> 
-					 <p><strong>Returns</strong>: The sum of the sizes of
-						the inner containers that are viewable in the 
-						<samp class="codeph">flattened2d</samp>. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		</p>
- 
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm b/doc/help/reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm
deleted file mode 100755
index 221c84f..0000000
--- a/doc/help/reference/thread_local_storage/flattened2d_cls/iterators_2d_cls.htm
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Iterators">
-<meta name="DC.subject" content="Iterators">
-<meta name="keywords" content="Iterators">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/flattened2d_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="iterators_2d_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Iterators</title>
-</head>
-<body id="iterators_2d_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="iterators_2d_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Iterators</h1>
- 
-   
-  <div> 
-	 <div class="section"> 
-		<p>Template class 
-		  <samp class="codeph">flattened2d</samp> supports forward iterators only. 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d122361e36">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d122361e39">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122361e36 "><span class="keyword">iterator begin()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122361e39 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to the beginning of the
-						set of local copies. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122361e36 "><span class="keyword">iterator end()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122361e39 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">iterator</samp> pointing to the end of the set of
-						local copies. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122361e36 "><span class="keyword">const_iterator begin()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122361e39 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the beginning of
-						the set of local copies. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122361e36 "><span class="keyword">const_iterator end()
-						const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122361e39 "> 
-					 <p><strong>Returns</strong>: 
-						<samp class="codeph">const_iterator</samp> pointing to the end of the
-						set of local copies. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/flattened2d_cls/utility_funcs.htm b/doc/help/reference/thread_local_storage/flattened2d_cls/utility_funcs.htm
deleted file mode 100755
index e4aa2e7..0000000
--- a/doc/help/reference/thread_local_storage/flattened2d_cls/utility_funcs.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Utility Functions">
-<meta name="DC.subject" content="Utility Functions">
-<meta name="keywords" content="Utility Functions">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/flattened2d_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="utility_funcs">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Utility Functions</title>
-</head>
-<body id="utility_funcs">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="utility_funcs"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Utility Functions</h1>
- 
-  
-  <div>
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d122729e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d122729e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122729e29 "><span class="keyword">template <typename Container> 
-					 flattened2d<Container> flatten2d(const Container &c, const typename
-					 Container::const_iterator b, const typename Container::const_iterator
-					 e)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122729e32 ">
-				  <p><strong>Returns</strong>: Constructs and returns a 
-					 <samp class="codeph">flattened2d</samp> that provides iterators that
-					 traverse the elements in the containers within the half-open range 
-					 <samp class="codeph">[b, e)</samp> of Container c.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122729e29 "><span class="keyword">template <typename Container>
-					 flattened2d( const Container &c )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122729e32 ">
-				  <p><strong>Returns</strong>: Constructs and returns a 
-					 <samp class="codeph">flattened2d</samp> that provides iterators that
-					 traverse the elements in all of the containers within Container c.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm b/doc/help/reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm
deleted file mode 100755
index ab22ba4..0000000
--- a/doc/help/reference/thread_local_storage/flattened2d_cls/whole_container_operations_2d_cls.htm
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Whole Container Operations">
-<meta name="DC.subject" content="Whole Container Operations">
-<meta name="keywords" content="Whole Container Operations">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/thread_local_storage/flattened2d_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="whole_container_operations_2d_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>Whole Container Operations</title>
-</head>
-<body id="whole_container_operations_2d_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="whole_container_operations_2d_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Whole Container Operations</h1>
- 
-  
-  <div>
-	 <div class="section">
-		<p><strong>Safety</strong>
-		</p>
- 
-		<p>These operations must not be invoked concurrently
-		  on the same 
-		  <samp class="codeph">flattened2d</samp>. 
-		</p>
-
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d122949e42">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d122949e45">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122949e42 "><span class="keyword">flattened2d( const Container&
-						c )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122949e45 ">
-					 <p>Constructs a 
-						<samp class="codeph">flattened2d</samp> representing the sequence of
-						elements in the inner containers contained by outer container c.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d122949e42 "><span class="keyword">flattened2d( const Container&
-						c, typename Container::const_iterator first, typename Container::const_iterator
-						last )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d122949e45 ">
-					 <p>Constructs a 
-						<samp class="codeph">flattened2d</samp> representing the sequence of
-						elements in the inner containers in the half-open interval 
-						<samp class="codeph">[<em>first, last</em>)</samp> of Container c.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
-
-	 </div>
- 
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/thread_local_storage/flattened2d_cls.htm">flattened2d Template Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/threads.htm b/doc/help/reference/threads.htm
deleted file mode 100755
index 34b989e..0000000
--- a/doc/help/reference/threads.htm
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Threads">
-<meta name="DC.subject" content="Threads">
-<meta name="keywords" content="Threads">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/threads/thread_cls.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/threads/thread_id.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/threads/this_thread_namespace.htm">
-<meta name="DC.Relation" scheme="URI" content="general_conventions/namespaces.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="threads">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Threads</title>
-</head>
-<body id="threads">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="threads"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Threads</h1>
- 
-  
-  <div> 
-	 <div class="section"> 
-		<p>Intel® Threading Building Blocks (Intel® TBB)
-		  provides a wrapper around the platform's native threads, based upon the N3000
-		  working draft for C++11. Using this wrapper has two benefits:
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>It makes threaded code portable across
-				platforms.
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>It eases later migration to ISO C++11
-				threads.
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The library defines the wrapper in namespace 
-		  <samp class="codeph">std</samp>, not namespace 
-		  <samp class="codeph">tbb</samp>, as explained in Section Namespace.
-		</p>
- 
-		<p>The significant departures from N3000 are shown in
-		  the table below. 
-		</p>
- 
-		
-<div class="tablenoborder"><a name="tbl36"><!-- --></a><table cellpadding="4" summary="" id="tbl36" width="100%" frame="hsides" border="1" rules="all"><caption><span class="tablecap">Differences Between N3000 and Intel® TBB
-		  Thread Class</span></caption> 
-		   
-		   
-		  <thead align="left">
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="NaN%" id="d123197e64"> 
-				  <p>N3000
-				  </p>
- 
-				</th>
- 
-				<th class="row-nocellborder" valign="top" width="NaN%" id="d123197e70"> 
-				  <p>Intel® TBB
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
-
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d123197e64 "> 
-				  <p><samp class="codeph">template<class Rep, class
-						Period> std::this_thread::sleep_for(</samp>
-				  </p>
- 
-				  <p><samp class="codeph">const chrono::duration<Rep,
-						Period>& rel_time)</samp>
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d123197e70 "> 
-				  <p><samp class="codeph">std::this_thread::sleep_for(
-						tick_count::interval_t )</samp>
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d123197e64 "> 
-				  <p>rvalue reference parameters
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d123197e70 "> 
-				  <p>Parameter changed to plain value, or
-					 function removed, as appropriate.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="NaN%" headers="d123197e64 "> 
-				  <p>constructor for 
-					 <samp class="codeph">std::thread</samp> takes arbitrary number of
-					 arguments.
-				  </p>
- 
-				</td>
- 
-				<td class="row-nocellborder" valign="top" width="NaN%" headers="d123197e70 "> 
-				  <p>constructor for 
-					 <samp class="codeph">std::thread</samp> takes 0-3 arguments.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>The other changes are for compatibility with the
-		  current C++ standard or Intel® TBB. For example, constructors that have an
-		  arbitrary number of arguments require the variadic template features of C++11.
-		</p>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>Threads are heavy weight entities on most
-			 systems, and running too many threads on a system can seriously degrade
-			 performance. Consider using a task based solution instead if practical. 
-		  </p>
- 
-		</div> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/threads/thread_cls.htm">thread Class</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/threads/thread_id.htm">thread::id</a><br>
-</li>
-<li class="ulchildlink"><a href="../reference/threads/this_thread_namespace.htm">this_thread Namespace</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="general_conventions/namespaces.htm">Namespaces, std Namespace 
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/threads/this_thread_namespace.htm b/doc/help/reference/threads/this_thread_namespace.htm
deleted file mode 100755
index 1dee748..0000000
--- a/doc/help/reference/threads/this_thread_namespace.htm
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="this_thread Namespace">
-<meta name="DC.subject" content="this_thread Namespace">
-<meta name="keywords" content="this_thread Namespace">
-<meta name="DC.Relation" scheme="URI" content="../../reference/threads.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="this_thread_namespace">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>this_thread Namespace</title>
-</head>
-<body id="this_thread_namespace">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="this_thread_namespace"><!-- --></a>
-
- 
-  <h1 class="topictitle1">this_thread Namespace</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Description</h2> 
-		 
-		<p>Namespace this_thread contains global functions
-		  related to threading. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Members</h2> 
-		 
-		<pre> namepace tbb {
-        namespace this_thread {
-            thread::id get_id();
-            void yield();
-            void sleep( const tick_count::interval_t );
-        }
-    }
-     </pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d123595e46">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d123595e49">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d123595e46 "><span class="keyword">thread::id get_id()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d123595e49 "> 
-					 <p><strong>Returns</strong>: Id of the current thread.
-						
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d123595e46 "><span class="keyword">void yield()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d123595e49 "> 
-					 <p>Offers to suspend current thread so that
-						another thread may run. 
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d123595e46 "><span class="keyword">void sleep_for( const
-						tick_count::interval_t & i)</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d123595e49 "> 
-					 <p>Current thread blocks for at least time
-						interval 
-						<em>i</em>. 
-					 </p>
- 
-					 <p><strong>Example</strong> 
-					 </p>
- 
-					 <pre>            using namespace tbb;
-     
-    void Foo() {
-        // Sleep 30 seconds
-        this_thread::sleep_for( tick_count::interval_t(30) );
-    }
-     </pre> 
-				  </td>
- 
-				</tr>
- 
-			 </tbody>
- 
-		  </table>
-</div>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/threads.htm">Threads</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/threads/thread_cls.htm b/doc/help/reference/threads/thread_cls.htm
deleted file mode 100755
index 20f895b..0000000
--- a/doc/help/reference/threads/thread_cls.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="thread Class">
-<meta name="DC.subject" content="thread Class">
-<meta name="keywords" content="thread Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/threads.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/threads/thread_cls/thread_cls_members.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>thread Class</title>
-</head>
-<body id="thread_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">thread Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            <p>Represents a thread of execution.</p>
-</div>
-
-    
-        <div class="section"><h2 class="sectiontitle">Syntax</h2>
-            
-            <pre>class thread;</pre></div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <p>
-                <pre>#include "tbb/compat/thread"</pre>
-            </p>
-</div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>Class <samp class="codeph">thread</samp> provides a platform independent interface to native
-                threads. An instance represents a thread. A platform-specific thread handle can be
-                obtained via method <samp class="codeph">native_handle()</samp>.</p>
-</div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>namespace std {    
-    class thread {
-    public:
-    #if _WIN32||_WIN64
-    typedef HANDLE native_handle_type;
-    #else
-    typedef pthread_t native_handle_type;
-    #endif // _WIN32||_WIN64
-    
-    class id;
-    
-    thread();
-    template <typename F> explicit thread(F f);
-        template <typename F, typename X> thread(F f, X x);
-            template <typename F, typename X, typename Y>
-                thread (F f, X x, Y y);
-                thread& operator=( thread& x);
-                ~thread();
-                
-                bool joinable() const;
-                void join();
-                void detach();
-                id get_id() const;
-                native_handle_type native_handle();
-                
-                static unsigned hardware_concurrency();
-</pre> </div>
-
-            
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/threads.htm">Threads</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/threads/thread_cls/thread_cls_members.htm">thread Class Members</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/threads/thread_cls/thread_cls_members.htm b/doc/help/reference/threads/thread_cls/thread_cls_members.htm
deleted file mode 100755
index 1f3e318..0000000
--- a/doc/help/reference/threads/thread_cls/thread_cls_members.htm
+++ /dev/null
@@ -1,229 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="thread Class Members">
-<meta name="DC.subject" content="TestMetaData">
-<meta name="keywords" content="TestMetaData">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/threads/thread_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>thread Class Members</title>
-</head>
-<body id="thread_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">thread Class Members</h1>
- 
-   
-  <div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d124061e29">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d124061e32">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">thread()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>Constructs a thread that does not represent
-					 a thread of execution, with get_id()==id(). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">template<typename F> thread(F
-					 f)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>Construct a thread that evaluates f() 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">template<typename F, typename
-					 X> thread(F f, X x)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>Constructs a thread that evaluates f(x). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">template<typename F, typename X,
-					 typename Y> thread(F f, X x, Y y)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>Constructs thread that evaluates f(x,y). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">thread& operator=(thread&
-					 x)</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>If joinable(), calls detach(). Then assigns the state of x to
-					 *this and sets x to default constructed state. 
-				  </p>
- 
-				  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-					 <p> Assignment moves the state instead of copying it. 
-					 </p>
- 
-				  </div> 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">~thread</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p>if( joinable() ) detach(). 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">bool joinable() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Returns</strong>: get_id()!=id() 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">void join()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Requirements</strong>: joinable()==true 
-				  </p>
- 
-				  <p><strong>Effects</strong>: Wait for thread to complete. Afterwards,
-					 joinable()==false. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">void detach()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Requirements</strong>: joinable()==true 
-				  </p>
- 
-				  <p><strong>Effects</strong>: Sets *this to default constructed state and
-					 returns without blocking. The thread represented by *this continues execution. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">id get_id() const</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Returns</strong>: id of the thread, or a default-constructed id
-					 if *this does not represent a thread. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">native_handle_type
-					 native_handle()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Returns</strong>: Native thread handle. The handle is a HANDLE
-					 on Windows* operating systems and a pthread_t on Linux* and OS X* operating
-					 systems. For these systems, native_handle() returns 0 if joinable()==false. 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d124061e29 "><span class="keyword">static unsigned
-					 hardware_concurrency()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d124061e32 "> 
-				  <p><strong>Returns</strong>: The number of hardware
-					 threads. For example, 4 on a system with a single Intel® Core™2 Quad processor.
-					 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/threads/thread_cls.htm">thread Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/threads/thread_id.htm b/doc/help/reference/threads/thread_id.htm
deleted file mode 100755
index f0f6e9a..0000000
--- a/doc/help/reference/threads/thread_id.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="thread::id">
-<meta name="DC.subject" content="thread::id">
-<meta name="keywords" content="thread::id">
-<meta name="DC.Relation" scheme="URI" content="../../reference/threads.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_id">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>thread::id</title>
-</head>
-<body id="thread_id">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_id"><!-- --></a>
-
-
-    <h1 class="topictitle1">thread::id</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Unique identifier for a thread.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class thread::id;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/compat/thread"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">thread::id</samp> is an identifier value for a thread that remains unique over the thread's lifetime. A special value <samp class="codeph">thread::id()</samp> represents no thread of execution. The instances are totally ordered. </p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-            <pre>namespace tbb {    
-                    class thread::id {
-                    public:
-                        id();
-                    };
-                    template<typename charT, typename traits>
-                    std::basic_ostream<charT, traits>& 
-                        operator<< (std::basic_ostream<charT, traits> &out,
-                                    thread::id id)
-                        
-                    bool operator==(thread::id x, thread::id y);
-                    bool operator!=(thread::id x, thread::id y);
-                    bool operator<(thread::id x, thread::id y);
-                    bool operator<=(thread::id x, thread::id y);
-                    bool operator>(thread::id x, thread::id y);
-                    bool operator>=(thread::id x, thread::id y);
-                } // namespace tbb</pre></div>
-    
-    </div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/threads.htm">Threads</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/timing.htm b/doc/help/reference/timing.htm
deleted file mode 100755
index 66eb8e0..0000000
--- a/doc/help/reference/timing.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="Timing">
-<meta name="DC.subject" content="Timing">
-<meta name="keywords" content="Timing">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/timing/tick_count_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="timing">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Timing</title>
-</head>
-<body id="timing">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="timing"><!-- --></a>
-
-
-    <h1 class="topictitle1">Timing</h1>
-
-    
-<div>
-        <div class="section"><p> Parallel programming is about speeding up <em>wall</em>
-                <em>clock</em> time, which is the real time that it takes a program to run.
-                Unfortunately, some of the obvious wall clock timing routines provided by operating
-                systems do not always work reliably across threads, because the hardware thread
-                clocks are not synchronized. The library provides support for timing across threads.
-                The routines are wrappers around operating services that we have verified as safe to
-                use across threads. </p>
-
-        </div>
-
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../reference/reference.htm">Intel® Threading Building Blocks Reference Manual</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../reference/timing/tick_count_cls.htm">tick_count Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/timing/tick_count_cls.htm b/doc/help/reference/timing/tick_count_cls.htm
deleted file mode 100755
index a8e7703..0000000
--- a/doc/help/reference/timing/tick_count_cls.htm
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tick_count Class">
-<meta name="DC.subject" content="tick_count Class">
-<meta name="keywords" content="tick_count Class">
-<meta name="DC.Relation" scheme="URI" content="../../reference/timing.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/timing/tick_count_cls/tick_count_cls_members.htm">
-<meta name="DC.Relation" scheme="URI" content="../../reference/timing/tick_count_cls/tick_count_interval_t_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tick_count_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>tick_count Class</title>
-</head>
-<body id="tick_count_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tick_count_cls"><!-- --></a>
-
-
-    <h1 class="topictitle1">tick_count Class</h1>
-
-    
-<div>
-        <div class="section"><h2 class="sectiontitle">Summary</h2>
-            
-            <p>Class for computing wall-clock times.</p>
-
-            </div>
-<div class="section"><h2 class="sectiontitle">Syntax</h2>
-            <pre>class tick_count;</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Header</h2>
-            <pre>#include "tbb/tick_count.h"</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Description</h2>
-            <p>A <samp class="codeph">tick_count</samp> is an absolute timestamp. Two <samp class="codeph">tick_count</samp> objects may be subtracted to compute a relative time <samp class="codeph">tick_count::interval_t</samp>, which can be converted to seconds. </p>
-
-            <p>Example</p>
-
-<pre>using namespace tbb;
-    
-    void Foo() {
-        tick_count t0 = tick_count::now();
-        ...action being timed...
-        tick_count t1 = tick_count::now();
-        printf("time for action = %g seconds\n", (t1-t0).seconds() );
-    }</pre>
-            </div>
-<div class="section"><h2 class="sectiontitle">Members</h2>
-<pre>
- namespace tbb {
-
-        class tick_count {
-        public:
-            class interval_t;
-            static tick_count now();
-            static double resolution();
-        };
-
-        tick_count::interval_t  operator-( const tick_count&  t1, 
-                                           const tick_count& t0 );
-    } // tbb</pre>
-        </div>
-
-</div>
- 
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/timing.htm">Timing</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../reference/timing/tick_count_cls/tick_count_cls_members.htm">tick_count Class Members</a><br>
-</li>
-<li class="ulchildlink"><a href="../../reference/timing/tick_count_cls/tick_count_interval_t_cls.htm">tick_count::interval_t Class</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/reference/timing/tick_count_cls/tick_count_cls_members.htm b/doc/help/reference/timing/tick_count_cls/tick_count_cls_members.htm
deleted file mode 100755
index f1c6e78..0000000
--- a/doc/help/reference/timing/tick_count_cls/tick_count_cls_members.htm
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tick_count Class Members">
-<meta name="DC.subject" content="TestMetaData">
-<meta name="keywords" content="TestMetaData">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/timing/tick_count_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="thread_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>tick_count Class Members</title>
-</head>
-<body id="thread_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="thread_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">tick_count Class Members</h1>
- 
-   
-  <div> 
-      <div class="section">
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the members
-		  of this template class. 
-		</span><thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="33.89830508474576%" id="d125237e31">Member 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="66.10169491525423%" id="d125237e34">Description 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125237e31 "><span class="keyword">static tick_count now()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125237e34 "> 
-				  <p>
-                                    Current wall clock timestamp.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125237e31 "><span class="keyword">static double resolution()</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125237e34 "> 
-				  <p>
-                                     The resolution of the clock in seconds.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125237e31 "><span class="keyword">tick_count::interval_t operator-( const tick_count& t1,
-                                     const tick_count& t0 )</span> 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125237e34 "> 
-				  <p>
-                                     Relative time that t1 occurred after t0.
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-         <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-	        <p> 
-                On Microsoft Windows* operating systems, the current implementation
-                uses the function <samp class="codeph">QueryPerformanceCounter</samp>. Some 
-                systems may have bugs in their basic input/output system (BIOS) or
-                hardware abstraction layer (HAL) that cause different processors to
-                return different time results.
-		</p>
- 
-         </div> 
-        </div>
-
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/timing/tick_count_cls.htm">tick_count Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/reference/timing/tick_count_cls/tick_count_interval_t_cls.htm b/doc/help/reference/timing/tick_count_cls/tick_count_interval_t_cls.htm
deleted file mode 100755
index cb3cdcb..0000000
--- a/doc/help/reference/timing/tick_count_cls/tick_count_interval_t_cls.htm
+++ /dev/null
@@ -1,237 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="reference">
-<meta name="DC.Title" content="tick_count::interval_t Class">
-<meta name="DC.subject" content="tick_count::interval_t Class">
-<meta name="keywords" content="tick_count::interval_t Class">
-<meta name="DC.Relation" scheme="URI" content="../../../reference/timing/tick_count_cls.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tick_count_interval_t_cls">
-<meta name="DC.Language" content="en-US">
-<link rel="stylesheet" type="text/css" href="../../../intel_css_styles.css">
-<title>tick_count::interval_t Class</title>
-</head>
-<body id="tick_count_interval_t_cls">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(3);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tick_count_interval_t_cls"><!-- --></a>
-
- 
-  <h1 class="topictitle1">tick_count::interval_t Class</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Summary</h2> 
-		 
-		<p>Class for relative wall-clock time.
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Syntax</h2>
-		 
-		<pre>class tick_count::interval_t;</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Header</h2>
-		 
-		<pre>#include "tbb/tick_count.h"</pre> 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Description</h2>
-		 
-		<p>A 
-		  <samp class="codeph">tick_count::interval_t</samp> represents relative wall clock
-		  duration. 
-		</p>
- 
-	 </div>
-
-	 <div class="section"><h2 class="sectiontitle">Members</h2>
-		
-		<pre>
-namespace tbb {
-
-    class tick_count::interval_t {
-    public:
-        interval_t();
-        explicit interval_t( double sec );
-        double seconds() const;
-        interval_t operator+=( const interval_t& i );
-        interval_t operator-=( const interval_t& i );
-    };
-
-    tick_count::interval_t operator+( 
-        const tick_count::interval_t& i, 
-        const tick_count::interval_t& j );
-
-    tick_count::interval_t operator-( 
-        const tick_count::interval_t& i, 
-        const tick_count::interval_t& j );
-
-} // namespace tbb
-                </pre> 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><span class="tabledesc">The following table provides additional information on the
-			 members of this template class. 
-		  </span><thead align="left"> 
-				<tr> 
-				  <th class="cellrowborder" valign="top" width="33.89830508474576%" id="d125500e76">Member 
-				  </th>
- 
-				  <th class="cellrowborder" valign="top" width="66.10169491525423%" id="d125500e79">Description 
-				  </th>
- 
-				</tr>
-</thead>
- 
-			 <tbody> 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t()</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p>Constructs 
-						<samp class="codeph">interval_t</samp> representing zero time duration.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t( double sec )</span>
-					 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p>Constructs 
-						<samp class="codeph">interval_t</samp> representing specified number of
-						seconds.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">double seconds() const</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p><strong>Returns</strong>: Time interval measured in
-						seconds.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t operator+=( const
-						interval_t& i )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p><samp class="codeph">*this = *this + i</samp>
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to 
-						<samp class="codeph">*this</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t operator-=( const
-						interval_t& i )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p><samp class="codeph">*this = *this - i</samp>
-					 </p>
- 
-					 <p><strong>Returns</strong>: Reference to 
-						<samp class="codeph">*this</samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t operator+ ( const
-						interval_t& i, const interval_t& j )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p><strong>Returns</strong>: Interval_t representing
-						sum of intervals 
-						<samp class="codeph"><em>i</em> 
-						</samp>and 
-						<samp class="codeph"><em>j</em></samp>.
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-				<tr> 
-				  <td class="cellrowborder" valign="top" width="33.89830508474576%" headers="d125500e76 "><span class="keyword">interval_t operator- ( const
-						interval_t& i, const interval_t& j )</span> 
-				  </td>
- 
-				  <td class="cellrowborder" valign="top" width="66.10169491525423%" headers="d125500e79 ">
-					 <p><strong>Returns</strong>
-					 </p>
- 
-					 <p><samp class="codeph">Interval_t</samp> representing
-						difference of intervals 
-						<samp class="codeph"><em>i</em> 
-						</samp>and<samp class="codeph"> 
-						  <em>j</em>.</samp>
-					 </p>
- 
-				  </td>
- 
-				</tr>
- 
-		
-			 </tbody>
- 
-		  </table>
-</div>
-
-                <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-	            <p> 
-                    On Microsoft Windows* operating systems, the current implementation of
-                    <samp class="codeph">tick_count::seconds()</samp> uses the function
-                    <samp class="codeph">QueryPerformanceFrequency</samp>.  Repeated calls to
-                    <samp class="codeph">tick_count::seconds()</samp> result in multiple calls to
-                    <samp class="codeph">QueryPerformanceFrequency</samp>, which can be inefficient.
-                    In tight loops accumulated time should be stored as
-                    <samp class="codeph">tick_count::interval_t</samp> values, with conversion to
-                    <samp class="codeph">tick_count::seconds()</samp> performed outside measured code.
-		    </p>
- 
-                 </div> 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../../reference/timing/tick_count_cls.htm">tick_count Class</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/search.js b/doc/help/search.js
deleted file mode 100755
index 6846e25..0000000
--- a/doc/help/search.js
+++ /dev/null
@@ -1,471 +0,0 @@
-//*==============================================================================
-//*    ** DO NOT REMOVE OR MODIFY THIS COPYRIGHT MESSAGE **
-//*
-//*    Helpware Search 1.1
-//*    Copyright (c) 2004-2011 The Helpware Group
-//*    http://helpware.net/FAR/
-//*    Requires a Modern Browser that supports JavaScript such as Firefox/IE4/GoogleChrome/Opera/Safari/Netscape
-//*    WARNING: You must purchase a copy of FAR HTML v4 or greater to use this file.
-//*
-//*==============================================================================
-//*  31-May-2005: RWC - Fixed Offby one error in highlighting. First word would not highlight. 
-//*  10-June-2009: RWC - All files now saved in UTF-8 file format. Search is now Unicode based. Previously ANSI based.
-//*     - Added reBreakChars to allow multiple text break chars. Was just space char (0x20).
-//*  12-Sept-2011: RWC - Search highlighting now works for all browsers (previously just Internet Explorer).
-//*  04-Sept-2012: RWC - Select first item when result list loads.
-//*
-
-
-//var SearchFiles = ["index.htm","Search_OzNet.html"...
-//var SearchTitles =["Molecular products","OzNet Web"...
-//var SearchIndexes = [["0-0",[128,129,256,257,323]]...
-// ...,["WATER;",[355,361]],["WATER-CIRCULATOR",[383]],...
-
-
-//Options
-var PARAM_PartialMatchOK = true;
-var PARAM_TargetWindow = 'content';
-
-//Globals - SearchResults is an array of Page Indexes
-var SearchResults = [];
-var gFindList = [];
-var gFirstFindCall = true;
-
-//Chars that break words in an entry field   //RWC002 - Space, Ideographic Space
-var reBreakChars = new RegExp( "[\u0020\u3000]{1}", "gi" );    
-
-//------------------------------------------------------------------------------
-// Get Operator Type
-//   text should be Uppercase. Return 0 = normal search text
-//------------------------------------------------------------------------------
-var OPT_AND = 1;
-var OPT_OR  = 2;
-var OPT_NOT = 3;
-function xxGetOpType(text) {
-  if ((text=="NOT")||(text=="!")) return OPT_NOT;
-  else if ((text=="AND")||(text== "&")||(text== "+")) return OPT_AND;
-  else if ((text=="OR")||(text== "|")) return OPT_OR;
-  else return(0);
-  }
-
-
-//----------------------------------------------------------------------------
-// ProcessSearchTerms()
-//----------------------------------------------------------------------------
-// Params
-//   ss -- string of terms to parse and find
-//   DefaultOp - Search Operator to default to for each list term (OPT_OR, OPT_AND, OPT_NOT)
-// Desc
-//   Parse ss string --> String list. Default Return.
-//   Items forced Uppercase (since Database and all calls use uppercase for speed)
-//   User can insert override 'AND', 'OR', 'NOT' into the list of terms to
-//   alter how the next item is searched. After that we go back to Defaultop.
-// Optimization
-//   Pass in SearchIndexes + SearchResults arrays (by ref) so no global lookups - speed up loops
-//----------------------------------------------------------------------------
-function ProcessSearchTerms(ss, DefaultOp) {
-  //Parse string into array
-  var items = ss.split(reBreakChars);
-
-  //----------------------------------------
-  // Remove empty list entried due to multiple spaces passed to split()
-  // Force all items to Uppercase
-  //----------------------------------------
-  var c = 0;
-  for (var i = 0; i < items.length; i++)
-    if (items[i] != "") { items[c] = items[i].toUpperCase(); c++; }
-  items.length = c;
-
-  var CheckOp = true;
-  var otype = DefaultOp;
-  for (var i = 0; i < items.length; i++) {
-
-    //----------------------------------------
-    // Check for Override Operators.
-    // Don't allow Op override if working with NOT terms
-    //----------------------------------------
-    if ((CheckOp) && (DefaultOp != OPT_NOT)) {
-      otype = xxGetOpType(items[i]);
-      CheckOp = (otype == 0);
-      if (CheckOp) otype = DefaultOp;
-      else continue;
-    }
-    CheckOp = true;
-
-    //----------------------------------------
-    // Find Text results ==> SearchResults
-    //----------------------------------------
-    if (otype==OPT_OR)  FindText_OR(items[i], SearchIndexes, SearchResults);
-    if (otype==OPT_AND) FindText_AND(items[i], SearchIndexes, SearchResults);
-    if (otype==OPT_NOT) FindText_DEL(items[i], SearchIndexes, SearchResults);
-
-    //build list of find words
-    if (DefaultOp!=OPT_NOT)
-      gFindList[gFindList.length] = items[i];
-
-    //Clear global flag
-    gFirstFindCall = false;
-  }
-}
-
-//------------------------------------------------------------------------------
-// s1 - Any words (OR) -->> one or more words present in a document is a result. Ie. Get the OR of all word search results.
-// s2 - All words (AND) -->> all words must be present in each result document. Ie. Get the AND of all word search results.
-// s3 - Not these words (NOT) -->> Only makes sense when used with the above. Knock out Topics containing these words.
-// b4 - Partial Word matching is ok - otherwise we match exaclty what is entered
-// s5 - target window -- default = 'content'
-// ----------------------------------------------
-// -- To match similar spellings in a full-text search, select the Match similar words check box.
-//    eg  "add", "adds", and "added".
-// -- To search for words in document titles only, select the Search titles only check box.
-// -- To highlight words in searched topics
-//------------------------------------------------------------------------------
-//  Notes
-//  - DoSearch(s1, s2, s3. partial)
-//     S1 is a string of words separated by spaces. Words are OR'd together
-//     S2 is a string of words separated by spaces. Words are AND'd together
-//     S3 is a string of words separated by spaces. Words are Deleted from other results
-//  - User can override default properties of S1 and S2 by using the following keywords
-//    "OR","|" the next word is OR'd
-//    "AND","&","+" the next word is AND'd
-//    "NOT","!" the next word is removed
-//
-//------------------------------------------------------------------------------
-function DoSearch(s1, s2, s3, b4, s5)
-{
-  //----------------------------------------------------------------------------
-  // Init
-  //   - Reset First AND call flag. The first time must be an OR.
-  //   - Clear SearchResults list
-  //   - Clear target list control
-  //----------------------------------------------------------------------------
-  gFirstFindCall = true;
-  SearchResults.length = 0;
-  gFindList.length = 0;
-  if (document.forms['searchform'].SearchResultList)
-    document.forms['searchform'].SearchResultList.length = 0;
-  PARAM_PartialMatchOK = b4;
-  if (s5 == '') PARAM_TargetWindow = 'content';
-    else PARAM_TargetWindow = s5;
-
-  //----------------------------------------------------------------------------
-  //1. (OR) Find documents with "Any of these Words"  ==> SearchResults
-  //2. (AND) Find documents with "All these Words"  ==> SearchResults
-  //3. (NOT) SearchResults must NOT files containing these words ==> Remove from SearchResults
-  //----------------------------------------------------------------------------
-  ProcessSearchTerms(s1, OPT_OR);
-  ProcessSearchTerms(s2, OPT_AND);
-  ProcessSearchTerms(s3, OPT_NOT);
-  
-  //----------------------------------------------------------------------------
-  // Display SearchResults
-  //----------------------------------------------------------------------------
-  if (SearchResults.length == 0) {
-    alert("No matches found!");
-    return(0); }
-
-  //Search Results list exists  
-  if (document.forms['searchform'].SearchResultList)
-  {
-    //Fill SearchResults List -- 500 item limit same as H1.x and H2.x
-    for(var i=0;((i<SearchResults.length) && (i<500));i++) {
-      var new_option = document.createElement('option');
-      new_option.text = SearchTitles[SearchResults[i]];
-      new_option.text= new_option.text.replace(/\&/g,'&');
-      new_option.value = SearchFiles[SearchResults[i]];
-      document.forms['searchform'].SearchResultList[i]=new_option;
-    }
-
-    //open the first file
-    // ** Comment this line out if you don't want the first Search result displayed automatically ** 
-    OpenResultListDoc();
-
-  }
-  else {
-    ShowSearchResultsWindow();
-  }
-
-  return(SearchResults.length);
-
-}
-
-
-
-//----------------------------------------------------------------------------
-// OR -- Add only Unique items to the SearchResults Array
-//   items - array of Idxs to OR into SearchResults
-//   SearchResults - Pass in by ref to to optomize global scope access
-//----------------------------------------------------------------------------
-function OR_WithSearchResults(items, SearchResults) {
-  var found;
-  for (var i = 0; i < items.length; i++) {
-
-    //Already in list?
-    found = false;
-    for (var k = 0; (k < SearchResults.length) && (!found); k++)
-      if (items[i] == SearchResults[k])
-        found = true;
-
-    //Not in list? Then Add it!
-    if (!found)
-      SearchResults[SearchResults.length] = items[i];
-  }
-}
-
-//----------------------------------------------------------------------------
-// AND -- Keep only the intersection of items and SearchResults
-//   items - array of Idxs to AND into SearchResults
-//   SearchResults - Pass in by ref to to optomize global scope access
-//----------------------------------------------------------------------------
-function AND_WithSearchResults(items, SearchResults) {
-  var count = 0;
-  for (var i = 0; i < SearchResults.length; i++)
-    for (var k = 0; k < items.length; k++) {
-      if (items[k] == SearchResults[i]) {
-        SearchResults[count] = SearchResults[i];
-        count++;
-        break;
-      }
-    }
-  SearchResults.length = count;
-}
-
-//----------------------------------------------------------------------------
-// DEL -- Remove items from SearchResults list
-//   items - array of Idxs to DEL from SearchResults
-//   SearchResults - Pass in by ref to to optomize global scope access
-//----------------------------------------------------------------------------
-function DEL_WithSearchResults(items, SearchResults) {
-  var count = 0;
-  var found; 
-  for (var i = 0; i < SearchResults.length; i++) {
-
-    //Its Delete Item in the Result list?
-    found = false;
-    for (var k = 0; (k < items.length) && (!found); k++)
-      if (items[k] == SearchResults[i]) {
-        found = true;
-        break;
-      }
-
-    //Not Found in delete list? then keep Result
-    if (!found) {
-      SearchResults[count] = SearchResults[i];
-      count++;
-      }
-  }
-  SearchResults.length = count;
-}
-
-
-//----------------------------------------------------------------------------
-// Find Database Text
-// By this stage all strings are Uppercase
-// Optimization
-//   - String Compare - check length the same, and check first char match before
-//     going on to actually do a string compare.
-//   - Pass Global SearchIndexes in instead of accessing out of scope many times
-//----------------------------------------------------------------------------
-
-//Find Text (in SearchIndex passed in by ref) and OR matches into SearchResults list
-function FindText_OR(SrchText, SearchIndexes, SearchResults)
-{
-  if (PARAM_PartialMatchOK) {
-    for(var i=0;i<SearchIndexes.length;i++)
-      if((SearchIndexes[i][0].length >= SrchText.length)
-      && (SearchIndexes[i][0].indexOf(SrchText) >= 0)) {
-        OR_WithSearchResults(SearchIndexes[i][1], SearchResults);
-      }
-  }
-  else {
-    //Not Partial - Fast - Find exact match and break out  
-    for(var i=0;i<SearchIndexes.length;i++)
-      if((SearchIndexes[i][0].length == SrchText.length)
-      && (SearchIndexes[i][0] == SrchText)) {
-        OR_WithSearchResults(SearchIndexes[i][1], SearchResults);
-        break;
-      }
-  }
-}
-
-//Find Text (in SearchIndex passed in by ref) and AND matches into SearchResults list
-function FindText_AND(SrchText, SearchIndexes, SearchResults)
-{
-  //Optimization: Take copy to minimize global out of scope lookups
-  var FirstFindCall = gFirstFindCall;
-
-  //If 2nd or 3rd... item and No SearchResults then Nothing to AND with
-  if ((!FirstFindCall) && (SearchResults.length == 0))
-    return;
-
-  var tempList = [];
-  if (PARAM_PartialMatchOK) {
-    for(var i=0;i<SearchIndexes.length;i++)
-      if((SearchIndexes[i][0].length >= SrchText.length)
-      && (SearchIndexes[i][0].indexOf(SrchText) >= 0))
-        OR_WithSearchResults(SearchIndexes[i][1], tempList);
-  }
-  else {
-    //Not Partial - Fast - Find exact match and break out
-    for(var i=0;i<SearchIndexes.length;i++)
-      if((SearchIndexes[i][0].length == SrchText.length)
-      && (SearchIndexes[i][0] == SrchText)) {
-        OR_WithSearchResults(SearchIndexes[i][1], tempList);
-        //Exact match - we are done
-        break;
-      }
-  }
-
-  //Add Results
-  //1st call wont have results yet -- We must OR into SearchResults as AND would not do nothing
-  if (tempList.length >= 0) {
-    if (FirstFindCall)
-      OR_WithSearchResults(tempList, SearchResults);
-    else
-      AND_WithSearchResults(tempList, SearchResults);
-  }
-  else
-    //No Results + not first call -- AND will wipe out all results
-    if (!FirstFindCall)
-      SearchResults.length = 0;
-}
-
-
-//Find Text (in SearchIndex passed in by ref) and DELETE matches from SearchResults list
-function FindText_DEL(SrchText, SearchIndexes, SearchResults)
-{
-  //first check there is something to delete from
-  if (SearchResults.length)
-    for(var i=0;i<SearchIndexes.length;i++)
-      if((SearchIndexes[i][0].length == SrchText.length)
-      &&(SearchIndexes[i][0]==SrchText)) {
-
-        //Send match words idx array off to be deleted from SearchResults
-        DEL_WithSearchResults(SearchIndexes[i][1], SearchResults);
-
-        //We found the word and its idx array data -- Jobs done
-        break;
-      }
-}
-
-
-
-//------------------------------------------------------------------------------
-// Highlight search hits
-//------------------------------------------------------------------------------
-
-var targetWin = null;
-var highlightStartTag = "<span style='background-color:#FFFF00;color:#222222;'>";  //yellow highlight
-var highlightEndTag = "</span>";
-
-//------------------------------------------------------------------------------
-// Highlight text by adding HTML tags before and after all occurrences of the search term.
-// Acknowledgments: Thank you Sujit Kumar Shah - http://www.sks.com.np/article/14/pure-javascript-search-and-text-highlighting.html
-//------------------------------------------------------------------------------
-function doHighlight(bodyText, searchTerm) 
-{
-  var newText = "";
-  var i = -1;
-  var lcSearchTerm = searchTerm.toLowerCase();
-  var lcBodyText = bodyText.toLowerCase();
-    
-  while (bodyText.length > 0) {
-    i = lcBodyText.indexOf(lcSearchTerm, i+1);
-    if (i < 0) {
-      newText += bodyText;
-      bodyText = "";
-    } else {
-      // skip anything inside an HTML tag
-      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
-        // skip anything inside a <script> block
-        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
-          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
-          bodyText = bodyText.substr(i + searchTerm.length);
-          lcBodyText = bodyText.toLowerCase();
-          i = -1;
-        }
-      }
-    }
-  }
-  return newText;
-}
-
-// Highlight search terms
-function HighlightTopic() {
-  var bodyText = targetWin.document.body.innerHTML;
-  for(var k = 0; k < gFindList.length; k++) {
-    bodyText = doHighlight(bodyText, gFindList[k]);
-  }
-  targetWin.document.body.innerHTML = bodyText;
-}
-
-//------------------------------------------------------------------------------
-// Open List item in Browser - Target = PARAM_TargetWindow
-//------------------------------------------------------------------------------
-function OpenResultListDoc() {
-  //Something selected in the search result list?
-  var iSelect = document.forms['searchform'].SearchResultList.selectedIndex;
-  if (iSelect < 0) {
-    iSelect = 0;
-    document.forms['searchform'].SearchResultList.selectedIndex = 0;
-  }
-
-  //Open the selected file
-  if (window.navigator.userAgent.indexOf("Netscape") > 0) {
-    top.right.location.href = document.forms['searchform'].SearchResultList.options[iSelect].value;
-    targetWin = top.right.window;
-  }
-  else //all other browsers
-    targetWin = open(document.forms['searchform'].SearchResultList.options[iSelect].value, PARAM_TargetWindow);
-
-  //Highlight search hits on a delay
-  if (targetWin)
-    setTimeout('HighlightTopic()',1000);
-}
-
-
-//------------------------------------------------------------------------------
-// Search Results Window -- called if user does not
-//  -- 500 item limit same as H1.x and H2.x
-//------------------------------------------------------------------------------
-function ShowSearchResultsWindow() {
-  var newWindow = window.open("about:blank", "searchValue", "width=500, height=300, resizable=yes, maximizable=no, status=yes, scrollbars=yes");
-  newWindow.document.write('<html>\n<head>\n<title>Search Results</title>\n');
-  newWindow.document.write('</head>\n');
-  newWindow.document.write('<body>\n');
-
-  //Fill SearchResults List
-  for(var i=0;((i<SearchResults.length) && (i<500));i++) {
-    //Search Topic Title
-    var aTitle = SearchTitles[SearchResults[i]];
-    //URL
-    var aURL = SearchFiles[SearchResults[i]];
-
-    newWindow.document.write('<p>Title: '+ aTitle +'<br>\n');
-    newWindow.document.write('URL: <a href="'+ aURL +'">'+aURL+'</a></p>\n');
-  }
-
-  newWindow.document.write("</body>\n");
-  newWindow.document.write("</html>\n");
-  newWindow.document.close();
-//  self.name = "main";
-}
-
-//------------------------------------------------------------------------------
-// Other Script
-//------------------------------------------------------------------------------
-function CloseNavPane() {
-  if ((top.content.location == null) || (top.content.location == undefined) || (typeof(top.content.location.href) != "string") || (top.content.location.href == ""))
-    top.location="index.htm";   //can't work out the current content file - return home
-  else
-    top.location=top.content.location;
-}
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-
-
-
-
diff --git a/doc/help/searchdata.js b/doc/help/searchdata.js
deleted file mode 100755
index 22c0fa5..0000000
--- a/doc/help/searchdata.js
+++ /dev/null
@@ -1,13 +0,0 @@
-//===================================================================
-// Search data file create by FAR HTML: 22.01.2014 22:51:51
-// FAR is copyright (c) 2000-2009, Robert Chandler, The Helpware Group
-// Web Site: http://www.helpwaregroup.com/products/far
-//===================================================================
-
-var SearchFiles = ["main/Benefits.htm","main/help_support.htm","main/introducing.htm","main/legal_information.htm","main/notation.htm","main/title.htm","reference/algorithms.htm","reference/appendices.htm","reference/containers_overview.htm","reference/environment.htm","reference/exceptions.htm","reference/flow_graph.htm","reference/general_conventions.htm","reference/introducing.htm","reference/memory_allocation.htm","reference/reference.htm","reference/synchronization.htm","reference/t [...]
-
-var SearchTitles = ["Intel® Threading Building Blocks Benefits","Getting Help and Support","Introducing Intel® Threading Building Blocks","Legal Information","Notational Conventions","Intel® Threading Building Blocks Documentation","Algorithms","Appendices","Containers Overview","Environment","Exceptions","Flow Graph","General Conventions","Introducing Intel® Threading Building Blocks","Memory Allocation","Intel® Threading Building Blocks Reference Manual","Synchronization","Task Groups" [...]
-
-var SearchIndexes = [["-",[3,5,48,68,75,87,88,138,172,178,200,215,217,238,244,251,260,286,298,309]],["--",[244]],["&",[20,22,23,25,27,28,29,36,39,45,61,66,70,73,84,85,89,94,97,120,167,172,173,193,194,197,220,221,222,227,232,234,239,249,252,254,256,259,265,279,280,287,308,310,321]],["&#XA0;",[129]],["&&",[145,260,308,323]],["&);",[55,65,97]],["&A",[73,84,85,89,94,98,120]],["&A)",[170]],["&A;",[286,289]],["&B)",[94]],["&B);",[84,94]],["&C",[222,230]],["&C);",[222]],["&C.X);",[286,289]],["& [...]
-//debug_FilesScanned=324
-//debug_UniqueWordsFound=8951
diff --git a/doc/help/tbb_userguide/Advanced_Example.htm b/doc/help/tbb_userguide/Advanced_Example.htm
deleted file mode 100755
index b826f2c..0000000
--- a/doc/help/tbb_userguide/Advanced_Example.htm
+++ /dev/null
@@ -1,124 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Advanced Example">
-<meta name="DC.subject" content="Advanced Example">
-<meta name="keywords" content="Advanced Example">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Advanced_Example">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Advanced Example</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Advanced_Example">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Advanced_Example"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Advanced Example</h1>
- 
-   
-  <div> 
-	 <p>An example of a more advanced associative operation is to find the index
-		where 
-		<samp class="codeph">Foo(i)</samp> is minimized. A serial version might look like
-		this: 
-	 </p>
- 
-	 <pre>long SerialMinIndexFoo( const float a[], size_t n ) {
-    float value_of_min = FLT_MAX;        // FLT_MAX from <climits>
-    long index_of_min = -1;
-    for( size_t i=0; i<n; ++i ) {
-        float value = Foo(a[i]);
-        if( value<value_of_min ) {
-            value_of_min = value;
-            index_of_min = i;
-        }
-    }  
-    return index_of_min;
-}</pre> 
-	 <p>The loop works by keeping track of the minimum value found so far, and
-		the index of this value. This is the only information carried between loop
-		iterations. To convert the loop to use 
-		<samp class="codeph">parallel_reduce</samp>, the function object must keep track of
-		the carried information, and how to merge this information when iterations are
-		spread across multiple threads. Also, the function object must record a pointer
-		to 
-		<samp class="codeph">a</samp> to provide context. 
-	 </p>
- 
-	 <p>The following code shows the complete function object. 
-	 </p>
- 
-	 <pre>class MinIndexFoo {
-    const float *const my_a;
-public:
-    float value_of_min;
-    long index_of_min; 
-    void operator()( const blocked_range<size_t>& r ) {
-        const float *a = my_a;
-        for( size_t i=r.begin(); i!=r.end(); ++i ) {
-           float value = Foo(a[i]);    
-           if( value<value_of_min ) {
-               value_of_min = value;
-               index_of_min = i;
-           }
-        }
-    <span style="color:blue"><strong>}</strong></span>
- 
-    MinIndexFoo( MinIndexFoo& x, split ) : 
-        my_a(x.my_a), 
-        value_of_min(FLT_MAX),    // FLT_MAX from <climits>
-        index_of_min(-1) 
-   {}
- 
-    void join( const SumFoo& y ) {
-        if( y.value_of_min<value_of_min ) {
-            value_of_min = y.value_of_min;
-            index_of_min = y.index_of_min;
-        }
-    }
-             
-    MinIndexFoo( const float a[] ) :
-        my_a(a), 
-        value_of_min(FLT_MAX),    // FLT_MAX from <climits>
-        index_of_min(-1),
-    {}
-};</pre> 
-	 <p>Now 
-		<samp class="codeph">SerialMinIndex</samp> can be rewritten using 
-		<samp class="codeph">parallel_reduce</samp> as shown below: 
-	 </p>
- 
-	 <pre>long ParallelMinIndexFoo( float a[], size_t n ) {
-    MinIndexFoo mif(a);
-    parallel_reduce(blocked_range<size_t>(0,n), mif );
-<span style="color:blue">   </span> return <span style="color:blue"><strong>mif.</strong></span>index_of_min<span style="color:blue"><strong>;</strong></span>
-}</pre> 
-	 <p>The directory 
-		<samp class="codeph">examples/parallel_reduce/primes</samp> contains a prime number
-		finder based on 
-		<samp class="codeph">parallel_reduce</samp>. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm b/doc/help/tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm
deleted file mode 100755
index 351dda5..0000000
--- a/doc/help/tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Advanced Idiom: Waiting on an Element">
-<meta name="DC.subject" content="Advanced Idiom: Waiting on an Element">
-<meta name="keywords" content="Advanced Idiom: Waiting on an Element">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/concurrent_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="Memory_Consistency.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Advanced_Idiom_Waiting_on_an_Element">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Advanced Idiom: Waiting on an Element</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Advanced_Idiom_Waiting_on_an_Element">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Advanced_Idiom_Waiting_on_an_Element"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Advanced Idiom: Waiting on an Element</h1>
- 
-   
-  <div> 
-	 <p>Sometimes a thread must wait for an element 
-		<samp class="codeph"><var>v</var>[<var>i</var>]</samp> that is being
-		asynchronously added by another thread. The following idiom can be used for the
-		wait: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Wait until 
-			 <samp class="codeph"><var>i</var><<var>v</var>.size()</samp>.
-			 Afterwards, 
-			 <samp class="codeph"><var>v</var>[<var>i</var>]</samp> is known
-			 to be allocated, but perhaps not constructed. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Wait for 
-			 <samp class="codeph"><var>v</var>[<var>i</var>]</samp> to be
-			 constructed. 
-		  </p>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>A good way to do step 2 is to wait for an atomic flag in the element to
-		become non-zero. Sometimes the entire element is the flag. To ensure that the
-		flag is zero until the element is constructed, do the following: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>Instantiate 
-			 <samp class="codeph">concurrent_vector</samp> with an allocator that allocates
-			 zeroed memory, such as 
-			 <samp class="codeph">tbb::zero_allocator</samp>. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Making the element constructor set the flag to non-zero as its last
-			 action. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>Below is an example where the vector elements are atomic pointers. It
-		assumes that pointers added to the vector are non-NULL, hence the flag is the
-		pointer itself. 
-	 </p>
- 
-<pre>#include ″tbb/compat/thread″
-#include ″tbb/tbb_allocator.h″ // zero_allocator defined here
-#include ″tbb/atomic.h″
-#include ″tbb/concurrent_vector.h″
- 
-using namespace tbb;
-typedef concurrent_vector<atomic<Foo*>, zero_allocator<atomic<Foo*> > > FooVector;
- 
-Foo* FetchElement( const FooVector& v, size_t i ) {
-    // Wait for ith element to be allocated
-    while( i>=v.size() )
-        std::this_thread::yield();
-    // Wait for ith element to be constructed
-    while( v[i]==NULL )
-        std::this_thread::yield();
-    return v[i];
-}</pre>
-	 <p>In general, the flag must be an atomic type to ensure proper memory
-		consistency. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/concurrent_vector.htm">concurrent_vector</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Memory_Consistency.htm">Memory Consistency 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm b/doc/help/tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm
deleted file mode 100755
index 6243c16..0000000
--- a/doc/help/tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Advanced Topic: Other Kinds of Iteration Spaces">
-<meta name="DC.subject" content="Advanced Topic: Other Kinds of Iteration Spaces">
-<meta name="keywords" content="Advanced Topic: Other Kinds of Iteration Spaces">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Advanced_Topic_Other_Kinds_of_Iteration_Spaces">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Advanced Topic: Other Kinds of Iteration Spaces</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Advanced_Topic_Other_Kinds_of_Iteration_Spaces">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Advanced_Topic_Other_Kinds_of_Iteration_Spaces"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Advanced Topic: Other Kinds of Iteration Spaces</h1>
- 
-  
-  <div>
-	 <p>The examples so far have used the class 
-		<samp class="codeph">blocked_range<T></samp> to specify ranges. This class is
-		useful in many situations, but it does not fit every situation. You can use
-		Intel® Threading Building Blocks to define your own iteration space objects.
-		The object must specify how it can be split into subspaces by providing two
-		methods and a "splitting constructor". If your class is called 
-		<samp class="codeph">R</samp>, the methods and constructor could be as follows:
-	 </p>
-
-	 <pre>class R {
-    // True if range is empty
-    bool empty() const;
-    // True if range can be split into non-empty subranges
-    bool is_divisible() const;
-    // Split r into subranges r and *this
-    R( R& r, split );
-    ...
-};</pre>
-	 <p>The method 
-		<samp class="codeph">empty</samp> should return true if the range is empty. The
-		method 
-		<samp class="codeph">is_divisible</samp> should return true if the range can be
-		split into two non-empty subspaces, and such a split is worth the overhead. The
-		splitting constructor should take two arguments: 
-	 </p>
- 
-	 <ul type="disc">
-		<li>
-		  <p>The first of type 
-			 <samp class="codeph">R</samp> 
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>The second of type 
-	 <span class="option">tbb::split</span>
-	 </p>
-
-	 </li>
-
-	 </ul>
-
-	 <p>The second argument is not used; it serves only to distinguish the
-		constructor from an ordinary copy constructor. The splitting constructor should
-		attempt to split 
-		<samp class="codeph">r</samp> roughly into two halves, and update 
-		<samp class="codeph">r</samp> to be the first half, and let constructed object be
-		the second half. The two halves should be non-empty. The parallel algorithm
-		templates call the splitting constructor on 
-		<samp class="codeph">r</samp> only if 
-		<samp class="codeph">r.is_divisible</samp> is true. 
-	 </p>
-
-	 <p>The iteration space does not have to be linear. Look at 
-		<samp class="codeph">tbb/blocked_range2d.h</samp> for an example of a range that is
-		two-dimensional. Its splitting constructor attempts to split the range along
-		its longest axis. When used with 
-		<samp class="codeph">parallel_for</samp>, it causes the loop to be "recursively
-		blocked" in a way that improves cache usage. This nice cache behavior means
-		that using 
-		<samp class="codeph">parallel_for</samp> over a 
-		<samp class="codeph">blocked_range2d<T></samp> can make a loop run faster than
-		the sequential equivalent, even on a single processor.
-	 </p>
-
-	 <div class="section"><h2 class="sectiontitle">Code Samples</h2>
-		
-		<p>The directory 
-		  <samp class="codeph">examples/parallel_for/seismic</samp> contains a simple
-		  seismic wave simulation based on 
-		  <samp class="codeph">parallel_for</samp> and 
-		  <samp class="codeph">blocked_range</samp>. The directory 
-		  <samp class="codeph">examples/parallel_for/tachyon</samp> contains a more complex
-		  example of a ray tracer based on 
-		  <samp class="codeph">parallel_for</samp> and 
-		  <samp class="codeph">blocked_range2d</samp>.
-		</p>
-
-	 </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Atomic_Operations.htm b/doc/help/tbb_userguide/Atomic_Operations.htm
deleted file mode 100755
index a446990..0000000
--- a/doc/help/tbb_userguide/Atomic_Operations.htm
+++ /dev/null
@@ -1,388 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Atomic Operations">
-<meta name="DC.subject" content="Atomic Operations">
-<meta name="keywords" content="Atomic Operations">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Why_atomic_T_Has_No_Constructors.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Memory_Consistency.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Atomic_Operations">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Atomic Operations</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Atomic_Operations">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Atomic_Operations"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Atomic Operations</h1>
- 
-  
-  <div>
-	 <p>You can avoid mutual exclusion using atomic operations. When a thread
-		performs an atomic operation, the other threads see it as happening
-		instantaneously. The advantage of atomic operations is that they are relatively
-		quick compared to locks, and do not suffer from deadlock and convoying. The
-		disadvantage is that they only do a limited set of operations, and often these
-		are not enough to synthesize more complicated operations efficiently. But
-		nonetheless you should not pass up an opportunity to use an atomic operation in
-		place of mutual exclusion. Class 
-		<samp class="codeph">atomic<<var>T</var>></samp> implements atomic
-		operations with C++ style.
-	 </p>
-
-	 <p>A classic use of atomic operations is for thread-safe reference
-		counting. Suppose x is a reference count of type 
-		<samp class="codeph">int</samp>, and the program needs to take some action when the
-		reference count becomes zero. In single-threaded code, you could use a plain 
-		<samp class="codeph">int</samp> for x, and write 
-		<samp class="codeph">--x; if(x==0) action().</samp> But this method might fail for
-		multithreaded code, because two threads might interleave their operations as
-		shown in the following table, where t<sub>a</sub> and t<sub>b</sub> represent
-		machine registers, and time progresses downwards:
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl12"><!-- --></a><table cellpadding="4" summary="" id="tbl12" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Interleaving of Machine Instructions</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="53.92156862745098%" id="d126840e63">
-			 <p>Thread A
-			 </p>
-
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="46.07843137254902%" id="d126840e69">
-			 <p>Thread B
-			 </p>
-
-		  </th>
-
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre>t<sub>a</sub>  = x</pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre> </pre>
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre> </pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre>t<sub>b</sub> = x</pre>
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre>x = t<sub>a</sub> -<sub> </sub>1</pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre> </pre>
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre> </pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre>x = t<sub>b</sub> –<sub> </sub>1</pre>
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre>if( x==0 )</pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre> </pre>
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="53.92156862745098%" headers="d126840e63 ">
-			 <pre> </pre>
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="46.07843137254902%" headers="d126840e69 ">
-			 <pre>if( x==0 )</pre>
-		  </td>
-
-		</tr>
-
-	 </tbody>
-
-  </table>
-</div>
-
-  <p>Though the code intended for 
-	 <samp class="codeph">x</samp> to be decremented twice, it ends up with only one less
-	 than its original value. Also, another problem results because the test of 
-	 <var>x</var> is separate from the decrement: If 
-	 <var>x</var> starts out as two, and both threads decrement 
-	 <var>x</var> before either thread evaluates the 
-	 <samp class="codeph">if</samp> condition, 
-	 <em>both</em> threads would call 
-	 <samp class="codeph">action()</samp>. To correct this problem, you need to ensure that
-	 only one thread at a time does the decrement 
-	 <em>and</em> ensure that the value checked by the "if" is the result of the
-	 decrement. You can do this by introducing a mutex, but it is much faster and
-	 simpler to declare 
-	 <var>x</var> as 
-	 <samp class="codeph">atomic<int></samp> and write
-	 "<samp class="codeph">if(--<var>x</var>==0) action()</samp>". The method 
-	 <samp class="codeph">atomic<int>::operator--</samp> acts atomically; no other
-	 thread can interfere.
-  </p>
-
-  <p><samp class="codeph">atomic<<var>T</var>></samp> supports atomic
-	 operations on type 
-	 <var>T</var>, which must be an integral, enumeration, or pointer
-	 type. There are five fundamental operations supported, with additional
-	 interfaces in the form of overloaded operators for syntactic convenience. For
-	 example, 
-	 <samp class="codeph">++</samp>, 
-	 <samp class="codeph">--</samp>, 
-	 <samp class="codeph">-=</samp>, and 
-	 <samp class="codeph">+=</samp> operations on 
-	 <samp class="codeph">atomic<<var>T</var>></samp> are all forms of the
-	 fundamental operation 
-	 <em>fetch-and-add</em>. The following are the five fundamental operations on
-	 a variable 
-	 <var>x</var> of type 
-	 <samp class="codeph">atomic<<var>T</var>></samp>.
-  </p>
- 
-  
-<div class="tablenoborder"><a name="tbl13"><!-- --></a><table cellpadding="4" summary="" id="tbl13" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Fundamental Operations on a Variable x of Type atomic<T></span></caption> 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="30%">
-			 <p><samp class="codeph">= 
-				  <var>x</var></samp>
-			 </p>
-
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="70%">
-			 <p>read the value of 
-				<var>x</var>
-			 </p>
-
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="30%">
-			 <p><samp class="codeph"><var>x</var>=</samp>
-			 </p>
-
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="70%">
-			 <p>write the value of 
-				<var>x</var>, and return it
-			 </p>
-
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="30%">
-			 <p><samp class="codeph"><var>x</var>.fetch_and_store(y)</samp>
-			 </p>
-
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="70%">
-			 <p>do 
-				<samp class="codeph"><var>x</var>=<var>y</var></samp> and
-				return the old value of 
-				<var>x</var>
-			 </p>
-
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="30%">
-			 <p><samp class="codeph"><var>x</var>.fetch_and_add(<var>y</var>)</samp>
-			 </p>
-
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="70%">
-			 <p>do 
-				<samp class="codeph"><var>x</var>+=<var>y</var></samp> and
-				return the old value of 
-				<var>x</var>
-			 </p>
-
-		  </td>
-
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="30%">
-			 <p><samp class="codeph"><var>x</var>.compare_and_swap(<var>y</var>,<var>z</var>)</samp>
-			 </p>
-
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="70%">
-			 <p>if 
-				<var>x</var> equals 
-				<var>z</var>, then do 
-				<samp class="codeph"><var>x</var>=<var>y</var></samp>. In
-				either case, return old value of 
-				<var>x</var>.
-			 </p>
-
-		  </td>
-
-		</tr>
-
-	 </tbody>
-
-  </table>
-</div>
-
-  <p>Because these operations happen atomically, they can be used safely
-	 without mutual exclusion. Consider the following example:
-  </p>
-
-  <pre>atomic<unsigned> counter;
- 
-unsigned GetUniqueInteger() {
-    return counter.fetch_and_add(1);
-}</pre>
-  <p>The routine 
-	 <samp class="codeph">GetUniqueInteger</samp> returns a different integer each time it
-	 is called, until the counter wraps around. This is true no matter how many
-	 threads call 
-	 <samp class="codeph">GetUniqueInteger</samp> simultaneously. 
-  </p>
-
-  <p>The operation 
-	 <samp class="codeph">compare_and_swap</samp> is a fundamental operation to many
-	 non-blocking algorithms. A problem with mutual exclusion is that if a thread
-	 holding a lock is suspended, all other threads are blocked until the holding
-	 thread resumes. Non-blocking algorithms avoid this problem by using atomic
-	 operations instead of locking. They are generally complicated and require
-	 sophisticated analysis to verify. However, the following idiom is
-	 straightforward and worth knowing. It updates a shared variable 
-	 <samp class="codeph">globalx</samp> in a way that is somehow based on its old value:
-  </p>
-
-  <pre>atomic<int> globalx;
- 
-int UpdateX() {      // Update x and return old value of x.
-    do {
-        // Read globalX
-        oldx = globalx;
-        // Compute new value 
-        newx = ...expression involving oldx....
-        // Store new value if another thread has not changed globalX.
-    } while( globalx.compare_and_swap(newx,oldx)!=oldx );
-    return oldx;
-}</pre>
-  <p>Worse, some threads iterate the loop until no other thread interferes.
-	 Typically, if the update takes only a few instructions, the idiom is faster
-	 than the corresponding mutual-exclusion solution. 
-  </p>
-
-  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-	 <p>If the following sequence thwarts your intent, then the update idiom is
-		inappropriate:
-	 </p>
- 
-	 <ol>
-		<li>
-		  <p>A thread reads a value 
-			 <var>A</var> from 
-			 <samp class="codeph">globalx</samp>
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Other threads change 
-			 <samp class="codeph">globalx</samp> from 
-			 <var>A</var> to 
-			 <var>B</var> to 
-			 <var>A</var>
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>The thread in step 1 does its 
-			 <samp class="codeph">compare_and_swap</samp>, reading 
-			 <var>A</var> and thus not detecting the intervening change to
-			 
-			 <var>B</var>. 
-		  </p>
-
-		</li>
-
-	 </ol>
-
-  </div>
-  <p>The problem is called the 
-	 <em>ABA</em> 
-	 <em>problem</em>. It is frequently a problem in designing non-blocking
-	 algorithms for linked data structures. See the Internet for more information.
-  </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Why_atomic_T_Has_No_Constructors.htm">Why atomic<T> Has No Constructors in C++03 mode</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Memory_Consistency.htm">Memory Consistency</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Automatic_Chunking.htm b/doc/help/tbb_userguide/Automatic_Chunking.htm
deleted file mode 100755
index 160c253..0000000
--- a/doc/help/tbb_userguide/Automatic_Chunking.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Automatic Chunking">
-<meta name="DC.subject" content="Automatic Chunking">
-<meta name="keywords" content="Automatic Chunking">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Relation" scheme="URI" content="Controlling_Chunking.htm#tutorial_Controlling_Chunking">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Automatic_Chunking">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Automatic Chunking</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Automatic_Chunking">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Automatic_Chunking"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Automatic Chunking</h1>
- 
-   
-  <div> 
-	 <p>A parallel loop construct incurs overhead cost for every chunk of work
-		that it schedules. Since version 2.2, Intel® Threading Building Blocks (Intel® TBB) chooses chunk sizes
-		automatically, depending upon load balancing needs.<a href="#ftn1"><sup><sup>[1]</sup></sup></a>
-		The heuristic attempts to limit overheads while still providing ample
-		opportunities for load balancing. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>Typically a loop needs to take at least a million clock cycles to make
-		  it worth using 
-		  <samp class="codeph">parallel_for</samp>. For example, a loop that takes at least
-		  500 microseconds on a 2 GHz processor might benefit from 
-		  <samp class="codeph">parallel_for</samp>. 
-		</p>
- 
-	 </div> 
-	 <p>The default automatic chunking is recommended for most uses. As with
-		most heuristics, however, there are situations where controlling the chunk size
-		more precisely might yield better performance. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/parallel_for.htm">parallel_for</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Controlling_Chunking.htm#tutorial_Controlling_Chunking">Controlling Chunking 
-		  </a></div></div>
-</div> 
-<p class="tfootnote"><a id="ftn1"><sup>[1]</sup></a>  In Intel® TBB 2.1, the default
-		  was 
-		  <em>not</em> automatic. Compile with 
-		  <samp class="codeph">TBB_DEPRECATED=1</samp> to get the old default behavior.</p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Automically_Replacing_malloc.htm b/doc/help/tbb_userguide/Automically_Replacing_malloc.htm
deleted file mode 100755
index e06e6f4..0000000
--- a/doc/help/tbb_userguide/Automically_Replacing_malloc.htm
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation">
-<meta name="DC.subject" content="Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation, malloc, dynamic memory allocation">
-<meta name="keywords" content="Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation, malloc, dynamic memory allocation">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Memory_Allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Automically_Replacing_malloc">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Automically_Replacing_malloc">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Automically_Replacing_malloc"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Automatically Replacing 
-	 <samp class="codeph">malloc</samp> and Other C/C++ Functions for Dynamic Memory
-	 Allocation</h1>
- 
-  
-  <div> 
-	 <p>On Windows* and Linux* operating systems, it is possible to
-		automatically replace all calls to standard functions for dynamic memory
-		allocation (such as 
-		<samp class="codeph">malloc</samp>) with the Intel® Threading Building Blocks
-		(Intel® TBB) scalable equivalents. Doing so can sometimes improve application
-		performance. 
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Memory_Allocation.htm">Memory Allocation</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm">Linux* OS C/C++ Dynamic Memory Interface Replacement</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm">Windows* OS C/C++ Dynamic Memory Interface Replacement</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Bandwidth_and_Cache_Affinity.htm b/doc/help/tbb_userguide/Bandwidth_and_Cache_Affinity.htm
deleted file mode 100755
index 42a1620..0000000
--- a/doc/help/tbb_userguide/Bandwidth_and_Cache_Affinity.htm
+++ /dev/null
@@ -1,181 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Bandwidth and Cache Affinity">
-<meta name="DC.subject" content="Bandwidth and Cache Affinity">
-<meta name="keywords" content="Bandwidth and Cache Affinity">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Bandwidth_and_Cache_Affinity">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Bandwidth and Cache Affinity</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Bandwidth_and_Cache_Affinity">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Bandwidth_and_Cache_Affinity"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Bandwidth and Cache Affinity</h1>
- 
-   
-  <div> 
-	 <p>For a sufficiently simple function 
-		<samp class="codeph">Foo</samp>, the examples might not show good speedup when
-		written as parallel loops. The cause could be insufficient system bandwidth
-		between the processors and memory. In that case, you may have to rethink your
-		algorithm to take better advantage of cache. Restructuring to better utilize
-		the cache usually benefits the parallel program as well as the serial program. 
-	 </p>
- 
-	 <p>An alternative to restructuring that works in some cases is 
-		<samp class="codeph">affinity_partitioner.</samp> It not only automatically chooses
-		the grainsize, but also optimizes for cache affinity. Using 
-		<samp class="codeph">affinity_partitioner</samp> can significantly improve
-		performance when: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>The computation does a few operations per data access. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The data acted upon by the loop fits in cache. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The loop, or a similar loop, is re-executed over the same data. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>There are more than two hardware threads available. If only two
-			 threads are available, the default scheduling in Intel® Threading Building
-			 Blocks (Intel® TBB) usually provides sufficient cache affinity. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The following code shows how to use 
-		<samp class="codeph">affinity_partitioner</samp>. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-void ParallelApplyFoo( float a[], size_t n ) {
-    static affinity_partitioner ap;
-    parallel_for(blocked_range<size_t>(0,n), ApplyFoo(a), ap);
-}
- 
-void TimeStepFoo( float a[], size_t n, int steps ) {    
-    for( int t=0; t<steps; ++t )
-        ParallelApplyFoo( a, n );
-}</pre> 
-	 <p>In the example, the 
-		<samp class="codeph">affinity_partitioner</samp> object 
-		<samp class="codeph">ap</samp> lives between loop iterations. It remembers where
-		iterations of the loop ran, so that each iteration can be handed to the same
-		thread that executed it before. The example code gets the lifetime of the
-		partitioner right by declaring the 
-		<samp class="codeph">affinity_partitioner</samp> as a local static object. Another
-		approach would be to declare it at a scope outside the iterative loop in 
-		<samp class="codeph">TimeStepFoo</samp>, and hand it down the call chain to 
-		<samp class="codeph">parallel_for</samp>. 
-	 </p>
- 
-	 <p>If the data does not fit across the system’s caches, there may be little
-		benefit. The following figure shows the situations. 
-	 </p>
- 
-	 <div class="fignone" id="fig3"><a name="fig3"><!-- --></a><span class="figcap">Benefit of Affinity Determined by Relative Size of Data Set and
-		  Cache</span> 
-		<br><img src="Images/image007.jpg" width="453" height="178"><br> 
-	 </div>
- 
-	 <p>The next figure shows how parallel speedup might vary with the size of a
-		data set. The computation for the example is 
-		<samp class="codeph">A[i]+=B[i]</samp> for 
-		<samp class="codeph">i</samp> in the range [0,N). It was chosen for dramatic effect.
-		You are unlikely to see quite this much variation in your code. The graph shows
-		not much improvement at the extremes. For small N, parallel scheduling overhead
-		dominates, resulting in little speedup. For large N, the data set is too large
-		to be carried in cache between loop invocations. The peak in the middle is the
-		sweet spot for affinity. Hence 
-		<samp class="codeph">affinity_partitioner</samp> should be considered a tool, not a
-		cure-all, when there is a low ratio of computations to memory accesses. 
-	 </p>
- 
-	 <div class="fignone" id="fig4"><a name="fig4"><!-- --></a><span class="figcap">Improvement from Affinity Dependent on Array Size</span> 
-		<br><img src="Images/image008.jpg" width="551" height="192"><br> 
-	 </div>
- 
-	 <p> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"> 
-		   
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="100%" id="d128272e134">
-				  <p>Optimization Notice
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="bgcolor(#ccecff)" bgcolor="#ccecff" valign="top" width="100%" headers="d128272e134 ">
-				  Intel's compilers may or may not optimize to the same degree for non-Intel
-				  microprocessors for optimizations that are not unique to Intel microprocessors.
-				  These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other
-				  optimizations. Intel does not guarantee the availability, functionality, or
-				  effectiveness of any optimization on microprocessors not manufactured by Intel.
-				  Microprocessor-dependent optimizations in this product are intended for use
-				  with Intel microprocessors. Certain optimizations not specific to Intel
-				  microarchitecture are reserved for Intel microprocessors. Please refer to the
-				  applicable product User and Reference Guides for more information regarding the
-				  specific instruction sets covered by this notice. 
-				  <p>Notice revision #20110804 
-				  </p>
-
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/parallel_for.htm">parallel_for</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Cancellation_Without_An_Exception.htm b/doc/help/tbb_userguide/Cancellation_Without_An_Exception.htm
deleted file mode 100755
index bf8bb34..0000000
--- a/doc/help/tbb_userguide/Cancellation_Without_An_Exception.htm
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Cancellation Without An Exception">
-<meta name="DC.subject" content="Cancellation Without An Exception">
-<meta name="keywords" content="Cancellation Without An Exception">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Exceptions_and_Cancellation.htm">
-<meta name="DC.Relation" scheme="URI" content="Lambda_Expressions.htm#tutorial_Lambda_Expressions">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Cancellation_Without_An_Exception">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Cancellation Without An Exception</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Cancellation_Without_An_Exception">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Cancellation_Without_An_Exception"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Cancellation Without An Exception</h1>
- 
-   
-  <div> 
-	 <p>To cancel an algorithm but not throw an exception, use the expression 
-		<samp class="codeph">task::self().cancel_group_execution()</samp>. The part 
-		<samp class="codeph">task::self()</samp> references the innermost Intel® TBB task on
-		the current thread. Calling 
-		<samp class="codeph">cancel_group_execution()</samp> cancels all tasks in its 
-		<samp class="codeph">task_group_context</samp>, which is explained in more detail in
-		
-		<strong>Cancellation and Nested Parallelism</strong>. The method returns 
-		<samp class="codeph">true</samp> if it actually causes cancellation, 
-		<samp class="codeph">false</samp> if the 
-		<samp class="codeph">task_group_context</samp> was already cancelled. 
-	 </p>
- 
-	 <p>The example below shows how to use 
-		<samp class="codeph">task::self().cancel_group_execution()</samp>. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
-#include <vector>
-#include <iostream>
- 
-using namespace tbb;
-using namespace std;
- 
-vector<int> Data;
- 
-struct Update {
-    void operator()( const blocked_range<int>& r ) const {
-        for( int i=r.begin(); i!=r.end(); ++i )
-            if( i<Data.size() ) {
-                ++Data[i];
-            } else {
-                // Cancel related tasks.
-                if( task::self().cancel_group_execution() )
-                    cout << "Index " << i << " caused cancellation\n";
-                return;
-            }
-    }
-};
- 
-int main() {
-    Data.resize(1000);
-    parallel_for( blocked_range<int>(0, 2000), Update());
-    return 0;
-}</pre> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Exceptions_and_Cancellation.htm">Exceptions and Cancellation</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Lambda_Expressions.htm#tutorial_Lambda_Expressions">Lambda Expressions
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Cancellation_and_Nested_Parallelism.htm b/doc/help/tbb_userguide/Cancellation_and_Nested_Parallelism.htm
deleted file mode 100755
index d756d3f..0000000
--- a/doc/help/tbb_userguide/Cancellation_and_Nested_Parallelism.htm
+++ /dev/null
@@ -1,234 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Cancellation and Nested Parallelism">
-<meta name="DC.subject" content="Cancellation and Nested Parallelism">
-<meta name="keywords" content="Cancellation and Nested Parallelism">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Exceptions_and_Cancellation.htm">
-<meta name="DC.Relation" scheme="URI" content="The_Task_Scheduler.htm#tutorial_The_Task_Scheduler">
-<meta name="DC.Relation" scheme="URI" content="Lambda_Expressions.htm#tutorial_Lambda_Expressions">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Cancellation_and_Nested_Parallelism">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Cancellation and Nested Parallelism</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Cancellation_and_Nested_Parallelism">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Cancellation_and_Nested_Parallelism"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Cancellation and Nested Parallelism</h1>
- 
-   
-  <div> 
-	 <p>The discussion so far was simplified by assuming non-nested parallelism
-		and skipping details of 
-		<samp class="codeph">task_group_context</samp>. This topic explains both. 
-	 </p>
- 
-	 <p>An Intel® Threading Building Blocks (Intel® TBB) algorithm executes by
-		creating 
-		<samp class="codeph">task</samp> objects that execute the snippets of code that you
-		supply to the algorithm template. By default, these 
-		<samp class="codeph">task</samp> objects are associated with a 
-		<samp class="codeph">task_group_context</samp> created by the algorithm. Nested
-		Intel® TBB algorithms create a tree of these 
-		<samp class="codeph">task_group_context</samp> objects. Cancelling a 
-		<samp class="codeph">task_group_context</samp> cancels all of its child 
-		<samp class="codeph">task_group_context</samp> objects, and transitively all its
-		descendants. Hence an algorithm and all algorithms it called can be cancelled
-		with a single request. 
-	 </p>
- 
-	 <p>Exceptions propagate upwards. Cancellation propagates downwards. The
-		opposition interplays to cleanly stop a nested computation when an exception
-		occurs. For example, consider the tree in the following figure. Imagine that
-		each node represents an algorithm and its 
-		<samp class="codeph">task_group_context</samp>. 
-	 </p>
- 
-	 <div class="fignone" id="fig6"><a name="fig6"><!-- --></a><span class="figcap">Tree of 
-		  <span class="keyword">task_group_context</span></span> 
-		<br><img src="Images/image013.jpg" width="261" height="131"><br> 
-	 </div>
- 
-	 <p>Suppose that the algorithm in C throws an exception and no node catches
-		the exception. Intel® TBB propagates the exception upwards, cancelling related
-		subtrees downwards, as follows: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Handle exception in C: 
-		  </p>
- 
-		  <ol class="abc" type="a"> 
-			 <li> 
-				<p>Capture exception in C. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Cancel tasks in C. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Throw exception from C to B. 
-				</p>
- 
-			 </li>
- 
-		  </ol>
- 
-		</li>
- 
-		<li> 
-		  <p>Handle exception in B: 
-		  </p>
- 
-		  <ol class="abc" type="a"> 
-			 <li> 
-				<p>Capture exception in B. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Cancel tasks in B and, by downwards propagation, in D. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Throw an exception out of B to A. 
-				</p>
- 
-			 </li>
- 
-		  </ol>
- 
-		</li>
- 
-		<li> 
-		  <p>Handle exception in A: 
-		  </p>
- 
-		  <ol class="abc" type="a"> 
-			 <li> 
-				<p>Capture exception in A. 
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Cancel tasks in A and, by downwards propagation, in E, F, and G.
-				  
-				</p>
- 
-			 </li>
- 
-			 <li> 
-				<p>Throw an exception upwards out of A. 
-				</p>
- 
-			 </li>
- 
-		  </ol>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>If your code catches the exception at any level, then Intel® TBB does
-		not propagate it any further. For example, an exception that does not escape
-		outside the body of a 
-		<samp class="codeph">parallel_for</samp> does not cause cancellation of other
-		iterations. 
-	 </p>
- 
-	 <p>To prevent downwards propagation of cancellation into an algorithm,
-		construct an 'isolated' 
-		<samp class="codeph">task_group_context</samp> on the stack and pass it to the
-		algorithm explicitly. The 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp> in
-		the following example shows how. The example uses C++11 lambda expressions for
-		brevity. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-bool Data[1000][1000];
- 
-int main() {
-    try {
-        parallel_for( 0, 1000, 1, 
-            []( int i ) {
-                task_group_context root(task_group_context::isolated);
-                parallel_for( 0, 1000, 1,
-                   []( int  ) {
-                       Data[i][j] = true;
-                   }<span style="color:blue">,</span>
-                   <span style="color:blue"><strong>root</strong></span>);
-                throw "oops";
-            });
-    } catch(...) {
-    }
-    return 0;
-}</pre> 
-	 <p>The example performs two parallel loops: an outer loop over 
-		<samp class="codeph">i</samp> and inner loop over 
-		<samp class="codeph">j</samp>. The creation of the isolated 
-		<samp class="codeph">task_group_context</samp> 
-		<samp class="codeph">root</samp> protects the inner loop from downwards propagation
-		of cancellation from the 
-		<samp class="codeph">i</samp> loop. When the exception propagates to the outer loop,
-		any pending 
-		<samp class="codeph">outer</samp> iterations are cancelled, but not inner iterations
-		for an outer iteration that started. Hence when the program completes, each row
-		of 
-		<samp class="codeph">Data</samp> may be different, depending upon whether its
-		iteration 
-		<samp class="codeph">i</samp> ran at all, but within a row, the elements will be
-		homogenously 
-		<samp class="codeph">false</samp> or 
-		<samp class="codeph">true</samp>, not a mixture. 
-	 </p>
- 
-	 <p>Removing the blue text would permit cancellation to propagate down into
-		the inner loop. In that case, a row of 
-		<samp class="codeph">Data</samp> might end up with both 
-		<samp class="codeph">true</samp> and 
-		<samp class="codeph">false</samp> values. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Exceptions_and_Cancellation.htm">Exceptions and Cancellation</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="The_Task_Scheduler.htm#tutorial_The_Task_Scheduler">The Task Scheduler 
-		  </a></div>
-<div><a href="Lambda_Expressions.htm#tutorial_Lambda_Expressions">Lambda Expressions 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Concurrent_Queue_Classes.htm b/doc/help/tbb_userguide/Concurrent_Queue_Classes.htm
deleted file mode 100755
index 5447cae..0000000
--- a/doc/help/tbb_userguide/Concurrent_Queue_Classes.htm
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Concurrent Queue Classes">
-<meta name="DC.subject" content="Concurrent Queue Classes">
-<meta name="keywords" content="Concurrent Queue Classes">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Containers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/When_Not_to_Use_Queues.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Concurrent_Queue_Classes">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Concurrent Queue Classes</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Concurrent_Queue_Classes">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Concurrent_Queue_Classes"><!-- --></a>
-
-
-<h1 class="topictitle1">Concurrent Queue Classes</h1>
-
-<div><p>Template class <samp class="codeph">concurrent_queue<<em>T,Alloc</em>></samp> implements a concurrent queue with values of type <samp class="codeph">T</samp>. Multiple threads may simultaneously push and pop elements from the queue. The queue is unbounded and has no blocking operations.  The fundamental operations on it are <samp class="codeph">push</samp> and <samp class="codeph">try_pop</samp>. The <samp class="codeph">push</samp> operation works just like <samp class="co [...]
-<p>For example, consider the following serial code:</p>
-
-<pre>        extern std::queue<T> MySerialQueue;
-        T item;
-        if( !MySerialQueue.empty() ) {
-            item = MySerialQueue.front(); 
-            MySerialQueue.pop_front();
-            ... <em>process item</em>...
-        }</pre>
-<p>Even if each <span class="option">std::queue</span> method were implemented in a thread-safe manner, the composition of those methods as shown in the example would not be thread safe if there were other threads also popping from the same queue. For example, <samp class="codeph">MySerialQueue.empty()</samp> might return true just before another thread snatches the last item from <samp class="codeph">MySerialQueue</samp>. </p>
-<p>The equivalent thread-safe Intel® Threading Building Blocks (Intel® TBB) code is:</p>
-
-<pre>        extern concurrent_queue<T> MyQueue;
-        T item;
-        if( MyQueue.try_pop(item) ) {
-            ...<em>process item</em>...
-        }            </pre>
-<p>In a single-threaded program, a queue is a first-in first-out structure. But if multiple threads are pushing and popping concurrently, the definition of "first" is uncertain. Use of <samp class="codeph">concurrent_queue</samp> guarantees that if a thread pushes two values, and another thread pops those two values, they will be popped in the same order that they were pushed.</p>
-<p>Template class <samp class="codeph">concurrent_queue</samp> is unbounded and has no methods that wait. It is up to the user to provide synchronization to avoid overflow, or to wait for the queue to become non-empty. Typically this is appropriate when the synchronization has to be done at a higher level.  </p>
-<p>Template class <samp class="codeph">concurrent_bounded_queue<<em>T,Alloc</em>></samp> is a variant that adds blocking operations and the ability to specify a capacity. The methods of particular interest on it are: </p>
-
-<ul type="disc"><li><p><samp class="codeph">pop(<em>item</em>)</samp> waits until it can succeed. </p>
-</li>
-<li><p><samp class="codeph">push(<em>item</em>)</samp> waits until it can succeed without exceeding the queue's capacity.</p>
-</li>
-<li><p><samp class="codeph">try_push(<em>item</em>)</samp> pushes <var>item</var> only if it would not exceed the queue's capacity.</p>
-</li>
-<li><p>size() returns a <em>signed</em> integer.</p>
-</li>
-</ul>
-<p>The value of <span class="option">concurrent_queue::size()</span> is defined as the number of push operations started minus the number of pop operations started. If pops outnumber pushes, <samp class="codeph">size()</samp> becomes negative. For example, if a <samp class="codeph">concurrent_queue</samp> is empty, and there are <var>n</var> pending pop operations, <samp class="codeph">size()</samp> returns <span class="eqsymbol">-</span><var>n</var>. This provides an easy way for produc [...]
-<p>By default, a <samp class="codeph">concurrent_bounded_queue</samp> is unbounded. It may hold any number of values, until memory runs out. It can be bounded by setting the queue capacity with method <samp class="codeph">set_capacity</samp>.Setting the capacity causes <samp class="codeph">push</samp> to block until there is room in the queue. Bounded queues are slower than unbounded queues, so if there is a constraint elsewhere in your program that prevents the queue from becoming too l [...]
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Containers.htm">Containers</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm">Iterating Over a Concurrent Queue for Debugging</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/When_Not_to_Use_Queues.htm">When Not to Use Queues</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Containers.htm b/doc/help/tbb_userguide/Containers.htm
deleted file mode 100755
index 3fd563b..0000000
--- a/doc/help/tbb_userguide/Containers.htm
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Containers">
-<meta name="DC.subject" content="Containers">
-<meta name="keywords" content="Containers">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/concurrent_hash_map.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/concurrent_vector.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Concurrent_Queue_Classes.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Summary_of_Containers.htm">
-<meta name="DC.Relation" scheme="URI" content="Task-Based_Programming.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Containers">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Containers</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Containers">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Containers"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Containers</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) provides highly concurrent
-		container classes. These containers can be used with raw Windows* OS or Linux*
-		OS threads, or in conjunction with task-based programming. 
-	 </p>
- 
-	 <p>A concurrent container allows multiple threads to concurrently access
-		and update items in the container. Typical C++ STL containers do not permit
-		concurrent update; attempts to modify them concurrently often result in
-		corrupting the container. STL containers can be wrapped in a mutex to make them
-		safe for concurrent access, by letting only one thread operate on the container
-		at a time, but that approach eliminates concurrency, thus restricting parallel
-		speedup. 
-	 </p>
- 
-	 <p>Containers provided by Intel® TBB offer a much higher level of
-		concurrency, via one or both of the following methods: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><strong>Fine-grained locking:</strong> Multiple threads operate on the
-			 container by locking only those portions they really need to lock. As long as
-			 different threads access different portions, they can proceed concurrently. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Lock-free techniques:</strong> Different threads account and correct
-			 for the effects of other interfering threads. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>Notice that highly-concurrent containers come at a cost. They
-		typically have higher overheads than regular STL containers. Operations on
-		highly-concurrent containers may take longer than for STL containers.
-		Therefore, use highly-concurrent containers when the speedup from the
-		additional concurrency that they enable outweighs their slower sequential
-		performance. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>As with most objects in C++, the constructor or destructor of a
-		  container object must not be invoked concurrently with another operation on the
-		  same object. Otherwise the resulting race may cause the operation to be
-		  executed on an undefined object. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/concurrent_hash_map.htm">concurrent_hash_map</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/concurrent_vector.htm">concurrent_vector</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Concurrent_Queue_Classes.htm">Concurrent Queue Classes</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Summary_of_Containers.htm">Summary of Containers</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Task-Based_Programming.htm">Task Based Programming
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Continuation_Passing.htm b/doc/help/tbb_userguide/Continuation_Passing.htm
deleted file mode 100755
index e4101de..0000000
--- a/doc/help/tbb_userguide/Continuation_Passing.htm
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Continuation Passing">
-<meta name="DC.subject" content="Continuation Passing">
-<meta name="keywords" content="Continuation Passing">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Continuation_Passing">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Continuation Passing</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Continuation_Passing">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Continuation_Passing"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Continuation Passing</h1>
- 
-   
-  <div> 
-	 <p>Method 
-		<samp class="codeph">spawn_and_wait_for_all</samp> enables an executing parent task
-		to wait until its child tasks complete, but can incur some inefficiency. When a
-		thread calls 
-		<samp class="codeph">spawn_and_wait_for_all</samp>, it keeps busy until all of the
-		childen complete by working on other tasks. Sometimes the parent task becomes
-		ready to continue, but cannot do so immediately because its thread is still
-		executing one of the other tasks. The solution is for the parent to not wait on
-		its children, and instead spawn both children and return. The children are
-		allocated not as children of the parent, but as children of the parent’s 
-		<em>continuation task</em>. Any idle thread can steal and run the
-		continuation task when its children complete. 
-	 </p>
- 
-	 <p>The "continuation-passing" variant of 
-		<samp class="codeph">FibTask</samp> described in 
-		<a href="Simple_Example_Fibonacci_Numbers.htm#tutorial_Simple_Example_Fibonacci_Numbers">Simple Example</a> is shown below. 
-	 <ul type="disc">
-		<li>
-		  <p>Insertions are shown in 
-			 <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Deletions are commented out.
-		  </p>
-
-		</li>
-
-	 </ul>
-
-	 </p>
-
-	 <pre><span style="color:blue"><strong>struct FibContinuation: public task {
-    long* const sum;
-    long x, y;
-    FibContinuation( long* sum_ ) : sum(sum_) {}
-    task* execute() {
-        *sum = x+y;
-        return NULL;
-    }
-};</strong></span>
- 
-struct FibTask: public task {
-    const long n;
-    long* const sum;
-    FibTask( long n_, long* sum_ ) :
-        n(n_), sum(sum_)
-    {}
-    task* execute() {
-        if( n<CutOff ) {
-            *sum = SerialFib(n);
-            return NULL;
-        } else {
-            // long x, y; This line removed 
-            <span style="color:blue"><strong>FibContinuation& c = 
-                *new( allocate_continuation() ) FibContinuation(sum);</strong></span>
-            FibTask& a = *new( <span style="color:blue"><strong>c.</strong></span>allocate_child() ) FibTask(n-2,&<span style="color:blue">c.</span>x);
-            FibTask& b = *new( <span style="color:blue"><strong>c.</strong></span>allocate_child() ) FibTask(n-1,&<span style="color:blue">c.</span>y);
-            // Set ref_count to "two children plus one for the wait".
-            <span style="color:blue"><strong>c.</strong></span>set_ref_count(<span style="color:blue"><strong>2</strong></span>);
-            spawn( b );
-            <span style="color:blue"><strong>spawn</strong></span>( a );
-	    // *sum = x+y; This line removed
-            return NULL;
-        }
-    }
-};</pre> 
-	 <p>The following differences between the original version and the
-		continuation version need to be understood: 
-	 </p>
- 
-	 <p>The big difference is that in the original version 
-		<samp class="codeph">x</samp> and 
-		<samp class="codeph">y</samp> were local variables in method 
-		<samp class="codeph">execute</samp>. In the continuation-passing version, they
-		cannot be local variables, because the parent returns before its children
-		complete. Instead, they are fields of the continuation task 
-		<samp class="codeph">FibContinuation.</samp> 
-	 </p>
- 
-	 <p>The allocation logic is changed. The continuation is allocated with 
-		<samp class="codeph">allocate_continuation</samp>. It is similar to 
-		<samp class="codeph">allocate_child</samp>, except that it forwards the 
-		<em>successor</em> of 
-		<samp class="codeph">this</samp> to 
-		<samp class="codeph">c</samp>, and sets the 
-		<em>successor</em> of 
-		<samp class="codeph">this</samp> to NULL. The following figure summarizes the
-		transformation: 
-	 </p>
- 
-	 <div class="fignone" id="fig9"><a name="fig9"><!-- --></a><span class="figcap">Action of 
-		  <samp class="codeph">allocate_continuation</samp></span> 
-		<br><img src="Images/image016.jpg" width="432" height="128"><br> 
-	 </div>
- 
-	 <p>A property of the transformation is that it does not change the
-		reference count of the successor, and thus avoids interfering with
-		reference-counting logic. 
-	 </p>
- 
-	 <p>The reference count is set to 
-		<samp class="codeph">2</samp>, the number of children. In the original version, it
-		was set to 
-		<samp class="codeph">3</samp> because 
-		<samp class="codeph">spawn_and_wait_for_all</samp> required the augmented count.
-		Furthermore, the code sets the reference count of the continuation instead of
-		the parent, because it is the execution of the continuation that waits on the
-		children. 
-	 </p>
- 
-	 <p>The pointer 
-		<samp class="codeph">sum</samp> is passed to the continuation by the constructor,
-		because it is now 
-		<samp class="codeph">FibContinuation</samp> that stores into 
-		<samp class="codeph">*sum</samp>. The children are still allocated with 
-		<samp class="codeph">allocate_child</samp>, but notice that now they are allocated
-		as children of the continuation 
-		<samp class="codeph">c</samp>, not the parent. This is so that 
-		<samp class="codeph">c</samp>, and not 
-		<samp class="codeph">this</samp>, becomes the successor of the children that is
-		automatically spawned when both children complete. If you accidentally used 
-		<samp class="codeph">this.allocate_child()</samp>, then the parent task would run
-		again after both children completed. 
-	 </p>
- 
-	 <p>If you remember how the original top-level code, 
-		<samp class="codeph">ParallelFib</samp>, was written, you might be worried now that
-		continuation-passing style breaks the code, because now the root 
-		<samp class="codeph">FibTask</samp> completes before the children are done, and the
-		top-level code used 
-		<samp class="codeph">spawn_root_and_wait</samp> to wait on the root 
-		<samp class="codeph">FibTask</samp>. This is not a problem, because 
-		<samp class="codeph">spawn_root_and_wait</samp> is designed to work correctly with
-		continuation-passing style. An invocation 
-		<samp class="codeph">spawn_root_and_wait(<var>x</var>)</samp> does not
-		actually wait for 
-		<var>x</var> to complete. Instead, it constructs a dummy
-		successor of 
-		<var>x</var>, and waits for the successors’s reference count to
-		be decremented. Because 
-		<samp class="codeph">allocate_continuation</samp> forwards this dummy successor to
-		the continuation, the dummy successor’s reference count is not decremented
-		until the continuation completes. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Controlling_Chunking.htm b/doc/help/tbb_userguide/Controlling_Chunking.htm
deleted file mode 100755
index 2b5017f..0000000
--- a/doc/help/tbb_userguide/Controlling_Chunking.htm
+++ /dev/null
@@ -1,302 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Controlling Chunking">
-<meta name="DC.subject" content="Controlling Chunking">
-<meta name="keywords" content="Controlling Chunking">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Relation" scheme="URI" content="Automatic_Chunking.htm#tutorial_Automatic_Chunking">
-<meta name="DC.Relation" scheme="URI" content="Bandwidth_and_Cache_Affinity.htm#tutorial_Bandwidth_and_Cache_Affinity">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Controlling_Chunking">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Controlling Chunking</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Controlling_Chunking">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Controlling_Chunking"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Controlling Chunking </h1>
- 
-   
-  <div> 
-	 <p>Chunking is controlled by a 
-		<em>partitioner</em> and a 
-		<em>grainsize.</em>To gain the most control over chunking, you specify
-		both. 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>Specify 
-			 <samp class="codeph">simple_partitioner()</samp> as the third argument to 
-			 <samp class="codeph">parallel_for</samp>. Doing so turns off automatic chunking.
-			 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Specify the grainsize when constructing the range. The thread
-			 argument form of the constructor is 
-			 <samp class="codeph">blocked_range<<var>T</var>>(<em>begin</em>,<em>end</em>,<em>grainsize</em>)</samp>.
-			 The default value of 
-			 <var>grainsize</var> is 1. It is in units of loop iterations
-			 per chunk. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>If the chunks are too small, the overhead may exceed the performance
-		advantage. 
-	 </p>
- 
-	 <p>The following code is the last example from 
-		<span class="keyword">parallel_for</span>, modified to use an explicit grainsize 
-		<samp class="codeph">G</samp>. Additions are shown in 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-void ParallelApplyFoo( float a[], size_t n ) {
-    parallel_for(blocked_range<size_t>(0,n<span style="color:blue"><strong>,G</strong></span>), ApplyFoo(a)<span style="color:blue">,</span> 
-                 simple_partitioner());
-}</pre> 
-	 <p>The grainsize sets a minimum threshold for parallelization. The 
-		<samp class="codeph">parallel_for</samp> in the example invokes 
-		<samp class="codeph">ApplyFoo::operator()</samp> on chunks, possibly of different
-		sizes. Let 
-		<em>chunksize</em> be the number of iterations in a chunk. Using 
-		<samp class="codeph">simple_partitioner</samp> guarantees that 
-		<span class="eqsymbol">⌈</span>G/2<span class="eqsymbol">⌉</span>
-		
-		<span class="eqsymbol">≤</span> 
-		<em>chunksize</em> 
-		<span class="eqsymbol">≤</span> G. 
-	 </p>
- 
-	 <p>There is also an intermediate level of control where you specify the
-		grainsize for the range, but use an 
-		<samp class="codeph">auto_partitioner</samp> and 
-		<samp class="codeph">affinity_partitioner</samp>. An 
-		<samp class="codeph">auto_partitioner</samp> is the default partitioner. Both
-		partitioners implement the automatic grainsize heuristic described in 
-		<strong>Automatic Chunking</strong>. An 
-		<samp class="codeph">affinity_partitioner</samp> implies an additional hint, as
-		explained later in Section 
-		<strong>Bandwidth and Cache Affinity</strong>. Though these partitioners may cause
-		chunks to have more than G iterations, they never generate chunks with less
-		than 
-		<span class="eqsymbol">⌈</span>G/2<span class="eqsymbol">⌉</span>
-		iterations. Specifying a range with an explicit grainsize may occasionally be
-		useful to prevent these partitioners from generating wastefully small chunks if
-		their heuristics fail. 
-	 </p>
- 
-	 <p>Because of the impact of grainsize on parallel loops, it is worth
-		reading the following material even if you rely on 
-		<samp class="codeph">auto_partitioner</samp> and 
-		<samp class="codeph">affinity_partitioner</samp> to choose the grainsize
-		automatically. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="fig1"><!-- --></a><table cellpadding="4" summary="" id="fig1" frame="void" border="1" rules="none" cellspacing="2"><caption><span class="tablecap">Packaging Overhead Versus Grainsize</span></caption> 
-		<tbody> 
-		  <tr> 
-			 <td class="noborder" align="center" valign="middle" width="NaN%"><br><img width="161" height="163" src="Images/image002.jpg"><br> 
-			 </td>
- 
-			 <td class="noborder" align="center" valign="middle" width="NaN%"><br><img width="157" height="144" src="Images/image004.jpg"><br> 
-			 </td>
- 
-		  </tr>
- 
-		  <tr> 
-			 <td class="noborder" align="center" valign="top" width="NaN%"> 
-				<p>Case A 
-				</p>
- 
-			 </td>
- 
-			 <td class="noborder" align="center" valign="top" width="NaN%"> 
-				<p>Case B 
-				</p>
- 
-			 </td>
- 
-		  </tr>
- 
-		</tbody>
- 
-	 </table>
-</div>
- 
-	 <p>The above figure illustrates the impact of grainsize by showing the
-		useful work as the gray area inside a brown border that represents overhead.
-		Both Case A and Case B have the same total gray area. Case A shows how too
-		small a grainsize leads to a relatively high proportion of overhead. Case B
-		shows how a large grainsize reduces this proportion, at the cost of reducing
-		potential parallelism. The overhead as a fraction of useful work depends upon
-		the grainsize, not on the number of grains. Consider this relationship and not
-		the total number of iterations or number of processors when setting a
-		grainsize. 
-	 </p>
- 
-	 <p>A rule of thumb is that 
-		<samp class="codeph">grainsize</samp> iterations of 
-		<samp class="codeph">operator()</samp> should take at least 100,000 clock cycles to
-		execute. For example, if a single iteration takes 100 clocks, then the 
-		<samp class="codeph">grainsize</samp> needs to be at least 1000 iterations. When in
-		doubt, do the following experiment: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Set the 
-			 <samp class="codeph">grainsize</samp> parameter higher than necessary. The
-			 grainsize is specified in units of loop iterations. If you have no idea of how
-			 many clock cycles an iteration might take, start with 
-			 <samp class="codeph">grainsize</samp>=100,000. The rationale is that each
-			 iteration normally requires at least one clock per iteration. In most cases,
-			 step 3 will guide you to a much smaller value. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Run your algorithm. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Iteratively halve the 
-			 <var>grainsize</var> parameter and see how much the algorithm
-			 slows down or speeds up as the value decreases. 
-		  </p>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>A drawback of setting a grainsize too high is that it can reduce
-		parallelism. For example, if the grainsize is 1000 and the loop has 2000
-		iterations, the 
-		<samp class="codeph">parallel_for</samp> distributes the loop across only two
-		processors, even if more are available. However, if you are unsure, err on the
-		side of being a little too high instead of a little too low, because too low a
-		value hurts serial performance, which in turns hurts parallel performance if
-		there is other parallelism available higher up in the call tree. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		<p>You do not have to set the grainsize too precisely. 
-		</p>
- 
-	 </div> 
-	 <p>The next figure shows the typical "bathtub curve" for execution time
-		versus grainsize, based on the floating point 
-		<samp class="codeph">a[i]=b[i]*c</samp> computation over a million indices. There is
-		little work per iteration. The times were collected on a four-socket machine
-		with eight hardware threads. 
-	 </p>
- 
-	 <div class="fignone" id="fig2"><a name="fig2"><!-- --></a><span class="figcap">Wall Clock Time Versus Grainsize </span> 
-		<br><img width="462" height="193" src="Images/image006.jpg"><br> 
-	 </div>
- 
-	 <p>The scale is logarithmic. The downward slope on the left side indicates
-		that with a grainsize of one, most of the overhead is parallel scheduling
-		overhead, not useful work. An increase in grainsize brings a proportional
-		decrease in parallel overhead. Then the curve flattens out because the parallel
-		overhead becomes insignificant for a sufficiently large grainsize. At the end
-		on the right, the curve turns up because the chunks are so large that there are
-		fewer chunks than available hardware threads. Notice that a grainsize over the
-		wide range 100-100,000 works quite well. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		<p>A general rule of thumb for parallelizing loop nests is to parallelize
-		  the outermost one possible. The reason is that each iteration of an outer loop
-		  is likely to provide a bigger grain of work than an iteration of an inner loop.
-		  
-		</p>
- 
-	 </div> 
-	 <p> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"> 
-		   
-		  <thead align="left">
-			 <tr>
-				<th class="cellrowborder" align="left" valign="top" width="100%" id="d130143e300">
-				  <p>Optimization Notice
-				  </p>
-
-				</th>
-
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="bgcolor(#ccecff)" bgcolor="#ccecff" valign="top" width="100%" headers="d130143e300 ">
-				  Intel's compilers may or may not optimize to the same degree for non-Intel
-				  microprocessors for optimizations that are not unique to Intel microprocessors.
-				  These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other
-				  optimizations. Intel does not guarantee the availability, functionality, or
-				  effectiveness of any optimization on microprocessors not manufactured by Intel.
-				  Microprocessor-dependent optimizations in this product are intended for use
-				  with Intel microprocessors. Certain optimizations not specific to Intel
-				  microarchitecture are reserved for Intel microprocessors. Please refer to the
-				  applicable product User and Reference Guides for more information regarding the
-				  specific instruction sets covered by this notice. 
-				  <p>Notice revision #20110804 
-				  </p>
-
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/parallel_for.htm">parallel_for</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Automatic_Chunking.htm#tutorial_Automatic_Chunking">Automatic Chunking 
-		  </a></div>
-<div><a href="Bandwidth_and_Cache_Affinity.htm#tutorial_Bandwidth_and_Cache_Affinity">Bandwidth and Cache Affinity 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Cook_Until_Done_parallel_do.htm b/doc/help/tbb_userguide/Cook_Until_Done_parallel_do.htm
deleted file mode 100755
index 41ad02e..0000000
--- a/doc/help/tbb_userguide/Cook_Until_Done_parallel_do.htm
+++ /dev/null
@@ -1,141 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Cook Until Done: parallel_do">
-<meta name="DC.subject" content="Cook Until Done: parallel_do">
-<meta name="keywords" content="Cook Until Done: parallel_do">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Complex_Loops.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Cook_Until_Done_parallel_do">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Cook Until Done: parallel_do</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Cook_Until_Done_parallel_do">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Cook_Until_Done_parallel_do"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Cook Until Done: parallel_do</h1>
- 
-  
-  <div>
-	 <p>For some loops, the end of the iteration space is not known in advance,
-		or the loop body may add more iterations to do before the loop exits. You can
-		deal with both situations using the template class 
-  <span class="option">tbb::parallel_do</span>.
-  </p>
-
-  <p>A linked list is an example of an iteration space that is not known in
-	 advance. In parallel programming, it is usually better to use dynamic arrays
-	 instead of linked lists, because accessing items in a linked list is inherently
-	 serial. But if you are limited to linked lists, the items can be safely
-	 processed in parallel, and processing each item takes at least a few thousand
-	 instructions, you can use 
-	 <samp class="codeph">parallel_do</samp> to gain some parallelism. 
-  </p>
-
-  <p>For example, consider the following serial code:
-  </p>
-
-  <pre>void SerialApplyFooToList( const std::list<Item>& list ) {
-    for( std::list<Item>::const_iterator i=list.begin() i!=list.end(); ++i ) 
-        Foo(*i);
-}</pre>
-  <p>If 
-	 <samp class="codeph">Foo</samp> takes at least a few thousand instructions to run, you
-	 can get parallel speedup by converting the loop to use 
-	 <samp class="codeph">parallel_do</samp>. To do so, define an object with a 
-	 <samp class="codeph">const</samp> qualified 
-	 <samp class="codeph">operator()</samp>. This is similar to a C++ function object from
-	 the C++ standard header 
-	 <samp class="codeph"><functional></samp>, except that 
-	 <samp class="codeph">operator()</samp> must be 
-	 <samp class="codeph">const</samp>.
-  </p>
-
-  <pre>class ApplyFoo {
-public:
-    void operator()( Item& item ) const {
-        Foo(item);
-    }
-};</pre>
-  <p>The parallel form of 
-	 <samp class="codeph">SerialApplyFooToList</samp> is as follows:
-  </p>
-
-  <pre>void ParallelApplyFooToList( const std::list<Item>& list ) {
-    parallel_do( list.begin(), list.end(), ApplyFoo() ); 
-}</pre>
-  <p>An invocation of 
-	 <samp class="codeph">parallel_do</samp> never causes two threads to act on an input
-	 iterator concurrently. Thus typical definitions of input iterators for
-	 sequential programs work correctly. This convenience makes 
-	 <samp class="codeph">parallel_do</samp> unscalable, because the fetching of work is
-	 serial. But in many situations, you still get useful speedup over doing things
-	 sequentially.
-  </p>
-
-  <p>There are two ways that 
-	 <samp class="codeph">parallel_do</samp> can acquire work scalably. 
-  </p>
- 
-  <ul type="disc">
-	 <li>
-		<p>The iterators can be random-access iterators.
-		</p>
-
-	 </li>
-
-	 <li>
-		<p>The body argument to 
-		  <samp class="codeph">parallel_do</samp>, if it takes a second argument 
-		  <em>feeder</em> of type 
-		  <samp class="codeph">parallel_do<Item>&</samp>, can add more work by
-		  calling 
-		  <samp class="codeph"><em>feeder</em>.add(<em>item</em>)</samp>. For example, suppose
-		  processing a node in a tree is a prerequisite to processing its descendants.
-		  With 
-		  <samp class="codeph">parallel_do</samp>, after processing a node, you could use 
-		  <samp class="codeph"><var>feeder</var>.add</samp> to add the descendant
-		  nodes. The instance of 
-		  <samp class="codeph">parallel_do</samp> does not terminate until all items have
-		  been processed. 
-		</p>
-
-	 </li>
-
-  </ul>
-
-  <div class="section"><h2 class="sectiontitle">Code Sample</h2>
-	 
-	 <p>The directory 
-		<samp class="codeph">examples/parallel_do/parallel_preorder</samp> contains a small
-		application that uses 
-		<samp class="codeph">parallel_do</samp> to perform parallel preorder traversal of an
-		acyclic directed graph. The example shows how 
-		<samp class="codeph">parallel_do_feeder</samp> can be used to add more work.
-	 </p>
-
-  </div>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Complex_Loops.htm">Parallelizing Complex Loops</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Debug_Versus_Release_Libraries.htm b/doc/help/tbb_userguide/Debug_Versus_Release_Libraries.htm
deleted file mode 100755
index 7d1cafa..0000000
--- a/doc/help/tbb_userguide/Debug_Versus_Release_Libraries.htm
+++ /dev/null
@@ -1,195 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Debug Versus Release Libraries">
-<meta name="DC.subject" content="Debug Versus Release Libraries">
-<meta name="keywords" content="Debug Versus Release Libraries">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/reference.htm#reference">
-<meta name="DC.Relation" scheme="URI" content="Initializing_and_Terminating_the_Library.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Debug_Versus_Release_Libraries">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Debug Versus Release Libraries</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Debug_Versus_Release_Libraries">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Debug_Versus_Release_Libraries"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Debug Versus Release Libraries</h1>
- 
-   
-  <div> 
-	 <p>The following table details the Intel® Threading Building
-     Blocks (Intel® TBB) dynamic shared libraries that
-		come in debug and release versions. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl2"><!-- --></a><table cellpadding="4" summary="" id="tbl2" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Dynamic Shared Libraries Included in Intel® Threading Building
-	 Blocks</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="31.439393939393938%" id="d131082e40"> 
-			 <p>Library 
-			 </p>
- 
-			 <p>(*.dll, lib*.so, or lib*.dylib) 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="34.84848484848485%" id="d131082e49"> 
-			 <p>Description 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="33.71212121212121%" id="d131082e55"> 
-			 <p>When to Use 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="31.439393939393938%" headers="d131082e40 "> 
-			 <p><samp class="codeph">tbb_debug</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">tbbmalloc_debug</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">tbbmalloc_proxy_debug</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="34.84848484848485%" headers="d131082e49 "> 
-			 <p>These versions have extensive internal checking for correct use of
-				the library. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="33.71212121212121%" headers="d131082e55 "> 
-			 <p>Use with code that is compiled with the macro 
-				<samp class="codeph">TBB_USE_DEBUG</samp> set to 1. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="31.439393939393938%" headers="d131082e40 "> 
-			 <p><samp class="codeph">tbb</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">tbbmalloc</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">tbbmalloc_proxy</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="34.84848484848485%" headers="d131082e49 "> 
-			 <p>These versions deliver top performance. They eliminate most
-				checking for correct use of the library. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="33.71212121212121%" headers="d131082e55 "> 
-			 <p>Use with code compiled with 
-				<samp class="codeph">TBB_USE_DEBUG</samp> undefined or set to zero. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-	 <p>Test your programs with the debug versions of the libraries first, to
-		assure that you are using the library correctly.  With the release versions,
-		incorrect usage may result in unpredictable program behavior. 
-	 </p>
- 
-  </div> 
-  <p>Intel® TBB supports Intel® Parallel Inspector, Intel® Inspector XE, Intel®
-	 Parallel Amplifier, and Intel® VTune™ Amplifier XE. Full support of these tools
-	 requires compiling with macro 
-	 <samp class="codeph">TBB_USE_THREADING_TOOLS</samp>=1. That symbol defaults to 1 in
-	 the following conditions: 
-  </p>
- 
-  <ul type="disc"> 
-	 <li> 
-		<p>When 
-		  <samp class="codeph">TBB_USE_DEBUG=1</samp>. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>On the Microsoft Windows* operating system, when 
-		  <samp class="codeph">_DEBUG=1</samp>. 
-		</p>
- 
-	 </li>
- 
-  </ul>
- 
-  <p>The Intel® Threading Building Blocks Reference section explains the
-	 default values in more detail. 
-  </p>
- 
-  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-	 <p>The instrumentation support for Intel® Parallel Inspector and Intel®
-		Inspector XE becomes live after the first initialization of the task library.
-		If the library components are used before this initialization occurs, Intel®
-		Parallel Inspector and Intel® Inspector XE may falsely report race conditions
-		that are not really races. 
-	 </p>
- 
-  </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../reference/reference.htm#reference"> Intel® Threading Building Blocks Reference Manual 
-		  </a></div>
-<div><a href="Initializing_and_Terminating_the_Library.htm">Initializing and Terminating the Library 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Agglomeration.htm b/doc/help/tbb_userguide/Design_Patterns/Agglomeration.htm
deleted file mode 100755
index d139214..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Agglomeration.htm
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Agglomeration">
-<meta name="DC.subject" content="Agglomeration">
-<meta name="keywords" content="Agglomeration">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Agglomeration">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Agglomeration</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Agglomeration">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Agglomeration"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Agglomeration</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Parallelism is so fine grained that overhead of parallel scheduling or
-		  communication swamps the useful work. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Many algorithms permit parallelism at a very fine grain, on the order
-		  of a few instructions per task. But synchronization between threads usually
-		  requires orders of magnitude more cycles. For example, elementwise addition of
-		  two arrays can be done fully in parallel, but if each scalar addition is
-		  scheduled as a separate task, most of the time will be spent doing
-		  synchronization instead of useful addition. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Individual computations can be done in parallel, but are small.
-				For practical use of Intel® Threading Building Blocks (Intel® TBB),
-				"small" here means less than 10,000 clock cycles. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The parallelism is for sake of performance and not required for
-				semantic reasons. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Group the computations into blocks. Evaluate computations within a
-		  block serially. 
-		</p>
- 
-		<p>The block size should be chosen to be large enough to amortize
-		  parallel overhead. Too large a block size may limit parallelism or load
-		  balancing because the number of blocks becomes too small to distribute work
-		  evenly across processors. 
-		</p>
- 
-		<p>The choice of block topology is typically driven by two concerns: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Minimizing synchronization between blocks. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Minimizing cache traffic between blocks. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>If the computations are completely independent, then the blocks will
-		  be independent too, and then only cache traffic issues must be considered. 
-		</p>
- 
-		<p>If the loop is "small", on the order of less than 10,000 clock cycles,
-		  then it may be impractical to parallelize at all, because the optimal
-		  agglomeration might be a single block, 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Examples</h2> 
-		 
-		<p>Intel® TBB loop templates such as 
-		  <samp class="codeph">tbb::parallel_for</samp> that take a 
-		  <em>range</em> argument support automatic agglomeration. 
-		</p>
- 
-		<p>When agglomerating, think about cache effects. Avoid having cache
-		  lines cross between groups if possible. 
-		</p>
- 
-		<p>There may be boundary to interior ratio effects. For example, if the
-		  computations form a 2D grid, and communicate only with nearest neighbors, then
-		  the computation per block grows quadratically (with the block’s area), but the
-		  cross-block communication grows with linearly (with the block’s perimeter). The
-		  following figure shows four different ways to agglomerate an 8×8 grid. If doing
-		  such analysis, be careful to consider that information is transferred in cache
-		  line units. For a given area, the perimeter may be minimized when the block is
-		  square with respect to the underlying grid of cache lines, not square with
-		  respect to the logical grid. 
-		</p>
- 
-		<div class="fignone" id="fig1"><a name="fig1"><!-- --></a><span class="figcap">Four different agglomerations of an 8×8 grid.</span> 
-		  <img width="301" height="293" src="Images/image002.jpg"> 
-		</div>
- 
-		<p>Also consider vectorization. Blocks that contain long contiguous
-		  subsets of data may better enable vectorization. 
-		</p>
- 
-		<p>For recursive computations, most of the work is towards the leaves, so
-		  the solution is to treat subtrees as a groups as shown in the following figure.
-		  
-		</p>
- 
-		<div class="fignone" id="fig2"><a name="fig2"><!-- --></a><span class="figcap">Agglomeration of a recursive computation</span> 
-		  <img width="291" height="150" src="Images/image003.jpg"> 
-		</div>
- 
-		<p>Often such an agglomeration is achieved by recursing serially once
-		  some threshold is reached. For example, a recursive sort might solve
-		  sub-problems in parallel only if they are above a certain threshold size. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Reference</h2> 
-		 
-		<p>Ian Foster introduced the term "agglomeration" in his book 
-		  <cite>Designing and Building Parallel Programs</cite>
-		  http://www.mcs.anl.gov/~itf/dbpp. There agglomeration is part of a four step 
-		  <strong>PCAM</strong> design method: 
-		</p>
- 
-		<ol> 
-		  <li> 
-			 <p><strong>P</strong>artitioning - break the program into the smallest tasks
-				possible. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p><strong>C</strong>ommunication – figure out what communication is required
-				between tasks. When using Intel® TBB, communication is usually cache line
-				transfers. Though they are automatic, understanding which ones happen between
-				tasks helps guide the agglomeration step. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p><strong>A</strong>gglomeration – combine tasks into larger tasks. His book
-				has an extensive list of considerations that is worth reading. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p><strong>M</strong>apping – map tasks onto processors. The Intel® TBB task
-				scheduler does this step for you. 
-			 </p>
- 
-		  </li>
- 
-		</ol>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm b/doc/help/tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm
deleted file mode 100755
index a937d5b..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm
+++ /dev/null
@@ -1,209 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Compare and Swap Loop">
-<meta name="DC.subject" content="Compare and Swap Loop">
-<meta name="keywords" content="Compare and Swap Loop">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Reduction.htm#Reduction">
-<meta name="DC.Relation" scheme="URI" content="Reference_Counting.htm#Reference_Counting">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Compare_and_Swap_Loop">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Compare and Swap Loop</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Compare_and_Swap_Loop">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Compare_and_Swap_Loop"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Compare and Swap Loop</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Atomically update a scalar value so that a predicate is satisfied. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Often a shared variable must be updated atomically, by a transform
-		  that maps its old value to a new value. The transform might be a transition of
-		  a finite state machine, or recording global knowledge. For instance, the shared
-		  variable might be recording the maximum value that any thread has seen so far. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>The variable is read and updated by multiple threads. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The hardware implements "compare and swap" for a variable of that
-				type. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Protecting the update with a mutex is to be avoided. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Related</h2> 
-		 
-		<ul type="disc"> 
-		  <li>Reduction 
-		  </li>
- 
-		  <li>Reference Counting 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>The solution is to atomically snapshot the current value, and then use
-		  
-		  <samp class="codeph">atomic<T>::compare_and_swap</samp> to update it. Retry
-		  until the 
-		  <samp class="codeph">compare_and_swap</samp> succeeds. In some cases it may be
-		  possible to exit before the 
-		  <samp class="codeph">compare_and_swap</samp> succeeds because the current value
-		  meets some condition. 
-		</p>
- 
-		<p>The template below does the update x=f(x) atomically. 
-		</p>
- 
-<pre>// Atomically perform x=f(x).
-template<typename F, typename T>
-void AtomicUpdate( atomic<T>& x, F f ) {
-   int o;
-   do {
-       // Take a snapshot
-       o = x;
-       // Attempt to install new value computed from snapshot
-   } while( x.compare_and_swap(f(o),o)!=o );
-}</pre> 
-		<p>It is critical to take a snapshot and use it for intermediate
-		  calculations, because the value of X may be changed by other threads in the
-		  meantime. 
-		</p>
- 
-		<p>The following code shows how the template might be used to maintain a
-		  global maximum of any value seen by 
-		  <samp class="codeph">RecordMax</samp>. 
-		</p>
- 
-		<pre>// Atomically perform UpperBound = max(UpperBound,y) 
-void RecordMax( int y ) {
-   extern atomic<int> UpperBound;
-   AtomicUpdate(UpperBound, [&](int value){return std::max(value,y);} );
-}</pre> 
-		<p>When y is not going to increase 
-		  <samp class="codeph">UpperBound</samp>, the call to 
-		  <samp class="codeph">AtomicUpdate</samp> will waste time doing the redundant
-		  operation 
-		  <samp class="codeph">compare_and_swap(o,o)</samp>. In general, this kind of
-		  redundancy can be eliminated by making the loop in 
-		  <samp class="codeph">AtomicUpdate</samp> exit early if 
-		  <samp class="codeph">f(o)==o</samp>. In this particular case where 
-		  <samp class="codeph">F==std::max<int></samp>, that test can be further
-		  simplified. The following custom version of 
-		  <samp class="codeph">RecordMax</samp> has the simplified test. 
-		</p>
- 
-		<pre>// Atomically perform UpperBound =max(UpperBound,y) 
-void RecordMax( int y ) . .
-   extern atomic<int> UpperBound;
-   do {
-       // Take a snapshot
-       int o = UpperBound;
-       // Quit if snapshot meets condition.
-       if( o>=y ) break;
-       // Attempt to install new value.
-   } while( UpperBound.compare_and_swap(y,o)!=o );
-}</pre> 
-		<p>Because all participating threads modify a common location, the
-		  performance of a compare and swap loop can be poor under high contention. Thus
-		  the applicability of more efficient patterns should be considered first. In
-		  particular: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>If the overall purpose is a reduction, use the reduction pattern
-				instead. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>If the update is addition or subtraction, use 
-				<samp class="codeph">atomic<T>::fetch_and_add</samp>. If the update is
-				addition or subtraction by one, use 
-				<samp class="codeph">atomic<T>::operater++</samp> or 
-				<samp class="codeph">atomic<T>::operator--</samp>. These methods
-				typically employ direct hardware support that avoids a compare and swap loop. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		  <p>When using 
-			 <samp class="codeph">compare_and_swap</samp> to update links in a linked
-			 structure, be sure you understand if the "ABA problem" is an issue. See the
-			 Internet for discourses on the subject.
-		  </p>
- 
-		</div> 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Reduction.htm#Reduction">Reduction 
-		  </a></div>
-<div><a href="Reference_Counting.htm#Reference_Counting">Reference Counting 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Design_Patterns.htm b/doc/help/tbb_userguide/Design_Patterns/Design_Patterns.htm
deleted file mode 100755
index cafdf3b..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Design_Patterns.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Design Patterns">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Agglomeration.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Elementwise.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Odd-Even_Communication.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Wavefront.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Reduction.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Divide_and_Conquer.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/GUI_Thread.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Local_Serializer.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Lazy_Initialization.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Reference_Counting.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/General_References.htm">
-<meta name="DC.Relation" scheme="URI" content="../Lambda_Expressions.htm#tutorial_Lambda_Expressions">
-<meta name="DC.Relation" scheme="URI" content="General_References.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Introduction">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Design Patterns</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Introduction">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Introduction"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Design Patterns</h1>
- 
-   
-  <div> 
-	 <p>This section provides some common parallel programming patterns and how
-		to implement them in Intel® Threading Building Blocks (Intel® TBB). 
-	 </p>
- 
-	 <p>The description of each pattern has the following format: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><strong>Problem</strong> – describes the problem to be solved. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Context</strong> – describes contexts in which the problem arises. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Forces</strong> . considerations that drive use of the pattern. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Solution</strong> . describes how to implement the pattern. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Example</strong> – presents an example implementation. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>Variations and examples are sometimes discussed. The code examples are
-		intended to emphasize key points and are not full-fledged code. Examples may
-		omit obvious const overloads of non-const methods. 
-	 </p>
- 
-	 <p>Much of the nomenclature and examples are adapted from Web pages created
-		by Eun-Gyu and Marc Snir, and the Berkeley parallel patterns wiki. See links in
-		the General References section. 
-	 </p>
- 
-	 <p>For brevity, some of the code examples use C++11 lambda expressions. It
-		is straightforward, albeit sometimes tedious, to translate such lambda
-		expressions into equivalent C++98 code. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Agglomeration.htm">Agglomeration</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Elementwise.htm">Elementwise</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Odd-Even_Communication.htm">Odd-Even Communication</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Wavefront.htm">Wavefront</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Reduction.htm">Reduction</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Divide_and_Conquer.htm">Divide and Conquer</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/GUI_Thread.htm">GUI Thread</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm">Non-Preemptive Priorities</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Local_Serializer.htm">Local Serializer</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm">Fenced Data Transfer</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Lazy_Initialization.htm">Lazy Initialization</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Reference_Counting.htm">Reference Counting</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/Compare_and_Swap_Loop.htm">Compare and Swap Loop</a><br>
-</li>
-<li class="ulchildlink"><a href="../../tbb_userguide/Design_Patterns/General_References.htm">General References</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../Lambda_Expressions.htm#tutorial_Lambda_Expressions">Lambda Expressions 
-		  </a></div>
-<div><a href="General_References.htm">General References 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Divide_and_Conquer.htm b/doc/help/tbb_userguide/Design_Patterns/Divide_and_Conquer.htm
deleted file mode 100755
index 5eff0c9..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Divide_and_Conquer.htm
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Divide and Conquer">
-<meta name="DC.subject" content="Divide and Conquer">
-<meta name="keywords" content="Divide and Conquer">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Agglomeration.htm#Agglomeration">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Divide_and_Conquer">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Divide and Conquer</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Divide_and_Conquer">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Divide_and_Conquer"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Divide and Conquer</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Parallelize a divide and conquer algorithm. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Divide and conquer is widely used in serial algorithms. Common
-		  examples are quicksort and mergesort. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Problem can be transformed into subproblems that can be solved
-				independently. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Splitting problem or merging solutions is relatively cheap
-				compared to cost of solving the subproblems. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>There are several ways to implement divide and conquer in Intel®
-		  Threading Building Blocks (Intel® TBB). The best choice depends upon
-		  circumstances. 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>If division always yields the same number of subproblems, use
-				recursion and 
-				<samp class="codeph">tbb::parallel_invoke</samp>. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>If the number of subproblems varies, use recursion and 
-				<samp class="codeph">tbb::task_group</samp>. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>If ultimate efficiency and scalability is important, use 
-				<samp class="codeph">tbb::task</samp> and continuation passing style. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>Quicksort is a classic divide-and-conquer algorithm. It divides a
-		  sorting problem into two subsorts. A simple serial version looks
-		  like:<a name="fnsrc_1" href="#fntarg_1"><sup>1</sup></a> 
-		</p>
- 
-		<pre>void SerialQuicksort( T* begin, T* end ) {
-   if( end-begin>1  ) {
-       using namespace std;
-       T* mid = partition( begin+1, end, bind2nd(less<T>(),*begin) );
-       swap( *begin, mid[-1] );
-       SerialQuicksort( begin, mid-1 );
-       SerialQuicksort( mid, end );
-   }
-}</pre> 
-		<p>The number of subsorts is fixed at two, so 
-		  <samp class="codeph">tbb::parallel_invoke</samp> provides a simple way to
-		  parallelize it. The parallel code is shown below: 
-		</p>
- 
-		<pre>void ParallelQuicksort( T* begin, T* end ) {
-   if( end-begin>1 ) {
-       using namespace std;
-       T* mid = partition( begin+1, end, bind2nd(less<T>(),*begin) );
-       swap( *begin, mid[-1] );
-       tbb::parallel_invoke( [=]{ParallelQuicksort( begin, mid-1 );},
-                             [=]{ParallelQuicksort( mid, end );} );
-   }
-}</pre> 
-		<p>Eventually the subsorts become small enough that serial execution is
-		  more efficient. The following variation, with the change shown in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>,
-		  does sorts of less than 500 elements using the earlier serial code. 
-		</p>
- 
-		<pre>void ParallelQuicksort( T* begin, T* end ) {
-   if( end-begin>=<span style="color:blue"><strong>500</strong></span> ) {
-       using namespace std;
-       T* mid = partition( begin+1, end, bind2nd(less<T>(),*begin) );
-       swap( *begin, mid[-1] );
-       tbb::parallel_invoke( [=]{ParallelQuicksort( begin, mid-1 );},
-                             [=]{ParallelQuicksort( mid, end );} );
-   } <span style="color:blue"><strong>else {
-       SerialQuicksort( begin, end );
-   }</strong></span>
-}</pre> 
-		<p>The change is an instance of the Agglomeration pattern. 
-		</p>
- 
-		<p>The next example considers a problem where there are a variable number
-		  of subproblems. The problem involves a tree-like description of a mechanical
-		  assembly. There are two kinds of nodes: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Leaf nodes represent individual parts. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Internal nodes represent groups of parts. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The problem is to find all nodes that collide with a target node. The
-		  following code shows a serial solution that walks the tree. It records in 
-		  <samp class="codeph">Hits</samp> any nodes that collide with 
-		  <samp class="codeph">Target</samp>. 
-		</p>
- 
-		<pre>std::list<Node*> Hits;
-Node* Target;
- 
-void SerialFindCollisions( Node& x ) {
-   if( x.is_leaf() ) {
-       if( x.collides_with( *Target ) )
-           Hits.push_back(&x);
-   } else {
-       for( Node::const_iterator y=x.begin();y!=x.end(); ++y )
-           SerialFindCollisions(*y);
-   }
-} </pre> 
-		<p id="ParallelFindCollisions"><a name="ParallelFindCollisions"><!-- --></a>A parallel version is shown below. 
-		</p>
- 
-		<pre>typedef tbb::enumerable_thread_specific<std::list<Node*> > LocalList;
-LocalList LocalHits; 
-Node* Target;    // Target node    
- 
-void ParallelWalk( Node& x ) {
-   if( x.is_leaf() ) {
-       if( x.collides_with( *Target ) )
-           LocalHits.local().push_back(&x);
-   } else {
-       // Recurse on each child y of x in parallel
-       tbb::task_group g;
-       for( Node::const_iterator y=x.begin(); y!=x.end(); ++y )
-           g.run( [=]{ParallelWalk(*y);} );
-       // Wait for recursive calls to complete
-       g.wait();
-   }
-}
- 
-void ParallelFindCollisions( Node& x ) {
-   ParallelWalk(x);
-   for(LocalList::iterator i=LocalHits.begin();i!=LocalHits.end(); ++i)
-       Hits.splice( Hits.end(), *i );
-} </pre> 
-		<p>The recursive walk is parallelized using class 
-		  <samp class="codeph">task_group</samp> to do recursive calls in parallel. 
-		</p>
- 
-		<p>There is another significant change because of the parallelism that is
-		  introduced. Because it would be unsafe to update 
-		  <samp class="codeph">Hits</samp> concurrently, the parallel walk uses variable 
-		  <samp class="codeph">LocalHits</samp> to accumulate results. Because it is of type
-		  
-		  <samp class="codeph">enumerable_thread_specific</samp>, each thread accumulates
-		  its own private result. The results are spliced together into Hits after the
-		  walk completes. 
-		</p>
- 
-		<p>The results will 
-		  <em>not</em> be in the same order as the original serial code. 
-		</p>
- 
-		<p>If parallel overhead is high, use the agglomeration pattern. For
-		  example, use the serial walk for subtrees under a certain threshold. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Agglomeration.htm#Agglomeration">Agglomeration 
-		  </a></div></div>
-</div> 
-<p><a name="fntarg_1" href="#fnsrc_1"><sup>1</sup></a>  Production quality quicksort implementations typically use more
-			 sophisticated pivot selection, explicit stacks instead of recursion, and some
-			 other sorting algorithm for small subsorts. The simple algorithm is used here
-			 to focus on exposition of the parallel pattern.</p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Elementwise.htm b/doc/help/tbb_userguide/Design_Patterns/Elementwise.htm
deleted file mode 100755
index 0be5d89..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Elementwise.htm
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Elementwise">
-<meta name="DC.subject" content="Elementwise">
-<meta name="keywords" content="Elementwise">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Agglomeration.htm#Agglomeration">
-<meta name="DC.Relation" scheme="URI" content="Reduction.htm#Reduction">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Elementwise">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Elementwise</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Elementwise">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Elementwise"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Elementwise</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Initiate similar independent computations across items in a data set,
-		  and wait until all complete. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Many serial algorithms sweep over a set of items and do an independent
-		  computation on each item. However, if some kind of summary information is
-		  collected, use the Reduction pattern instead. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<p>No information is carried or merged between the computations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>If the number of items is known in advance, use 
-		  <samp class="codeph">tbb::parallel_for</samp>. If not, consider using 
-		  <samp class="codeph">tbb::parallel_do</samp>. 
-		</p>
- 
-		<p>Use agglomeration if the individual computations are small relative to
-		  scheduler overheads. 
-		</p>
- 
-		<p>If the pattern is followed by a reduction on the same data, consider
-		  doing the element-wise operation as part of the reduction, so that the
-		  combination of the two patterns is accomplished in a single sweep instead of
-		  two sweeps. Doing so may improve performance by reducing traffic through the
-		  memory hierarchy. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>Convolution is often used in signal processing. The convolution of a
-		  filter 
-		  <var>c</var> and signal 
-		  <var>x</var> is computed as: 
-		</p>
-<br><img width="99" height="29" src="Images/image004.jpg"><br> 
-		<p>Serial code for this computation might look like: 
-		</p>
- 
-		<pre>// Assumes c[0..clen-1] and x[1-clen..xlen-1] are defined
-for( int i=0; i<xlen+clen-1; ++i ) {
-   float tmp = 0;
-   for( int j=0; j<clen; ++j )
-       tmp += c[j]*x[i-j];
-   y[i] = tmp;
-}</pre> 
-		<p>For simplicity, the fragment assumes that 
-		  <samp class="codeph">x</samp> is a pointer into an array padded with zeros such
-		  that 
-		  <samp class="codeph">x[k]</samp>returns zero when 
-		  <samp class="codeph">k<0</samp> or 
-		  <samp class="codeph">k≥xlen</samp>. 
-		</p>
- 
-		<p>The inner loop does not fit the elementwise pattern, because each
-		  iteration depends on the previous iteration. However, the outer loop fits the
-		  elementwise pattern. It is straightforward to render it using 
-		  <samp class="codeph">tbb::parallel_for</samp> as shown: 
-		</p>
- 
-		<pre>tbb::parallel_for( 0, xlen+clen-1, [=]( int i ) { 
-   float tmp = 0;
-   for( int j=0; j<clen; ++j )
-       tmp += c[j]*x[i-j];
-   y[i] = tmp;
-});</pre> 
-		<p><samp class="codeph">tbb::parallel_for</samp> does automatic agglomeration by
-		  implicitly using <samp class="codeph">tbb::auto_partitioner</samp> in its underlying
-		  implementation. If there is reason to agglomerate explicitly, use the overload
-		  of 
-		  <samp class="codeph">tbb::parallel_for</samp> that takes an explicit range
-		  argument. The following shows the example transformed to use the overload. 
-		</p>
- 
-		<pre>tbb::parallel_for(
-   tbb::blocked_range<int>(0,xlen+clen-1,1000),
-   [=]( tbb::blocked_range<int> r ) { 
-		 int end = r.end();
-       for( int i=r.begin(); i!=end; ++i ) {
-           float tmp = 0;
-           for( int j=0; j<clen; ++j )
-               tmp += c[j]*x[i-j];
-           y[i] = tmp;
-       }
-   }
-);</pre> 
-		<p>  
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Agglomeration.htm#Agglomeration">Agglomeration 
-		  </a></div>
-<div><a href="Reduction.htm#Reduction">Reduction 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm b/doc/help/tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm
deleted file mode 100755
index a3bd468..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Fenced_Data_Transfer.htm
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Fenced Data Transfer">
-<meta name="DC.subject" content="Fenced Data Transfer">
-<meta name="keywords" content="Fenced Data Transfer">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Lazy_Initialization.htm#Lazy_Initialization">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Fenced_Data_Transfer">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Fenced Data Transfer</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Fenced_Data_Transfer">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Fenced_Data_Transfer"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Fenced Data Transfer</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Write a message to memory and have another processor read it on
-		  hardware that does not have a sequentially consistent memory model. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>The problem normally arises only when unsynchronized threads
-		  concurrently act on a memory location, or are using reads and writes to create
-		  synchronization. High level synchronization constructs normally include
-		  mechanisms that prevent unwanted reordering. 
-		</p>
- 
-		<p>Modern hardware and compilers can reorder memory operations in a way
-		  that preserves the order of a thread's operation from its viewpoint, but not as
-		  observed by other threads. A serial common idiom is to write a message and mark
-		  it as ready to ready as shown in the following code: 
-		</p>
- 
-		<pre>bool Ready;                    
-std::string Message;
- 
-void Send( const std::string& src ) {. // Executed by thread 1
-   Message=src;
-   Ready = true;
-}
- 
-bool Receive( std::string& dst ) {    // Executed by thread 2
-   bool result = Ready;
-   if( result ) dst=Message;
-   return result;              // Return true if message was received.
-}</pre> 
-		<p>Two key assumptions of the code are: 
-		</p>
- 
-		<ol class="abc"> 
-		  <li> 
-			 <p><samp class="codeph">Ready</samp> does not become true until 
-				<samp class="codeph">Message</samp> is written. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p><samp class="codeph">Message</samp> is not read until 
-				<samp class="codeph">Ready</samp> becomes true. 
-			 </p>
- 
-		  </li>
- 
-		</ol>
- 
-		<p>These assumptions are trivially true on uniprocessor hardware.
-		  However, they may break on multiprocessor hardware. Reordering by the hardware
-		  or compiler can cause the sender's writes to appear out of order to the
-		  receiver (thus breaking condition a) or the receiver's reads to appear out of
-		  order (thus breaking condition b). 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Creating synchronization via raw reads and writes. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Related</h2> 
-		 
-		<ul type="disc"> 
-		  <li>Lazy Initialization 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Change the flag from 
-		  <samp class="codeph">bool</samp> to 
-		  <samp class="codeph">tbb::atomic<bool></samp> for the flag that indicates
-		  when the message is ready. Here is the previous example, with modifications
-		  shown in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>. 
-		</p>
- 
-		<pre><span style="color:blue"><strong>tbb::atomic<</strong></span>bool<span style="color:blue"><strong>></strong></span> Ready;
-std::string Message;
- 
-void Send( const std::string& src ) {. // Executed by thread 1
-   Message=src;
-   Ready = true;
-}
- 
-bool Receive( std::string& dst ) {    // Executed by thread 2
-   bool result = Ready;
-   if( result ) dst=Message;
-   return result;              // Return true if message was received.
-}</pre> 
-		<p>A write to a 
-		  <samp class="codeph">tbb::atomic</samp> value has 
-		  <em>release</em> semantics, which means that all of its prior writes will
-		  be seen before the releasing write. A read from 
-		  <samp class="codeph">tbb::atomic</samp> value has 
-		  <em>acquire</em> semantics, which means that all of its subsequent reads
-		  will happen after the acquiring read. The implementation of 
-		  <samp class="codeph">tbb::atomic</samp> ensures that both the compiler and the
-		  hardware observe these ordering constraints. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Variations</h2> 
-		 
-		<p>Higher level synchronization constructs normally include the necessary
-		  
-		  <em>acquire</em> and 
-		  <em>release</em> fences. For example, mutexes are normally implemented
-		  such that acquisition of a lock has 
-		  <em>acquire</em> semantics and release of a lock has 
-		  <em>release</em> semantics. Thus a thread that acquires a lock on a mutex
-		  always sees any memory writes done by another thread before it released a lock
-		  on that mutex. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Non Solutions</h2> 
-		 
-		<p>Mistaken solutions are so often proposed that it is worth
-		  understanding why they are wrong. 
-		</p>
- 
-		<p>One common mistake is to assume that declaring the flag with the 
-		  <samp class="codeph">volatile</samp> keyword solves the problem. Though the 
-		  <samp class="codeph">volatile</samp> keyword forces a write to happen immediately,
-		  it generally has no effect on the visible ordering of that write with respect
-		  to other memory operations. An exception to this rule are processors from the
-		  Intel® Itanium® processor family, which by convention assign acquire semantics
-		  to 
-		  <samp class="codeph">volatile</samp> reads and release semantics to volatile
-		  writes. 
-		</p>
- 
-		<p>Another mistake is to assume that conditionally executed code cannot
-		  happen before the condition is tested. However, the compiler or hardware may
-		  speculatively hoist the conditional code above the condition. 
-		</p>
- 
-		<p>Similarly, it is a mistake to assume that a processor cannot read the
-		  target of a pointer before reading the pointer. A modern processor does not
-		  read individual values from main memory. It reads cache lines. The target of a
-		  pointer may be in a cache line that has already been read before the pointer
-		  was read, thus giving the appearance that the processor presciently read the
-		  pointer target. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Lazy_Initialization.htm#Lazy_Initialization">Lazy Initialization 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/GUI_Thread.htm b/doc/help/tbb_userguide/Design_Patterns/GUI_Thread.htm
deleted file mode 100755
index 81f1d66..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/GUI_Thread.htm
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="GUI Thread">
-<meta name="DC.subject" content="GUI Thread">
-<meta name="keywords" content="GUI Thread">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">
-<meta name="DC.Relation" scheme="URI" content="Local_Serializer.htm#Local_Serializer">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="GUI_Thread">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>GUI Thread</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="GUI_Thread">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="GUI_Thread"><!-- --></a>
-
- 
-  <h1 class="topictitle1">GUI Thread</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>A user interface thread must remain responsive to user requests, and
-		  must not get bogged down in long computations. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Graphical user interfaces often have a dedicated thread ("GUI thread")
-		  for servicing user interactions. The thread must remain responsive to user
-		  requests even while the application has long computations running. For example,
-		  the user might want to press a "cancel" button to stop the long running
-		  computation. If the GUI thread takes part in the long running computation, it
-		  will not be able to respond to user requests. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>The GUI thread services an event loop. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The GUI thread needs to offload work onto other threads without
-				waiting for the work to complete. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The GUI thread must be responsive to the event loop and not become
-				dedicated to doing the offloaded work. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Related</h2> 
-		 
-		<ul type="disc"> 
-		  <li>Non-Preemptive Priorities 
-		  </li>
- 
-		  <li>Local Serializer 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>The GUI thread offloads the work by firing off a task to do it using
-		  method 
-		  <samp class="codeph">task::enqueue</samp>. When finished, the task posts an event
-		  to the GUI thread to indicate that the work is done. The semantics of 
-		  <samp class="codeph">enqueue</samp> cause the task to eventually run on a worker
-		  thread distinct from the calling thread. The method was introduced in Intel®
-		  Threading Building Blocks (Intel® TBB) 3.0. 
-		</p>
- 
-		<p>The following figure sketches the communication paths. Items in black
-		  are executed by the GUI thread; items in blue are executed by another thread. 
-		</p>
- 
-		<div class="fignone" id="fig5"><a name="fig5"><!-- --></a><span class="figcap">GUI Thread pattern</span> 
-		  <br><img width="400" height="150" src="Images/image007.jpg"><br> 
-		</div>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example is for the Microsoft Windows* operating systems, though
-		  similar principles apply to any GUI using an event loop idiom. For each event,
-		  the GUI thread calls a user-defined function 
-		  <samp class="codeph">WndProc</samp>. to process an event. The key parts are shown
-		  in 
-		  <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>. 
-		</p>
- 
-		<pre><span style="color:blue"><strong>// Event posted from enqueued task when it finishes its work</strong></span><strong>.</strong>
-<span style="color:blue"><strong>const UINT WM_POP_FOO = WM_USER+0;</strong></span>
-
-<span style="color:blue"><strong>// Queue for transmitting results from enqueued task to GUI thread</strong></span><span style="color:blue"><strong>.</strong></span>
-<span style="color:blue"><strong>tbb::concurrent_queue<Foo>ResultQueue;</strong></span>
-
-<span style="color:blue"><strong>// GUI thread’s private copy of most recently computed result.</strong></span>
-<span style="color:blue"><strong>Foo CurrentResult;</strong></span>
- 
-LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
-   switch(msg) {
-       case WM_COMMAND:
-           switch (LOWORD(wParam)) {
-               case IDM_LONGRUNNINGWORK:
-                   <span style="color:blue"><strong>// User requested a long computation. Delegate it to another thread.</strong></span>
-                   <span style="color:blue"><strong>LaunchLongRunningWork(hWnd);</strong></span>
-                   break;
-               case IDM_EXIT:
-                   DestroyWindow(hWnd);
-                   break;
-               default:
-                   return DefWindowProc(hWnd, msg, wParam, lParam);
-           }
-           break;
-       <span style="color:blue"><strong>case WM_POP_FOO:</strong></span>
-           <span style="color:blue"><strong>// There is another result in ResultQueue for me to grab.</strong></span>
-           <span style="color:blue"><strong>ResultQueue.try_pop(CurrentResult);</strong></span>
-           <span style="color:blue"><strong>// Update the window with the latest result.</strong></span>
-           <span style="color:blue"><strong>RedrawWindow</strong></span>( hWnd, NULL, NULL, RDW_ERASE|RDW_INVALIDATE );
-           break;
-       case WM_PAINT: 
-           <span style="color:blue"><strong><em>Repaint the window using CurrentResult</em></strong></span>
-           break;
-       case WM_DESTROY:
-           PostQuitMessage(0);
-           break;
-       default:
-           return DefWindowProc( hWnd, msg, wParam, lParam );
-   }
-   return 0;
-} </pre> 
-		<p>The GUI thread processes long computations as follows: 
-		</p>
- 
-		<ol> 
-		  <li> 
-			 <p>The GUI thread calls 
-				<samp class="codeph">LongRunningWork</samp>, which hands off the work to a
-				worker thread and immediately returns. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The GUI thread continues servicing the event loop. If it has to
-				repaint the window, it uses the value of<samp class="codeph">CurrentResult</samp>, which
-				is the most recent 
-				<samp class="codeph">Foo</samp> that it has seen. 
-			 </p>
- 
-		  </li>
- 
-		</ol>
- 
-		<p>When a worker finishes the long computation, it pushes the result into
-		  ResultQueue, and sends a message WM_POP_FOO to the GUI thread. 
-		</p>
- 
-		<ol> 
-		  <li> 
-			 <p>The GUI thread services a 
-				<samp class="codeph">WM_POP_FOO</samp> message by popping an item from
-				ResultQueue into CurrentResult. The 
-				<samp class="codeph">try_pop</samp> always succeeds because there is exactly
-				one 
-				<samp class="codeph">WM_POP_FOO</samp> message for each item in 
-				<samp class="codeph">ResultQueue</samp>. 
-			 </p>
- 
-		  </li>
- 
-		</ol>
- 
-		<p>Routine 
-		  <samp class="codeph">LaunchLongRunningWork</samp> creates a root task and launches
-		  it using method 
-		  <samp class="codeph">task::enqeueue</samp>. The task is a root task because it has
-		  no successor task waiting on it. 
-		</p>
- 
-		<pre>class LongTask: public tbb::task {
-   HWND hWnd;
-   tbb::task* execute() {
-       Do long computation
-       Foo x = result of long computation
-       ResultQueue.push( x );
-       // Notify GUI thread that result is available.
-        PostMessage(hWnd,WM_POP_FOO,0,0);
-       return NULL;
-   }
-public:
-   LongTask( HWND hWnd_ ) : hWnd(hWnd_) {}
-};
- 
-void LaunchLongRunningWork( HWND hWnd ) {
-   LongTask* t = new( tbb::task::allocate_root() ) LongTask(hWnd); 
-   tbb::task::enqueue(*t);
-}</pre> 
-		<p>It is essential to use method 
-		  <samp class="codeph">task::enqueue</samp> and not method 
-		  <samp class="codeph">task::spawn</samp>. The reason is that method 
-		  <samp class="codeph">enqueue</samp> ensures that the task eventually executes when
-		  resources permit, even if no thread explicitly waits on the task. In contrast,
-		  method 
-		  <samp class="codeph">spawn</samp> may postpone execution of the task until it is
-		  explicitly waited upon. 
-		</p>
- 
-		<p>The example uses a 
-		  <samp class="codeph">concurrent_queue</samp> for workers to communicate results
-		  back to the GUI thread. Since only the most recent result matters in the
-		  example, and alternative would be to use a shared variable protected by a
-		  mutex. However, doing so would block the worker while the GUI thread was
-		  holding a lock on the mutex, and vice versa. Using 
-		  <samp class="codeph">concurrent_queue</samp> provides a simple robust solution. 
-		</p>
- 
-		<p>If two long computations are in flight, there is a chance that the
-		  first computation completes after the second one. If displaying the result of
-		  the most recently requested computation is important, then associate a request
-		  serial number with the computation. The GUI thread can pop from 
-		  <samp class="codeph">ResultQueue</samp> into a temporary variable, check the
-		  serial number, and update 
-		  <samp class="codeph">CurrentResult</samp> only if doing so advances the serial
-		  number. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">Non-Preemptive Priorities 
-		  </a> provides informtion on how to implement priorities 
-		  </div>
-<div><a href="Local_Serializer.htm#Local_Serializer">Local Serializer 
-		  </a> provides information on how to force serial ordering of certain
-			 tasks 
-		  </div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/General_References.htm b/doc/help/tbb_userguide/Design_Patterns/General_References.htm
deleted file mode 100755
index 36eb058..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/General_References.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="General References">
-<meta name="DC.subject" content="General References">
-<meta name="keywords" content="General References">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="General_References">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>General References</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="General_References">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="General_References"><!-- --></a>
-
- 
-  <h1 class="topictitle1">General References</h1>
- 
-   
-  <div> 
-	 <p>This section lists general references. References specific to a pattern
-		are listed at the end of the topic for the pattern. 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>E. Gamma, R. Helm, R. Johnson, J. Vlissides. 
-			 <cite>Design Patterns</cite> (1995). 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Berkeley Pattern Language for Parallel Programming,
-			 http://parlab.eecs.berkeley.edu/wiki/patterns 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>T. Mattson, B. Sanders, B. Massingill. 
-			 <cite>Patterns for Parallel Programming</cite> (2005). 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>ParaPLoP 2009,
-			 http://www.upcrc.illinois.edu/workshops/paraplop09/program.html 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>ParaPLoP 2010,
-			 http://www.upcrc.illinois.edu/workshops/paraplop10/program.html 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Eun-Gyu Kim and Marc Snir, 
-			 <em>Parallel Programming Patterns</em>,
-			 http://www.cs.illinois.edu/homes/snir/PPP/index.html 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image002.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image002.jpg
deleted file mode 100755
index 63ef8c6..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image002.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image003.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image003.jpg
deleted file mode 100755
index 30feff0..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image003.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image004.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image004.jpg
deleted file mode 100755
index c32972c..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image004.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image005.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image005.jpg
deleted file mode 100755
index bd79381..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image005.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image006.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image006.jpg
deleted file mode 100755
index 4145519..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image006.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Images/image007.jpg b/doc/help/tbb_userguide/Design_Patterns/Images/image007.jpg
deleted file mode 100755
index dcaba0e..0000000
Binary files a/doc/help/tbb_userguide/Design_Patterns/Images/image007.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Design_Patterns/Lazy_Initialization.htm b/doc/help/tbb_userguide/Design_Patterns/Lazy_Initialization.htm
deleted file mode 100755
index ba8b52e..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Lazy_Initialization.htm
+++ /dev/null
@@ -1,283 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Lazy Initialization">
-<meta name="DC.subject" content="Lazy Initialization">
-<meta name="keywords" content="Lazy Initialization">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Fenced_Data_Transfer.htm#Fenced_Data_Transfer">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Lazy_Initialization">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Lazy Initialization</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Lazy_Initialization">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Lazy_Initialization"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Lazy Initialization</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Perform an initialization the first time it is needed. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Initializing data structures lazily is a common technique. Not only
-		  does it avoid the cost of initializing unused data structures, it is often a
-		  more convenient way to structure a program. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Threads share access to an object. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The object should not be created until the first access. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The second force covers several possible motivations: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>The object is expensive to create and creating it early would slow
-				down program startup. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>It is not used in every run of the program. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Early initialization would require adding code where it is
-				undesirable for readability or structural reasons. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Related</h2> 
-		 
-		<ul type="disc"> 
-		  <li>Fenced Data Transfer 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solutions</h2> 
-		 
-		<p>A parallel solution is substantially trickier, because it must deal
-		  with several concurrency issues. 
-		</p>
- 
-		<div class="nobullet"> 
-		   
-			 <p class="nobullet"><strong>Races:</strong> If two threads attempt to simultaneously access to
-				the object for the first time, and thus cause creation of the object, the race
-				must be resolved in a way that both threads end up with a reference to the same
-				object of type 
-				<samp class="codeph">T</samp>. 
-			 </p>
- 
-		   
-		   
-			 <p class="nobullet"><strong>Memory leaks:</strong> In the event of a race, the implementation
-				must ensure that any extra transient 
-				<samp class="codeph">T</samp> objects are cleaned up. 
-			 </p>
- 
-		   
-		   
-			 <p class="nobullet"><strong>Memory consistency:</strong> If thread X executes 
-				<samp class="codeph">value=new T()</samp>, all other threads must see stores
-				by 
-				<samp class="codeph">new T()</samp> occur before the assignment 
-				<samp class="codeph">value=</samp>. 
-			 </p>
- 
-		   
-		   
-			 <p class="nobullet"><strong>Deadlock:</strong> What if the constructor of 
-				<samp class="codeph">T()</samp> requires acquiring a lock, but the current
-				holder of that lock is also racing to access the object for the first time? 
-			 </p>
- 
-		   
-		</div>
- 
-		<p>There are two solutions. One is based on double-check locking. The
-		  other relies on compare-and-swap. Because the tradeoffs and issues are subtle,
-		  most of the discussion is in the following examples section. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Examples</h2> 
-		 
-		<p>An Intel® Threading Building Blocks (Intel® TBB) implementation of the "double-check" pattern is shown
-		  below. 
-		</p>
- 
-		<pre>template<typename T, typename Mutex=tbb::mutex>
-class lazy {
-   tbb::atomic<T*> value;
-   Mutex mut;
-public:
-   lazy() : value() {}                    // Initializes value to NULL
-   ~lazy() {delete value;}
-   T& get() {
-       if( !value ) {                     // Read of value has <em>acquire</em> semantics. 
-           Mutex::scoped_lock lock(mut);
-           if( !value ) value = new T();. // Write of value has <em>release</em> semantics 
-       }
-       return *value;
-   }
-};</pre> 
-		<p>The name comes from the way that the pattern deals with races. There
-		  is one check done without locking and one check done after locking. The first
-		  check handles the presumably common case that the initialization has already
-		  been done, without any locking. The second check deals with cases where two
-		  threads both see an uninitialized value, and both try to acquire the lock. In
-		  that case, the second thread to acquire the lock will see that the
-		  initialization has already occurred. 
-		</p>
- 
-		<p>If 
-		  <samp class="codeph">T()</samp> throws an exception, the solution is correct
-		  because 
-		  <samp class="codeph">value</samp> will still be NULL and the mutex unlocked when
-		  object 
-		  <samp class="codeph">lock</samp> is destroyed. 
-		</p>
- 
-		<p>The solution correctly addresses memory consistency issues. A write to
-		  a 
-		<samp class="codeph">tbb::atomic</samp> value has 
-		<em>release</em> semantics, which means that all of its prior writes will
-		be seen before the releasing write. A read from 
-		<samp class="codeph">tbb::atomic</samp> value has 
-		<em>acquire</em> semantics, which means that all of its subsequent reads
-		will happen after the acquiring read. Both of these properties are critical to
-		the solution. The releasing write ensures that the construction of 
-		<samp class="codeph">T()</samp> is seen to occur before the assignment to value. The
-		acquiring read ensures that when the caller reads from 
-		<samp class="codeph">*value</samp>, the reads occur after the
-		"<samp class="codeph">if(!value)</samp>" check. The release/acquire is
-		essentially the Fenced Data Transfer pattern, where the
-		"message" is the fully constructed instance 
-		<samp class="codeph">T()</samp>, and the "ready" flag is the pointer 
-		<samp class="codeph">value</samp>. 
-		</p>
- 
-		<p>The solution described involves blocking threads while initialization
-		  occurs. Hence it can suffer the usual pathologies associated with blocking. For
-		  example, if the thread first acquires the lock is suspended by the OS, all
-		  other threads will have to wait until that thread resumes. A lock-free
-		  variation avoids this problem by making all contending threads attempt
-		  initialization, and atomically deciding which attempt succeeds. 
-		</p>
- 
-		<p>An Intel® TBB implementation of the non-blocking variant follows. It
-		  also uses double-check, but without a lock. 
-		</p>
- 
-		<pre>template<typename T>
-class lazy {
-   tbb::atomic<T*> value;
-public:
-   lazy() : value() {}                    // Initializes value to NULL
-   ~lazy() {delete value;}
-   T& get() {
-       if( !value ) {
-           T* tmp = new T();
-           if( value.compare_and_swap(tmp,NULL)!=NULL )
-               // Another thread installed the value, so throw away mine.
-               delete tmp;
-       }
-       return *value;
-   }
-};</pre> 
-		<p>The second check is performed by the expression<samp class="codeph">
-			 value.compare_and_swap(tmp,NULL)!=NULL</samp>, which conditionally assigns 
-		  <samp class="codeph">value=tmp</samp> if 
-		  <samp class="codeph">value==NULL</samp>, and returns true if the old 
-		  <samp class="codeph">value</samp> was NULL. Thus if multiple threads attempt
-		  simultaneous initialization, the first thread to execute the 
-		  <samp class="codeph">compare_and_swap</samp> will set value to point to its T
-		  object. Other contenders that execute the 
-		  <samp class="codeph">compare_and_swap</samp> will get back a non-NULL pointer,
-		  and know that they should delete their transient T objects. 
-		</p>
- 
-		<p>As with the locking solution, memory consistency issues are addressed
-		  by the semantics of 
-		<samp class="codeph">tbb::atomic</samp>. The first check has 
-		<em>acquire</em> semantics and the 
-		<samp class="codeph">compare_and_swap</samp> has both 
-		<em>acquire</em> and 
-		<em>release</em> semantics. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">References</h2> 
-		 
-		<p>Lawrence Crowl, "Dynamic Initialization and Destruction with Concurrency",
-		  http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Fenced_Data_Transfer.htm#Fenced_Data_Transfer">Fenced Data Transfer 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Local_Serializer.htm b/doc/help/tbb_userguide/Design_Patterns/Local_Serializer.htm
deleted file mode 100755
index cd6d296..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Local_Serializer.htm
+++ /dev/null
@@ -1,410 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Local Serializer">
-<meta name="DC.subject" content="Local Serializer">
-<meta name="keywords" content="Local Serializer">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Local_Serializer">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Local Serializer</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Local_Serializer">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Local_Serializer"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Local Serializer</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Consider an interactive program. To maximize concurrency and
-		  responsiveness, operations requested by the user can be implemented as tasks.
-		  The order of operations can be important. For example, suppose the program
-		  presents editable text to the user. There might be operations to select text
-		  and delete selected text. Reversing the order of "select" and "delete"
-		  operations on the same buffer would be bad. However, commuting operations on
-		  different buffers might be okay. Hence the goal is to establish serial ordering
-		  of tasks associated with a given object, but not constrain ordering of tasks
-		  between different objects. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Operations associated with a certain object must be performed in
-				serial order. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Serializing with a lock would be wasteful because threads would be
-				waiting at the lock when they could be doing useful work elsewhere. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Sequence the work items using a FIFO (first-in first-out structure).
-		  Always keep an item in flight if possible. If no item is in flight when a work
-		  item appears, put the item in flight. Otherwise, push the item onto the FIFO.
-		  When the current item in flight completes, pop another item from the FIFO and
-		  put it in flight. 
-		</p>
- 
-		<p>The logic can be implemented without mutexes, by using 
-		  <samp class="codeph">concurrent_queue</samp> for the FIFO and 
-		  <samp class="codeph">atomic<int></samp> to count the number of items waiting
-		  and in flight. The example explains the accounting in detail. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The following example builds on the Non-Preemptive Priorities example
-		  to implement local serialization in addition to priorities. It implements three
-		  priority levels and local serializers. The user interface for it follows: 
-		</p>
- 
-		<pre>enum Priority {
-   P_High,
-   P_Medium,
-   P_Low
-};
- 
-template<typename Func>
-void EnqueueWork( Priority p, Func f, Serializer* s=NULL );</pre> 
-		<p>Template function 
-		  <samp class="codeph">EnqueueWork</samp> causes functor 
-		  <var>f</var> to run when the three constraints in the following
-		  table are met. 
-		</p>
- 
-		
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Implementation of Constraints</span></caption> 
-		  <thead align="left"> 
-			 <tr> 
-				<th class="cellrowborder" valign="top" width="66.39676113360325%" id="d134980e118"> 
-				  <p>Constraint 
-				  </p>
- 
-				</th>
- 
-				<th class="cellrowborder" valign="top" width="33.603238866396765%" id="d134980e124"> 
-				  <p>Resolved by class... 
-				  </p>
- 
-				</th>
- 
-			 </tr>
-</thead>
- 
-		  <tbody> 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="66.39676113360325%" headers="d134980e118 "> 
-				  <p>Any prior work for the 
-					 <samp class="codeph">Serializer</samp> has completed. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="33.603238866396765%" headers="d134980e124 "> 
-				  <p><samp class="codeph">Serializer</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="66.39676113360325%" headers="d134980e118 "> 
-				  <p>A thread is available. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="33.603238866396765%" headers="d134980e124 "> 
-				  <p><samp class="codeph">RunWorkItem</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-			 <tr> 
-				<td class="cellrowborder" valign="top" width="66.39676113360325%" headers="d134980e118 "> 
-				  <p>No higher priority work is ready to run. 
-				  </p>
- 
-				</td>
- 
-				<td class="cellrowborder" valign="top" width="33.603238866396765%" headers="d134980e124 "> 
-				  <p><samp class="codeph">ReadyPileType</samp> 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-		<p>Constraints on a given functor are resolved from top to bottom in the
-		  table. The first constraint does not exist when s is NULL. The implementation
-		  of 
-		  <samp class="codeph">EnqueueWork</samp> packages the functor in a 
-		  <samp class="codeph">SerializedWorkItem</samp> and routes it to the class that
-		  enforces the first relevant constraint between pieces of work. 
-		</p>
- 
-		<pre>template<typename Func>
-void EnqueueWork( Priority p, Func f, Serializer* s=NULL ) {
-   WorkItem* item = new SerializedWorkItem<Func>( p, f, s );
-   if( s )
-       s->add(item);
-   else
-       ReadyPile.add(item);
-}</pre> 
-		<p>A 
-		  <samp class="codeph">SerializedWorkItem</samp> is derived from a 
-		  <samp class="codeph">WorkItem</samp>, which serves as a way to pass around a
-		  prioritized piece of work without knowing further details of the work. 
-		</p>
- 
-		<pre>// Abstract base class for a prioritized piece of work.
-class WorkItem {
-public:
-   WorkItem( Priority p ) : priority(p) {}
-   // Derived class defines the actual work.
-   virtual void run() = 0;
-   const Priority priority;
-};
- 
-template<typename Func>
-class SerializedWorkItem: public WorkItem {
-<span xml:lang="PT-BR">   Serializer* serializer;</span>
-<span xml:lang="PT-BR">   Func f;</span>
-<span xml:lang="PT-BR">   /*override*/ void run() {</span>
-<span xml:lang="PT-BR">       f();</span>
-<span xml:lang="PT-BR">       Serializer* s = serializer;</span>
-<span xml:lang="PT-BR">       // Destroy f before running Serializer’s next functor.</span>
-       delete this;
-       if( s )
-           s->noteCompletion();
-   }
-public:
-   SerializedWorkItem( Priority p, const Func& f_, Serializer* s ) :
-       WorkItem(p), serializer(s), f(f_) 
-   {}
-};</pre> 
-		<p>Base class 
-		  <samp class="codeph">WorkItem</samp> is the same as class WorkItem in the example
-		  for Non-Preemptive Priorities. The notion of serial constraints is completely
-		  hidden from the base class, thus permitting the framework to extend other kinds
-		  of constraints or lack of constraints. Class 
-		  <samp class="codeph">SerializedWorkItem</samp> is essentially 
-		  <samp class="codeph">ConcreteWorkItem</samp> from the example for Non-Preemptive
-		  Priorities, extended with a 
-		  <samp class="codeph">Serializer</samp> aspect. 
-		</p>
- 
-		<p>Virtual method 
-		  <samp class="codeph">run()</samp> is invoked when it becomes time to run the
-		  functor. It performs three steps: 
-		</p>
- 
-		<ol> 
-		  <li> 
-			 <p>Run the functor 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Destroy the functor. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Notify the 
-				<samp class="codeph">Serializer</samp> that the functor completed, and thus
-				unconstraining the next waiting functor. 
-			 </p>
- 
-		  </li>
- 
-		</ol>
- 
-		<p>Step 3 is the difference from the operation of ConcreteWorkItem::run.
-		  Step 2 could be done after step 3 in some contexts to increase concurrency
-		  slightly. However, the presented order is recommended because if step 2 takes
-		  non-trivial time, it likely has side effects that should complete before the
-		  next functor runs. 
-		</p>
- 
-		<p>Class 
-		  <samp class="codeph">Serializer</samp> implements the core of the Local Serializer
-		  pattern: 
-		</p>
- 
-		<pre>class Serializer {
-   tbb::concurrent_queue<WorkItem*> queue;
-   tbb::atomic<int> count;         // Count of queued items and in-flight item
-   void moveOneItemToReadyPile() { // Transfer item from queue to ReadyPile
-       WorkItem* item;
-       queue.try_pop(item);
-       ReadyPile.add(item);
-   }
-public:
-   void add( WorkItem* item ) {
-       queue.push(item);
-       if( ++count==1 )
-           moveOneItemToReadyPile();
-   }
-   void noteCompletion() {        // Called when WorkItem completes.
-       if( ‐‐count!=0 )
-           moveOneItemToReadyPile();
-   }
-};</pre> 
-		<p>The class maintains two members: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>A queue of WorkItem waiting for prior work to complete. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>A count of queued or in-flight work. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Mutexes are avoided by using 
-		  <samp class="codeph">concurrent_queue<WorkItem*></samp> and 
-		  <samp class="codeph">atomic<int></samp> along with careful ordering of
-		  operations. The transitions of count are the key understanding how class 
-		  <samp class="codeph">Serializer</samp> works. 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>If method 
-				<samp class="codeph">add</samp> increments 
-				<samp class="codeph">count</samp> from 0 to 1, this indicates that no other
-				work is in flight and thus the work should be moved to the 
-				<samp class="codeph">ReadyPile</samp>. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>If method 
-				<samp class="codeph">noteCompletion</samp> decrements count and it is 
-				<em>not</em> from 1 to 0, then the queue is non-empty and another
-				item in the queue should be moved to 
-				<samp class="codeph">ReadyPile.</samp> 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Class 
-		  <samp class="codeph">ReadyPile</samp> is explained in the example for
-		  Non-Preemptive Priorities. 
-		</p>
- 
-		<p>If priorities are not necessary, there are two variations on method 
-		  <samp class="codeph">moveOneItemToReadyPile</samp>, with different implications. 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Method 
-				<samp class="codeph">moveOneItemToReadyPile</samp> could directly
-				invoke<samp class="codeph">item->run()</samp>. This approach has relatively low
-				overhead and high thread locality for a given 
-				<samp class="codeph">Serializer</samp>. But it is unfair. If the 
-				<samp class="codeph">Serializer</samp> has a continual stream of tasks, the
-				thread operating on it will keep servicing those tasks to the exclusion of
-				others. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Method 
-				<samp class="codeph">moveOneItemToReadyPile</samp> could invoke 
-				<samp class="codeph">task::enqueue</samp> to enqueue a task that invokes 
-				<samp class="codeph">item->run()</samp>. Doing so introduces higher
-				overhead and less locality than the first approach, but avoids starvation. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>The conflict between fairness and maximum locality is fundamental. The
-		  best resolution depends upon circumstance. 
-		</p>
- 
-		<p>The pattern generalizes to constraints on work items more general than
-		  those maintained by class Serializer. A generalized 
-		  <samp class="codeph">Serializer::add</samp> determines if a work item is
-		  unconstrained, and if so, runs it immediately. A generalized 
-		  <samp class="codeph">Serializer::noteCompletion</samp> runs all previously
-		  constrained items that have become unconstrained by the completion of the
-		  current work item. The term "run" means to run work immediately, or if there
-		  are more constraints, forwarding the work to the next constraint resolver. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Non-Preemptive_Priorities.htm#Non-Preemptive_Priorities">Non-Preemptive Priorities 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm b/doc/help/tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm
deleted file mode 100755
index c09508a..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Non-Preemptive_Priorities.htm
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Non-Preemptive Priorities">
-<meta name="DC.subject" content="Non-Preemptive Priorities">
-<meta name="keywords" content="Non-Preemptive Priorities">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Non-Preemptive_Priorities">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Non-Preemptive Priorities</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Non-Preemptive_Priorities">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Non-Preemptive_Priorities"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Non-Preemptive Priorities</h1>
- 
-  
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		
-		<p>Choose the next work item to do, based on priorities. 
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		
-		<p>The scheduler in Intel® Threading Building Blocks (Intel® TBB) chooses
-		  tasks using rules based on scalability concerns. The rules are based on the
-		  order in which tasks were spawned or enqueued, and are oblivious to the
-		  contents of tasks. However, sometimes it is best to choose work based on some
-		  kind of priority relationship. 
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc">
-		  <li>
-			 <p>Given multiple work items, there is a rule for which item should
-				be done next that is 
-				<em>not</em> the default Intel® TBB rule.
-			 </p>
-
-		  </li>
-
-		  <li>
-			 <p>Preemptive priorities are not necessary. If a higher priority item
-				appears, it is not necessary to immediately stop lower priority items in
-				flight. If preemptive priorities are necessary, then non-preemptive tasking is
-				inappropriate. Use threads instead.
-			 </p>
-
-		  </li>
-
-		</ul>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		
-		<p>Put the work in a shared work pile. Decouple tasks from specific work,
-		  so that task execution chooses the actual piece of work to be selected from the
-		  pile. 
-		</p>
-
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p id="NonPreemptivePrioritiesExample"><a name="NonPreemptivePrioritiesExample"><!-- --></a>The following example implements
-		  three priority levels. The user interface for it and top-level implementation
-		  follow:
-		</p>
-
-		<pre>enum Priority {
-   P_High,
-   P_Medium,
-   P_Low
-};
- 
-template<typename Func>
-void EnqueueWork( Priority p, Func f ) {
-   WorkItem* item = new ConcreteWorkItem<Func>( p, f );
-   ReadyPile.add(item);
-}</pre>
-		<p>The caller provides a priority 
-		  <samp class="codeph">p</samp> and a functor 
-		  <samp class="codeph">f</samp> to routine 
-		  <samp class="codeph">EnqueueWork</samp>. The functor may be the result of a
-		  lambda expression. 
-		  <samp class="codeph">EnqueueWork</samp> packages 
-		  <samp class="codeph">f</samp> as a 
-		  <samp class="codeph">WorkItem</samp> and adds it to global object 
-		  <samp class="codeph">ReadyPile</samp>. 
-		</p>
-
-		<p>Class 
-		  <samp class="codeph">WorkItem</samp> provides a uniform interface for running
-		  functors of unknown type:
-		</p>
-
-		<pre>// Abstract base class for a prioritized piece of work.
-class WorkItem {
-public:
-   WorkItem( Priority p ) : priority(p) {}
-   // Derived class defines the actual work.
-   virtual void run() = 0;
-   const Priority priority;
-};
- 
-template<typename Func></pre>
-		<pre id="ConcreteWorkItem"><a name="ConcreteWorkItem"><!-- --></a>class ConcreteWorkItem: public WorkItem {
-   Func f;
-   /*override*/ void run() {
-       f();
-       delete this;
-   }
-public:
-   ConcreteWorkItem( Priority p, const Func& f_ ) :
-       WorkItem(p), f(f_)
-   {}
-};</pre>
-		<p>Class 
-		  <samp class="codeph">ReadyPile</samp> contains the core pattern. It maintains a
-		  collection of work and fires off tasks that choose work from the collection:
-		</p>
-
-		<pre id="ReadyPile"><a name="ReadyPile"><!-- --></a>class ReadyPileType {
-   // One queue for each priority level
-   tbb::concurrent_queue<WorkItem*> level[P_Low+1];
-public:
-   void add( WorkItem* item ) {
-       level[item->priority].push(item);
-       tbb::task::enqueue(*new(tbb::task::allocate_root()) RunWorkItem);
-   }
-   void runNextWorkItem() {
-       // Scan queues in priority order for an item.
-       WorkItem* item=NULL;
-       for( int i=P_High; i<=P_Low; ++i )
-           if( level[i].try_pop(item) )
-               break;
-       assert(item);
-       item->run();
-   }
-};
- 
-ReadyPileType ReadyPile;</pre>
-		<p>The task enqueued by 
-		  <samp class="codeph">add(item)</samp> does 
-		  <em>not</em> necessarily execute that item. The task executes 
-		  <samp class="codeph">runNextWorkItem()</samp>, which may find a higher priority
-		  item. There is one task for each item, but the mapping resolves when the task
-		  actually executes, not when it is created. 
-		</p>
-
-		<p>Here are the details of class 
-		  <samp class="codeph">RunWorkItem</samp>:
-		</p>
-
-		<pre>class RunWorkItem: public tbb::task {
-   /*override*/tbb::task* execute(); // Private override of virtual method
-};
-...
-tbb::task* RunWorkItem::execute() { 
-   ReadyPile.runNextWorkItem();
-   return NULL;
-};</pre>
-		<p><samp class="codeph">RunWorkItem</samp> objects are fungible. They enable the
-		  Intel® TBB scheduler to choose when to do a work item, not which work item to
-		  do. The override of virtual method 
-		<samp class="codeph">task::execute</samp> is private because all calls to it are
-		dispatched via base class 
-		<samp class="codeph">task</samp>.
-		</p>
-
-		<p>Other priority schemes can be implemented by changing the internals
-		  for 
-		  <samp class="codeph">ReadyPileType</samp>. A priority queue could be used to
-		  implement very fine grained priorities.
-		</p>
-
-		<p>The scalability of the pattern is limited by the scalability of 
-		  <samp class="codeph">ReadyPileType</samp>. Ideally scalable concurrent
-		  containers should be used for it.
-		</p>
-
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Odd-Even_Communication.htm b/doc/help/tbb_userguide/Design_Patterns/Odd-Even_Communication.htm
deleted file mode 100755
index 2072688..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Odd-Even_Communication.htm
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Odd-Even Communication">
-<meta name="DC.subject" content="Odd-Even Communication">
-<meta name="keywords" content="Odd-Even Communication">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="General_References.htm#General_References">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Odd-Even_Communication">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Odd-Even Communication</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Odd-Even_Communication">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Odd-Even_Communication"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Odd-Even Communication</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Operations on data cannot be done entirely independently, but data can
-		  be partitioned into two subsets such that all operations on a subset can run in
-		  parallel. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Solvers for partial differential equations can often be modified to
-		  follow this pattern. For example, for a 2D grid with only nearest-neighbor
-		  communication, it may be possible to treat the grid as a checkerboard, and
-		  alternate between updating red squares and black squares. 
-		</p>
- 
-		<p>Another context is staggered grid ("leap frog") Finite
-		  Difference Time Domain (FDTD. solvers, which naturally fit the pattern. The
-		  code 
-		  <samp class="codeph">examples/parallel_for/seismic/</samp> uses such a solver. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Dependencies between items form a bipartite graph. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Alternate between updating one subset and then the other subset. Apply
-		  the elementwise pattern to each subset. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>The example in 
-		  <samp class="codeph">examples/parallel_for/seismic</samp> demonstrates the
-		  principle. In it, two physical fields 
-		  <em>velocity</em> and 
-		  <em>stress</em> each depend upon each other, and so cannot all be updated
-		  simultaneously. However, the 
-		  <em>velocity</em> calculations can be done independently as long as the 
-		  <em>stress</em> values remain fixed, and vice-versa. So the code
-		  alternates updates of the 
-		  <em>velocity</em> and 
-		  <em>stress</em> fields. Each update is done using 
-		  <samp class="codeph">tbb::parallel_for</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">References</h2> 
-		 
-		<p>Eun-Gyu Kim and Mark Snir, "Odd-Even Communication Group",
-		  http://www.cs.uiuc.edu/homes/snir/PPP/patterns/oddeven.pdf
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="General_References.htm#General_References">General References 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Reduction.htm b/doc/help/tbb_userguide/Design_Patterns/Reduction.htm
deleted file mode 100755
index 0204e69..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Reduction.htm
+++ /dev/null
@@ -1,267 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Reduction">
-<meta name="DC.subject" content="Reduction">
-<meta name="keywords" content="Reduction">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="Agglomeration.htm#Agglomeration">
-<meta name="DC.Relation" scheme="URI" content="Elementwise.htm#Elementwise">
-<meta name="DC.Relation" scheme="URI" content="Divide_and_Conquer.htm#Divide_and_Conquer">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Reduction">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Reduction</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Reduction">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Reduction"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Reduction</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Perform an associative reduction operation across a data set. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Many serial algorithms sweep over a set of items to collect summary
-		  information. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<p>The summary can be expressed as an associative operation over the data
-		  set, or at least is close enough to associative that reassociation does not
-		  matter. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Two solutions exist in Intel® Threading Building Blocks (Intel® TBB).
-		  The choice on which to use depends upon several considerations: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Is the operation commutative as well as associative? 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Are instances of the reduction type expensive to construct and
-				destroy. For example, a floating point number is inexpensive to construct. A
-				sparse floating-point matrix might be very expensive to construct. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Use 
-		  <samp class="codeph">tbb::parallel_reduce</samp> when the objects are inexpensive
-		  to construct. It works even if the reduction operation is not commutative. The
-		  Intel® TBB Tutorial describes how to use 
-		  <samp class="codeph">tbb::parallel_reduce</samp> for basic reductions. 
-		</p>
- 
-		<p>Use 
-		  <samp class="codeph">tbb::parallel_for</samp> and 
-		  <samp class="codeph">tbb::combinable</samp> if the reduction operation is
-		  commutative and instances of the type are expensive. 
-		</p>
- 
-		<p>If the operation is not precisely associative but a precisely
-		  deterministic result is required, use recursive reduction and parallelize it
-		  using 
-		  <samp class="codeph">tbb::parallel_invoke</samp>. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Examples</h2> 
-		 
-		<p>The examples presented here illustrate the various solutions and some
-		  tradeoffs. 
-		</p>
- 
-		<p>The first example uses
-		  <samp class="codeph">tbb::parallel_reduce</samp> to do a + reduction over sequence
-		  of type <samp class="codeph">T</samp>. The sequence is defined by a half-open interval [first,last). 
-		</p>
- 
-		<pre>T AssocReduce( const T* first, const T* last, T identity ) {
-   return tbb::parallel_reduce(
-       // Index range for reduction
-       tbb::blocked_range<const T*>(first,last),
-       // Identity element
-       identity,
-       // Reduce a subrange and partial sum
-       [&]( tbb::blocked_range<const T*> r, T partial_sum )->float {
-           return std::accumulate( r.begin(), r.end(), partial_sum );
-       },
-       // Reduce two partial sums
-       std::plus<T>()
-   );
-} </pre> 
-		<p>The third and fourth arguments to this form of <samp class="codeph">parallel_reduce</samp> are a
-		  built in form of the agglomeration pattern. If there is an elementwise action
-		  to be performed before the reduction, incorporating it into the third argument
-		  (reduction of a subrange) may improve performance because of better locality of
-		  reference. 
-		</p>
- 
-		<p>The second example assumes the + is commutative on <samp class="codeph">T</samp>. It is a good
-		  solution when <samp class="codeph">T</samp> objects are expensive to construct. 
-		</p>
- 
-		<pre>T CombineReduce( const T* first, const T* last, T identity ) {
-   tbb::combinable<T> sum(identity);
-   tbb::parallel_for(
-       tbb::blocked_range<const T*>(first,last),
-       [&]( tbb::blocked_range<const T*> r ) {
-           sum.local() += std::accumulate(r.begin(), r.end(), identity);
-       }
-   );
-   return sum.combine( []( const T& x, const T& y ) {return x+y;} );
-}</pre> 
-		<p>Sometimes it is desirable to destructively use the partial results to
-		  generate the final result. For example, if the partial results are lists, they
-		  can be spliced together to form the final result. In that case use class 
-		  <samp class="codeph">tbb::enumerable_thread_specific</samp> instead of 
-		  <samp class="codeph">combinable</samp>. The 
-		  <samp class="codeph">ParallelFindCollisions</samp>
-		  example in <em>Divide amd Conquer</em> demonstrates the technique. 
-		</p>
- 
-		<p>Floating-point addition and multiplication are almost associative.
-		  Reassociation can cause changes because of rounding effects. The techniques
-		  shown so far reassociate terms non-deterministically. Fully deterministic
-		  parallel reduction for a not quite associative operation requires using
-		  deterministic reassociation. The code below demonstrates this in the form of a
-		  template that does a + reduction over a sequence of values of type <samp class="codeph">T</samp>. 
-		</p>
- 
-		<pre>template<typename T>
-T RepeatableReduce( const T* first, const T* last, T identity ) {
-   if( last-first<=1000 ) {
-       // Use serial reduction
-       return std::accumulate( first, last, identity );
-   } else {
-       // Do parallel divide-and-conquer reduction
-       const T* mid = first+(last-first)/2;
-       T left, right;
-       tbb::parallel_invoke(
-           [&]{left=RepeatableReduce(first,mid,identity);},
-           [&]{right=RepeatableReduce(mid,last,identity);} 
-       );
-       return left+right;
-   }
-}</pre> 
-		<p>The outer if-else is an instance of the agglomeration pattern for
-		  recursive computations. The reduction graph, though not a strict binary tree,
-		  is fully deterministic. Thus the result will always be the same for a given
-		  input sequence, assuming all threads do identical floating-point rounding. 
-		</p>
- 
-		<p>The final example shows how a problem that typically is not viewed as
-		  a reduction can be parallelized by viewing it as a reduction. The problem is
-		  retrieving floating-point exception flags for a computation across a data set.
-		  The serial code might look something like: 
-		</p>
- 
-		<pre>   feclearexcept(FE_ALL_EXCEPT); 
-   for( int i=0; i<N; ++i )
-       C[i]=A[i]*B[i];
-   int flags = fetestexcept(FE_ALL_EXCEPT);
-   if (flags & FE_DIVBYZERO) ...;
-   if (flags & FE_OVERFLOW) ...;
-   ...</pre> 
-		<p>The code can be parallelized by computing chunks of the loop
-		  separately, and merging floating-point flags from each chunk. To do this with 
-		  <samp class="codeph">tbb:parallel_reduce</samp>, first define a
-		  "body" type, as shown below. 
-		</p>
- 
-		<pre>struct ComputeChunk {
-   int flags;          // Holds floating-point exceptions seen so far.
-   void reset_fpe() {
-       flags=0;
-       feclearexcept(FE_ALL_EXCEPT);
-   }
-   ComputeChunk () {
-       reset_fpe();
-   }
-   // "Splitting constructor"called by parallel_reduce when splitting a range into subranges.
-   ComputeChunk ( const ComputeChunk&, tbb::split ) {
-       reset_fpe();
-   }
-   // Operates on a chunk and collects floating-point exception state into flags member.
-   void operator()( tbb::blocked_range<int> r ) {
-       int end=r.end();
-       for( int i=r.begin(); i!=end; ++i )
-           C[i] = A[i]/B[i];
-       // It is critical to do |= here, not =, because otherwise we
-       // might lose earlier exceptions from the same thread.
-       flags |= fetestexcept(FE_ALL_EXCEPT);
-   }
-   // Called by parallel_reduce when joining results from two subranges.
-   void join( Body& other ) {
-       flags |= other.flags;
-   }
-};</pre> 
-		<p>Then invoke it as follows: 
-		</p>
- 
-		<pre>// Construction of cc implicitly resets FP exception state.
-   ComputeChunk cc;
-   tbb::parallel_reduce( tbb::blocked_range<int>(0,N), cc );
-   if (cc.flags & FE_DIVBYZERO) ...;
-   if (cc.flags & FE_OVERFLOW) ...;
-   ...</pre> 
-		<p>  
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Agglomeration.htm#Agglomeration">Agglomeration 
-		  </a></div>
-<div><a href="Elementwise.htm#Elementwise">Elementwise 
-		  </a></div>
-<div><a href="Divide_and_Conquer.htm#Divide_and_Conquer">Divide and Conquer 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Reference_Counting.htm b/doc/help/tbb_userguide/Design_Patterns/Reference_Counting.htm
deleted file mode 100755
index 2aeac5b..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Reference_Counting.htm
+++ /dev/null
@@ -1,171 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Reference Counting">
-<meta name="DC.subject" content="Reference Counting">
-<meta name="keywords" content="Reference Counting">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Reference_Counting">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Reference Counting</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Reference_Counting">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Reference_Counting"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Reference Counting</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Destroy an object when it will no longer be used. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>Often it is desirable to destroy an object when it is known that it
-		  will not be used in the future. Reference counting is a common serial solution
-		  that extends to parallel programming if done carefully. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>If there are cycles of references, basic reference counting is
-				insufficient unless the cycle is explicitly broken. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Atomic counting is relatively expensive in hardware. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>Thread-safe reference counting is like serial reference counting,
-		  except that the increment/decrement is done atomically, and the decrement and
-		  test "count is zero?" must act as a single atomic operation. The
-		  following example uses 
-		  <samp class="codeph">tbb::atomic<int></samp> to achieve this. 
-		</p>
- 
-		<pre>template<typename T>
-class counted {
-   tbb::atomic<int> my_count;
-   T value;
-public:
-   // Construct object with a single reference to it.
-   counted() {my_count=1;}
-   // Add reference
-   void add_ref() {++my_count;}
-   // Remove reference. Return true if it was the last reference.
-   bool remove_ref() {return ‐‐my_count==0;}
-   // Get reference to underlying object
-   T& get() {
-       assert(my_count>0);
-       return my_value;
-   }
-};</pre> 
-		<p>It is incorrect to use a separate read for testing if the count is
-		  zero. The following code would be an incorrect implementation of method 
-		  <samp class="codeph">remove_ref</samp>() because two threads might both execute
-		  the decrement, and then both read 
-		  <samp class="codeph">my_count</samp> as zero. Hence two callers would both be told
-		  incorrectly that they had removed the last reference. 
-		</p>
- 
-		<pre>      ‐‐my_count;
-      return my_count==0. <span style="color:blue"><strong>// WRONG!</strong></span></pre> 
-		<p>The decrement may need to have a 
-		  <em>release</em> fence so that any pending writes complete before the
-		  object is deleted. 
-		</p>
- 
-		<p>There is no simple way to atomically copy a pointer and increment its
-		  reference count, because there will be a timing hole between the copying and
-		  the increment where the reference count is too low, and thus another thread
-		  might decrement the count to zero and delete the object. Two ways to address
-		  the problem are "hazard pointers" and "pass the buck". See the references below
-		  for details. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Variations</h2> 
-		 
-		<p>Atomic increment/decrement can be more than an order of magnitude more
-		  expensive than ordinary increment/decrement. The serial optimization of
-		  eliminating redundant increment/decrement operations becomes more important
-		  with atomic reference counts. 
-		</p>
- 
-		<p>Weighted reference counting can be used to reduce costs if the
-		  pointers are unshared but the referent is shared. Associate a 
-		  <em>weight</em> with each pointer. The reference count is the sum of the
-		  weights. A pointer 
-		  <samp class="codeph">x</samp> can be copied as a pointer 
-		  <samp class="codeph">x</samp>' without updating the reference count by splitting
-		  the original weight between x and x'. If the weight of x is too low to split,
-		  then first add a constant W to the reference count and weight of x. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">References</h2> 
-		 
-		<p>D. Bacon and V.T. Rajan, "Concurrent Cycle Collection in Reference
-		  Counted Systems" in 
-		  <cite>Proc. European Conf. on Object-Oriented Programming</cite> (June
-		  2001). Describes a garbage collector based on reference counting that does
-		  collect cycles. 
-		</p>
- 
-		<p>M. Michael, "Hazard Pointers: Safe Memory Reclamation for Lock-Free
-		  Objects" in IEEE Transactions on Parallel and Distributed Systems (June 2004).
-		  Describes the "hazard pointer" technique. 
-		</p>
- 
-		<p>M. Herlihy, V. Luchangco, and M. Moir, "The Repeat Offender Problem: A
-		  Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures" in 
-		  <cite>Proceedings of the 16th International Symposium on Distributed
-			 Computing</cite> (Oct. 2002). Describes the "pass the buck" technique. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Design_Patterns/Wavefront.htm b/doc/help/tbb_userguide/Design_Patterns/Wavefront.htm
deleted file mode 100755
index 906ddd1..0000000
--- a/doc/help/tbb_userguide/Design_Patterns/Wavefront.htm
+++ /dev/null
@@ -1,225 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Wavefront">
-<meta name="DC.subject" content="Wavefront">
-<meta name="keywords" content="Wavefront">
-<meta name="DC.Relation" scheme="URI" content="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="General_References.htm#General_References">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="Wavefront">
-<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
-<title>Wavefront</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="Wavefront">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="Wavefront"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Wavefront</h1>
- 
-   
-  <div> 
-	 <div class="section"><h2 class="sectiontitle">Problem</h2> 
-		 
-		<p>Perform computations on items in a data set, where the computation on
-		  an item uses results from computations on predecessor items. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Context</h2> 
-		 
-		<p>The dependences between computations form an acyclic graph. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Forces</h2> 
-		 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Dependence constraints between items form an acyclic graph. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>The number of immediate predecessors in the graph is known in
-				advance, or can be determined some time before the last predecessor completes. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Solution</h2> 
-		 
-		<p>The solution is a parallel variant of topological sorting, using 
-		  <samp class="codeph">tbb::parallel_do</samp> to process items. Associate an atomic
-		  counter with each item. Initialize each counter to the number of predecessors.
-		  Invoke tbb::parallel_do to process the items that have no predessors (have
-		  counts of zero). After an item is processed, decrement the counters of its
-		  successors. If a successor's counter reaches zero, add that successor to the 
-		  <samp class="codeph">tbb::parallel_do</samp> via a "feeder". 
-		</p>
- 
-		<p>If the number of predecessors for an item cannot be determined in
-		  advance, treat the information "know number of predecessors" as an
-		  additional predecessor. When the number of predecessors becomes known, treat
-		  this conceptual predecessor as completed. 
-		</p>
- 
-		<p>If the overhead of counting individual items is excessive, aggregate
-		  items into blocks, and do the wavefront over the blocks. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Example</h2> 
-		 
-		<p>Below is a serial kernel for the longest common subsequence algorithm.
-		  The parameters are strings 
-		  <samp class="codeph">x</samp> and 
-		  <samp class="codeph">y</samp> with respective lengths 
-		  <samp class="codeph">xlen</samp> and 
-		  <samp class="codeph">ylen</samp>. 
-		</p>
- 
-		<pre>int F[MAX_LEN+1][MAX_LEN+1];
-
-void SerialLCS( const char* x, size_t xlen, const char* y, size_t ylen )
-{
-   for( size_t i=1; i<=xlen; ++i )
-       for( size_t j=1; j<=ylen; ++j )
-           F[i][j] = x[i-1]==y[j-1] ? F[i-1][j-1]+1:
-                                      max(F[i][j-1],F[i-1][j]);
-}</pre> 
-		<p>The kernel sets 
-		  <samp class="codeph">F[i][j]</samp> to the length of the longest common
-		  subsequence shared by 
-		  <samp class="codeph">x[0..i-1]</samp> and 
-		  <samp class="codeph">y[0..j-1]</samp>. It assumes that F[0][0..ylen] and 
-		  <samp class="codeph">F[0..xlen][0]</samp> have already been initialized to zero. 
-		</p>
- 
-		<p>The following figure shows the data dependences for calculating 
-		  <samp class="codeph">F[i][j]</samp>. 
-		</p>
- 
-		<div class="fignone" id="fig3"><a name="fig3"><!-- --></a><span class="figcap">Data dependences for longest common substring
-			 calculation.</span> 
-		  <br><img width="122" height="122" src="Images/image005.jpg"><br> 
-		</div>
- 
-		<p>The following figure shows the gray diagonal dependence is the
-		  transitive closure of other dependencies. Thus for parallelization purposes it
-		  is a redundant dependence that can be ignored. 
-		</p>
- 
-		<div class="fignone" id="fig4"><a name="fig4"><!-- --></a><span class="figcap">Diagonal dependence is redundant.</span> 
-		  <br><img width="122" height="122" src="Images/image006.jpg"><br> 
-		</div>
- 
-		<p>It is generally good to remove redundant dependences from
-		  consideration, because the atomic counting incurs a cost for each dependence
-		  considered. 
-		</p>
- 
-		<p>Another consideration is grain size. Scheduling each 
-		  <samp class="codeph">F[i][j]</samp> element calculation separately is
-		  prohibitively expensive. A good solution is to aggregate the elements into
-		  contiguous blocks, and process the contents of a block serially. The blocks
-		  have the same dependence pattern, but at a block scale. Hence scheduling
-		  overheads can be amortized over blocks. 
-		</p>
- 
-		<p>The parallel code follows. Each block consists of 
-		  <samp class="codeph">N×N</samp> elements. Each block has an associated atomic
-		  counter. Array 
-		  <samp class="codeph">Count</samp> organizes these counters for easy lookup. The
-		  code initializes the counters and then rolls a wavefront using 
-		  <samp class="codeph">parallel_do</samp>, starting with the block at the origin
-		  since it has no predecessors. 
-		</p>
- 
-		<pre>const int N = 64;
-tbb::atomic<char> Count[MAX_LEN/N+1][MAX_LEN/N+1];
- 
-void ParallelLCS( const char* x, size_t xlen, const char* y, size_t ylen ) {
-   // Initialize predecessor counts for blocks.
-   size_t m = (xlen+N-1)/N;
-   size_t n = (ylen+N-1)/N;
-   for( int i=0; i<m; ++i )
-       for( int j=0; j<n; ++j )
-           Count[i][j] = (i>0)+(j>0);
-   // Roll the wavefront from the origin.
-   typedef pair<size_t,size_t> block;
-   block origin(0,0);
-   tbb::parallel_do( &origin, &origin+1,
-       [=]( const block& b, tbb::parallel_do_feeder<block>&feeder ) {
-           // Extract bounds on block
-           size_t bi = b.first;
-           size_t bj = b.second;
-           size_t xl = N*bi+1;
-           size_t xu = min(xl+N,xlen+1);
-           size_t yl = N*bj+1;
-           size_t yu = min(yl+N,ylen+1);
-           // Process the block
-           for( size_t i=xl; i<xu; ++i )
-               for( size_t j=yl; j<yu; ++j )
-                   F[i][j] = x[i-1]==y[j-1] ? F[i-1][j-1]+1:
-                                              max(F[i][j-1],F[i-1][j]);
-           // Account for successors
-           if( bj+1<n && ‐‐Count[bi][bj+1]==0 )
-               feeder.add( block(bi,bj+1) );
-           if( bi+1<m && ‐‐Count[bi+1][bj]==0 )
-               feeder.add( block(bi+1,bj) );       }
-   );
-}</pre> 
-		<p>A regular structure simplifies implementation of the wavefront
-		  pattern, but is not required. The parallel preorder traversal in 
-		  <samp class="codeph">examples/parallel_do/parallel_preorder</samp> applies the
-		  wavefront pattern to traverse each node of a graph in parallel, subject to the
-		  constraint that a node is traversed after its predecessors are traversed. In
-		  that example, each node in the graph stores its predecessor count. 
-		</p>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">References</h2> 
-		 
-		<p>Eun-Gyu Kim and Mark Snir, "Wavefront Pattern",
-		  http://www.cs.uiuc.edu/homes/snir/PPP/patterns/wavefront.pdf 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="General_References.htm#General_References">General References 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Empty_Tasks.htm b/doc/help/tbb_userguide/Empty_Tasks.htm
deleted file mode 100755
index c1dfa93..0000000
--- a/doc/help/tbb_userguide/Empty_Tasks.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Empty Tasks">
-<meta name="DC.subject" content="Empty Tasks">
-<meta name="keywords" content="Empty Tasks">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Empty_Tasks">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Empty Tasks</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Empty_Tasks">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Empty_Tasks"><!-- --></a>
-
-
-<h1 class="topictitle1">Empty Tasks</h1>
-
-<div><p>You might need a task that does not do anything but wait for its children to complete. The header <samp class="codeph">task.h</samp> defines class <samp class="codeph">empty_task</samp> for this purpose. Its definition is as follows:</p>
-<pre>// Task that does nothing. Useful for synchronization.
-class empty_task: public task {
-    /*override*/ task* execute() {
-        return NULL;
-    }
-};</pre><p>A good example of <samp class="codeph">empty_task</samp> in action is provided in <samp class="codeph">tbb/parallel_for</samp>.<samp class="codeph">h</samp>, in method <span class="option">start_for::execute()</span>. The code there uses continuation-passing style. It creates two child tasks, and uses an <samp class="codeph">empty_task</samp> as the continuation when the child tasks complete. The top level routine <samp class="codeph">parallel_for</samp> (in <samp class="codep [...]
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Exceptions_and_Cancellation.htm b/doc/help/tbb_userguide/Exceptions_and_Cancellation.htm
deleted file mode 100755
index a723c23..0000000
--- a/doc/help/tbb_userguide/Exceptions_and_Cancellation.htm
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Exceptions and Cancellation">
-<meta name="DC.subject" content="Exceptions and Cancellation">
-<meta name="keywords" content="Exceptions and Cancellation">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Cancellation_Without_An_Exception.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Cancellation_and_Nested_Parallelism.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Exceptions_and_Cancellation">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Exceptions and Cancellation</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Exceptions_and_Cancellation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Exceptions_and_Cancellation"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Exceptions and Cancellation</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) supports exceptions and
-		cancellation. When code inside an Intel® TBB algorithm throws an exception, the
-		following steps generally occur: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>The exception is captured. Any further exceptions inside the
-			 algorithm are ignored. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The algorithm is cancelled. Pending iterations are not executed. If
-			 there is Intel® TBB parallelism nested inside, the nested parallelism may also
-			 be cancelled as explained in 
-			 <strong>Cancellation and Nested Parallelism</strong>. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Once all parts of the algorithm stop, an exception is thrown on the
-			 thread that invoked the algorithm. 
-		  </p>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>The exception thrown in step 3 might be the original exception, or might
-		merely be a summary of type 
-		<samp class="codeph">captured_exception</samp>. The latter usually occurs on current
-		systems because propagating exceptions between threads requires support for the
-		C++ 
-		<samp class="codeph">std::exception_ptr</samp> functionality. As compilers evolve to
-		support this functionality, future versions of Intel® TBB might throw the
-		original exception. So be sure your code can catch either type of exception.
-		The following example demonstrates exception handling. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
-#include <vector>
-#include <iostream>
- 
-using namespace tbb;
-using namespace std;
- 
-vector<int> Data;
- 
-struct Update {
-    void operator()( const blocked_range<int>& r ) const {
-        for( int i=r.begin(); i!=r.end(); ++i )
-            Data.at(i) += 1;
-    }
-};
- 
-int main() {
-    Data.resize(1000);
-    try {
-        parallel_for( blocked_range<int>(0, 2000), Update());
-    } catch( captured_exception& ex ) {
-       cout << "captured_exception: " << ex.what() << endl;
-    } catch( out_of_range& ex ) {
-       cout << "out_of_range: " << ex.what() << endl;
-    }
-    return 0;
-}</pre> 
-	 <p>The 
-		<samp class="codeph">parallel_for</samp> attempts to iterate over 2000 elements of a
-		vector with only 1000 elements. Hence the expression 
-		<samp class="codeph">Data.at(i)</samp> sometimes throws an exception 
-		<samp class="codeph">std::out_of_range</samp> during execution of the algorithm.
-		When the exception happens, the algorithm is cancelled and an exception thrown
-		at the call site to 
-		<samp class="codeph">parallel_for</samp>. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Cancellation_Without_An_Exception.htm">Cancellation Without An Exception</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Cancellation_and_Nested_Parallelism.htm">Cancellation and Nested Parallelism</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm b/doc/help/tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm
deleted file mode 100755
index 591e4ce..0000000
--- a/doc/help/tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="General Acyclic Graphs of Tasks">
-<meta name="DC.subject" content="General Acyclic Graphs of Tasks">
-<meta name="keywords" content="General Acyclic Graphs of Tasks">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_General_Acyclic_Graphs_of_Tasks">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>General Acyclic Graphs of Tasks</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_General_Acyclic_Graphs_of_Tasks">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_General_Acyclic_Graphs_of_Tasks"><!-- --></a>
-
- 
-  <h1 class="topictitle1">General Acyclic Graphs of Tasks</h1>
- 
-  
-  <div>
-	 <p>The task graphs considered so far have a tree structure where each task
-		has a single successor 
-		<samp class="codeph">task::parent()</samp> waiting for it to complete. To
-		accommodate more complex graphs where a task has multiple successors, 
-        Intel® Threading Building Blocks (Intel® TBB) 2.2 and later has methods 
-        that allow direct manipulation of a task's reference count.
-	 </p>
-
-	 <p>For example, consider a MxN array of tasks where each task depends on
-		the tasks to the left and above it. The following figure shows such an example:
-	 </p>
-
-	 <div class="fignone" id="fig11"><a name="fig11"><!-- --></a><span class="figcap">Task graph where some tasks have more than one
-		  successor.</span> 
-		<br><img src="Images/image018.jpg" width="216" height="120"><br>
-	 </div>
-
-	 <p>The following code evaluates such a task graph, where each task computes
-		a sum of inputs from its neighbors to the left and above it. 
-	 </p>
-
-	 <pre>const int M=3, N=4;
- 
-class DagTask: public tbb::task {
-public:
-    const int i, j;
-    // input[0] = sum from above, input[1] = sum from left
-    double input[2];
-    double sum;
-    // successor[0] = successor below, successor[1] = successor to right
-    DagTask* successor[2];
-    DagTask( int i_, int j_ ) : i(i_), j(j_) {
-        input[0] = input[1] = 0;
-    }
-    task* execute() {
-        __TBB_ASSERT( ref_count()==0, NULL );
-        sum = i==0 && j==0 ? 1 : input[0]+input[1];
-        for( int k=0; k<2; ++k )
-            if( DagTask* t = successor[k] ) {
-                t->input[k] = sum;
-                if( t->decrement_ref_count()==0 )
-                    spawn( *t );
-            }
-        return NULL;
-    }
-};
- 
-double BuildAndEvaluateDAG() {
-    DagTask* x[M][N];
-    for( int i=M; --i>=0; )
-        for( int j=N; --j>=0; ) {
-            x[i][j] = new( tbb::task::allocate_root() ) DagTask(i,j);
-            x[i][j]->successor[0] = i+1<M ? x[i+1][j] : NULL;
-            x[i][j]->successor[1] = j+1<N ? x[i][j+1] : NULL;
-            x[i][j]->set_ref_count((i>0)+(j>0));
-        }
-    // Add extra reference to last task, because it is waited on
-    // by spawn_and_wait_for_all.
-    x[M-1][N-1]->increment_ref_count();
-    // Wait for all but last task to complete.
-    x[M-1][N-1]->spawn_and_wait_for_all(*x[0][0]);
-    // Last task is not executed implicitly, so execute it explicitly.
-    x[M-1][N-1]->execute();
-    double result = x[M-1][N-1]->sum;
-    // Destroy last task.
-    task::destroy(*x[M-1][N-1]);
-    return result;
-}</pre>
-	 <p>Function 
-		<samp class="codeph">BuildAndEvaluateDAG</samp> first builds an array of 
-		<samp class="codeph">DagTask</samp>. It allocates each task as a root task because 
-		<samp class="codeph">task::parent()</samp> is not used to record successor
-		relationships. The reference count of each task is initialized to the number of
-		its predecessors. It evaluates the graph by spawning the initial task 
-		<samp class="codeph">x[0][0]</samp> and waiting for 
-		<samp class="codeph">x[M-1][N-1]</samp> to complete. As each task completes, it
-		decrements the reference count of its successors, and spawns any successor
-		whose count becomes zero. Given a sufficient number of processors, execution
-		sweeps diagonally over the graph like a wave front from top left to bottom
-		right.
-	 </p>
-
-	 <p>The last task 
-		<samp class="codeph">x[M-1][N-1]</samp> requires special handling because of its
-		special interaction with 
-		<samp class="codeph">BuildAndEvaluateDAG</samp>:
-	 </p>
- 
-	 <ul type="disc">
-		<li>
-		  <p>The last task is used to wait explicitly for other tasks to
-			 complete. Method 
-			 <samp class="codeph">wait_for_all</samp> requires that the last task's reference
-			 count be set to one more than the number of its predecessors. Thus the last
-			 task is not implicitly executed when its predecessors complete. 
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>The value 
-			 <samp class="codeph">sum</samp> must be extracted from the last task before it
-			 is destroyed.
-		  </p>
-
-		</li>
-
-	 </ul>
-
-	 <p>Hence the example explicitly executes the last task, extracts its sum,
-		and then destroys it. 
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/How_Task_Scheduling_Works.htm b/doc/help/tbb_userguide/How_Task_Scheduling_Works.htm
deleted file mode 100755
index 5e14e8d..0000000
--- a/doc/help/tbb_userguide/How_Task_Scheduling_Works.htm
+++ /dev/null
@@ -1,244 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="How Task Scheduling Works">
-<meta name="DC.subject" content="How Task Scheduling Works">
-<meta name="keywords" content="How Task Scheduling Works">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="Scheduler_Bypass.htm">
-<meta name="DC.Relation" scheme="URI" content="Simple_Example_Fibonacci_Numbers.htm#tutorial_Simple_Example_Fibonacci_Numbers">
-<meta name="DC.Relation" scheme="URI" content="Continuation_Passing.htm#tutorial_Continuation_Passing">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_How_Task_Scheduling_Works">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>How Task Scheduling Works</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_How_Task_Scheduling_Works">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_How_Task_Scheduling_Works"><!-- --></a>
-
- 
-  <h1 class="topictitle1">How Task Scheduling Works</h1>
- 
-   
-  <div> 
-	 <p>The scheduler evaluates a 
-		<em>task graph.</em> The graph is a directed graph where each node is a
-		task. Each task points to its 
-		<em>successor</em>, which is another task that is waiting on it to
-		complete, or NULL. Method 
-  <span class="option">task::parent</span><samp class="codeph">()</samp>
-  gives you read-only access to the successor pointer. Each task has a 
-  <em>refcount</em> that counts the number of tasks that have it as a successor.
-  The graph evolves over time. 
-  </p>
- 
-  <div class="fignone" id="fig7"><a name="fig7"><!-- --></a><span class="figcap">Snapshot of Task Graph for the Fibonacci Example</span> 
-	 <br><img src="Images/image014.jpg"><br> 
-  </div>
- 
-  <p> The figure above shows a snapshot of a task graph for the Fibonacci
-	 example where: 
-  </p>
- 
-  <ul type="disc"> 
-	 <li> 
-		<p>Tasks A, B, and C spawned child tasks that they are waiting upon.
-		  Their 
-		  <em>refcount</em> values are the number of children in flight plus one.
-		  The extra one is part of a convention for explicit waiting that is explained
-		  later in this section. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Task D is running, but has not yet spawned any children, and so it has
-		  not had to set its reference count yet. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Tasks E, F, and G have been spawned, but have not yet started
-		  executing. 
-		</p>
- 
-	 </li>
- 
-  </ul>
- 
-  <p>The scheduler runs tasks in a way that tends to minimize both memory
-	 demands and cross-thread communication. The intuition is that a balance must be
-	 reached between depth-first and breadth-first execution. Assuming that the tree
-	 is finite, depth-first is best for sequential execution for the following
-	 reasons: 
-  </p>
- 
-  <ul type="disc"> 
-	 <li> 
-		<p><strong>Strike when the cache is hot</strong>. The deepest tasks are the most
-		  recently created tasks, and therefore are hottest in cache. Also, if they can
-		  complete, then task C can continue executing, and though not the hottest in
-		  cache, it is still warmer than the older tasks above it. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p><strong>Minimize space</strong>. Executing the shallowest task leads to
-		  breadth-first unfolding of the tree. This creates an exponential number of
-		  nodes that coexist simultaneously. In contrast, depth-first execution creates
-		  the same number of nodes, but only a linear number have to exist at the same
-		  time, because it stacks the other ready tasks (E, F, and G in the picture). 
-		</p>
- 
-	 </li>
- 
-  </ul>
- 
-  <p>Though breadth-first execution has a severe problem with memory
-	 consumption, it does maximize parallelism if you have an unlimited number of
-	 physical threads. Since physical threads are limited, it is better to use only
-	 enough breadth-first execution to keep the available processors busy. 
-  </p>
- 
-  <p>The scheduler implements a hybrid of depth-first and breadth-first
-	 execution. Each thread has its own deque<a href="#ftn8"><sup><sup>[8]</sup></sup></a> of tasks that are ready to
-	 run. When a thread spawns a task, it pushes it onto the bottom of its deque.
-	 The following figure shows a snapshot of a thread's deque that corresponds to
-	 the task graph in figure above. 
-  </p>
- 
-  <div class="fignone" id="fig8"><a name="fig8"><!-- --></a><span class="figcap">A Thread's Deque</span> 
-	 <br><img src="Images/image015.jpg" width="222" height="93"><br> 
-  </div>
- 
-  <p>When a thread participates in task graph evaluation, it continually
-	 executes a task obtained by the first rule below that applies:
-  </p>
- 
-  <ol> 
-	 <li> 
-		<p id="Execution_Rules"><a name="Execution_Rules"><!-- --></a>Get the task returned by method 
-		  <samp class="codeph">execute</samp> for the previous task. This rule does not
-		  apply if 
-		  <samp class="codeph">execute</samp> returned 
-		  <samp class="codeph">NULL</samp>. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Pop a task from the 
-		  <em>bottom</em> of its 
-		  <em>own</em> deque. This rule does not apply if the deque is empty. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Steal a task from the 
-		  <em>top</em> of 
-		  <em>another</em> randomly chosen deque. If the chosen deque is empty, the
-		  thread tries this rule again until it succeeds. 
-		</p>
- 
-	 </li>
- 
-  </ol>
- 
-  <p>Rule 1 is discussed in 
-	 <strong>Scheduler Bypass</strong>. The overall effect of rule 2 is to execute the 
-	 <em>youngest</em> task spawned by the thread, which causes depth-first
-	 execution until the thread runs out of work. Then rule 3 applies. It steals the
-	 
-	 <em>oldest</em> task spawned by another thread, which causes temporary
-	 breadth-first execution that converts potential parallelism into actual
-	 parallelism. 
-  </p>
- 
-  <p>Getting a task is always automatic; it happens as part of task graph
-	 evaluation. Putting a task into a deque can be explicit or implicit. A thread
-	 always pushes a task onto the bottom of its own deque, never another thread's
-	 deque. Only theft can transfer a task spawned by one thread to another thread. 
-  </p>
- 
-  <p>There are three conditions that cause a thread to push a task onto its
-	 deque: 
-  </p>
- 
-  <ul type="disc"> 
-	 <li> 
-		<p>The task is explicitly spawned by the thread, for example, by method 
-		  <samp class="codeph">spawn</samp>. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>A task has been marked for re-execution by method 
-		  <samp class="codeph">task::recycle_to_reexecute</samp>. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>The thread completes execution of the last predecessor task 
-		  <em>and</em> after doing so implicitly decrements the task's reference
-		  count to zero. If so, the thread implicitly pushes the successor task onto the
-		  bottom of its deque. Completing the last child does not cause the reference
-		  count to become zero if the reference count includes extra references. 
-		</p>
- 
-	 </li>
- 
-  </ul>
- 
-  <p>The example in 
-	 <strong>Fibonacci Numbers</strong> does not have implicit pushing, because it
-	 explicitly waits for children to complete. It uses 
-	 <samp class="codeph">set_ref_count(3)</samp> for a task having only two children. The
-	 extra reference protects the successor from being implicitly pushed. 
-	 <strong>Continuation Passing</strong> has a similar example that employs implicit
-	 pushing. It uses 
-	 <samp class="codeph">set_ref_count(2)</samp> for a task having two children, so that
-	 that task executes automatically when the children complete. 
-  </p>
- 
-  <p>To summarize, the task scheduler's fundamental strategy is 'breadth-first
-	 theft and depth-first work". The breadth-first theft rule raises
-	 parallelism sufficiently to keep threads busy. The depth-first work rule keeps
-	 each thread operating efficiently once it has sufficient work to do. 
-  </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Scheduler_Bypass.htm">Scheduler Bypass 
-		  </a></div>
-<div><a href="Simple_Example_Fibonacci_Numbers.htm#tutorial_Simple_Example_Fibonacci_Numbers">Simple Example: Fibonacci Numbers 
-		  </a></div>
-<div><a href="Continuation_Passing.htm#tutorial_Continuation_Passing">
-		  </a></div></div>
-</div> 
-<p class="tfootnote"><a id="ftn8"><sup>[8]</sup></a>   Double-ended queue.</p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Images/image002.jpg b/doc/help/tbb_userguide/Images/image002.jpg
deleted file mode 100755
index 5e06ac8..0000000
Binary files a/doc/help/tbb_userguide/Images/image002.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image004.jpg b/doc/help/tbb_userguide/Images/image004.jpg
deleted file mode 100755
index 6784605..0000000
Binary files a/doc/help/tbb_userguide/Images/image004.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image006.jpg b/doc/help/tbb_userguide/Images/image006.jpg
deleted file mode 100755
index 23f2393..0000000
Binary files a/doc/help/tbb_userguide/Images/image006.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image007.jpg b/doc/help/tbb_userguide/Images/image007.jpg
deleted file mode 100755
index 726b44d..0000000
Binary files a/doc/help/tbb_userguide/Images/image007.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image008.jpg b/doc/help/tbb_userguide/Images/image008.jpg
deleted file mode 100755
index e5a2a4b..0000000
Binary files a/doc/help/tbb_userguide/Images/image008.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image009.jpg b/doc/help/tbb_userguide/Images/image009.jpg
deleted file mode 100755
index 1a326c1..0000000
Binary files a/doc/help/tbb_userguide/Images/image009.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image010.jpg b/doc/help/tbb_userguide/Images/image010.jpg
deleted file mode 100755
index c84ab1d..0000000
Binary files a/doc/help/tbb_userguide/Images/image010.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image011.jpg b/doc/help/tbb_userguide/Images/image011.jpg
deleted file mode 100755
index 2297c1c..0000000
Binary files a/doc/help/tbb_userguide/Images/image011.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image012.jpg b/doc/help/tbb_userguide/Images/image012.jpg
deleted file mode 100755
index e9b011c..0000000
Binary files a/doc/help/tbb_userguide/Images/image012.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image013.jpg b/doc/help/tbb_userguide/Images/image013.jpg
deleted file mode 100755
index 838f39e..0000000
Binary files a/doc/help/tbb_userguide/Images/image013.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image014.jpg b/doc/help/tbb_userguide/Images/image014.jpg
deleted file mode 100755
index 7def57e..0000000
Binary files a/doc/help/tbb_userguide/Images/image014.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image015.jpg b/doc/help/tbb_userguide/Images/image015.jpg
deleted file mode 100755
index 7fbedc7..0000000
Binary files a/doc/help/tbb_userguide/Images/image015.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image016.jpg b/doc/help/tbb_userguide/Images/image016.jpg
deleted file mode 100755
index a35a2c9..0000000
Binary files a/doc/help/tbb_userguide/Images/image016.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image017.jpg b/doc/help/tbb_userguide/Images/image017.jpg
deleted file mode 100755
index bd8bfb1..0000000
Binary files a/doc/help/tbb_userguide/Images/image017.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Images/image018.jpg b/doc/help/tbb_userguide/Images/image018.jpg
deleted file mode 100755
index b727bac..0000000
Binary files a/doc/help/tbb_userguide/Images/image018.jpg and /dev/null differ
diff --git a/doc/help/tbb_userguide/Initializing_and_Terminating_the_Library.htm b/doc/help/tbb_userguide/Initializing_and_Terminating_the_Library.htm
deleted file mode 100755
index 6921bbf..0000000
--- a/doc/help/tbb_userguide/Initializing_and_Terminating_the_Library.htm
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Initializing and Terminating the Library">
-<meta name="DC.subject" content="Initializing and Terminating the Library">
-<meta name="keywords" content="Initializing and Terminating the Library">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="../reference/task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Initializing_and_Terminating_the_Library">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Initializing and Terminating the Library</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Initializing_and_Terminating_the_Library">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Initializing_and_Terminating_the_Library"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Initializing and Terminating the Library</h1>
- 
-  
-  <div>
-	 <p>Intel® Threading Building Blocks (Intel® TBB) 2.2 and later automatically initializes the 
-        task scheduler. You can use class 
-		<samp class="codeph">task_scheduler_init</samp> to explicitly initialize the task
-		scheduler, which can be useful for doing any of the following:
-	 </p>
- 
-	 <ul type="disc">
-		<li>
-		  <p>Control when the task scheduler is constructed and destroyed.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Specify the number of threads used by the task scheduler.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Specify the stack size for worker threads.
-		  </p>
-
-		</li>
-
-	 </ul>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="../reference/task_scheduler/task_scheduler_init_cls.htm#task_scheduler_init_cls">task_scheduler_init Class
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm b/doc/help/tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm
deleted file mode 100755
index 959e423..0000000
--- a/doc/help/tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Integration Plug-In for Microsoft Visual Studio* Projects">
-<meta name="DC.subject" content="Integration Plug-In for Microsoft Visual Studio* Projects">
-<meta name="keywords" content="Integration Plug-In for Microsoft Visual Studio* Projects">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Windows_OS.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Integration_Plug-In_for_Microsoft_Visual_Studio_Projects">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Integration Plug-In for Microsoft Visual Studio* Projects</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Integration_Plug-In_for_Microsoft_Visual_Studio_Projects">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Integration_Plug-In_for_Microsoft_Visual_Studio_Projects"><!-- --></a>
-
-
-<h1 class="topictitle1">Integration Plug-In for Microsoft Visual Studio* Projects</h1>
-
-<div><p>The plug-in simplifies integration of Intel® Threading Building Blocks (Intel® TBB) into Microsoft Visual Studio* projects. It can be downloaded from <a href="http://threadingbuildingblocks.org/" target="_blank">http://threadingbuildingblocks.org</a> > Downloads > Extras. The plug-in enables you to quickly add the following to Microsoft Visual C++* projects:</p>
-
-<ul type="disc"><li><p>The path to the Intel® TBB header files</p>
-</li>
-<li><p>The path to the Intel® TBB libraries</p>
-</li>
-<li><p>The specific Intel® TBB libraries to link with</p>
-</li>
-<li><p>The specific Intel® TBB settings</p>
-</li>
-</ul>
-<p>The plug-in works with C++ projects created in Microsoft Visual Studio* 2003, 2005 and 2008 (except Express editions).</p>
-<p>To use this functionality unzip the downloaded package <samp class="codeph">msvs_plugin.zip</samp>, open <samp class="codeph">it</samp>, and follow the instructions in <samp class="codeph">README.txt</samp> to install it.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Windows_OS.htm">Windows* OS</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm b/doc/help/tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm
deleted file mode 100755
index 1562642..0000000
--- a/doc/help/tbb_userguide/Iterating_Over_a_Concurrent_Queue_for_Debugging.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Iterating Over a Concurrent Queue for Debugging">
-<meta name="DC.subject" content="Iterating Over a Concurrent Queue for Debugging">
-<meta name="keywords" content="Iterating Over a Concurrent Queue for Debugging">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Concurrent_Queue_Classes.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Iterating_Over_a_Concurrent_Queue_for_Debugging">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Iterating Over a Concurrent Queue for Debugging</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Iterating_Over_a_Concurrent_Queue_for_Debugging">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Iterating_Over_a_Concurrent_Queue_for_Debugging"><!-- --></a>
-
-
-<h1 class="topictitle1">Iterating Over a Concurrent Queue for Debugging</h1>
-
-<div><p>The template classes <samp class="codeph">concurrent_queue</samp> and <samp class="codeph">concurrent_bounded_queue</samp> support STL-style iteration. This support is intended only for debugging, when you need to dump a queue. The iterators go forwards only, and are too slow to be very useful in production code. If a queue is modified, all iterators pointing to it become invalid and unsafe to use. The following snippet dumps a queue. The <samp class="codeph">operator<<</sa [...]
-
-<pre>concurrent_queue<Foo> q;
-...
-typedef concurrent_queue<Foo>::const_iterator iter;
-for(iter i(q.unsafe_begin()); i!=q.unsafe_end(); ++i ) {
-    cout << *i;
-}</pre>
-<p>The prefix <samp class="codeph">unsafe_</samp> on the methods is a reminder that they are not concurrency safe.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Concurrent_Queue_Classes.htm">Concurrent Queue Classes</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Lambda_Expressions.htm b/doc/help/tbb_userguide/Lambda_Expressions.htm
deleted file mode 100755
index cdb5f0f..0000000
--- a/doc/help/tbb_userguide/Lambda_Expressions.htm
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Lambda Expressions">
-<meta name="DC.subject" content="Lambda Expressions">
-<meta name="keywords" content="Lambda Expressions">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Lambda_Expressions">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Lambda Expressions</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Lambda_Expressions">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Lambda_Expressions"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Lambda Expressions</h1>
- 
-   
-  <div> 
-	 <p>Version 11.0 and later of the Intel® C++ Compiler implements C++11
-		lambda expressions, which make the Intel® Threading Building Blocks (Intel®
-		TBB) 
-		<samp class="codeph">parallel_for</samp> much easier to use. A lambda expression
-		lets the compiler do the tedious work of creating a function object. 
-	 </p>
- 
-	 <p>Below is the example from the previous section, rewritten with a lambda
-		expression. The lambda expression, shown in 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>,
-		replaces both the declaration and construction of function object 
-		<samp class="codeph">ApplyFoo</samp> in the example of the previous section. 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-using namespace tbb;
- 
-void ParallelApplyFoo( float* a, size_t n ) {
-   parallel_for( blocked_range<size_t>(0,n), 
-      <strong>[=](const blocked_range<size_t>& r) {</strong>
-                     <span style="color:blue"> <strong>for(size_t i=r.begin(); i!=r.end(); ++i)</strong> </span>
-                         <span style="color:blue"> <strong>Foo(a[i]);</strong> </span>
-                  <span style="color:blue"><strong>}</strong></span>
-    );
-}</pre> 
-	 <p>The [=] introduces the lambda expression. The expression creates a
-		function object very similar to 
-		<samp class="codeph">ApplyFoo</samp>. When local variables like 
-		<samp class="codeph">a</samp> and 
-		<samp class="codeph">n</samp> are declared outside the lambda expression, but used
-		inside it, they are "captured" as fields inside the function object. The [=]
-		specifies that capture is by value. Writing [&] instead would capture the
-		values by reference. After the [=] is the parameter list and definition for the
-		
-		<samp class="codeph">operator()</samp> of the generated function object. The
-		compiler documentation says more about lambda expressions and other implemented
-		C++11 features. It is worth reading more complete descriptions of lambda
-		expressions than can fit here, because lambda expressions are a powerful
-		feature for using template libraries in general. 
-	 </p>
- 
-	 <p>C++11 support is off by default in the compiler. The following table
-		shows the option for turning it on. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl9"><!-- --></a><table cellpadding="4" summary="" id="tbl9" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Sample Compilation Commands for Using Lambda Expressions</span></caption> 
-		<thead align="left"> 
-		  <tr> 
-			 <th class="cellrowborder" valign="top" width="30.959752321981426%" id="d138701e94"> 
-				<p>Environment 
-				</p>
- 
-			 </th>
- 
-			 <th class="cellrowborder" valign="top" width="69.04024767801857%" id="d138701e100"> 
-				<p>Intel® C++ Compiler (Version 11.0) 
-				</p>
- 
-				<p>Compilation Command and Option 
-				</p>
- 
-			 </th>
- 
-		  </tr>
-</thead>
- 
-		<tbody> 
-		  <tr> 
-			 <td class="cellrowborder" valign="top" width="30.959752321981426%" headers="d138701e94 "> 
-				<p>Windows* OS systems 
-				</p>
- 
-			 </td>
- 
-			 <td class="cellrowborder" valign="top" width="69.04024767801857%" headers="d138701e100 "> 
-				<p><samp class="codeph">icl /Qstd:c++0x foo.cpp</samp> 
-				</p>
- 
-			 </td>
- 
-		  </tr>
- 
-		  <tr> 
-			 <td class="cellrowborder" valign="top" width="30.959752321981426%" headers="d138701e94 "> 
-				<p>Linux* OS systems 
-				</p>
- 
-				<p>OS X* systems 
-				</p>
- 
-			 </td>
- 
-			 <td class="cellrowborder" valign="top" width="69.04024767801857%" headers="d138701e100 "> 
-				<p><samp class="codeph">icc -std=c++0x foo.cpp</samp> 
-				</p>
- 
-			 </td>
- 
-		  </tr>
- 
-		</tbody>
- 
-	 </table>
-</div>
- 
-	 <p>For further compactness, Intel® TBB has a form of 
-		<samp class="codeph">parallel_for</samp> expressly for parallel looping over a
-		consecutive range of integers. The expression 
-		<samp class="codeph">parallel_for(<var>first</var>,<var>last</var>,<var>step</var>,<var>f</var>)</samp>
-		is like writing 
-		<samp class="codeph">for(auto i=<var>first</var>;
-		  i<<var>last</var>;
-		  i+=<var>step</var>)<var>f</var>(i)</samp> except that each
-		f(i) can be evaluated in parallel if resources permit. The 
-		<var>step</var> parameter is optional. Here is the previous
-		example rewritten in the compact form: 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-using namespace tbb;
- 
-#pragma warning(disable: 588)
- 
-void ParallelApplyFoo(float a[], size_t n) {
-    parallel_for(size_t(0), n, [=](size_t i) {Foo(a[i]);});
-}</pre> 
-	 <p>The compact form supports only unidimensional iteration spaces of
-		integers and the automatic chunking feature detailed on the following section. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/parallel_for.htm">parallel_for</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm b/doc/help/tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm
deleted file mode 100755
index 8d8b69e..0000000
--- a/doc/help/tbb_userguide/Linux_C_Dynamic_Memory_Interface_Replacement.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Linux* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="DC.subject" content="Linux* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="keywords" content="Linux* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Automically_Replacing_malloc.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Linux_C_Dynamic_Memory_Interface_Replacement">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Linux* OS C/C++ Dynamic Memory Interface Replacement</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Linux_C_Dynamic_Memory_Interface_Replacement">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Linux_C_Dynamic_Memory_Interface_Replacement"><!-- --></a>
-
-
-<h1 class="topictitle1">Linux* OS C/C++ Dynamic Memory Interface Replacement </h1>
-
-<div><p>Replacements are provided by the proxy library (release version <samp class="codeph">libtbbmalloc_proxy.so.2</samp>, debug version <samp class="codeph">libtbbmalloc_proxy_debug.so.2</samp>). Replacement can be done either via loading the proxy library at run-time (without changing of executable file via <samp class="codeph">LD_PRELOAD</samp>), or by linking with the proxy library.</p>
-<p>The proxy library implements the following dynamic memory functions:</p>
-
-<ul type="disc"><li><p>C library: <samp class="codeph">malloc</samp>, <samp class="codeph">calloc</samp>, <samp class="codeph">realloc</samp>, <samp class="codeph">free</samp></p>
-</li>
-<li><p>Standard POSIX* function: <samp class="codeph">posix_memalign</samp></p>
-</li>
-<li><p>Obsolete functions: <samp class="codeph">valloc</samp>, <samp class="codeph">memalign</samp>, <samp class="codeph">pvalloc</samp>, <samp class="codeph">mallopt</samp></p>
-</li>
-<li><p>Global C++ operators <samp class="codeph">new</samp> and <samp class="codeph">delete</samp>.</p>
-</li>
-</ul>
-<p>A directory with the proxy library and the appropriate scalable memory allocator library must be available for dynamic loading. To make it available for loading, either include it in <samp class="codeph">LD_LIBRARY_PATH</samp> or add it to <samp class="codeph">/etc/ld.so.conf</samp>.</p>
-<p>The following limitations for replacement exist:</p>
-
-<ul type="disc"><li><p>Replacement does not work for applications that use non-standard calls to the glibc memory allocator.</p>
-</li>
-<li><p>Mono is not supported.</p>
-</li>
-</ul>
-
-<div class="section"><h2 class="sectiontitle">Examples</h2>
-<p>Below is an example of how to set <samp class="codeph">LD_PRELOAD</samp> and link a program to use the replacements.</p>
-<pre># Set LD_PRELOAD so that loader loads release version of proxy 
-LD_PRELOAD=libtbbmalloc_proxy.so.2 
-# Link with release version of proxy and scalable allocator
-g++ foo.o bar.o -ltbbmalloc_proxy -ltbbmalloc -o a.out</pre><p>Here is a variation that shows how to link in the debug versions of the library.</p>
-<pre># Set LD_PRELOAD so that loader loads debug version of proxy
-LD_PRELOAD=libtbbmalloc_proxy_debug.so.2 
-# Link with debug version of proxy and scalable allocator
-g++ foo.o bar.o -ltbbmalloc_proxy_debug -ltbbmalloc_debug -o a.out</pre></div>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Automically_Replacing_malloc.htm">Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Linux_OS.htm b/doc/help/tbb_userguide/Linux_OS.htm
deleted file mode 100755
index bcb76ee..0000000
--- a/doc/help/tbb_userguide/Linux_OS.htm
+++ /dev/null
@@ -1,484 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Linux* OS">
-<meta name="DC.subject" content="Linux* OS">
-<meta name="keywords" content="Linux* OS">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Linux_OS">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Linux* OS</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Linux_OS">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Linux_OS"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Linux* OS</h1>
- 
-   
-  <div> 
-	 <p>On Linux* operating systems, the default installation location is 
-		<samp class="codeph">/opt/intel/composer_xe_2013/tbb</samp>. The following table
-		describes the subdirectories. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl5"><!-- --></a><table cellpadding="4" summary="" id="tbl5" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Intel® Threading Building Blocks Subdirectories on Linux* OS</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="16.079632465543643%" id="d139408e43"> 
-			 <p>Item 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="76.26339969372128%" id="d139408e49"> 
-			 <p>Location 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="7.656967840735068%" id="d139408e55"> 
-			 <p>Environment Variable 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.079632465543643%" headers="d139408e43 "> 
-			 <p>Include files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="76.26339969372128%" headers="d139408e49 "> 
-			 <p><samp class="codeph">include/tbb/*.h</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="7.656967840735068%" headers="d139408e55 "> 
-			 <p><samp class="codeph">CPATH</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.079632465543643%" headers="d139408e43 "> 
-			 <p>Shared libraries 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="76.26339969372128%" headers="d139408e49 "> 
-			 <pre>lib/<<var>arch</var>>/<<var>gccversion</var>>/lib<<var>lib</var>><<var>variant</var>>.so</pre> 
-			 <p>where 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="37.202380952380956%" id="d139408e129"> 
-						  <p><<var>arch</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="62.797619047619044%" id="d139408e138"> 
-						  <p>Processor and OS 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e129 "> 
-						  <p><samp class="codeph">android</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e138 "> 
-						  <p> Android 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e129 "> 
-						  <p><samp class="codeph">ia32</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e138 "> 
-						  <p> IA-32 processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e129 "> 
-						  <p><samp class="codeph">intel64</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e138 "> 
-						  <p>Intel® 64 architecture processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e129 "> 
-						  <p><samp class="codeph">mic</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e138 "> 
-						  <p> Intel® Many Integrated Core architecture 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="37.014925373134325%" id="d139408e231"> 
-						  <p><samp class="codeph"><<em>gccversion</em>></samp> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="62.98507462686567%" id="d139408e242"> 
-						  <p>Linux OS configuration 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.014925373134325%" headers="d139408e231 "> 
-						  <p><samp class="codeph">gcc4.1</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.98507462686567%" headers="d139408e242 "> 
-						  <p>gcc version number between 4.1 and 4.4 that do not support 
-							<samp class="codeph">exception_ptr</samp> 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.014925373134325%" headers="d139408e231 "> 
-						  <p><samp class="codeph">gcc4.4</samp>
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.98507462686567%" headers="d139408e242 "> 
-						  <p>gcc version 4.4 or higher that may or may not support 
-							<samp class="codeph">exception_ptr</samp> 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.014925373134325%" headers="d139408e231 "> 
-						  <p>(none)</p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.98507462686567%" headers="d139408e242 ">  
-						  <p>For the case where 
-						     <<samp class="codeph"><var>arch</var>> </samp> is 
-						     <samp class="codeph">android</samp> or <samp class="codeph">mic</samp>. 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="37.202380952380956%" id="d139408e333"> 
-						  <p><samp class="codeph"><<var>lib</var>></samp> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="62.797619047619044%" id="d139408e344"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e333 "> 
-						  <p><samp class="codeph">tbb</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e344 "> 
-						  <p>General library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e333 "> 
-						  <p><samp class="codeph">tbbmalloc</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e344 "> 
-						  <p>Memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e333 "> 
-						  <p><samp class="codeph">tbbmalloc_proxy</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e344 "> 
-						  <p>Substitution for default memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e333 "> 
-						  <p><samp class="codeph">tbb_preview</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e344 "> 
-						  <p>Community preview features library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="37.202380952380956%" id="d139408e438"> 
-						  <p><samp class="codeph"><<var>variant</var>></samp> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="62.797619047619044%" id="d139408e449"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e438 "> 
-						  <p>(none) 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e449 "> 
-						  <p>Release version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="37.202380952380956%" headers="d139408e438 "> 
-						  <p><samp class="codeph">_debug</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="62.797619047619044%" headers="d139408e449 "> 
-						  <p>Debug version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="7.656967840735068%" headers="d139408e55 "> 
-			 <p><samp class="codeph">LIBRARY_PATH</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">LD_LIBRARY_PATH</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.079632465543643%" headers="d139408e43 "> 
-			 <p>Examples 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="76.26339969372128%" headers="d139408e49 "> 
-			 <p><samp class="codeph">examples/<<var>class</var>>/*/.</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="7.656967840735068%" headers="d139408e55 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.079632465543643%" headers="d139408e43 "> 
-			 <p>GNU Makefile for example 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="76.26339969372128%" headers="d139408e49 "> 
-			 <p><samp class="codeph">examples/<<var>class</var>>/*/Makefile</samp>
-				
-			 </p>
- 
-			 <p>where 
-				<var>class</var> describes the class being demonstrated. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="7.656967840735068%" headers="d139408e55 "> 
-			 <p><strong> </strong> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <p>  
-  </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Lock_Pathologies.htm b/doc/help/tbb_userguide/Lock_Pathologies.htm
deleted file mode 100755
index 8931c0d..0000000
--- a/doc/help/tbb_userguide/Lock_Pathologies.htm
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Lock Pathologies">
-<meta name="DC.subject" content="Lock Pathologies">
-<meta name="keywords" content="Lock Pathologies">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutual_Exclusion.htm">
-<meta name="DC.Relation" scheme="URI" content="Atomic_Operations.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Lock_Pathologies">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Lock Pathologies</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Lock_Pathologies">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Lock_Pathologies"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Lock Pathologies</h1>
- 
-   
-  <div> 
-	 <p>Locks can introduce performance and correctness problems. If you are new
-		to locking, here are some of the problems to avoid: 
-	 </p>
- 
-	 <div class="section"><h2 class="sectiontitle">Deadlock</h2> 
-		 
-		<p>Deadlock happens when threads are trying to acquire more than one
-		  lock, and each holds some of the locks the other threads need to proceed. More
-		  precisely, deadlock happens when: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>There is a cycle of threads 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Each thread holds at least one lock on a mutex, and is waiting on
-				a mutex for which the 
-				<em>next</em> thread in the cycle already has a lock. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>No thread is willing to give up its lock. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-		<p>Think of classic gridlock at an intersection – each car has "acquired"
-		  part of the road, but needs to "acquire" the road under another car to get
-		  through. Two common ways to avoid deadlock are: 
-		</p>
- 
-		<ul type="disc"> 
-		  <li> 
-			 <p>Avoid needing to hold two locks at the same time. Break your
-				program into small actions in which each can be accomplished while holding a
-				single lock. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Always acquire locks in the same order. For example, if you have
-				"outer container" and "inner container" mutexes, and need to acquire a lock on
-				one of each, you could always acquire the "outer sanctum" one first. Another
-				example is "acquire locks in alphabetical order" in a situation where the locks
-				have names. Or if the locks are unnamed, acquire locks in order of the mutex’s
-				numerical addresses. 
-			 </p>
- 
-		  </li>
- 
-		  <li> 
-			 <p>Use atomic operations instead of locks. 
-			 </p>
- 
-		  </li>
- 
-		</ul>
- 
-	 </div>
- 
-	 <div class="section"><h2 class="sectiontitle">Convoying</h2> 
-		 
-		<p>Another common problem with locks is 
-		  <em>convoying</em>. Convoying occurs when the operating system interrupts
-		  a thread that is holding a lock. All other threads must wait until the
-		  interrupted thread resumes and releases the lock. Fair mutexes can make the
-		  situation even worse, because if a waiting thread is interrupted, all the
-		  threads behind it must wait for it to resume. 
-		</p>
- 
-		<p>To minimize convoying, try to hold the lock as briefly as possible.
-		  Precompute whatever you can before acquiring the lock. 
-		</p>
- 
-		<p>To avoid convoying, use atomic operations instead of locks where
-		  possible. 
-		</p>
- 
-	 </div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Mutual_Exclusion.htm">Mutual Exclusion</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Atomic_Operations.htm">Atomic Operations
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Memory_Allocation.htm b/doc/help/tbb_userguide/Memory_Allocation.htm
deleted file mode 100755
index d43a18e..0000000
--- a/doc/help/tbb_userguide/Memory_Allocation.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Memory Allocation">
-<meta name="DC.subject" content="Memory Allocation">
-<meta name="keywords" content="Memory Allocation">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Which_Dynamic_Libraries_to_Use.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Automically_Replacing_malloc.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Memory_Allocation">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Memory Allocation</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Memory_Allocation">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Memory_Allocation"><!-- --></a>
-
-
-<h1 class="topictitle1">Memory Allocation</h1>
-
-
-<div>
-
-<p>Intel® Threading Building Blocks (Intel® TBB) provides two memory allocator templates that are similar to the STL template class <span class="option">std::allocator</span>. These two templates,  <samp class="codeph">scalable_allocator<T></samp> and <samp class="codeph">cache_aligned_allocator<T></samp>, address critical issues in parallel programming as follows:</p>
-
-
-<ul type="disc"><li><p><strong>Scalability</strong>. Problems of scalability arise when using memory allocators originally designed for serial programs, on threads that might have to compete for a single shared pool in a way that allows only one thread to allocate at a time. Use the memory allocator template <samp class="codeph">scalable_allocator<T></samp> to avoid such scalability bottlenecks. This template can improve the performance of programs that rapidly allocate and free me [...]
-</li>
-
-<li><p><strong>False sharing</strong>. Problems of sharing arise when two threads access different words that share the same cache line. The problem is that a cache line is the unit of information interchange between processor caches. If one processor modifies a cache line and another processor reads (or writes) the same cache line, the cache line must be moved from one processor to the other, even if the two processors are dealing with different words within the line. False sharing can  [...]
-</li>
-</ul>
-
-
-<p>Use the class <samp class="codeph">cache_aligned_allocator<T></samp> to always allocate on a cache line. Two objects allocated by <samp class="codeph">cache_aligned_allocator</samp> are guaranteed to not have false sharing. If an object is allocated by <samp class="codeph">cache_aligned_allocator</samp> and another object is allocated some other way, there is no guarantee. The interface to <samp class="codeph">cache_aligned_allocator</samp> is identical to <span class="option">s [...]
-
-
-<p>The following code shows how to declare an STL vector that uses <samp class="codeph">cache_aligned_allocator</samp> for allocation:</p>
-
-
-<pre>std::vector<int,cache_aligned_allocator<int> >;</pre>
-
-<p><div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>The functionality of <samp class="codeph">cache_aligned_allocator<T></samp> comes at some cost in space, because it must allocate at least one cache line’s worth of memory, even for a small object. So use <samp class="codeph">cache_aligned_allocator<T></samp> only if false sharing is likely to be a real problem.</div></p>
-
-
-<p>The scalable memory allocator incorporates McRT technology developed by Intel’s PSL  CTG team.</p>
-
-
-</div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Which_Dynamic_Libraries_to_Use.htm">Which Dynamic Libraries to Use</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Automically_Replacing_malloc.htm">Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Memory_Consistency.htm b/doc/help/tbb_userguide/Memory_Consistency.htm
deleted file mode 100755
index 22fcfb1..0000000
--- a/doc/help/tbb_userguide/Memory_Consistency.htm
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Memory Consistency">
-<meta name="DC.subject" content="Memory Consistency">
-<meta name="keywords" content="Memory Consistency">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Atomic_Operations.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Memory_Consistency">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Memory Consistency</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Memory_Consistency">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Memory_Consistency"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Memory Consistency</h1>
- 
-   
-  <div> 
-	 <p>Some architectures, such as IA-64 architecture, have "weak memory
-		consistency", in which memory operations on different addresses may be
-		reordered by the hardware for sake of efficiency. The subject is complex, and
-		it is recommended that the interested reader consult other works (Intel 2002,
-		Robison 2003) on the subject. If you are programming only for IA-32 and Intel®
-		64 architecture platforms, you can skip this section. 
-	 </p>
- 
-	 <p>Class 
-		<samp class="codeph">atomic</samp><T> permits you to enforce certain ordering
-		of memory operations as described in the following table. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl14"><!-- --></a><table cellpadding="4" summary="" id="tbl14" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Ordering Constraints</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="12.059369202226346%" id="d141454e46"> 
-			 <p>Kind 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="58.070500927643785%" id="d141454e52"> 
-			 <p>Description 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="29.87012987012987%" id="d141454e58"> 
-			 <p>Default For 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="12.059369202226346%" headers="d141454e46 "> 
-			 <p><samp class="codeph">acquire 
-				</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="58.070500927643785%" headers="d141454e52 "> 
-			 <p>Operations after the atomic operation never move over it. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="29.87012987012987%" headers="d141454e58 "> 
-			 <p>read 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="12.059369202226346%" headers="d141454e46 "> 
-			 <p><samp class="codeph">release</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="58.070500927643785%" headers="d141454e52 "> 
-			 <p>Operations before the atomic operation never move over it. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="29.87012987012987%" headers="d141454e58 "> 
-			 <p>write 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="12.059369202226346%" headers="d141454e46 "> 
-			 <p>sequentially consistent 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="58.070500927643785%" headers="d141454e52 "> 
-			 <p>Operations on either side never move over the atomic operation and
-				the sequentially consistent atomic operations have a global order. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="29.87012987012987%" headers="d141454e58 "> 
-			 <p><samp class="codeph">fetch_and_store</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">fetch_and_add 
-				</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">compare_and_swap</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <p>The rightmost column lists the operations that default to a particular
-	 constraint. Use these defaults to avoid unexpected surprises. For read and
-	 write, the defaults are the only constraints available. However, if you are
-	 familiar with weak memory consistency, you might want to change the default
-	 sequential consistency for the other operations to weaker constraints. To do
-	 this, use variants that take a template argument. The argument can be 
-	 <samp class="codeph">acquire</samp> or 
-	 <samp class="codeph">release</samp>, which are values of the enum type 
-	 <samp class="codeph">memory_semantics</samp>. 
-  </p>
- 
-  <p>For example, suppose various threads are producing parts of a data
-	 structure, and you want to signal a consuming thread when the data structure is
-	 ready. One way to do this is to initialize an atomic counter with the number of
-	 busy producers, and as each producer finishes, it executes: 
-  </p>
- 
-  <pre>refcount.fetch_and_add<release>(-1);</pre> 
-  <p>The argument 
-	 <samp class="codeph">release</samp> guarantees that the producer's writes to shared
-	 memory occurs before 
-	 <samp class="codeph">refcount</samp> is decremented. Similarly, when the consumer
-	 checks 
-	 <samp class="codeph">refcount</samp>, the consumer must use an 
-	 <samp class="codeph">acquire</samp> fence, which is the default for reads, so that the
-	 consumer's reads of the data structure do not happen until after the consumer
-	 sees 
-	 <samp class="codeph">refcount</samp> become 0. 
-  </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Atomic_Operations.htm">Atomic Operations</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm b/doc/help/tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm
deleted file mode 100755
index c262217..0000000
--- a/doc/help/tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Microsoft Visual Studio* Code Examples">
-<meta name="DC.subject" content="Microsoft Visual Studio* Code Examples">
-<meta name="keywords" content="Microsoft Visual Studio* Code Examples">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Windows_OS.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Microsoft_Visual_Studio_Code_Examples">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Microsoft Visual Studio* Code Examples</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Microsoft_Visual_Studio_Code_Examples">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Microsoft_Visual_Studio_Code_Examples"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Microsoft Visual Studio* Code Examples</h1>
- 
-  
-  <div>
-	 <p>The solution files in the package are for Microsoft Visual Studio* 2005.
-		Later versions of Microsoft* Visual Studio can convert them. Each example has
-		two solution files, one for the Microsoft compiler (*<samp class="codeph">_cl.sln</samp>)
-		and one for the Intel compiler (*<samp class="codeph">_icl.sln</samp>).
-	 </p>
-
-	 <p>To run one of the solution files in 
-		<samp class="codeph">examples\*\*\msvs\.</samp>:
-	 </p>
- 
-	 <ol>
-		<li>
-		  <p>Start Microsoft Visual Studio*.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Open a solution file in the 
-			 <samp class="codeph">msvs</samp> directory.
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>In Microsoft Visual Studio*, press 
-			 <strong>Ctrl-F5</strong> to compile and run the example. Use 
-			 <strong>Ctrl-F5</strong>, not 
-			 <strong>Shift-F5</strong>, so that you can inspect the console window after the
-			 example finishes.
-		  </p>
-
-		</li>
-
-	 </ol>
-
-	 <p>The Microsoft Visual Studio* solution files for the examples require
-		that an environment variable specify where the library is installed. The
-		installer sets this variable. 
-	 </p>
-
-	 <p>The makefiles for the examples require that 
-		<samp class="codeph">INCLUDE</samp>, 
-		<samp class="codeph">LIB</samp>, and 
-		<samp class="codeph">PATH</samp> variables are set as indicated in the Windows* OS
-		topic. You can set these variables in the following way:
-	 </p>
-
-	 <p>
-	 <ul type="disc">
-		<li>Go to 
-		  <samp class="codeph"><<em>install_dir</em>>\bin\</samp> directory and run the
-		  batch file 
-		  <samp class="codeph">tbbvars.bat</samp>.
-		</li>
-
-	 </ul>
-
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Windows_OS.htm">Windows* OS</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/More_on_HashCompare.htm b/doc/help/tbb_userguide/More_on_HashCompare.htm
deleted file mode 100755
index 886a1a5..0000000
--- a/doc/help/tbb_userguide/More_on_HashCompare.htm
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="More on HashCompare">
-<meta name="DC.subject" content="More on HashCompare">
-<meta name="keywords" content="More on HashCompare">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/concurrent_hash_map.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_More_on_HashCompare">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>More on HashCompare</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_More_on_HashCompare">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_More_on_HashCompare"><!-- --></a>
-
-
-<h1 class="topictitle1">More on HashCompare</h1>
-
-<div><p>There are several ways to make the <samp class="codeph"><var>HashCompare</var></samp> argument for <samp class="codeph">concurrent_hash_map</samp> work for your own types.</p>
-
-<ul type="disc"><li><p>Specify the <samp class="codeph"><var>HashCompare</var></samp> argument explicitly</p>
-</li>
-<li><p>Let the <samp class="codeph"><var>HashCompare</var></samp> default to <samp class="codeph">tbb_hash_compare<<var>Key</var>></samp> and do one of the following:</p>
-
-<ul type="disc"><li><p>Define a specialization of template <samp class="codeph">tbb_hash_compare<<var>Key</var>></samp>.</p>
-</li>
-<li><p>Define an overload of function <samp class="codeph">tbb_hasher(<var>Key</var>)</samp>.</p>
-</li>
-<li><p>Rely on the definitions of <samp class="codeph">tbb_hasher(<var>Key</var>)</samp> provided by the library.</p>
-</li>
-</ul>
-</li>
-</ul>
-<p>Function <samp class="codeph">tbb_hasher</samp> is predefined for the following types: </p>
-
-<ul type="disc"><li><p>Types convertible to <samp class="codeph">size_t</samp>, such as integral types. </p>
-</li>
-<li><p>Pointer types.</p>
-</li>
-<li><p>Instances of <samp class="codeph">std::basic_string</samp>.</p>
-</li>
-<li><p><samp class="codeph">std::pair<<var>Key1</var>,<var>Key2</var>></samp>, where <samp class="codeph">tbb_hasher(<var>Key</var>)</samp> and <samp class="codeph">tbb_hasher(<var>Key2</var>)</samp> are defined.</p>
-</li>
-</ul>
-<p>For example, if you have keys of type <samp class="codeph">Foo</samp>, and <samp class="codeph">operator==</samp> is defined for <samp class="codeph">Foo</samp>, you just have to provide a definition of <samp class="codeph">tbb_hasher</samp> as shown below: </p>
-
-<pre>size_t tbb_hasher(const Foo& f) {
-    size_t h = ...compute hash code for f...
-    return h;
-};</pre>
-<p>In general, the definition of <samp class="codeph">tbb_hash_compare<<var>Key</var>></samp> or <samp class="codeph"><var>HashCompare</var></samp> must provide two signatures:</p>
-
-<ul type="disc"><li><p>A method <samp class="codeph">hash</samp> that maps a <samp class="codeph"><var>Key</var></samp> to a <samp class="codeph">size_t</samp></p>
-</li>
-<li><p>A method <samp class="codeph">equal</samp> that determines if two keys are equal</p>
-</li>
-</ul>
-<p>The signatures go together in a single class because <em>if two keys are equal, then they must hash to the same value</em>, otherwise the hash table might not work. You could trivially meet this requirement by always hashing to <samp class="codeph">0</samp>, but that would cause tremendous inefficiency. Ideally, each key should hash to a different value, or at least the probability of two distinct keys hashing to the same value should be kept low.</p>
-<p>The methods of <samp class="codeph"><em>HashCompare</em></samp> should be <samp class="codeph">static</samp> unless you need to have them behave differently for different instances. If so, then you should construct the <samp class="codeph">concurrent_hash_map</samp> using the constructor that takes a <samp class="codeph"><em>HashCompare</em></samp> as a parameter. The following example is a variation on an earlier example with instance-dependent methods. The instance performs both cas [...]
-
-<pre>// Structure that defines hashing and comparison operations
-class VariantHashCompare {
-    // If true, then case of letters is ignored.
-    bool ignore_case;
-public:
-    size_t hash(const string& x) const {
-        size_t h = 0;
-        for(const char* s = x.c_str(); *s; s++) 
-            h = (h*16777179)^*(ignore_case?tolower(*s):*s);
-        return h;
-    }
-    // True if strings are equal
-    bool equal(const string& x, const string& y) const {
-        if( ignore_case )
-            strcasecmp(x.c_str(), y.c_str())==0;
-        else
-            return x==y;
-    }
-    VariantHashCompare(bool ignore_case_) : ignore_case(ignore_case_) {}
-};
- 
-typedef concurrent_hash_map<string,int, VariantHashCompare> VariantStringTable;
- 
-VariantStringTable CaseSensitiveTable(VariantHashCompare(false));
-VariantStringTable CaseInsensitiveTable(VariantHashCompare(true));</pre>
-<p>The directory <samp class="codeph">examples/concurrent_hash_map/count_strings</samp> contains a complete example that uses <samp class="codeph">concurrent_hash_map</samp> to enable multiple processors to cooperatively build a histogram. </p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/concurrent_hash_map.htm">concurrent_hash_map</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Mutex_Flavors.htm b/doc/help/tbb_userguide/Mutex_Flavors.htm
deleted file mode 100755
index 530338c..0000000
--- a/doc/help/tbb_userguide/Mutex_Flavors.htm
+++ /dev/null
@@ -1,536 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Mutex Flavors">
-<meta name="DC.subject" content="Mutex Flavors">
-<meta name="keywords" content="Mutex Flavors">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutual_Exclusion.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Mutex_Flavors">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Mutex Flavors</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Mutex_Flavors">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Mutex_Flavors"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Mutex Flavors</h1>
- 
-   
-  <div> 
-	 <p>Connoisseurs of mutexes distinguish various attributes of mutexes. It
-		helps to know some of these, because they involve tradeoffs of generality and
-		efficiency. Picking the right one often helps performance. Mutexes can be
-		described by the following qualities, also summarized in the table below. 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><strong>Scalable</strong>. Some mutexes are called 
-			 <em>scalable</em>. In a strict sense, this is not an accurate name,
-			 because a mutex limits execution to one thread at a time. A 
-			 <em>scalable mutex</em> is one that does not do 
-			 <em>worse</em> than this. A mutex can do worse than serialize execution
-			 if the waiting threads consume excessive processor cycles and memory bandwidth,
-			 reducing the speed of threads trying to do real work. Scalable mutexes are
-			 often slower than non-scalable mutexes under light contention, so a
-			 non-scalable mutex may be better. When in doubt, use a scalable mutex. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Fair</strong>. Mutexes can be 
-			 <em>fair</em> or 
-			 <em>unfair</em>. A fair mutex lets threads through in the order they
-			 arrived. Fair mutexes avoid starving threads. Each thread gets its turn.
-			 However, unfair mutexes can be faster, because they let threads that are
-			 running go through first, instead of the thread that is next in line which may
-			 be sleeping on account of an interrupt. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Recursive</strong>. Mutexes can be 
-			 <em>recursive</em> or 
-			 <em>non-recursive</em>. A recursive mutex allows a thread that is
-			 already holding a lock on the mutex to acquire another lock on the mutex. This
-			 is useful in some recursive algorithms, but typically adds overhead to the lock
-			 implementation. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Yield or Block</strong>. This is an implementation detail that impacts
-			 performance. On long waits, an Intel® Threading Building Blocks (Intel® TBB)
-			 mutex either 
-			 <em>yields</em> or 
-			 <em>blocks</em>. Here 
-			 <em>yields</em> means to repeatedly poll whether progress can be made,
-			 and if not, temporarily yield<a href="#ftn5"><sup><sup>[5]</sup></sup></a> the
-			 processor. To 
-			 <em>block</em> means to yield the processor until the mutex permits
-			 progress. Use the yielding mutexes if waits are typically short and blocking
-			 mutexes if waits are typically long. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The following is a summary of mutex behaviors: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><samp class="codeph">spin_mutex</samp> is non-scalable, unfair, non-recursive,
-			 and spins in user space. It would seem to be the worst of all possible worlds,
-			 except that it is 
-			 <em>very fast</em> in 
-			 <em>lightly contended</em> situations. If you can design your program
-			 so that contention is somehow spread out among many 
-			 <samp class="codeph">spin_mutex</samp> objects, you can improve performance over
-			 using other kinds of mutexes. If a mutex is heavily contended, your algorithm
-			 will not scale anyway. Consider redesigning the algorithm instead of looking
-			 for a more efficient lock. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><samp class="codeph">queuing_mutex</samp> is scalable, fair, non-recursive, and
-			 spins in user space. Use it when scalability and fairness are important. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><samp class="codeph">spin_rw_mutex</samp> and 
-			 <samp class="codeph">queuing_rw_mutex</samp> are similar to 
-			 <samp class="codeph">spin_mutex</samp> and 
-			 <samp class="codeph">queuing_mutex</samp>, but additionally support 
-			 <em>reader</em> locks. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><samp class="codeph">mutex</samp> and 
-			 <samp class="codeph">recursive_mutex</samp> are wrappers around the system’s
-			 "native" mutual exclusion. On Windows* operating systems it is implemented on
-			 top of 
-			 <samp class="codeph">CRITICAL_SECTION</samp>. On Linux* and OS X* operating
-			 systems it is implemented on top of 
-			 <samp class="codeph">pthread</samp> mutex. The advantages of using the wrapper
-			 are that it adds an exception-safe interface and it provides an interface
-			 identical to the other mutexes in Intel® TBB, which makes it easy to swap in a
-			 different kind of mutex later if warranted by performance measurements. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><samp class="codeph">null_mutex</samp> and 
-			 <samp class="codeph">null_rw_mutex</samp> do nothing. They can be useful as
-			 template arguments. For example, suppose you are defining a container template
-			 and know that some instantiations will be shared by multiple threads and need
-			 internal locking, but others will be private to a thread and not need locking.
-			 You can define the template to take a Mutex type parameter. The parameter can
-			 be one of the real mutex types when locking is necessary, and 
-			 <samp class="codeph">null_mutex</samp> when locking is unnecessary. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 
-<div class="tablenoborder"><a name="tbl11"><!-- --></a><table cellpadding="4" summary="" id="tbl11" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Traits and Behaviors of Mutexes</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="26.247689463955638%" id="d142672e207"> 
-			 <p>Mutex 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="17.744916820702404%" id="d142672e213"> 
-			 <p>Scalable 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="17.56007393715342%" id="d142672e219"> 
-			 <p>Fair 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="14.602587800369685%" id="d142672e225"> 
-			 <p>Recursive 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="12.199630314232902%" id="d142672e231"> 
-			 <p>Long Wait 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="11.645101663585953%" id="d142672e238"> 
-			 <p>Size 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>OS dependent 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>OS dependent 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>blocks 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>≥ 3 words 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">recursive_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>OS dependent 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>OS dependent 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>yes 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>blocks 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>≥ 3 words 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">spin_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>yields 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>1 byte 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">queuing_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>yields 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>1 word 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">spin_rw_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>yields 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>1 word 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">queuing_rw_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>no 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>yields 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>1 word 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">null_mutex</samp><a href="#ftn6"><sup><sup>[6]</sup></sup></a> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>moot 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>never 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>empty 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="26.247689463955638%" headers="d142672e207 "> 
-			 <p><samp class="codeph">null_rw_mutex</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.744916820702404%" headers="d142672e213 "> 
-			 <p>moot 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.56007393715342%" headers="d142672e219 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="14.602587800369685%" headers="d142672e225 "> 
-			 <p>✓ 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="12.199630314232902%" headers="d142672e231 "> 
-			 <p>never 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="11.645101663585953%" headers="d142672e238 "> 
-			 <p>empty 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Mutual_Exclusion.htm">Mutual Exclusion</a></div>
-</div>
-<div></div>
-<p class="tfootnote"><a id="ftn5"><sup>[5]</sup></a>   The yielding is implemented via 
-				<samp class="codeph">SwitchToThread()</samp> on Microsoft Windows* operating
-				systems and by 
-				<samp class="codeph">sched_yield()</samp> on other systems.</p><p class="tfootnote"><a id="ftn6"><sup>[6]</sup></a>   Null mutexes are considered
-				  fair by Intel® TBB because they cannot cause starvation. They lack any
-				  non-static data members.</p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Mutual_Exclusion.htm b/doc/help/tbb_userguide/Mutual_Exclusion.htm
deleted file mode 100755
index 82c0ec4..0000000
--- a/doc/help/tbb_userguide/Mutual_Exclusion.htm
+++ /dev/null
@@ -1,187 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Mutual Exclusion">
-<meta name="DC.subject" content="Mutual Exclusion">
-<meta name="keywords" content="Mutual Exclusion">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutex_Flavors.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Reader_Writer_Mutexes.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/UpgradeDowngrade.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Lock_Pathologies.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Mutual_Exclusion">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Mutual Exclusion</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Mutual_Exclusion">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Mutual_Exclusion"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Mutual Exclusion</h1>
- 
-   
-  <div> 
-	 <p>Mutual exclusion controls how many threads can simultaneously run a
-		region of code. In Intel® Threading Building Blocks (Intel® TBB), mutual
-		exclusion is implemented by 
-		<em>mutexes</em> and 
-		<em>locks.</em> A mutex is an object on which a thread can acquire a lock.
-		Only one thread at a time can have a lock on a mutex; other threads have to
-		wait their turn. 
-	 </p>
- 
-	 <p>The simplest mutex is 
-		<samp class="codeph">spin_mutex</samp>. A thread trying to acquire a lock on a 
-		<samp class="codeph">spin_mutex</samp> busy waits until it can acquire the lock. A 
-		<samp class="codeph">spin_mutex</samp> is appropriate when the lock is held for only
-		a few instructions. For example, the following code uses a mutex 
-		<samp class="codeph">FreeListMutex</samp> to protect a shared variable 
-		<samp class="codeph">FreeList</samp>. It checks that only a single thread has access
-		to 
-		<samp class="codeph">FreeList</samp> at a time. The black font shows the usual
-		sequential code. Insertions added to make the code thread-safe, are shown in 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>. 
-	 </p>
- 
-	 <pre>Node* FreeList;
-<span style="color:blue"><strong>typedef spin_mutex FreeListMutexType;</strong></span>
-<span style="color:blue"><strong>FreeListMutexType FreeListMutex;</strong></span>
- 
-Node* AllocateNode() {
-    Node* n;
-    <span style="color:blue"><strong>{</strong></span>
-        <span style="color:blue"><strong>FreeListMutexType::scoped_lock lock(FreeListMutex);</strong></span>
-        n = FreeList;
-        if( n )
-            FreeList = n->next;
-    <span style="color:blue"><strong>}</strong></span>
-    if( !n ) 
-        n = new Node();
-    return n;
-}
- 
-void FreeNode( Node* n ) {
-    <span style="color:blue"><strong>FreeListMutexType::scoped_lock lock(FreeListMutex);</strong></span>
-    n->next = FreeList;
-    FreeList = n;
-}</pre> 
-	 <p>The constructor for 
-		<samp class="codeph">scoped_lock</samp> waits until there are no other locks on 
-		<samp class="codeph">FreeListMutex</samp>. The destructor releases the lock. The
-		braces inside routine 
-		<samp class="codeph">AllocateNode</samp> may look unusual. Their role is to keep the
-		lifetime of the lock as short as possible, so that other waiting threads can
-		get their chance as soon as possible. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>Be sure to name the lock object, otherwise it will be destroyed too
-		  soon. For example, if the creation of the 
-		  <samp class="codeph">scoped_lock</samp> object in the example is changed to 
-		</p>
- 
-		<pre>FreeListMutexType::scoped_lock (FreeListMutex);</pre> 
-		<p>then the 
-		  <samp class="codeph">scoped_lock</samp> is destroyed when execution reaches the
-		  semicolon, which releases the lock 
-		  <em>before</em> 
-		  <samp class="codeph">FreeList</samp> is accessed. 
-		</p>
- 
-	 </div> 
-	 <p>The following shows an alternative way to write 
-		<samp class="codeph">AllocateNode</samp>: 
-	 </p>
- 
-	 <pre>Node* AllocateNode() {
-    Node* n;
-    FreeListMutexType::scoped_lock lock;
-    lock.acquire(FreeListMutex);
-    n = FreeList;
-    if( n )
-        FreeList = n->next;
-    lock.release();
-    if( !n ) 
-        n = new Node();
-    return n;
-}</pre> 
-	 <p>Method 
-		<samp class="codeph">acquire</samp> waits until it can acquire a lock on the mutex;
-		method 
-		<samp class="codeph">release</samp> releases the lock. 
-	 </p>
- 
-	 <p>It is recommended that you add extra braces where possible, to clarify
-		to maintainers which code is protected by the lock. 
-	 </p>
- 
-	 <p>If you are familiar with C interfaces for locks, you may be wondering
-		why there are not simply acquire and release methods on the mutex object
-		itself. The reason is that the C interface would not be exception safe, because
-		if the protected region threw an exception, control would skip over the
-		release. With the object-oriented interface, destruction of the 
-		<samp class="codeph">scoped_lock</samp> object causes the lock to be released, no
-		matter whether the protected region was exited by normal control flow or an
-		exception. This is true even for our version of 
-		<samp class="codeph">AllocateNode</samp> that used methods 
-		<samp class="codeph">acquire</samp> and 
-		<samp class="codeph">release –</samp> the explicit release causes the lock to be
-		released earlier, and the destructor then sees that the lock was released and
-		does nothing. 
-	 </p>
- 
-	 <p>All mutexes in Intel® TBB have a similar interface, which not only makes
-		them easier to learn, but enables generic programming. For example, all of the
-		mutexes have a nested 
-		<samp class="codeph">scoped_lock</samp> type, so given a mutex of type 
-		<samp class="codeph"><var>M</var></samp>, the corresponding lock type is 
-		<samp class="codeph"><var>M</var>::scoped_lock</samp>. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		<p>It is recommended that you always use a 
-		  <samp class="codeph">typedef</samp> for the mutex type, as shown in the previous
-		  examples. That way, you can change the type of the lock later without having to
-		  edit the rest of the code. In the examples, you could replace the 
-		  <samp class="codeph">typedef</samp> with 
-		  <samp class="codeph">typedef queuing_mutex FreeListMutexType</samp>, and the code
-		  would still be correct. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Mutex_Flavors.htm">Mutex Flavors</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Reader_Writer_Mutexes.htm">Reader Writer Mutexes</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/UpgradeDowngrade.htm">Upgrade/Downgrade</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Lock_Pathologies.htm">Lock Pathologies</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Non-Linear_Pipelines.htm b/doc/help/tbb_userguide/Non-Linear_Pipelines.htm
deleted file mode 100755
index 58dc5c6..0000000
--- a/doc/help/tbb_userguide/Non-Linear_Pipelines.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Non-Linear Pipelines">
-<meta name="DC.subject" content="Non-Linear Pipelines">
-<meta name="keywords" content="Non-Linear Pipelines">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Non-Linear_Pipelines">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Non-Linear Pipelines</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Non-Linear_Pipelines">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Non-Linear_Pipelines"><!-- --></a>
-
-
-<h1 class="topictitle1">Non-Linear Pipelines</h1>
-
-<div><p>Template function <samp class="codeph">parallel_pipeline</samp> supports only linear pipelines. It does not directly handle more baroque plumbing, such as in the diagram below.</p>
-<div class="fignone" id="image011"><a name="image011"><!-- --></a><br><img width="281" height="107" src="Images/image011.jpg"><br></div>
-<p>However, you can still use a pipeline for this. Just topologically sort the filters into a linear order, like this:</p>
-<p>The light gray arrows are the original arrows that are now implied by transitive closure of the other arrows. It might seem that lot of parallelism is lost by forcing a linear order on the filters, but in fact the only loss is in the <em>latency</em> of the pipeline, not the throughput. The latency is the time it takes a token to flow from the beginning to the end of the pipeline. Given a sufficient number of processors, the latency of the original non-linear pipeline is three filters [...]
-<div class="fignone" id="image012"><a name="image012"><!-- --></a><br><img width="281" height="107" src="Images/image012.jpg"><br></div>
-<p>In the linear pipeline, the latency is five filters. The behavior of filters A, B, D and E above may need to be modified in order to properly handle objects that don’t need to be acted upon by the filter other than to be passed along to the next filter in the pipeline.</p>
-<p>The throughput remains the same, because regardless of the topology, the throughput is still limited by the throughput of the slowest serial filter. If <samp class="codeph">parallel_pipeline</samp> supported non-linear pipelines, it would add a lot of programming complexity, and not improve throughput. The linear limitation of <samp class="codeph">parallel_pipeline</samp> is a good tradeoff of gain versus pain.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: pipeline</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/OS_X_Systems.htm b/doc/help/tbb_userguide/OS_X_Systems.htm
deleted file mode 100755
index 737a42e..0000000
--- a/doc/help/tbb_userguide/OS_X_Systems.htm
+++ /dev/null
@@ -1,386 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="OS X* Systems">
-<meta name="DC.subject" content="OS X* Systems">
-<meta name="keywords" content="OS X* Systems">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_OS_X_Systems">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>OS X* Systems</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_OS_X_Systems">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_OS_X_Systems"><!-- --></a>
-
- 
-  <h1 class="topictitle1">OS X* Systems</h1>
- 
-   
-  <div> 
-	<p>This section uses <<em>install_dir</em>> to indicate the
-		top-level installation directory. The following table describes the
-		subdirectory structure for OS X*, relative to <<em>install_dir</em>>.
-	</p>
-
-	 
-<div class="tablenoborder"><a name="tbl6"><!-- --></a><table cellpadding="4" summary="" id="tbl6" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Intel® Threading Building Blocks Subdirectories on OS X*
-	 Systems</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="16.94915254237288%" id="d145213e46"> 
-			 <p>Item 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="59.32203389830508%" id="d145213e52"> 
-			 <p>Location 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="23.728813559322035%" id="d145213e58"> 
-			 <p>Environment Variable 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.94915254237288%" headers="d145213e46 "> 
-			 <p>Include files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="59.32203389830508%" headers="d145213e52 "> 
-			 <p><samp class="codeph">include/tbb/*.h</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="23.728813559322035%" headers="d145213e58 "> 
-			 <p><samp class="codeph">CPATH</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.94915254237288%" headers="d145213e46 "> 
-			 <p>Shared libraries 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="59.32203389830508%" headers="d145213e52 "> 
-			 <p><samp class="codeph">lib/<<var>libc++</var>>/<<var>lib</var>><<var>variant</var>>.dylib</samp>
-				
-			 </p>
- 
-			 <p>where: 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="35.2760736196319%" id="d145213e131"> 
-						  <p><<var>libc++</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="64.7239263803681%" id="d145213e140"> 
-						  <p><var>Version</var> 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e131 "> 
-						  <p><samp class="codeph">libc++</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e140 "> 
-						  <p>Libraries that depend on libc++ standard library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e131 "> 
-						  <p>(none) 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e140 "> 
-						  <p>Libraries that depend on libstdc++ standard library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="35.2760736196319%" id="d145213e199"> 
-						  <p><<var>lib</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="64.7239263803681%" id="d145213e208"> 
-						  <p><var>Version</var> 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e199 "> 
-						  <p><samp class="codeph">libtbb</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e208 "> 
-						  <p>General library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e199 "> 
-						  <p><samp class="codeph">libtbbmalloc</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e208 "> 
-						  <p>Memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e199 "> 
-						  <p><samp class="codeph">libtbb_preview</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e208 "> 
-						  <p>Community preview features library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="35.2760736196319%" id="d145213e286"> 
-						  <p><<var>variant</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="64.7239263803681%" id="d145213e295"> 
-						  <p><var>Version</var> 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e286 "> 
-						  <p>(none) 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e295 "> 
-						  <p>Release version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="35.2760736196319%" headers="d145213e286 "> 
-						  <p><samp class="codeph">_debug</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="64.7239263803681%" headers="d145213e295 "> 
-						  <p>Debug version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="23.728813559322035%" headers="d145213e58 "> 
-			 <p><samp class="codeph">LIBRARY_PATH</samp> 
-			 </p>
- 
-			 <p><samp class="codeph">DYLD_LIBRARY_PATH</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.94915254237288%" headers="d145213e46 "> 
-			 <p>Examples 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="59.32203389830508%" headers="d145213e52 "> 
-			 <p><samp class="codeph">examples/<var><class></var>/*/.</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="23.728813559322035%" headers="d145213e58 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.94915254237288%" headers="d145213e46 "> 
-			 <p>GNU Makefile for example 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="59.32203389830508%" headers="d145213e52 "> 
-			 <p><samp class="codeph">examples/<var><class></var>/*/Makefile</samp>
-				
-			 </p>
- 
-			 <p>where 
-				<var>class</var> describes the class being demonstrated. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="23.728813559322035%" headers="d145213e58 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="16.94915254237288%" headers="d145213e46 "> 
-			 <p>Xcode* Project 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="59.32203389830508%" headers="d145213e52 "> 
-			 <p><samp class="codeph">examples/<var><class></var>/*/xcode/</samp>
-				
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="23.728813559322035%" headers="d145213e58 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Open_Source_Version.htm b/doc/help/tbb_userguide/Open_Source_Version.htm
deleted file mode 100755
index 017f420..0000000
--- a/doc/help/tbb_userguide/Open_Source_Version.htm
+++ /dev/null
@@ -1,474 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Open Source Version">
-<meta name="DC.subject" content="Open Source Version">
-<meta name="keywords" content="Open Source Version">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Relation" scheme="URI" content="Windows_OS.htm#tutorial_Windows_OS">
-<meta name="DC.Relation" scheme="URI" content="Linux_OS.htm#tutorial_Linux_OS">
-<meta name="DC.Relation" scheme="URI" content="OS_X_Systems.htm#tutorial_OS_X_Systems">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Open_Source_Version">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Open Source Version</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Open_Source_Version">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Open_Source_Version"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Open Source Version</h1>
- 
-   
-  <div> 
-	 <p>The following table describes typical subdirectories of an open source
-		version of the library. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl7"><!-- --></a><table cellpadding="4" summary="" id="tbl7" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Typical Intel® Threading Building Blocks Subdirectories in Open Source
-	 Release</span></caption> 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Include files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">include/tbb/*.h</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Source files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">src/</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Documentation 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">doc/</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Environment scripts 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">bin/*.{sh,csh,bat}</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Binaries 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">lib/<<var>arch</var>>/<<var>version</var>>/<<var>lib</var>><<em>variant</em>>.{lib,so,dylib}</samp>
-				
-			 </p>
- 
-			 <p><samp class="codeph">bin /<<var>arch</var>>
-				  /<<var>version</var>>
-				  /<<var>lib</var>><<em>variant</em>> .{dll,pdb}</samp> 
-			 </p>
- 
-			 <p>where: 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="31.06796116504854%" id="d146479e164"> 
-						  <p><<var>arch</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="68.93203883495146%" id="d146479e173"> 
-						  <p>Processor 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.06796116504854%" headers="d146479e164 "> 
-						  <p>ia32 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.93203883495146%" headers="d146479e173 "> 
-						  <p>Intel® IA-32 processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.06796116504854%" headers="d146479e164 "> 
-						  <p>intel64 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.93203883495146%" headers="d146479e173 "> 
-						  <p>Intel® 64 architecture processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="46.10951008645533%" id="d146479e229"> 
-						  <p><<var>version</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="20.7492795389049%" id="d146479e238"> 
-						  <p>OS 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="33.14121037463977%" id="d146479e244"> 
-						  <p>Environment 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="46.10951008645533%" headers="d146479e229 "> 
-						  <p>8, 9, _mt 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="20.7492795389049%" headers="d146479e238 "> 
-						  <p>Microsoft Windows* 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="33.14121037463977%" headers="d146479e244 "> 
-						  <p>See <<em>vcversion</em>> 
-							 <strong>Windows* OS</strong> topic 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="46.10951008645533%" headers="d146479e229 "> 
-						  <p><samp class="codeph">cc< 
-								<var>gccversion</var> >_libc< 
-								<var>glibcversion</var> >_kernel< 
-								<var>kernelversion</var> ></samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="20.7492795389049%" headers="d146479e238 "> 
-						  <p>Linux* 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="33.14121037463977%" headers="d146479e244 "> 
-						  <p>See 
-							 <strong>Linux* OS</strong> topic. 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="46.10951008645533%" headers="d146479e229 "> 
-						  <p><samp class="codeph">cc<<var>gccversion</var>>_os<<var>osversion</var>></samp>
-							 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="20.7492795389049%" headers="d146479e238 "> 
-						  <p>OS X* 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="33.14121037463977%" headers="d146479e244 "> 
-						  <p>See 
-							 <strong>OS X* Systems</strong> Topic 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="41.10032362459547%" id="d146479e364"> 
-						  <p><<var>lib</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="58.89967637540453%" id="d146479e373"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d146479e364 "> 
-						  <p><samp class="codeph">tbb</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d146479e373 "> 
-						  <p>General library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d146479e364 "> 
-						  <p><samp class="codeph">tbbmalloc</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d146479e373 "> 
-						  <p>Memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d146479e364 "> 
-						  <p><samp class="codeph">tbbmalloc_proxy</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d146479e373 "> 
-						  <p>Substitution for default memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d146479e364 "> 
-						  <p><samp class="codeph">tbb_preview</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d146479e373 "> 
-						  <p>Community preview features library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="34.95145631067961%" id="d146479e466"> 
-						  <p><<var>variant</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="65.0485436893204%" id="d146479e475"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="34.95145631067961%" headers="d146479e466 "> 
-						  <p>(none) 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="65.0485436893204%" headers="d146479e475 "> 
-						  <p>Release version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="34.95145631067961%" headers="d146479e466 "> 
-						  <p><samp class="codeph">_debug</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="65.0485436893204%" headers="d146479e475 "> 
-						  <p>Debug version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="20%"> 
-			 <p>Examples 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="80%"> 
-			 <p><samp class="codeph">examples\<var><class></var>\*\.</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Windows_OS.htm#tutorial_Windows_OS">Windows* OS 
-		  </a></div>
-<div><a href="Linux_OS.htm#tutorial_Linux_OS">Linux* OS 
-		  </a></div>
-<div><a href="OS_X_Systems.htm#tutorial_OS_X_Systems">OS X* Systems 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Package_Contents.htm b/doc/help/tbb_userguide/Package_Contents.htm
deleted file mode 100755
index ac012bc..0000000
--- a/doc/help/tbb_userguide/Package_Contents.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Package Contents">
-<meta name="DC.subject" content="Package Contents">
-<meta name="keywords" content="Package Contents">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Debug_Versus_Release_Libraries.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Scalable_Memory_Allocator.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Windows_OS.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Linux_OS.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/OS_X_Systems.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Open_Source_Version.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Package_Contents">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Package Contents</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Package_Contents">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Package_Contents"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Package Contents</h1>
- 
-   
-  <div> 
-	 <p>Intel® Threading Building Blocks (Intel® TBB) includes dynamic shared
-		library files, header files, and code examples for Windows*, Linux*, and OS X*
-		operating systems that you can compile and run as described in this section. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Debug_Versus_Release_Libraries.htm">Debug Versus Release Libraries</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Scalable_Memory_Allocator.htm">Scalable Memory Allocator</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Windows_OS.htm">Windows* OS</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Linux_OS.htm">Linux* OS</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/OS_X_Systems.htm">OS X* Systems</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Open_Source_Version.htm">Open Source Version</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Parallelizing_Complex_Loops.htm b/doc/help/tbb_userguide/Parallelizing_Complex_Loops.htm
deleted file mode 100755
index 9f1418a..0000000
--- a/doc/help/tbb_userguide/Parallelizing_Complex_Loops.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Parallelizing Complex Loops">
-<meta name="DC.subject" content="Parallelizing Complex Loops">
-<meta name="keywords" content="Parallelizing Complex Loops">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Cook_Until_Done_parallel_do.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">
-<meta name="DC.Relation" scheme="URI" content="Parallelizing_Simple_Loops.htm#tutorial_Parallelizing_Simple_Loops">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Parallelizing_Complex_Loops">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Parallelizing Complex Loops</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Parallelizing_Complex_Loops">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Parallelizing_Complex_Loops"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallelizing Complex Loops</h1>
- 
-  
-  <div>
-	 <p>You can successfully parallelize many applications using only the
-		constructs in the 
-		<strong>Parallelizing Simple Loops</strong> section. However, some situations call
-		for other parallel patterns. This section describes the support for some of
-		these alternate patterns.
-	 </p>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Cook_Until_Done_parallel_do.htm">Cook Until Done: parallel_do</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: pipeline</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Parallelizing_Simple_Loops.htm#tutorial_Parallelizing_Simple_Loops">Parallelizing Simple Loops
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Parallelizing_Simple_Loops.htm b/doc/help/tbb_userguide/Parallelizing_Simple_Loops.htm
deleted file mode 100755
index 035610f..0000000
--- a/doc/help/tbb_userguide/Parallelizing_Simple_Loops.htm
+++ /dev/null
@@ -1,159 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Parallelizing Simple Loops">
-<meta name="DC.subject" content="Parallelizing Simple Loops">
-<meta name="keywords" content="Parallelizing Simple Loops">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Initializing_and_Terminating_the_Library.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_reduce.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Advanced_Example.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm">
-<meta name="DC.Relation" scheme="URI" content="Debug_Versus_Release_Libraries.htm#tutorial_Debug_Versus_Release_Libraries">
-<meta name="DC.Relation" scheme="URI" content="Which_Dynamic_Libraries_to_Use.htm#tutorial_Which_Dynamic_Libraries_to_Use">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Parallelizing_Simple_Loops">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Parallelizing Simple Loops</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Parallelizing_Simple_Loops">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Parallelizing_Simple_Loops"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Parallelizing Simple Loops</h1>
- 
-   
-  <div> 
-	 <p>The simplest form of scalable parallelism is a loop of iterations that
-		can each run simultaneously without interfering with each other. The following
-		sections demonstrate how to parallelize simple loops. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		<p>Intel® Threading Building Blocks (Intel® TBB) components are defined
-		  in namespace 
-		  <samp class="codeph">tbb</samp>. For brevity’s sake, the namespace is explicit in
-		  the first mention of a component, but implicit afterwards. 
-		</p>
- 
-	 </div> 
-	 <p>When compiling Intel® TBB programs, be sure to link in the Intel® TBB
-		shared library, otherwise undefined references will occur. The following table
-		shows compilation commands that use the debug version of the library. Remove
-		the "<samp class="codeph">_debug</samp>" portion to link against the production version of
-		the library. See 
-		<samp class="codeph">doc/Getting_Started.pdf</samp> for other command line
-		possibilities. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl8"><!-- --></a><table cellpadding="4" summary="" id="tbl8" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Sample command lines for simple debug builds</span></caption><thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="50%" id="d148147e56">Operating System 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="50%" id="d148147e59">Command line 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e56 "> 
-			 <p>Windows* OS 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e59 "> 
-			 <p> 
-				<samp class="codeph">icl /MD example.cpp tbb_debug.lib 
-				</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e56 "> 
-			 <p>Linux* OS 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e59 "> 
-			 <p> 
-				<samp class="codeph">icc example.cpp -ltbb_debug</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e56 "> 
-			 <p>OS X* Systems 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="50%" headers="d148147e59 "> 
-			 <p> 
-				<samp class="codeph">icc example.cpp -ltbb_debug</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Initializing_and_Terminating_the_Library.htm">Initializing and Terminating the Library</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/parallel_for.htm">parallel_for</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/parallel_reduce.htm">parallel_reduce</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Advanced_Example.htm">Advanced Example</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm">Advanced Topic: Other Kinds of Iteration Spaces</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Debug_Versus_Release_Libraries.htm#tutorial_Debug_Versus_Release_Libraries">Debug Versus Release Libraries 
-		  </a></div>
-<div><a href="Which_Dynamic_Libraries_to_Use.htm#tutorial_Which_Dynamic_Libraries_to_Use">Which Dynamic Libraries to Use 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Partitioner_Summary.htm b/doc/help/tbb_userguide/Partitioner_Summary.htm
deleted file mode 100755
index 4d3ce05..0000000
--- a/doc/help/tbb_userguide/Partitioner_Summary.htm
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Partitioner Summary">
-<meta name="DC.subject" content="Partitioner Summary">
-<meta name="keywords" content="Partitioner Summary">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/parallel_for.htm">
-<meta name="DC.Relation" scheme="URI" content="parallel_for.htm#tutorial_parallel_for">
-<meta name="DC.Relation" scheme="URI" content="parallel_reduce.htm#tutorial_parallel_reduce">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Partitioner_Summary">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Partitioner Summary</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Partitioner_Summary">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Partitioner_Summary"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Partitioner Summary</h1>
- 
-   
-  <div> 
-	 <p>The parallel loop templates 
-		<samp class="codeph">parallel_for</samp> and 
-		<samp class="codeph">parallel_reduce</samp> take an optional 
-		<em>partitioner</em> argument, which specifies a strategy for executing the
-		loop. The following table summarizes the three partitioners and their effect
-		when used in conjunction with 
-		<samp class="codeph">blocked_range</samp>. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl10"><!-- --></a><table cellpadding="4" summary="" id="tbl10" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Partitioners</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="33.23076923076923%" id="d148489e52"> 
-			 <p>Partitioner 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="30.76923076923077%" id="d148489e58"> 
-			 <p>Description 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="36%" id="d148489e64"> 
-			 <p>When Used with blocked_range(i,j,<var>g</var>) 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="33.23076923076923%" headers="d148489e52 "> 
-			 <p><samp class="codeph">simple_partitioner</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d148489e58 "> 
-			 <p>Chunksize bounded by grain size. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="36%" headers="d148489e64 "> 
-			 <p><samp class="codeph"><var>g</var>/2 ≤ 
-				  <var>chunksize</var> ≤ 
-				  <var>g</var></samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="33.23076923076923%" headers="d148489e52 "> 
-			 <p><samp class="codeph">auto_partitioner</samp> (default)<a href="#ftn4"><sup><sup>[4]</sup></sup></a> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d148489e58 "> 
-			 <p>Automatic chunk size. 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="36%" headers="d148489e64 "> 
-			 <p><samp class="codeph"><var>g</var>/2 ≤ 
-				  <var>chunksize</var></samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="33.23076923076923%" headers="d148489e52 "> 
-			 <p><samp class="codeph">affinity_partitioner</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="30.76923076923077%" headers="d148489e58 "> 
-			 <p>Automatic chunk size and cache affinity. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <p>An 
-	 <samp class="codeph">auto_partitioner</samp> is used when no partitioner is specified.
-	 In general, the 
-	 <samp class="codeph">auto_partitioner</samp> or 
-	 <samp class="codeph">affinity_partitioner</samp> should be used, because these tailor
-	 the number of chunks based on available execution resources. However, 
-	 <samp class="codeph">simple_partitioner</samp> can be useful in the following
-	 situations: 
-  </p>
- 
-  <ul type="disc"> 
-	 <li> 
-		<p>The subrange size for 
-		  <samp class="codeph">operator()</samp> must not exceed a limit. That might be
-		  advantageous, for example, if your 
-		  <samp class="codeph">operator()</samp> needs a temporary array proportional to the
-		  size of the range. With a limited subrange size, you can use an automatic
-		  variable for the array instead of having to use dynamic memory allocation. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>A large subrange might use cache inefficiently. For example, suppose
-		  the processing of a subrange involves repeated sweeps over the same memory
-		  locations. Keeping the subrange below a limit might enable the repeatedly
-		  referenced memory locations to fit in cache. See the use of 
-		  <samp class="codeph">parallel_reduce</samp> in 
-		  <samp class="codeph">examples/parallel_reduce/primes/primes.cpp</samp> for an
-		  example of this scenario. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>You want to tune to a specific machine. 
-		</p>
- 
-	 </li>
- 
-  </ul>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/parallel_for.htm">parallel_for</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="parallel_for.htm#tutorial_parallel_for">parallel_for 
-		  </a></div>
-<div><a href="parallel_reduce.htm#tutorial_parallel_reduce">parallel_reduce 
-		  </a></div></div>
-</div> 
-<p><a id="ftn4"><sup>[4]</sup></a>  >Prior to 
-                  Intel® Threading Building Blocks (Intel® TBB) 2.2, the default was 
-				  <samp class="codeph">simple_partitioner</samp>. Compile with 
-				  <samp class="codeph">TBB_DEPRECATED=1</samp> to get the old default.</p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Reader_Writer_Mutexes.htm b/doc/help/tbb_userguide/Reader_Writer_Mutexes.htm
deleted file mode 100755
index f50b6cc..0000000
--- a/doc/help/tbb_userguide/Reader_Writer_Mutexes.htm
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Reader Writer Mutexes">
-<meta name="DC.subject" content="Reader Writer Mutexes">
-<meta name="keywords" content="Reader Writer Mutexes">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutual_Exclusion.htm">
-<meta name="DC.Relation" scheme="URI" content="UpgradeDowngrade.htm#tutorial_UpgradeDowngrade">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Reader_Writer_Mutexes">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Reader Writer Mutexes</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Reader_Writer_Mutexes">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Reader_Writer_Mutexes"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Reader Writer Mutexes</h1>
- 
-  
-  <div>
-	 <p>Mutual exclusion is necessary when at least one thread 
-		<em>writes</em> to a shared variable. But it does no harm to permit
-		multiple readers into a protected region. The reader-writer variants of the
-		mutexes, denoted by 
-		<samp class="codeph">_rw_</samp> in the class names, enable multiple readers by
-		distinguishing 
-		<em>reader locks</em> from 
-		<em>writer locks.</em> There can be more than one reader lock on a given
-		mutex.
-	 </p>
-
-	 <p>Requests for a reader lock are distinguished from requests for a writer
-		lock via an extra boolean parameter in the constructor for 
-		<samp class="codeph">scoped_lock</samp>. The parameter is 
-		<span class="keyword">false</span> to request a reader lock and 
-		<span class="keyword">true</span> to request a writer lock. It defaults to 
-		<samp class="codeph">true</samp> so that when omitted, a 
-		<samp class="codeph">spin_rw_mutex</samp> or 
-		<samp class="codeph">queuing_rw_mutex</samp> behaves like its
-		non-<samp class="codeph">_rw_</samp> counterpart. 
-	 </p>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Mutual_Exclusion.htm">Mutual Exclusion</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="UpgradeDowngrade.htm#tutorial_UpgradeDowngrade">Upgrade/Downgrade
-		  </a> example where the parameter is explicitly 
-			 false in order to obtain a reader lock.
-		  </div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Recursive_Chain_Reaction_.htm b/doc/help/tbb_userguide/Recursive_Chain_Reaction_.htm
deleted file mode 100755
index e5e71e8..0000000
--- a/doc/help/tbb_userguide/Recursive_Chain_Reaction_.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Recursive Chain Reaction">
-<meta name="DC.subject" content="Recursive Chain Reaction">
-<meta name="keywords" content="Recursive Chain Reaction">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Relation" scheme="URI" content="Advanced_Example.htm#tutorial_Advanced_Example">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Recursive_Chain_Reaction_">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Recursive Chain Reaction</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Recursive_Chain_Reaction_">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Recursive_Chain_Reaction_"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Recursive Chain Reaction </h1>
- 
-  
-  <div>
-	 <p>The scheduler works best with tree-structured task graphs, because that
-		is where the strategy of "breadth-first theft and depth-first work" applies
-		very well. Also, tree-structured task graphs allow fast creation of many tasks.
-		For example, if a master task tries to create 
-		<var>N</var> children directly, it will take
-		O(<var>N</var>) steps. But with tree structured forking, it takes only
-		O(lg(<var>N</var>)) steps.
-	 </p>
-
-	 <p>Often domains are not obviously tree structured, but you can easily map
-		them to trees. For example, 
-		<samp class="codeph">parallel_for</samp> (in 
-		<samp class="codeph">tbb/parallel_for</samp>) works over an iteration space, such as a sequence of integers. Template function 
-		<samp class="codeph">parallel_for</samp> uses that definition to recursively map the
-		iteration space onto a binary tree.
-	 </p>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Advanced_Example.htm#tutorial_Advanced_Example">Advanced Example
-		  </a>  shows how the iteration space is defined in terms of how to split
-			 it into two halves.
-		  </div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Recycling.htm b/doc/help/tbb_userguide/Recycling.htm
deleted file mode 100755
index f443e90..0000000
--- a/doc/help/tbb_userguide/Recycling.htm
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Recycling">
-<meta name="DC.subject" content="Recycling">
-<meta name="keywords" content="Recycling">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Relation" scheme="URI" content="Scheduler_Bypass.htm#tutorial_Scheduler_Bypass">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Recycling">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Recycling</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Recycling">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Recycling"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Recycling</h1>
- 
-   
-  <div> 
-	 <p>Not only can you bypass the scheduler, you might also bypass task
-		allocation and deallocation. The opportunity frequently arises for recursive
-		tasks that do scheduler bypass. Consider the example in the 
-		<strong>Scheduler Bypass</strong> section. After it creates continuation task
-		"<samp class="codeph">c</samp>", it performs the following steps: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Create child task "<samp class="codeph">a</samp>". 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Create and spawn child task "<samp class="codeph">b</samp>" 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Return from method 
-			 <samp class="codeph">execute()</samp> with pointer to task "<samp class="codeph">a</samp>".
-			 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Destroy parent task. 
-		  </p>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>Recycling the parent as "<samp class="codeph">a</samp>" can avoid the task creation
-		destruction done by steps 1 and 4. Furthermore, in many scenarios step 1 copies
-		state from the parent. Recycling the parent as task "<samp class="codeph">a</samp>"
-		eliminates the copying overhead. 
-	 </p>
- 
-	 <p>The following code shows the changes required to implement recycling in
-		the scheduler-bypass example. 
-	 </p>
- 
-	 <pre>struct FibTask: public task {
-    long n;
-    long* sum;
-    ...
-    task* execute() {
-        if( n<CutOff ) {
-            *sum = SerialFib(n);
-            return NULL;
-        } else {
-            FibContinuation& c = 
-                *new( allocate_continuation() ) FibContinuation(sum);
-            // FibTask& a = *new( c.allocate_child() ) FibTask(n-2,&c.x); This line removed
-            FibTask& b = *new( c.allocate_child() ) FibTask(n-1,&c.y);
-            recycle_as_child_of(c);
-            n -= 2;
-            sum = &c.x;
-            // Set ref_count to "two children".
-            c.set_ref_count(2);
-            spawn( b );
-            // return &a; This line removed
-            return this;
-        }
-    }
-};</pre> 
-	 <p>The child that was previously called 
-		<samp class="codeph">a</samp> is now the recycled 
-		<samp class="codeph">this</samp>. The call 
-		<samp class="codeph">recycle_as_child_of(c)</samp> has several effects: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>It marks 
-			 <samp class="codeph">this</samp> as to 
-			 <em>not</em> be automatically destroyed when 
-			 <samp class="codeph">execute()</samp> returns. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>It sets the successor of 
-			 <samp class="codeph">this</samp> to be 
-			 <samp class="codeph">c</samp>. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>To prevent reference-counting problems, 
-		<samp class="codeph">recycle_as_child_of</samp> has a prerequisite that 
-		<samp class="codeph">this</samp> must have a NULL successor. This is the case after 
-		<samp class="codeph">allocate_continuation</samp> occurs. The following figure shows
-		how 
-		<samp class="codeph">allocate_continuation</samp> and 
-		<samp class="codeph">recycle_as_child_of</samp> transform the task graph. 
-	 </p>
- 
-	 <div class="fignone" id="fig10"><a name="fig10"><!-- --></a><span class="figcap">Action of 
-		  <samp class="codeph">allocate_continuation</samp> Followed By 
-		  <samp class="codeph">recycle_as_child_of</samp></span> 
-		<br><img src="Images/image017.jpg" width="529" height="212"><br> 
-	 </div>
- 
-	 <p>When recycling, ensure that the original task’s fields are not used
-		after the task might start running. The example uses the scheduler bypass trick
-		to ensure this. You can spawn the recycled task instead, as long as none of its
-		fields are used after the spawning. This restriction applies even to any 
-		<samp class="codeph">const</samp> fields, because after spawning the task might run
-		and be destroyed before the parent progresses any further. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		<p>A similar method, 
-		  <samp class="codeph">task::recycle_as_continuation()</samp> recycles a task as a
-		  continuation instead of a child. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Scheduler_Bypass.htm#tutorial_Scheduler_Bypass">Scheduler Bypass 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/References.htm b/doc/help/tbb_userguide/References.htm
deleted file mode 100755
index 7e4f5a1..0000000
--- a/doc/help/tbb_userguide/References.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="References">
-<meta name="DC.subject" content="References">
-<meta name="keywords" content="References">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_References">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>References</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_References">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_References"><!-- --></a>
-
- 
-  <h1 class="topictitle1">References</h1>
- 
-  
-  <div>
-	 <p><strong>[1]</strong>   "Memory Consistency & .NET", Arch D. Robison, Dr.
-		Dobb’s Journal, April 2003.
-	 </p>
-
-	 <p><strong>[2]</strong>   A Formal Specification of Intel® Itanium® Processor Family
-		Memory Ordering, Intel Corporation, October 2002.
-	 </p>
-
-	 <p><strong>[3]</strong>   "Cilk: An Efficient Multithreaded Runtime System", Robert
-		Blumofe, Christopher Joerg, Bradley Kuszmaul, C. Leiserson, and Keith Randall,
-		Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of
-		parallel programming, 1995.
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Scalable_Memory_Allocator.htm b/doc/help/tbb_userguide/Scalable_Memory_Allocator.htm
deleted file mode 100755
index 88f21fa..0000000
--- a/doc/help/tbb_userguide/Scalable_Memory_Allocator.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Scalable Memory Allocator">
-<meta name="DC.subject" content="Scalable Memory Allocator">
-<meta name="keywords" content="Scalable Memory Allocator">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Relation" scheme="URI" content="Memory_Allocation.htm#tutorial_Memory_Allocation">
-<meta name="DC.Relation" scheme="URI" content="Which_Dynamic_Libraries_to_Use.htm#tutorial_Which_Dynamic_Libraries_to_Use">
-<meta name="DC.Relation" scheme="URI" content="Automically_Replacing_malloc.htm#tutorial_Automically_Replacing_malloc">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Scalable_Memory_Allocator">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Scalable Memory Allocator</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Scalable_Memory_Allocator">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Scalable_Memory_Allocator"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Scalable Memory Allocator</h1>
- 
-   
-  <div> 
-	 <p>Both the debug and release versions of Intel® Threading Building Blocks
-		(Intel® TBB) consists of two dynamic shared libraries, one with general support
-		and the other with a scalable memory allocator. The latter is distinguished by 
-		<samp class="codeph">malloc</samp> in its name. For example, the release versions
-		for Windows* OS are 
-		<samp class="codeph">tbb.dll</samp> and 
-		<span class="filepath">tbbmalloc.dll</span> respectively. Applications may choose
-		to use only the general library, or only the scalable memory allocator, or
-		both. See the links below for more information on memory allocation. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Memory_Allocation.htm#tutorial_Memory_Allocation">Memory Allocation 
-		  </a></div>
-<div><a href="Which_Dynamic_Libraries_to_Use.htm#tutorial_Which_Dynamic_Libraries_to_Use">Which Dynamic Libraries to Use 
-		  </a></div>
-<div><a href="Automically_Replacing_malloc.htm#tutorial_Automically_Replacing_malloc">Automically Replacing malloc and Other C/C++ Functions for
-			 Dynamic Memory Allocation 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Scheduler_Bypass.htm b/doc/help/tbb_userguide/Scheduler_Bypass.htm
deleted file mode 100755
index 269ed20..0000000
--- a/doc/help/tbb_userguide/Scheduler_Bypass.htm
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Scheduler Bypass">
-<meta name="DC.subject" content="Scheduler Bypass">
-<meta name="keywords" content="Scheduler Bypass">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Relation" scheme="URI" content="Continuation_Passing.htm#tutorial_Continuation_Passing">
-<meta name="DC.Relation" scheme="URI" content="Recycling.htm#tutorial_Recycling">
-<meta name="DC.Relation" scheme="URI" content="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Scheduler_Bypass">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Scheduler Bypass</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Scheduler_Bypass">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Scheduler_Bypass"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Scheduler Bypass</h1>
- 
-   
-  <div> 
-	 <p>Scheduler bypass is an optimization where you directly specify the next
-		task to run. Continuation-passing style often opens up an opportunity for
-		scheduler bypass. For example, at the end of the continuation-passing example
-		in the previous section, method 
-		<samp class="codeph">execute()</samp> spawns task "a" and returns. By the execution
-		rules in 
-		<strong>How Task Scheduling Works</strong>, that sequence causes the executing
-		thread to do the following: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Push task "<samp class="codeph">a</samp>" onto the thread's deque. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Return from method 
-			 <samp class="codeph">execute()</samp>. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Pop task "<samp class="codeph">a</samp>" from the thread's deque, unless it is
-			 stolen by another thread. 
-		  </p>
- 
-		</li>
- 
-	 </ol>
- 
-	 <p>Steps 1 and 3 introduce unnecessary deque operations, or worse yet,
-		permit stealing that can hurt locality without adding significant parallelism.
-		Method 
-		<samp class="codeph">execute()</samp>can avoid these problems by returning a pointer
-		to 
-		<samp class="codeph">a</samp> instead of spawning it. When using the method shown in
-		
-		<strong>How Task Scheduling Works</strong>, 
-		<samp class="codeph">a</samp> becomes the next task executed by the thread.
-		Furthermore, this approach guarantees that the thread executes 
-		<samp class="codeph">a</samp>, not some other thread.
-		
-	 </p>
- 
-	 <p>The following example shows the changes to the example in the previous
-		section in 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>: 
-	 </p>
- 
-	 <pre>struct FibTask: public task {
-    ...
-    task* execute() {
-        if( n<CutOff ) {
-            *sum = SerialFib(n);
-            return NULL;
-        } else {
-            FibContinuation& c = 
-                *new( allocate_continuation() ) FibContinuation(sum);
- 
-            FibTask& a = *new( c.allocate_child() ) FibTask(n-2,&c.x);
-            FibTask& b = *new( c.allocate_child() ) FibTask(n-1,&c.y);
-            // Set ref_count to "two children".
-            c.set_ref_count(2);
-            spawn( b );
-            // spawn( a ); This line removed
-            // return NULL; This line removed
-            <span style="color:blue"><strong>return &a;</strong></span>
-        }
-    }
-};</pre> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Continuation_Passing.htm#tutorial_Continuation_Passing">Continuation Passing 
-		  </a></div>
-<div><a href="Recycling.htm#tutorial_Recycling">Recycling 
-		  </a></div>
-<div><a href="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">How Task Scheduling Works 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Simple_Example_Fibonacci_Numbers.htm b/doc/help/tbb_userguide/Simple_Example_Fibonacci_Numbers.htm
deleted file mode 100755
index aff9672..0000000
--- a/doc/help/tbb_userguide/Simple_Example_Fibonacci_Numbers.htm
+++ /dev/null
@@ -1,247 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Simple Example: Fibonacci Numbers">
-<meta name="DC.subject" content="Simple Example: Fibonacci Numbers">
-<meta name="keywords" content="Simple Example: Fibonacci Numbers">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="Scheduler_Bypass.htm#tutorial_Scheduler_Bypass">
-<meta name="DC.Relation" scheme="URI" content="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Simple_Example_Fibonacci_Numbers">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Simple Example: Fibonacci Numbers</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Simple_Example_Fibonacci_Numbers">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Simple_Example_Fibonacci_Numbers"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Simple Example: Fibonacci Numbers</h1>
- 
-   
-  <div> 
-	 <p>This section uses computation of the 
-		<var>n</var>th Fibonacci number as an example. This example uses
-		an inefficient method to compute Fibonacci numbers, but it demonstrates the
-		basics of a task library using a simple recursive pattern. To get scalable
-		speedup out of task-based programming, you need to specify a lot of tasks. This
-		is typically done in Intel® TBB with a recursive task pattern. 
-	 </p>
- 
-	 <p>This is the serial code: 
-	 </p>
- 
-	 <pre>long SerialFib( long n ) {
-    if( n<2 )
-        return n;
-    else
-        return SerialFib(n-1)+SerialFib(n-2);
-}</pre> 
-	 <p>The top-level code for the parallel task-based version is: 
-	 </p>
- 
-	 <pre>long ParallelFib( long n ) {
-    long sum;
-    FibTask& a = *new(task::allocate_root()) FibTask(n,&sum);
-    task::spawn_root_and_wait(a);
-    return sum;
-}</pre> 
-	 <p>This code uses a task of type 
-		<samp class="codeph">FibTask</samp> to do the real work. It involves the following
-		distinct steps: 
-	 </p>
- 
-	 <ol> 
-		<li> 
-		  <p>Allocate space for the task. This is done by a special "overloaded
-			 new" and method 
-	 <span class="option">task::allocate_root</span>. The 
-	 <samp class="codeph">_root</samp> suffix in the name denotes the fact that the task
-	 created has no parent. It is the root of a task tree. Tasks must be allocated
-	 by special methods so that the space can be efficiently recycled when the task
-	 completes. 
-	 </p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Construct the task with the constructor 
-		  <samp class="codeph">FibTask(n,&sum)</samp> invoked by 
-		  <samp class="codeph">new</samp>. When the task is run in step 3, it computes the
-		  nth Fibonacci number and stores it into 
-		  <samp class="codeph">*sum</samp>. 
-		</p>
- 
-	 </li>
- 
-	 <li> 
-		<p>Run the task to completion with 
-		  <samp class="codeph">task::spawn_root_and_wait</samp>. 
-		</p>
- 
-	 </li>
- 
-	 </ol>
- 
-	 <p>The real work is inside struct 
-		<samp class="codeph">FibTask</samp>. Its definition is shown below. 
-	 </p>
- 
-	 <pre>class FibTask: public task {
-public:
-    const long n;
-    long* const sum;
-    FibTask( long n_, long* sum_ ) :
-        n(n_), sum(sum_)
-    {}
-    task* execute() {      // Overrides virtual function task::execute
-        if( n<CutOff ) {
-            *sum = SerialFib(n);
-        } else {
-            long x, y;
-            FibTask& a = *new( allocate_child() ) FibTask(n-1,&x);
-            FibTask& b = *new( allocate_child() ) FibTask(n-2,&y);
-            // Set ref_count to 'two children plus one for the wait".
-            set_ref_count(3);
-            // Start b running.
-            spawn( b );
-            // Start a running and wait for all children (a and b).
-            spawn_and_wait_for_all(a);
-            // Do the sum
-            *sum = x+y;
-        }
-        return NULL;
-    }
-};</pre> 
-	 <p>It is a relatively large piece of code, compared to 
-		<samp class="codeph">SerialFib</samp>, because it expresses parallelism without the
-		help of any extensions to standard C++. 
-	 </p>
- 
-	 <p>Like all tasks scheduled by Intel® TBB, 
-		<samp class="codeph">FibTask</samp> is derived from class 
-		<samp class="codeph">task</samp>. Fields 
-		<samp class="codeph">n</samp> and 
-		<samp class="codeph">sum</samp> hold respectively the input value and pointer to the
-		output. These are copies of the arguments passed to the constructor for 
-		<samp class="codeph">FibTask</samp>. Method 
-		<samp class="codeph">execute</samp> does the actual computation. Every task must
-		provide a definition of 
-		<samp class="codeph">execute</samp> that overrides the pure virtual method 
-	 <span class="option">task::execute</span>. The definition should do the work of the
-	 task, and return either NULL, or a pointer to the next task to run. In this
-	 simple example, it returns NULL. For more information on the non-NULL case see 
-	 <strong>Scheduler Bypass</strong>. 
-	 </p>
- 
-	 <p>Method 
-	 <span class="option">FibTask::execute()</span>does the following: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>Checks if 
-			 <samp class="codeph">n</samp> is so small that serial execution would be faster.
-			 Finding the right value of 
-			 <samp class="codeph">CutOff</samp> requires some experimentation. A value of at
-			 least 16 works well in practice for getting most of the possible speedup out of
-			 this example. Resorting to a sequential algorithm when the problem size becomes
-			 small is characteristic of most divide-and-conquer patterns for parallelism.
-			 Finding the point at which to switch requires experimentation, so be sure to
-			 write your code in a way that allows you to experiment. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>If the 
-			 <samp class="codeph">else</samp> is taken, the code creates and runs two child
-			 tasks that compute the (<samp class="codeph">n</samp>-1)th and (<samp class="codeph">n</samp>-2)th
-			 Fibonacci numbers. Here, inherited method 
-			 <samp class="codeph">allocate_child()</samp> is used to allocate space for the
-			 task. Remember that the top-level routine 
-			 <samp class="codeph">ParallelFib</samp> used 
-			 <samp class="codeph">allocate_root()</samp> to allocate space for a task. The
-			 difference is that here the task is creating 
-			 <em>child</em> tasks. This relationship is indicated by the choice of
-			 allocation method. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Calls 
-			 <samp class="codeph">set_ref_count(3)</samp>. The number 
-			 <samp class="codeph">3</samp> represents the two children and an additional
-			 implicit reference that is required by method 
-			 <samp class="codeph">spawn_and_wait_for_all</samp>. Make sure to call 
-			 <samp class="codeph">set_reference_count(3)</samp> before spawning any children.
-			 Failure to do so results in undefined behavior. The debug version of the
-			 library usually detects and reports this type of error. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Spawns two child tasks. Spawning a task indicates to the scheduler
-			 that it can run the task whenever it chooses, possibly in parallel with other
-			 tasks. For more information on the execution policy see 
-			 <strong>How Task Scheduling Works</strong>. The first spawning, by method 
-			 <samp class="codeph">spawn</samp>, returns immediately without waiting for the
-			 child task to start executing. The second spawning, by method 
-			 <samp class="codeph">spawn_and_wait_for_all</samp>, causes the parent to wait
-			 until all currently allocated child tasks are finished. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>After the two child tasks complete, the parent computes 
-			 <samp class="codeph">x+y</samp> and stores it in 
-			 <samp class="codeph">*sum</samp>. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>At first glance, the parallelism might appear to be limited, because the
-		task creates only two child tasks. The trick here is 
-		<em>recursive parallelism.</em> The two child tasks each create two child
-		tasks, and so on, until 
-		<samp class="codeph">n<Cutoff</samp>. This chain reaction creates a lot of
-		potential parallelism. The advantage of the task scheduler is that it turns
-		this potential parallelism into real parallelism in a very efficient way,
-		because it chooses tasks to run in a way that keeps physical threads busy with
-		relatively little context switching. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Scheduler_Bypass.htm#tutorial_Scheduler_Bypass">Scheduler Bypass 
-		  </a></div>
-<div><a href="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">How Task Scheduling Works 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Summary_of_Containers.htm b/doc/help/tbb_userguide/Summary_of_Containers.htm
deleted file mode 100755
index 8c39119..0000000
--- a/doc/help/tbb_userguide/Summary_of_Containers.htm
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Summary of Containers">
-<meta name="DC.subject" content="Summary of Containers">
-<meta name="keywords" content="Summary of Containers">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Containers.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Summary_of_Containers">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Summary of Containers</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Summary_of_Containers">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Summary_of_Containers"><!-- --></a>
-
-
-<h1 class="topictitle1">Summary of Containers</h1>
-
-<div><p>The high-level containers in Intel® Threading Building Blocks enable common idioms for concurrent access. They are suitable for scenarios where the alternative would be a serial container with a lock around it.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Containers.htm">Containers</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Summary_of_Loops_and_Pipelines.htm b/doc/help/tbb_userguide/Summary_of_Loops_and_Pipelines.htm
deleted file mode 100755
index 1f8d4e3..0000000
--- a/doc/help/tbb_userguide/Summary_of_Loops_and_Pipelines.htm
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Summary of Loops and Pipelines">
-<meta name="DC.subject" content="Summary of Loops and Pipelines">
-<meta name="keywords" content="Summary of Loops and Pipelines">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Summary_of_Loops_and_Pipelines">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Summary of Loops and Pipelines</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Summary_of_Loops_and_Pipelines">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Summary_of_Loops_and_Pipelines"><!-- --></a>
-
-
-<h1 class="topictitle1">Summary of Loops and Pipelines</h1>
-
-<div><p>The high-level loop and pipeline templates in Intel® Threading Building Blocks give you efficient scalable ways to exploit the power of multi-core chips without having to start from scratch. They let you design your software at a high task-pattern level and not worry about low-level manipulation of threads. Because they are generic, you can customize them to your specific needs. Have fun using these templates to unlock the power of multi-core.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: pipeline</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Task-Based_Programming.htm b/doc/help/tbb_userguide/Task-Based_Programming.htm
deleted file mode 100755
index ad4f7dd..0000000
--- a/doc/help/tbb_userguide/Task-Based_Programming.htm
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Task-Based Programming">
-<meta name="DC.subject" content="Task-Based Programming">
-<meta name="keywords" content="Task-Based Programming">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Task-Based_Programming">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Task-Based Programming</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Task-Based_Programming">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Task-Based_Programming"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Task-Based Programming</h1>
- 
-  
-  <div>
-	 <p>When striving for performance, programming in terms of threads can be a
-		poor way to do multithreaded programming. It is much better to formulate your
-		program in terms of 
-		<em>logical tasks</em>, not threads, for several reasons.
-	 </p>
- 
-	 <ul type="disc">
-		<li>
-		  <p>Matching parallelism to available resources
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Faster task startup and shutdown
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>More efficient evaluation order
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Improved load balancing
-		  </p>
-
-		</li>
-
-		<li>
-		  <p>Higher–level thinking
-		  </p>
-
-		</li>
-
-	 </ul>
-
-	 <p>The following paragraphs explain these points in detail.
-	 </p>
-
-	 <p>The threads you create with a threading package are 
-		<em>logical</em> threads, which map onto the 
-		<em>physical threads</em> of the hardware. For computations that do not
-		wait on external devices, highest efficiency usually occurs when there is
-		exactly one running logical thread per physical thread. Otherwise, there can be
-		inefficiencies from the mismatch<em>. Undersubscription</em> occurs when there
-		are not enough running logical threads to keep the physical threads working. 
-		<em>Oversubscription</em> occurs when there are more running logical
-		threads than physical threads. Oversubscription usually leads to 
-		<em>time sliced</em> execution of logical threads, which incurs overheads
-		as discussed in Appendix A, 
-		<em>Costs of Time Slicing</em>. The scheduler tries to avoid
-		oversubscription, by having one logical thread per physical thread, and mapping
-		tasks to logical threads, in a way that tolerates interference by other threads
-		from the same or other processes.
-	 </p>
-
-	 <p>The key advantage of tasks versus logical threads is that tasks are much
-		
-		<em>lighter weight</em> than logical threads. On Linux systems, starting
-		and terminating a task is about 18 times faster than starting and terminating a
-		thread. On Windows systems, the ratio is more than 100. This is because a
-		thread has its own copy of a lot of resources, such as register state and a
-		stack. On Linux, a thread even has its own process id. A task in Intel®
-		Threading Building Blocks, in contrast, is typically a small routine, and also,
-		cannot be preempted at the task level (though its logical thread can be
-		preempted).
-	 </p>
-
-	 <p>Tasks in Intel® Threading Building Blocks are efficient too because 
-		<em>the scheduler is unfair.</em> Thread schedulers typically distribute
-		time slices in a round-robin fashion. This distribution is called "fair",
-		because each logical thread gets its fair share of time. Thread schedulers are
-		typically fair because it is the safest strategy to undertake without
-		understanding the higher-level organization of a program. In task-based
-		programming, the task scheduler does have some higher-level information, and so
-		can sacrifice fairness for efficiency. Indeed, it often delays starting a task
-		until it can make useful progress. 
-	 </p>
-
-	 <p>The scheduler does 
-		<em>load balancing.</em> In addition to using the right number of threads,
-		it is important to distribute work evenly across those threads. As long as you
-		break your program into enough small tasks, the scheduler usually does a good
-		job of assigning tasks to threads to balance load. With thread-based
-		programming, you are often stuck dealing with load-balancing
-		yourself, which can be tricky to get right. 
-	 </p>
-
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3>
-		<p>Design your programs to try to create many more tasks than there are
-		  threads, and let the task scheduler choose the mapping from tasks to threads.
-		</p>
-
-	 </div>
-	 <p>Finally, the main advantage of using tasks instead of threads is that
-		they let you think at a higher, task-based, level. With thread-based
-		programming, you are forced to think at the low level of physical threads to
-		get good efficiency, because you have one logical thread per physical thread to
-		avoid undersubscription or oversubscription. You also have to deal with the
-		relatively coarse grain of threads. With tasks, you can concentrate on the
-		logical dependences between tasks, and leave the efficient scheduling to the
-		scheduler.
-	 </p>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="How_Task_Scheduling_Works.htm#tutorial_How_Task_Scheduling_Works">How Task Scheduling Works
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Task_Scheduler_Summary.htm b/doc/help/tbb_userguide/Task_Scheduler_Summary.htm
deleted file mode 100755
index 9d2048d..0000000
--- a/doc/help/tbb_userguide/Task_Scheduler_Summary.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Task Scheduler Summary">
-<meta name="DC.subject" content="Task Scheduler Summary">
-<meta name="keywords" content="Task Scheduler Summary">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Task_Scheduler_Summary">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Task Scheduler Summary</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Task_Scheduler_Summary">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Task_Scheduler_Summary"><!-- --></a>
-
-
-<h1 class="topictitle1">Task Scheduler Summary</h1>
-
-<div><p>The task scheduler works most efficiently for fork-join parallelism with lots of forks, so that the task-stealing can cause sufficient breadth-first behavior to occupy threads, which then conduct themselves in a depth-first manner until they need to steal more work. </p>
-<p>The task scheduler is not the simplest possible scheduler because it is designed for speed. If you need to use it directly, it may be best to hide it behind a higher-level interface, as the templates <samp class="codeph">parallel_for</samp>, <samp class="codeph">parallel_reduce</samp>, etc. do. Some of the details to remember are:</p>
-
-<ul type="disc"><li><p>Always use <samp class="codeph">new(<var>allocation_method</var>) <var>T</var></samp> to allocate a <samp class="codeph">task</samp>, where <em>allocation_method</em> is one of the allocation methods of class <samp class="codeph">task</samp>. Do not create local or file-scope instances of a <samp class="codeph">task</samp>.</p>
-</li>
-<li><p>All siblings should be allocated before any start running, unless you are using <samp class="codeph">allocate_additional_child_of</samp>.</p>
-</li>
-<li><p>Exploit continuation passing, scheduler bypass, and task recycling to squeeze out maximum performance.</p>
-</li>
-<li><p>If a task completes, and was not marked for re-execution, it is automatically destroyed. Also, its successor’s reference count is decremented, and if it hits zero, the successor is automatically spawned. </p>
-</li>
-</ul>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/The_Task_Scheduler.htm b/doc/help/tbb_userguide/The_Task_Scheduler.htm
deleted file mode 100755
index 91be95e..0000000
--- a/doc/help/tbb_userguide/The_Task_Scheduler.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="The Task Scheduler">
-<meta name="DC.subject" content="The Task Scheduler">
-<meta name="keywords" content="The Task Scheduler">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Task-Based_Programming.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Simple_Example_Fibonacci_Numbers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/How_Task_Scheduling_Works.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Useful_Task_Techniques.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Task_Scheduler_Summary.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_The_Task_Scheduler">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>The Task Scheduler</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_The_Task_Scheduler">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_The_Task_Scheduler"><!-- --></a>
-
-
-<h1 class="topictitle1">The Task Scheduler</h1>
-
-<div><p>This section introduces the Intel® Threading Building Blocks (Intel® TBB) <em>task scheduler</em>. The task scheduler is the engine that powers the loop templates. When practical, you should use the loop templates instead of the task scheduler, because the templates hide the complexity of the scheduler. However, if you have an algorithm that does not naturally map onto one of the high-level templates, use the task scheduler. All of the scheduler functionality that is used [...]
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Task-Based_Programming.htm">Task-Based Programming</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm">When Task-Based Programming Is Inappropriate</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Simple_Example_Fibonacci_Numbers.htm">Simple Example: Fibonacci Numbers</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/How_Task_Scheduling_Works.htm">How Task Scheduling Works</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Useful_Task_Techniques.htm">Useful Task Techniques</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/General_Acyclic_Graphs_of_Tasks.htm">General Acyclic Graphs of Tasks</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Task_Scheduler_Summary.htm">Task Scheduler Summary</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Throughput_of_pipeline.htm b/doc/help/tbb_userguide/Throughput_of_pipeline.htm
deleted file mode 100755
index 70cb31e..0000000
--- a/doc/help/tbb_userguide/Throughput_of_pipeline.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Throughput of pipeline">
-<meta name="DC.subject" content="Throughput of pipeline">
-<meta name="keywords" content="Throughput of pipeline">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Throughput_of_pipeline">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Throughput of pipeline</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Throughput_of_pipeline">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Throughput_of_pipeline"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Throughput of pipeline</h1>
- 
-  
-  <div>
-	 <p>The throughput of a pipeline is the rate at which tokens flow through
-		it, and is limited by two constraints. First, if a pipeline is run with 
-		<var>N</var> tokens, then obviously there cannot be more than 
-		<var>N</var> operations running in parallel. Selecting the right
-		value of 
-		<var>N</var> may involve some experimentation. Too low a value
-		limits parallelism; too high a value may demand too many resources (for
-		example, more buffers). Second, the throughput of a pipeline is limited by the
-		throughput of the slowest sequential filter. This is true even for a pipeline
-		with no parallel filters. No matter how fast the other filters are, the slowest
-		sequential filter is the bottleneck. So in general you should try to keep the
-		sequential filters fast, and when possible, shift work to the parallel filters.
-	 </p>
-
-	 <p>The text processing example has relatively poor speedup, because the
-		serial filters are limited by the I/O speed of the system. Indeed, even with
-		files that are on a local disk, you are unlikely to see a speedup much more
-		than 2. To really benefit from a pipeline, the parallel filters need to be
-		doing some heavy lifting compared to the serial filters. 
-	 </p>
-
-	 <p>The window size, or sub-problem size for each token, can also limit
-		throughput. Making windows too small may cause overheads to dominate the useful
-		work. Making windows too large may cause them to spill out of cache. A good
-		guideline is to try for a large window size that still fits in cache. You may
-		have to experiment a bit to find a good window size.
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: pipeline</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Timing.htm b/doc/help/tbb_userguide/Timing.htm
deleted file mode 100755
index fbbd4e2..0000000
--- a/doc/help/tbb_userguide/Timing.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Timing">
-<meta name="DC.subject" content="Timing">
-<meta name="keywords" content="Timing">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Timing">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Timing</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Timing">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Timing"><!-- --></a>
-
-
-<h1 class="topictitle1">Timing</h1>
-
-<div><p>When measuring the performance of parallel programs, it is usually <em>wall clock</em> time, not CPU time, that matters. The reason is that better parallelization typically increases aggregate CPU time by employing more CPUs. The goal of parallelizing a program is usually to make it run <em>faster</em> in real time.</p>
-<p>The class <samp class="codeph">tick_count</samp> in Intel® Threading Building Blocks (Intel® TBB) provides a simple interface for measuring wall clock time. A <samp class="codeph">tick_count</samp> value obtained from the static method <span class="option">tick_count::now()</span> represents the current absolute time. Subtracting two <samp class="codeph">tick_count</samp> values yields a relative time in <samp class="codeph">tick_count::interval_t</samp>, which you can convert [...]
-<pre>tick_count t0 = tick_count::now();
-... do some work ...
-tick_count t1 = tick_count::now();
-printf("work took %g seconds\n",(t1-t0).seconds());</pre><p>Unlike some timing interfaces, <samp class="codeph">tick_count</samp> is guaranteed to be safe to use across threads. It is valid to subtract <samp class="codeph">tick_count</samp> values that were created by different threads. A <samp class="codeph">tick_count</samp> difference can be converted to seconds.</p>
-<p>The resolution of <samp class="codeph">tick_count</samp> corresponds to the highest resolution timing service on the platform that is valid across threads in the same process. Since the CPU timer registers are <em>not</em> valid across threads on some platforms, this means that the resolution of <span class="option">tick_count</span> can not be guaranteed to be consistent across platforms.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/UpgradeDowngrade.htm b/doc/help/tbb_userguide/UpgradeDowngrade.htm
deleted file mode 100755
index ac6904e..0000000
--- a/doc/help/tbb_userguide/UpgradeDowngrade.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Upgrade/Downgrade">
-<meta name="DC.subject" content="Upgrade/Downgrade">
-<meta name="keywords" content="Upgrade/Downgrade">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutual_Exclusion.htm">
-<meta name="DC.Relation" scheme="URI" content="Lock_Pathologies.htm#tutorial_Lock_Pathologies">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_UpgradeDowngrade">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Upgrade/Downgrade</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_UpgradeDowngrade">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_UpgradeDowngrade"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Upgrade/Downgrade</h1>
- 
-  
-  <div>
-	 <p>It is possible to upgrade a reader lock to a writer lock, by using the
-		method 
-		<samp class="codeph">upgrade_to_writer</samp>. Here is an example.
-	 </p>
-
-	 <pre>std::vector<string> MyVector;
-typedef spin_rw_mutex MyVectorMutexType;
-MyVectorMutexType MyVectorMutex;
- 
-void AddKeyIfMissing( const string& key ) {
-    // Obtain a reader lock on MyVectorMutex
-    MyVectorMutexType::scoped_lock lock(MyVectorMutex,/*is_writer=*/false);
-    size_t n = MyVector.size();
-    for( size_t i=0; i<n; ++i )
-        if( MyVector[i]==key ) return;
-    if( !lock.upgrade_to_writer() )
-        // Check if key was added while lock was temporarily released
-        for( int i=n; i<MyVector.size(); ++i )
-           if(MyVector[i]==key ) return; 
-    vector.push_back(key);
-}</pre>
-	 <p>Note that the vector must sometimes be searched again. This is necessary
-		because 
-		<samp class="codeph">upgrade_to_writer</samp> might have to temporarily release the
-		lock before it can upgrade. Otherwise, deadlock might ensue, as discussed in 
-		<strong>Lock Pathologies</strong>. Method 
-		<samp class="codeph">upgrade_to_writer</samp> returns a 
-		<samp class="codeph">bool</samp> that is true if it successfully upgraded the lock
-		without releasing it, and false if the lock was released temporarily. Thus when
-		
-		<samp class="codeph">upgrade_to_writer</samp> returns false, the code must rerun the
-		search to check that the key was not inserted by another writer. The example
-		presumes that keys are always added to the end of the vector, and that keys are
-		never removed. Because of these assumptions, it does not have to re-search the
-		entire vector, but only the elements beyond those originally searched. The key
-		point to remember is that when 
-		<samp class="codeph">upgrade_to_writer</samp> returns false, any assumptions
-		established while holding a reader lock may have been invalidated, and must be
-		rechecked.
-	 </p>
-
-	 <p>For symmetry, there is a corresponding method 
-		<samp class="codeph">downgrade_to_reader</samp>, though in practice there are few
-		reasons to use it.
-	 </p>
-
-  </div>
-
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Mutual_Exclusion.htm">Mutual Exclusion</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Lock_Pathologies.htm#tutorial_Lock_Pathologies">Lock Pathologies
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Useful_Task_Techniques.htm b/doc/help/tbb_userguide/Useful_Task_Techniques.htm
deleted file mode 100755
index 93d8c24..0000000
--- a/doc/help/tbb_userguide/Useful_Task_Techniques.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Useful Task Techniques">
-<meta name="DC.subject" content="Useful Task Techniques">
-<meta name="keywords" content="Useful Task Techniques">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Recursive_Chain_Reaction_.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Continuation_Passing.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Scheduler_Bypass.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Recycling.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Empty_Tasks.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Useful_Task_Techniques">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Useful Task Techniques</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Useful_Task_Techniques">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Useful_Task_Techniques"><!-- --></a>
-
-
-<h1 class="topictitle1">Useful Task Techniques</h1>
-
-<div><p>This section explains programming techniques for making best use of the scheduler.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Recursive_Chain_Reaction_.htm">Recursive Chain Reaction</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Continuation_Passing.htm">Continuation Passing</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Scheduler_Bypass.htm">Scheduler Bypass</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Recycling.htm">Recycling</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Empty_Tasks.htm">Empty Tasks</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Using_Circular_Buffers.htm b/doc/help/tbb_userguide/Using_Circular_Buffers.htm
deleted file mode 100755
index ac7cee3..0000000
--- a/doc/help/tbb_userguide/Using_Circular_Buffers.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Using Circular Buffers">
-<meta name="DC.subject" content="Using Circular Buffers">
-<meta name="keywords" content="Using Circular Buffers">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Using_Circular_Buffers">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Using Circular Buffers</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Using_Circular_Buffers">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Using_Circular_Buffers"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Using Circular Buffers</h1>
- 
-  
-  <div>
-	 <p>Circular buffers can sometimes be used to minimize the overhead of
-		allocating and freeing the items passed between pipeline filters. If the first
-		filter to create an item and last filter to consume an item are both 
-		<samp class="codeph">serial_in_order</samp>, the items can be allocated and freed
-		via a circular buffer of size at least 
-		<samp class="codeph">ntoken</samp>, where 
-		<samp class="codeph">ntoken</samp> is the first parameter to 
-		<samp class="codeph">parallel_pipeline</samp>. Under these conditions, no checking
-		of whether an item is still in use is necessary. 
-	 </p>
-
-	 <p>The reason this works is that at most 
-		<samp class="codeph">ntoken</samp> items can be in flight, and items will be freed
-		in the order that they were allocated. Hence by the time the circular buffer
-		wraps around to reallocate an item, the item must have been freed from its
-		previous use in the pipeline. If the first and last filter are 
-		<em>not</em> 
-		<samp class="codeph">serial_in_order</samp>, then you have to keep track of which
-		buffers are currently in use, because buffers might not be retired in the same
-		order they were allocated.
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm">Working on the Assembly Line: pipeline</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/When_Not_to_Use_Queues.htm b/doc/help/tbb_userguide/When_Not_to_Use_Queues.htm
deleted file mode 100755
index 620226a..0000000
--- a/doc/help/tbb_userguide/When_Not_to_Use_Queues.htm
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="When Not to Use Queues">
-<meta name="DC.subject" content="When Not to Use Queues">
-<meta name="keywords" content="When Not to Use Queues">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Concurrent_Queue_Classes.htm">
-<meta name="DC.Relation" scheme="URI" content="Cook_Until_Done_parallel_do.htm#tutorial_Cook_Until_Done_parallel_do">
-<meta name="DC.Relation" scheme="URI" content="Working_on_the_Assembly_Line_pipeline.htm#tutorial_Working_on_the_Assembly_Line_pipeline">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_When_Not_to_Use_Queues">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>When Not to Use Queues</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_When_Not_to_Use_Queues">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_When_Not_to_Use_Queues"><!-- --></a>
-
- 
-  <h1 class="topictitle1">When Not to Use Queues</h1>
- 
-   
-  <div> 
-	 <p>Queues are widely used in parallel programs to buffer consumers from
-		producers. Before using an explicit queue, however, consider using 
-		<samp class="codeph">parallel_do</samp> or 
-		<samp class="codeph">pipeline</samp> instead. These options are often more efficient
-		than queues for the following reasons: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>A queue is inherently a bottle neck, because it must maintain
-			 first-in first-out order. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>A thread that is popping a value may have to wait idly until the
-			 value is pushed. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>A queue is a passive data structure. If a thread pushes a value, it
-			 could take time until it pops the value, and in the meantime the value (and
-			 whatever it references) becomes "cold" in cache. Or worse yet, another thread
-			 pops the value, and the value (and whatever it references) must be moved to the
-			 other processor. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>In contrast, 
-		<samp class="codeph">parallel_do</samp> and 
-		<samp class="codeph">pipeline</samp> avoid these bottlenecks. Because their
-		threading is implicit, they optimize use of worker threads so that they do
-		other work until a value shows up. They also try to keep items hot in cache.
-		For example, when another work item is added to a 
-		<samp class="codeph">parallel_do</samp>, it is kept local to the thread that added
-		it unless another idle thread can steal it before the "hot" thread processes
-		it. This way, items are more often processed by the hot thread. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Concurrent_Queue_Classes.htm">Concurrent Queue Classes</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Cook_Until_Done_parallel_do.htm#tutorial_Cook_Until_Done_parallel_do">Cook Until Done: parallel_do 
-		  </a></div>
-<div><a href="Working_on_the_Assembly_Line_pipeline.htm#tutorial_Working_on_the_Assembly_Line_pipeline">Working on the Assembly Line: pipeline 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm b/doc/help/tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm
deleted file mode 100755
index 257702e..0000000
--- a/doc/help/tbb_userguide/When_Task-Based_Programming_Is_Inappropriate.htm
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="When Task-Based Programming Is Inappropriate">
-<meta name="DC.subject" content="When Task-Based Programming Is Inappropriate">
-<meta name="keywords" content="When Task-Based Programming Is Inappropriate">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_When_Task-Based_Programming_Is_Inappropriate">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>When Task-Based Programming Is Inappropriate</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_When_Task-Based_Programming_Is_Inappropriate">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_When_Task-Based_Programming_Is_Inappropriate"><!-- --></a>
-
-
-<h1 class="topictitle1">When Task-Based Programming Is Inappropriate</h1>
-
-<div><p>Using the task scheduler is usually the best approach to threading for performance, however there are cases when the task scheduler is not appropriate. The task scheduler is intended for high-performance algorithms composed from non-blocking tasks. It still works if the tasks rarely block. However, if threads block frequently, there is a performance loss when using the task scheduler because while the thread is blocked, it is not working on any tasks. Blocking typically occurs wh [...]
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Which_Dynamic_Libraries_to_Use.htm b/doc/help/tbb_userguide/Which_Dynamic_Libraries_to_Use.htm
deleted file mode 100755
index 031ed45..0000000
--- a/doc/help/tbb_userguide/Which_Dynamic_Libraries_to_Use.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Which Dynamic Libraries to Use">
-<meta name="DC.subject" content="Which Dynamic Libraries to Use">
-<meta name="keywords" content="Which Dynamic Libraries to Use">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Memory_Allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="Scalable_Memory_Allocator.htm#tutorial_Scalable_Memory_Allocator">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Which_Dynamic_Libraries_to_Use">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Which Dynamic Libraries to Use</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Which_Dynamic_Libraries_to_Use">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Which_Dynamic_Libraries_to_Use"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Which Dynamic Libraries to Use</h1>
- 
-   
-  <div> 
-	 <p>The template 
-		<samp class="codeph">scalable_allocator<T></samp> requires the Intel® Threading Building Blocks (Intel® TBB)
-		scalable memory allocator library as described in 
-		<strong>Scalable Memory Allocator</strong>. It does not require the Intel® TBB
-		general library, and can be used independently of the rest of Intel® TBB. 
-	 </p>
- 
-	 <p>The templates 
-		<samp class="codeph">tbb_allocator<T></samp> and 
-		<samp class="codeph">cache_aligned_allocator<T></samp> use the scalable
-		allocator library if it is present otherwise it reverts to using 
-		<samp class="codeph">malloc</samp> and 
-		<samp class="codeph">free</samp>. Thus, you can use these templates even in
-		applications that choose to omit the scalable memory allocator library. 
-	 </p>
- 
-	 <p>The rest of Intel® Threading Building Blocks can be used with or without
-		the Intel® TBB scalable memory allocator library. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl15"><!-- --></a><table cellpadding="4" summary="" id="tbl15" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Templates and Libraries</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="37.77777777777778%" id="d151616e64"> 
-			 <p>Template 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="36.11111111111111%" id="d151616e70"> 
-			 <p>Requirements 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="26.111111111111114%" id="d151616e76"> 
-			 <p>Notes 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="37.77777777777778%" headers="d151616e64 "> 
-			 <p><samp class="codeph">scalable_allocator<T></samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="36.11111111111111%" headers="d151616e70 "> 
-			 <p>Intel® Threading Building Blocks scalable memory allocator
-				library. See 
-				<strong>Scalable Memory Allocator</strong>.
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="26.111111111111114%" headers="d151616e76 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="37.77777777777778%" headers="d151616e64 "> 
-			 <p><samp class="codeph">tbb_allocator<T></samp> 
-			 </p>
- 
-			 <p><samp class="codeph">cache_aligned_allocator<T></samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="36.11111111111111%" headers="d151616e70 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="26.111111111111114%" headers="d151616e76 "> 
-			 <p>Uses the scalable allocator library if it is present, otherwise it
-				reverts to using 
-				<samp class="codeph">malloc</samp> and 
-				<samp class="codeph">free</samp>. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Memory_Allocation.htm">Memory Allocation</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Scalable_Memory_Allocator.htm#tutorial_Scalable_Memory_Allocator">Scalable Memory Allocator
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Why_atomic_T_Has_No_Constructors.htm b/doc/help/tbb_userguide/Why_atomic_T_Has_No_Constructors.htm
deleted file mode 100755
index dc95d95..0000000
--- a/doc/help/tbb_userguide/Why_atomic_T_Has_No_Constructors.htm
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Why atomic<T> Has No Constructors in C++03 mode">
-<meta name="DC.subject" content="atomic<T> constructors, constructors, atomic<T>">
-<meta name="keywords" content="atomic<T> constructors, constructors, atomic<T>">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Atomic_Operations.htm">
-<meta name="DC.Relation" scheme="URI" content="Atomic_Operations.htm#tutorial_Atomic_Operations">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Why_atomic_T_Has_No_Constructors">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Why atomic<T> Has No Constructors in C++03 mode</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Why_atomic_T_Has_No_Constructors">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Why_atomic_T_Has_No_Constructors"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Why atomic<T> Has No Constructors in C++03 mode</h1>
- 
-   
-  <div> 
-	 <p>In C++03 mode template class 
-		<samp class="codeph">atomic<<var>T</var>></samp> deliberately has no
-		declared constructors, because examples like 
-		<samp class="codeph">GetUniqueInteger</samp>, shown in the Atomic Operations
-		section, are commonly required to work correctly even before all file-scope
-		constructors have been called. If 
-		<samp class="codeph">atomic<<var>T</var>></samp> declared a
-		constructor, a file-scope instance might be initialized after it had been
-		referenced. 
-	 </p>
- 
-	 <p>As for any C++ class with no declared constructors, an object 
-		<var>X</var> of type 
-		<samp class="codeph">atomic<<var>T</var>></samp> is automatically
-		initialized to zero in the following contexts: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><var>X</var> is declared as a file-scope variable or as a
-			 static data member of a class. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><span class="keyword">x</span> is a member of a class and explicitly listed in
-			 the constructor's initializer list. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The code below illustrates these points. 
-	 </p>
- 
-	 <pre>atomic<int> x;  // zero-initialized because it is at file scope
- 
-class Foo {
-    atomic<int> y;
-    atomic<int> notzeroed;
-    static atomic<int> z;
-public:
-    Foo() :
-        y()     // zero-initializes y.
-    {
-        // notzeroed has unspecified value here.
-    }
-};
- 
-atomic<int> Foo::z; // zero-initialized because it is a static member</pre> 
-	 <p>In C++11 mode, template class 
-		<samp class="codeph">atomic<<var>T</var>></samp> has two constructors
-		: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><samp class="codeph">atomic() = default;</samp> default constructor generated
-			 by compiler. This constructor behaves same as if there were no user defined
-			 constrcutors declared at all. This constructor keeps backward compatibilty with
-			 C++03 mode, e.g. allow zero-initilization of global objects. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><samp class="codeph">constexpr atomic(<var>T</var> arg);</samp> this
-			 constructor allows initialization of atomic variable during translation time,
-			 only if the argument is itself a translation time constant, otherwise
-			 initialization is performed at run time. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Atomic_Operations.htm">Atomic Operations</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Atomic_Operations.htm#tutorial_Atomic_Operations">Atomic Operations
-		  </a></div></div>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm b/doc/help/tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm
deleted file mode 100755
index 834aa9f..0000000
--- a/doc/help/tbb_userguide/Windows_C_Dynamic_Memory_Interface_Replacement.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Windows* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="DC.subject" content="Windows* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="keywords" content="Windows* OS C/C++ Dynamic Memory Interface Replacement">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Automically_Replacing_malloc.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Windows_C_Dynamic_Memory_Interface_Replacement">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Windows* OS C/C++ Dynamic Memory Interface Replacement</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Windows_C_Dynamic_Memory_Interface_Replacement">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Windows_C_Dynamic_Memory_Interface_Replacement"><!-- --></a>
-
-
-<h1 class="topictitle1">Windows* OS C/C++ Dynamic Memory Interface Replacement</h1>
-
-<div><p>Replacements are provided by a proxy library (release version <samp class="codeph">tbbmalloc_proxy.dll</samp>, debug version <samp class="codeph">tbbmalloc_debug_proxy.dll</samp>). Replacement can be done in one of two ways:</p>
-
-<ul type="disc"><li><p>Add the following header to a source code of any binary which is loaded during application startup.</p>
-<pre>#include "tbb/tbbmalloc_proxy.h"</pre></li>
-<li><p>Alternatively, add the following parameters to the linker options for the .exe or .dll file that is loaded during application startup. </p>
-<p>For 32-bit code (note the triple underscore):</p>
-<pre>tbbmalloc_proxy.lib /INCLUDE:"___TBB_malloc_proxy"</pre><p>For 64-bit code (note the double underscore):</p>
-<pre>tbbmalloc_proxy.lib /INCLUDE:"__TBB_malloc_proxy"</pre></li>
-</ul>
-<p>The proxy library implements the following dynamic memory functions:</p>
-
-<ul type="disc"><li><p>Standard C run-time dynamic memory functions: <samp class="codeph">malloc</samp>, <samp class="codeph">calloc</samp>, <samp class="codeph">realloc</samp>, <samp class="codeph">free</samp></p>
-</li>
-<li><p>Global C++ operators <samp class="codeph">new</samp> and <samp class="codeph">delete</samp>. </p>
-</li>
-<li><p>Microsoft* C run-time library function <samp class="codeph">_msize</samp></p>
-</li>
-		</ul>
-<p>A directory with the proxy library and the appropriate scalable memory allocator library must be available for loading. For example, include the directory in <samp class="codeph">%PATH%</samp>.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Automically_Replacing_malloc.htm">Automatically Replacing malloc and Other C/C++ Functions for Dynamic Memory Allocation</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Windows_OS.htm b/doc/help/tbb_userguide/Windows_OS.htm
deleted file mode 100755
index ed4e096..0000000
--- a/doc/help/tbb_userguide/Windows_OS.htm
+++ /dev/null
@@ -1,638 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Windows* OS">
-<meta name="DC.subject" content="Windows* OS">
-<meta name="keywords" content="Windows* OS">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Windows_OS">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Windows* OS</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Windows_OS">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Windows_OS"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Windows* OS</h1>
- 
-   
-  <div> 
-	 <p>This section uses <<em>install_dir</em>> to indicate the
-		top-level installation directory. The following table describes the
-		subdirectory structure for Windows* OS, relative to <<em>install_dir</em>>. 
-	 </p>
- 
-	 
-<div class="tablenoborder"><a name="tbl3"><!-- --></a><table cellpadding="4" summary="" id="tbl3" width="100%" frame="border" border="1" cellspacing="0" rules="all"><caption><span class="tablecap">Intel® Threading Building Blocks Subdirectories 
-	 Windows* OS</span></caption> 
-	 <thead align="left"> 
-		<tr> 
-		  <th class="cellrowborder" valign="top" width="19.433962264150946%" id="d152427e46"> 
-			 <p>Item 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="63.0188679245283%" id="d152427e52"> 
-			 <p>Location 
-			 </p>
- 
-		  </th>
- 
-		  <th class="cellrowborder" valign="top" width="17.547169811320753%" id="d152427e58"> 
-			 <p>Environment Variable 
-			 </p>
- 
-		  </th>
- 
-		</tr>
-</thead>
- 
-	 <tbody> 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p><span class="keyword">Include</span> files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p><samp class="codeph">include</samp><samp class="codeph">\tbb\*.h</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.547169811320753%" headers="d152427e58 "> 
-			 <p><samp class="codeph">INCLUDE</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p><span class="keyword">.lib</span> files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p><samp class="codeph">lib\<<var>arch</var> >\vc
-				  <<var>vcversion</var> >\<<var>lib</var>
-				  ><<var>variant</var> >.lib</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.547169811320753%" headers="d152427e58 "> 
-			 <p><samp class="codeph">LIB</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p><span class="keyword">.dll 
-				</span>files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p><samp class="codeph">..\redist\ <<var>arch</var>>\tbb\vc
-				  <<var>vcversion</var>> \<<var>lib</var>
-				  ><<var>variant</var> >.dll</samp> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="31.06796116504854%" id="d152427e173"> 
-						  <p><<var>arch</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="68.93203883495146%" id="d152427e182"> 
-						  <p>Processor 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.06796116504854%" headers="d152427e173 "> 
-						  <p>ia32 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.93203883495146%" headers="d152427e182 "> 
-						  <p>Intel® IA-32 processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.06796116504854%" headers="d152427e173 "> 
-						  <p>intel64 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.93203883495146%" headers="d152427e182 "> 
-						  <p>Intel® 64 architecture processors 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="31.715210355987054%" id="d152427e237"> 
-						  <p><<var>vcversion</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="68.28478964401295%" id="d152427e246"> 
-						  <p>Environment 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>9 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Microsoft Visual Studio* 2008 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>10
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Microsoft Visual Studio* 2010 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>11 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Microsoft Visual Studio* 2012 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>11_ui 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Microsoft Windows Store* applications 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>12 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Microsoft Visual Studio* 2013 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="31.715210355987054%" headers="d152427e237 "> 
-						  <p>_mt 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="68.28478964401295%" headers="d152427e246 "> 
-						  <p>Independent of Microsoft Visual Studio* version. 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="41.10032362459547%" id="d152427e362"> 
-						  <p><<var>lib</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="58.89967637540453%" id="d152427e371"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d152427e362 "> 
-						  <p><samp class="codeph">tbb</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d152427e371 "> 
-						  <p>General library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d152427e362 "> 
-						  <p><samp class="codeph">tbbmalloc</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d152427e371 "> 
-						  <p>Memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d152427e362 "> 
-						  <p><samp class="codeph">tbbmalloc_proxy</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d152427e371 "> 
-						  <p>Substitution for default memory allocator 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="41.10032362459547%" headers="d152427e362 "> 
-						  <p><samp class="codeph">tbb_preview</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="58.89967637540453%" headers="d152427e371 "> 
-						  <p>Community preview features library 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-			 <p> 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="34.95145631067961%" id="d152427e464"> 
-						  <p><<var>variant</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="65.0485436893204%" id="d152427e473"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="34.95145631067961%" headers="d152427e464 "> 
-						  <p>(none) 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="65.0485436893204%" headers="d152427e473 "> 
-						  <p>Release version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="34.95145631067961%" headers="d152427e464 "> 
-						  <p><samp class="codeph">_debug</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="65.0485436893204%" headers="d152427e473 "> 
-						  <p>Debug version 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.547169811320753%" headers="d152427e58 "> 
-			 <p><samp class="codeph">PATH</samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p><span class="keyword">.pdb</span> files 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p>Same as corresponding 
-				<samp class="codeph">.dll</samp> file. 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p>Examples 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p><samp class="codeph">examples\<var><class></var>\*\.</samp> 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.547169811320753%" headers="d152427e58 "> 
-			 <p>  
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-		<tr> 
-		  <td class="cellrowborder" valign="top" width="19.433962264150946%" headers="d152427e46 "> 
-			 <p>Microsoft Visual Studio Solution File for Example 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="63.0188679245283%" headers="d152427e52 "> 
-			 <p><samp class="codeph">examples\<var><class></var>\*\msvs\*<<var>compiler</var>>.sln</samp>
-				
-			 </p>
- 
-			 <p>where: 
-			 </p>
- 
-			 <p><var>class</var> describes the class being demonstrated. 
-			 
-<div class="tablenoborder"><table cellpadding="4" summary="" width="100%" frame="border" border="1" cellspacing="0" rules="all"> 
-				  <thead align="left"> 
-					 <tr> 
-						<th class="cellrowborder" valign="top" width="25.062656641604008%" id="d152427e613"> 
-						  <p><<var>compiler</var>> 
-						  </p>
- 
-						</th>
- 
-						<th class="cellrowborder" valign="top" width="74.93734335839599%" id="d152427e622"> 
-						  <p>Version 
-						  </p>
- 
-						</th>
- 
-					 </tr>
-</thead>
- 
-				  <tbody> 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="25.062656641604008%" headers="d152427e613 "> 
-						  <p><samp class="codeph">cl 
-							 </samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="74.93734335839599%" headers="d152427e622 "> 
-						  <p>Microsoft* Visual C++* 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-					 <tr> 
-						<td class="cellrowborder" valign="top" width="25.062656641604008%" headers="d152427e613 "> 
-						  <p><samp class="codeph">icl</samp> 
-						  </p>
- 
-						</td>
- 
-						<td class="cellrowborder" valign="top" width="74.93734335839599%" headers="d152427e622 "> 
-						  <p>Intel® C++ Compiler 
-						  </p>
- 
-						</td>
- 
-					 </tr>
- 
-				  </tbody>
- 
-				</table>
-</div>
- 
-			 </p>
- 
-		  </td>
- 
-		  <td class="cellrowborder" valign="top" width="17.547169811320753%" headers="d152427e58 "> 
-			 <p><samp class="codeph"> </samp> 
-			 </p>
- 
-		  </td>
- 
-		</tr>
- 
-	 </tbody>
- 
-  </table>
-</div>
- 
-  <p>The last column shows which environment variables are used by the
-	 Microsoft or Intel compilers to find these subdirectories. 
-  </p>
- 
-  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-	 <p>Ensure that the relevant product directories are mentioned by the
-		environment variables; otherwise the compiler might not find the required
-		files. 
-	 </p>
- 
-  </div> 
-  <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-	 <p>Windows* OS run-time libraries come in thread-safe and thread-unsafe
-		forms. Using non-thread-safe versions with Intel® TBB may cause undefined
-		results. When using Intel® TBB, be sure to link with the thread-safe versions.
-		The following shows the compiler options for linking with thread-safe versions
-		of C/C++ run-time for 
-		<samp class="codeph">cl</samp> or 
-		<samp class="codeph">icl</samp>: 
-	 <ul type="disc"> 
-		<li>Options for dynamic linking: 
-	 <span class="option">/MDd</span> (debug); 
-	 <span class="option">/MD</span> (release) 
-	 </li>
- 
-	 <li>Options for static linking: 
-	 <span class="option">/MTd</span> (debug); 
-	 <span class="option">/MT</span> (release) 
-	 </li>
- 
-	 </ul>
- 
-	 </p>
- 
-	 <p>Not using one of these options causes Intel® TBB to report an error
-		during compilation. In all cases, linking to the Intel® TBB library is dynamic.
-		
-	 </p>
- 
-  </div> 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Package_Contents.htm">Package Contents</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Microsoft_Visual_Studio_Code_Examples.htm">Microsoft Visual Studio* Code Examples</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Integration_Plug-In_for_Microsoft_Visual_Studio_Projects.htm">Integration Plug-In for Microsoft Visual Studio* Projects</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm b/doc/help/tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm
deleted file mode 100755
index c9c113e..0000000
--- a/doc/help/tbb_userguide/Working_on_the_Assembly_Line_pipeline.htm
+++ /dev/null
@@ -1,432 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Working on the Assembly Line: pipeline">
-<meta name="DC.subject" content="Working on the Assembly Line: pipeline">
-<meta name="keywords" content="Working on the Assembly Line: pipeline">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Complex_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Using_Circular_Buffers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Throughput_of_pipeline.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Non-Linear_Pipelines.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Summary_of_Loops_and_Pipelines.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_Working_on_the_Assembly_Line_pipeline">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Working on the Assembly Line: pipeline</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_Working_on_the_Assembly_Line_pipeline">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_Working_on_the_Assembly_Line_pipeline"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Working on the Assembly Line: pipeline</h1>
- 
-   
-  <div> 
-	 <p><em>Pipelining</em> is a common parallel pattern that mimics a traditional
-		manufacturing assembly line. Data flows through a series of pipeline filters
-		and each filter processes the data in some way. Given an incoming stream of
-		data, some of these filters can operate in parallel, and others cannot. For
-		example, in video processing, some operations on frames do not depend on other
-		frames, and so can be done on multiple frames at the same time. On the other
-		hand, some operations on frames require processing prior frames first. 
-	 </p>
- 
-	 <p>The Intel® Threading Building Blocks (Intel® TBB) classes 
-		<samp class="codeph">pipeline</samp> and 
-		<samp class="codeph">filter</samp> implement the pipeline pattern. A simple text
-		processing example will be used to demonstrate the usage of 
-		<samp class="codeph">pipeline</samp> and 
-		<samp class="codeph">filter</samp> to perform parallel formatting. The example reads
-		a text file, squares each decimal numeral in the text, and writes the modified
-		text to a new file. Below is a picture of the pipeline. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> Because the body object provided to the filters of
-		the 
-		<samp class="codeph">parallel_pipline</samp> might be copied, its 
-		<samp class="codeph">operator()</samp> should not modify the body. Otherwise the
-		modification might or might not become visible to the thread that invoked 
-		<samp class="codeph">parallel_pipeline</samp>, depending upon whether 
-		<samp class="codeph">operator()</samp> is acting on the original or a copy. As a
-		reminder of this nuance, 
-		<samp class="codeph">parallel_pipeline</samp> requires that the body object's 
-		<samp class="codeph">operator()</samp> be declared 
-		<samp class="codeph">const</samp>. 
-	 </div> 
-	 
-<div class="tablenoborder"><table cellpadding="4" summary="" frame="void" border="1" rules="none" cellspacing="2"> 
-		  <tbody> 
-			 <tr> 
-				<td class="noborder" valign="top" width="NaN%"> 
-				  <p>Read chunk<br> from input file 
-				  </p>
- 
-				</td>
- 
-				<td class="noborder" valign="top" width="NaN%"><br><img src="Images/image010.jpg" width="31" height="26"><br> 
-				</td>
- 
-				<td class="noborder" valign="top" width="NaN%"> 
-				  <p>Square numerals 
-					 <br> in chunk 
-				  </p>
- 
-				</td>
- 
-				<td class="noborder" valign="top" width="NaN%"><br><img src="Images/image010.jpg" width="31" height="26"><br> 
-				</td>
- 
-				<td class="noborder" valign="top" width="NaN%"> 
-				  <p>Write chunk 
-					 <br> to output file 
-				  </p>
- 
-				</td>
- 
-			 </tr>
- 
-		  </tbody>
- 
-		</table>
-</div>
- 
-	 <p>Assume that the raw file I/O is sequential. The squaring filter can be
-		done in parallel. That is, if you can serially read 
-		<var>n</var> chunks very quickly, you can transform each of the 
-		<var>n</var> chunks in parallel, as long as they are written in
-		the proper order to the output file. Though the raw I/O is sequential, the
-		formatting of input and output can be moved to the middle filter, and thus be
-		parallel. 
-	 </p>
- 
-	 <p>To amortize parallel scheduling overheads, the filters operate on chunks
-		of text. Each input chunk is approximately 4000 characters. Each chunk is
-		represented by an instance of class 
-		<samp class="codeph">TextSlice</samp>: 
-	 </p>
- 
-	 <pre>// Holds a slice of text.
-/** Instances *must* be allocated/freed using methods herein, because the C++ declaration
-   represents only the header of a much larger object in memory. */
-class TextSlice {
-    // Pointer to one past last character in sequence
-    char* logical_end;
-    // Pointer to one past last available byte in sequence.
-    char* physical_end;
-public:
-    // Allocate a TextSlice object that can hold up to max_size characters.
-    static TextSlice* allocate( size_t max_size ) {
-        // +1 leaves room for a terminating null character.
-        TextSlice* t = (TextSlice*)tbb::tbb_allocator<char>().allocate( sizeof(TextSlice)+max_size+1 );
-        t->logical_end = t->begin();
-        t->physical_end = t->begin()+max_size;
-        return t;
-    }
-    // Free this TextSlice object
-    void free() {
-        tbb::tbb_allocator<char>().deallocate((char*)this, sizeof(TextSlice)+(physical_end-begin())+1);
-    }
-    // Pointer to beginning of sequence
-    char* begin() {return (char*)(this+1);}
-    // Pointer to one past last character in sequence
-    char* end() {return logical_end;}
-    // Length of sequence
-    size_t size() const {return logical_end-(char*)(this+1);}
-    // Maximum number of characters that can be appended to sequence
-    size_t avail() const {return physical_end-logical_end;}
-    // Append sequence [first,last) to this sequence.
-    void append( char* first, char* last ) {
-        memcpy( logical_end, first, last-first );
-        logical_end += last-first;
-    }
-    // Set end() to given value.
-    void set_end( char* p ) {logical_end=p;}
-};</pre> 
-	 <p>Below is the top-level code for building and running the pipeline. 
-		<samp class="codeph">TextSlice</samp> objects are passed between filters using
-		pointers to avoid the overhead of copying a 
-		<samp class="codeph">TextSlice</samp>. 
-	 </p>
- 
-	 <pre>void RunPipeline( int ntoken, FILE* input_file, FILE* output_file ) {
-    tbb::parallel_pipeline(
-        ntoken,
-        tbb::make_filter<void,TextSlice*>(
-            tbb::filter::serial_in_order, MyInputFunc(input_file) )
-    &
-        tbb::make_filter<TextSlice*,TextSlice*>(
-            tbb::filter::parallel, MyTransformFunc() )
-    &
-        tbb::make_filter<TextSlice*,void>(
-            tbb::filter::serial_in_order, MyOutputFunc(output_file) ) );
-} </pre> 
-	 <p>The parameter 
-		<samp class="codeph"><em>ntoken</em></samp> to method 
-		<samp class="codeph">parallel_pipeline</samp> controls the level of parallelism.
-		Conceptually, tokens flow through the pipeline. In a serial in-order filter,
-		each token must be processed serially in order. In a parallel filter, multiple
-		tokens can by processed in parallel by the filter. If the number of tokens were
-		unlimited, there might be a problem where the unordered filter in the middle
-		keeps gaining tokens because the output filter cannot keep up. This situation
-		typically leads to undesirable resource consumption by the middle filter. The
-		parameter to method 
-		<samp class="codeph">parallel_pipeline</samp> specifies the maximum number of tokens
-		that can be in flight. Once this limit is reached, the pipeline never creates a
-		new token at the input filter until another token is destroyed at the output
-		filter. 
-	 </p>
- 
-	 <p>The second parameter specifies the sequence of filters. Each filter is
-		constructed by function 
-		<samp class="codeph">make_filter<</samp><em>inputType</em><samp class="codeph"><em>,</em></samp><em>outputType</em><samp class="codeph">>(</samp><em>mode</em><samp class="codeph">,</samp><em>functor</em>).
-		
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>The 
-			 <em>inputType</em> specifies the type of values input by a filter. For
-			 the input filter, the type is 
-			 <samp class="codeph">void</samp>. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The 
-			 <em>outputType</em> specifies the type of values output by a filter.
-			 For the output filter, the type is 
-			 <samp class="codeph">void</samp>. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The 
-			 <em>mode</em> specifies whether the filter processes items in parallel,
-			 serial in-order, or serial out-of-order. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>The 
-			 <em>functor</em> specifies how to produce an output value from an input
-			 value. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The filters are concatenated with 
-		<samp class="codeph">operator&</samp>. When concatenating two filters, the 
-		<em>outputType</em> of the first filter must match the 
-		<em>inputType</em> of the second filter. 
-	 </p>
- 
-	 <p>The filters can be constructed and concatenated ahead of time. An
-		equivalent version of the previous example that does this follows: 
-	 </p>
- 
-	 <pre>void RunPipeline( int ntoken, FILE* input_file, FILE* output_file ) {
-    tbb::filter_t<void,TextSlice*> f1( tbb::filter::serial_in_order, 
-                                       MyInputFunc(input_file) );
-    tbb::filter_t<TextSlice*,TextSlice*> f2(tbb::filter::parallel, 
-                                            MyTransformFunc() );
-    tbb::filter_t<TextSlice*,void> f3(tbb::filter::serial_in_order, 
-                                      MyOutputFunc(output_file) );
-    tbb::filter_t<void,void> f = f1 & f2 & f3;
-    tbb::parallel_pipeline(ntoken,f);
-}</pre> 
-	 <p>The input filter must be 
-		<samp class="codeph">serial_in_order</samp> in this example because the filter reads
-		chunks from a sequential file and the output filter must write the chunks in
-		the same order. All 
-		<samp class="codeph">serial_in_order</samp> filters process items in the same order.
-		Thus if an item arrives at 
-		<samp class="codeph">MyOutputFunc</samp> out of the order established by 
-		<samp class="codeph">MyInputFunc</samp>, the pipeline automatically delays invoking 
-		<samp class="codeph">MyOutputFunc::operator()</samp> on the item until its
-		predecessors are processed. There is another kind of serial filter, 
-		<samp class="codeph">serial_out_of_order</samp>, that does not preserve order. 
-	 </p>
- 
-	 <p>The middle filter operates on purely local data. Thus any number of
-		invocations of its functor can run concurrently. Hence it is specified as a
-		parallel filter. 
-	 </p>
- 
-	 <p>The functors for each filter are explained in detail now. The output
-		functor is the simplest. All it has to do is write a 
-		<samp class="codeph">TextSlice</samp> to a file and free the 
-		<samp class="codeph">TextSlice</samp>. 
-	 </p>
- 
-	 <pre>// Functor that writes a TextSlice to a file.
-class MyOutputFunc {
-    FILE* my_output_file;
-public:
-    MyOutputFunc( FILE* output_file );
-    void operator()( TextSlice* item ) const;
-};
- 
-MyOutputFunc::MyOutputFunc( FILE* output_file ) :
-    my_output_file(output_file)
-{
-}
- 
-void MyOutputFunc::operator()( TextSlice* out ) const {
-    size_t n = fwrite( out->begin(), 1, out->size(), my_output_file );
-    if( n!=out->size() ) {
-        fprintf(stderr,"Can't write into file '%s'\n", OutputFileName);
-        exit(1);
-    }
-    out->free();
-} </pre> 
-	 <p>Method 
-		<samp class="codeph">operator()</samp> processes a 
-		<samp class="codeph">TextSlice</samp>. The parameter 
-		<samp class="codeph">out</samp> points to the 
-		<samp class="codeph">TextSlice</samp> to be processed. Since it is used for the last
-		filter of the pipeline, it returns 
-		<samp class="codeph">void</samp>. 
-	 </p>
- 
-	 <p>The functor for the middle filter is similar, but a bit more complex. It
-		returns a pointer to the 
-		<samp class="codeph">TextSlice</samp> that it produces. 
-	 </p>
- 
-	 <pre>// Functor that changes each decimal number to its square.
-class MyTransformFunc {
-public:
-    TextSlice* operator()( TextSlice* input ) const;
-};
-
-TextSlice* MyTransformFunc::operator()( TextSlice* input ) const {
-    // Add terminating null so that strtol works right even if number is at end of the input.
-    *input->end() = '\0';
-    char* p = input->begin();
-    TextSlice* out = TextSlice::allocate( 2*MAX_CHAR_PER_INPUT_SLICE );
-    char* q = out->begin();
-    for(;;) {
-        while( p<input->end() && !isdigit(*p) )
-            *q++ = *p++;
-        if( p==input->end() )
-            break;
-        long x = strtol( p, &p, 10 );
-        // Note: no overflow checking is needed here, as we have twice the
-        // input string length, but the square of a non-negative integer n
-        // cannot have more than twice as many digits as n.
-        long y = x*x;
-        sprintf(q,"%ld",y);
-        q = strchr(q,0);
-    }
-    out->set_end(q);
-    input->free();
-    return out;
-} </pre> 
-	 <p>The input functor is the most complicated, because it has to ensure that
-		no numeral crosses a boundary. When it finds what could be a numeral crossing
-		into the next slice, it copies the partial numeral to the next slice.
-		Furthermore, it has to indicate when the end of input is reached. It does this
-		by invoking method 
-		<samp class="codeph">stop()</samp> on a special argument of type 
-		<samp class="codeph">flow_control</samp>. This idiom is required for any functor
-		used for the first filter of a pipline. It is shown in 
-		<samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp> in
-		the following code for the functor: 
-	 </p>
- 
-	 <pre>TextSlice* next_slice = NULL;
-
-class MyInputFunc {
-public:
-    MyInputFunc( FILE* input_file_ );
-    MyInputFunc( const MyInputFunc& f ) : input_file(f.input_file) { }
-    ~MyInputFunc();
-    TextSlice* operator()( tbb::flow_control& fc ) const;
-private:
-    FILE* input_file;
-};
- 
-MyInputFunc::MyInputFunc( FILE* input_file_ ) :
-    input_file(input_file_) { }
- 
-MyInputFunc::~MyInputFunc() {
-}
- 
-TextSlice* MyInputFunc::operator()( <span style="color:blue"><strong>tbb::flow_control& fc</strong></span> ) const {
-    // Read characters into space that is available in the next slice.
-    if( !next_slice )
-        next_slice = TextSlice::allocate( MAX_CHAR_PER_INPUT_SLICE );
-    size_t m = next_slice->avail();
-    size_t n = fread( next_slice->end(), 1, m, input_file );
-    if( !n && next_slice->size()==0 ) {
-        // No more characters to process
-        <span style="color:blue"><strong>fc.stop()</strong></span>;
-        return NULL;
-    } else {
-        // Have more characters to process.
-        TextSlice* t = next_slice;
-        next_slice = TextSlice::allocate( MAX_CHAR_PER_INPUT_SLICE );
-        char* p = t->end()+n;
-        if( n==m ) {
-            // Might have read partial number.  
-            // If so, transfer characters of partial number to next slice.
-            while( p>t->begin() && isdigit(p[-1]) )
-                --p;
-            assert(p>t->begin(),"Number too large to fit in buffer.\n");
-            next_slice->append( p, t->end()+n );
-        }
-        t->set_end(p);
-        return t;
-    }
-}</pre> 
-	 <p>The copy constructor must be defined because the functor is copied when
-		the filter_t is built from the functor, and again when the pipeline runs. 
-	 </p>
- 
-	 <p>The 
-		<samp class="codeph">parallel_pipeline</samp> syntax is new in Intel® TBB 3.0. The
-		directory 
-		<samp class="codeph">examples/pipeline/square</samp> contains the complete code for
-		the squaring example in an older lower-level syntax where the filters are
-		defined via inheritance. The Reference manual describes both syntaxes. 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Complex_Loops.htm">Parallelizing Complex Loops</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Using_Circular_Buffers.htm">Using Circular Buffers</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Throughput_of_pipeline.htm">Throughput of pipeline</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Non-Linear_Pipelines.htm">Non-Linear Pipelines</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Summary_of_Loops_and_Pipelines.htm">Summary of Loops and Pipelines</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/appendix_A.htm b/doc/help/tbb_userguide/appendix_A.htm
deleted file mode 100755
index b934864..0000000
--- a/doc/help/tbb_userguide/appendix_A.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Appendix A Costs of Time Slicing">
-<meta name="DC.subject" content="Appendix A Costs of Time Slicing">
-<meta name="keywords" content="Appendix A Costs of Time Slicing">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_appendix_A">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Appendix A Costs of Time Slicing</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_appendix_A">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_appendix_A"><!-- --></a>
-
- 
-  <h1 class="topictitle1">Appendix A Costs of Time Slicing</h1>
- 
-  
-  <div>
-	 <p>Time slicing enables there to be more logical threads than physical
-		threads. Each logical thread is serviced for a 
-		<em>time slice</em> by a physical thread. If a thread runs longer than a
-		time slice, as most do, it relinquishes the physical thread until it gets
-		another turn. This appendix details the costs incurred by time slicing.
-	 </p>
-
-	 <p>The most obvious is the time for 
-		<em>context switching</em> between logical threads. Each context switch
-		requires that the processor save all its registers for the previous logical
-		thread that it was executing, and load its registers for the next logical
-		thread that it runs. 
-	 </p>
-
-	 <p>A more subtle cost is 
-		<em>cache cooling</em>. Processors keep recently accessed data in cache
-		memory, which is very fast, but also relatively small compared to main memory.
-		When the processor runs out of cache memory, it has to evict items from cache
-		and put them back into main memory. Typically, it chooses the least recently
-		used items in the cache. (The reality of set-associative caches is a bit more
-		complicated, but this is not a cache primer.) When a logical thread gets its
-		time slice, as it references a piece of data for the first time, this data will
-		be pulled into cache, taking hundreds of cycles. If it is referenced frequently
-		enough to not be evicted, each subsequent reference will find it in cache, and
-		only take a few cycles. Such data is called "hot in cache". Time slicing undoes
-		this, because if a thread A finishes its time slice, and subsequently thread B
-		runs on the same physical thread, B will tend to evict data that was hot in
-		cache for A, unless both threads need the data. When thread A gets its next
-		time slice, it will need to reload evicted data, at the cost of hundreds of
-		cycles for each cache miss. Or worse yet, the next time slice for thread A may
-		be on a different physical thread that has a different cache altogether.
-	 </p>
-
-	 <p>Another cost is 
-		<em>lock preemption.</em> This happens if a thread acquires a lock on a
-		resource, and its time slice runs out before it releases the lock. No matter
-		how short a time the thread intended to hold the lock, it is now going to hold
-		it for at least as long as it takes for its next turn at a time slice to come
-		up. Any other threads waiting on the lock either pointlessly busy-wait, or lose
-		the rest of their time slice. The effect is called 
-		<em>convoying</em>, because the threads end up "bumper to bumper" waiting
-		for the preempted thread in front to resume driving. 
-	 </p>
-
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div></div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/appendix_B.htm b/doc/help/tbb_userguide/appendix_B.htm
deleted file mode 100755
index 89be74d..0000000
--- a/doc/help/tbb_userguide/appendix_B.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Appendix B Mixing With Other Threading Packages">
-<meta name="DC.subject" content="Appendix B Mixing With Other Threading Packages">
-<meta name="keywords" content="Appendix B Mixing With Other Threading Packages">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/title.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_appendix_B">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Appendix B Mixing With Other Threading Packages</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_appendix_B">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_appendix_B"><!-- --></a>
-
-
-<h1 class="topictitle1">Appendix B Mixing With Other Threading Packages</h1>
-
-<div><p>Intel® Threading Building Blocks (Intel® TBB) can be mixed with other threading packages. No special effort is required to use any part of Intel® TBB with other threading packages.<a href="#ftn9"><sup><sup>[9]</sup></sup></a></p>
-<p>Here is an example that parallelizes an outer loop with OpenMP and an inner loop with Intel® Threading Building Blocks. </p>
-
-<pre>int M, N;
- 
-struct InnerBody {
-    ...
-};
- 
-void TBB_NestedInOpenMP() {
-#pragma omp parallel
-    {
-#pragma omp for
-        for( int i=0; i<M; ++ ) {
-            parallel_for( blocked_range<int>(0,N,10), InnerBody(i) );
-        }
-    }
-}</pre>
-<p>The details of <samp class="codeph">InnerBody</samp> are omitted for brevity. The <samp class="codeph">#pragma omp parallel</samp> causes the OpenMP to create a team of threads, and each thread executes the block statement associated with the pragma. The <samp class="codeph">#pragma omp for</samp> indicates that the compiler should use the previously created thread team to execute the loop in parallel.</p>
-<p>Here is the same example written using POSIX* Threads.</p>
-
-<pre>int M, N;
- 
-struct InnerBody {
-    ...
-};
- 
-void* OuterLoopIteration( void* args ) {
-    int i = (int)args;
-    parallel_for( blocked_range<int>(0,N,10), InnerBody(i) );
-}
- 
-void TBB_NestedInPThreads() {
-    std::vector<pthread_t> id( M );
-    // Create thread for each outer loop iteration
-    for( int i=0; i<M; ++i )
-        pthread_create( &id[i], NULL, OuterLoopIteration, NULL );
-    // Wait for outer loop threads to finish
-    for( int i=0; i<M; ++i )
-        pthread_join( &id[i], NULL );
-} </pre>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/title.htm">Intel® Threading Building Blocks (Intel® TBB) User Guide</a></div>
-</div>
-<div></div>
-<p class="tfootnote"><a id="ftn9"><sup>[9]</sup></a>   Intel® TBB 2.1 required creating a <samp class="codeph">tbb::task_scheduler_init</samp> object in each thread that invokes the task scheduler or a parallel algorithm. Intel® TBB 2.2 and later versions automatically create the task scheduler.  </p>
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/concurrent_hash_map.htm b/doc/help/tbb_userguide/concurrent_hash_map.htm
deleted file mode 100755
index ea739d7..0000000
--- a/doc/help/tbb_userguide/concurrent_hash_map.htm
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="concurrent_hash_map">
-<meta name="DC.subject" content="concurrent_hash_map">
-<meta name="keywords" content="concurrent_hash_map">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Containers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/More_on_HashCompare.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_concurrent_hash_map">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>concurrent_hash_map</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_concurrent_hash_map">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_concurrent_hash_map"><!-- --></a>
-
-
-<h1 class="topictitle1">concurrent_hash_map</h1>
-
-<div><p>A <samp class="codeph">concurrent_hash_map<<var>Key</var>, <var>T</var>, <var>HashCompare</var> ></samp> is a hash table that permits concurrent accesses. The table is a map from a key to a type <var>T</var>. The traits type <span class="keyword">HashCompare</span> defines how to hash a key and how to compare two keys. </p>
-<p>The following example builds a <samp class="codeph">concurrent_hash_map</samp> where the keys are strings and the corresponding data is the number of times each string occurs in the array <samp class="codeph">Data</samp>. </p>
-
-<pre>#include "tbb/concurrent_hash_map.h"
-#include "tbb/blocked_range.h"
-#include "tbb/parallel_for.h"
-#include <string>
- 
-using namespace tbb;
-using namespace std;
- 
-// Structure that defines hashing and comparison operations for user's type.
-struct MyHashCompare {
-    static size_t hash( const string& x ) {
-        size_t h = 0;
-        for( const char* s = x.c_str(); *s; ++s )
-            h = (h*17)^*s;
-        return h;
-    }
-    //! True if strings are equal
-    static bool equal( const string& x, const string& y ) {
-        return x==y;
-    }
-};
- 
-// A concurrent hash table that maps strings to ints.
-typedef concurrent_hash_map<string,int,MyHashCompare> StringTable;
- 
-// Function object for counting occurrences of strings.
-struct Tally {
-    StringTable& table;
-    Tally( StringTable& table_ ) : table(table_) {}
-    void operator()( const blocked_range<string*> range ) const {
-        for( string* p=range.begin(); p!=range.end(); ++p ) {
-            StringTable::accessor a;
-            table.insert( a, *p );
-            a->second += 1;
-        }
-    }
-};
- 
-const size_t N = 1000000;
- 
-string Data[N];
- 
-void CountOccurrences() {
-    // Construct empty table.
-    StringTable table;
- 
-    // Put occurrences into the table
-    parallel_for( blocked_range<string*>( Data, Data+N, 1000 ),
-                  Tally(table) );
- 
-    // Display the occurrences
-    for( StringTable::iterator i=table.begin(); i!=table.end(); ++i )
-        printf("%s %d\n",i->first.c_str(),i->second);
-}</pre>
-<p>A <samp class="codeph">concurrent_hash_map</samp> acts as a container of elements of type <span class="option">std::pair</span><samp class="codeph"><const <var>Key</var>,<var>T</var>></samp>. Typically, when accessing a container element, you are interested in either updating it or reading it. The template class <samp class="codeph">concurrent_hash_map</samp> supports these two purposes respectively with the classes <samp class="codeph">accessor</samp> and <samp class="codeph">c [...]
-<p>The methods <samp class="codeph">find</samp> and <samp class="codeph">insert</samp> take an <samp class="codeph">accessor</samp> or <samp class="codeph">const_accessor</samp> as an argument. The choice tells <samp class="codeph">concurrent_hash_map</samp> whether you are asking for <em>update</em> or <em>read-only</em> access. Once the method returns, the access lasts until the <samp class="codeph">accessor</samp> or <samp class="codeph">const_accessor</samp> is destroyed. Because hav [...]
-
-<pre>        StringTable accessor a;
-        for( string* p=range.begin(); p!=range.end(); ++p ) {
-            table.insert( a, *p );
-            a->second += 1;
-            a.release();
-        }</pre>
-<p>The method <samp class="codeph">remove(key)</samp> can also operate concurrently. It implicitly requests write access. Therefore before removing the key, it waits on any other extant accesses on <samp class="codeph">key</samp>.</p>
-</div>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Containers.htm">Containers</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/More_on_HashCompare.htm">More on HashCompare</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/concurrent_vector.htm b/doc/help/tbb_userguide/concurrent_vector.htm
deleted file mode 100755
index 7f571e5..0000000
--- a/doc/help/tbb_userguide/concurrent_vector.htm
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="concurrent_vector">
-<meta name="DC.subject" content="concurrent_vector">
-<meta name="keywords" content="concurrent_vector">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Containers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_concurrent_vector">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>concurrent_vector</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_concurrent_vector">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_concurrent_vector"><!-- --></a>
-
- 
-  <h1 class="topictitle1">concurrent_vector</h1>
- 
-  
-  <div>
-	 <p><samp class="codeph">A concurrent_vector<<var>T</var>></samp> is a
-		dynamically growable array of 
-		<var>T</var>. It is safe to grow a 
-		<samp class="codeph">concurrent_vector</samp> while other threads are also operating
-		on elements of it, or even growing it themselves. For safe concurrent growing, 
-		<samp class="codeph">concurrent_vector</samp> has three methods that support common
-		uses of dynamic arrays: 
-		<samp class="codeph">push_back</samp>, 
-		<samp class="codeph">grow_by</samp>, and 
-		<samp class="codeph">grow_to_at_least</samp>. 
-	 </p>
-
-	 <p>Method 
-		<samp class="codeph">push_back(<var>x</var>)</samp> safely appends x to the
-		array. Method 
-		<samp class="codeph">grow_by(<var>n</var>)</samp> safely appends 
-		<samp class="codeph"><var>n</var></samp> consecutive elements initialized
-		with 
-		<samp class="codeph"><var>T</var>()</samp>. Both methods return an iterator
-		pointing to the first appended element. Each element is initialized with 
-		<samp class="codeph"><var>T</var>()</samp>. So for example, the following
-		routine safely appends a C string to a shared vector:
-	 </p>
-
-<pre>void Append( concurrent_vector<char>& vector, const char* string ) {
-    size_t n = strlen(string)+1;
-    std::copy( string, string+n, vector.grow_by(n) );
-}</pre>
-	 <p>The related method 
-		<samp class="codeph">grow_to_at_least(<var>n</var>)</samp>grows a vector to
-		size 
-		<var>n</var> if it is shorter. Concurrent calls to the growth
-		methods do not necessarily return in the order that elements are appended to
-		the vector.
-	 </p>
-
-	 <p>Method 
-		<samp class="codeph">size()</samp> returns the number of elements in the vector,
-		which may include elements that are still undergoing concurrent construction by
-		methods 
-		<samp class="codeph">push_back</samp>, 
-		<samp class="codeph">grow_by,</samp> or 
-		<samp class="codeph">grow_to_at_least</samp>. The example uses 
-	 <span class="option">std::copy</span> and iterators, not 
-	 <samp class="codeph">strcpy and pointers</samp>, because elements in a 
-	 <samp class="codeph">concurrent_vector</samp> might not be at consecutive addresses.
-	 It is safe to use the iterators while the 
-	 <samp class="codeph">concurrent_vector</samp> is being grown, as long as the iterators
-	 never go past the current value of 
-	 <samp class="codeph">end()</samp>. However, the iterator may reference an element
-	 undergoing concurrent construction. You must synchronize construction and
-	 access.
-	 </p>
-
-	 <p>A 
-		<samp class="codeph">concurrent_vector<<var>T</var>></samp> never
-		moves an element until the array is cleared, which can be an advantage over the
-		STL 
-	 <span class="option">std::vector</span> even for single-threaded code. However, 
-	 <samp class="codeph">concurrent_vector</samp> does have more overhead than 
-	 <span class="option">std::vector</span>. Use 
-	 <samp class="codeph">concurrent_vector</samp> only if you really need the ability to
-	 dynamically resize it while other accesses are (or might be) in flight, or
-	 require that an element never move.
-	 </p>
-
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3>
-		<p>Operations on 
-		  <samp class="codeph">concurrent_vector</samp> are concurrency safe with respect to
-		  
-		  <em>growing</em>, not for clearing or destroying a vector. Never invoke
-		  method 
-		  <samp class="codeph">clear()</samp> if there are other operations in flight on the
-		  
-		  <samp class="codeph">concurrent_vector</samp>.
-		</p>
-
-	 </div>
-  </div>
-
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Containers.htm">Containers</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Advanced_Idiom_Waiting_on_an_Element.htm">Advanced Idiom: Waiting on an Element</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/parallel_for.htm b/doc/help/tbb_userguide/parallel_for.htm
deleted file mode 100755
index 74427f4..0000000
--- a/doc/help/tbb_userguide/parallel_for.htm
+++ /dev/null
@@ -1,207 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="parallel_for">
-<meta name="DC.subject" content="parallel_for">
-<meta name="keywords" content="parallel_for">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Lambda_Expressions.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Automatic_Chunking.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Controlling_Chunking.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Bandwidth_and_Cache_Affinity.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Partitioner_Summary.htm">
-<meta name="DC.Relation" scheme="URI" content="Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm#tutorial_Advanced_Topic_Other_Kinds_of_Iteration_Spaces">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_parallel_for">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>parallel_for</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_parallel_for">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_parallel_for"><!-- --></a>
-
- 
-  <h1 class="topictitle1">parallel_for</h1>
- 
-   
-  <div> 
-	 <p>Suppose you want to apply a function 
-		<samp class="codeph">Foo</samp> to each element of an array, and it is safe to
-		process each element concurrently. Here is the sequential code to do this: 
-	 </p>
- 
-	 <pre>void SerialApplyFoo( float a[], size_t n ) {
-    for( size_t i=0; i!=n; ++i )
-        Foo(a[i]);
-}</pre> 
-	 <p>The iteration space here is of type 
-		<samp class="codeph">size_t</samp>, and goes from 
-		<samp class="codeph">0</samp> to 
-		<samp class="codeph">n-1</samp>. The template function 
-	 <span class="option">tbb::parallel_for</span> breaks this iteration space into chunks,
-	 and runs each chunk on a separate thread. The first step in parallelizing this
-	 loop is to convert the loop body into a form that operates on a chunk. The form
-	 is an STL-style function object, called the 
-	 <em>body</em> object, in which 
-	 <samp class="codeph">operator()</samp> processes a chunk. The following code declares
-	 the body object. The extra code required for Intel® Threading Building Blocks
-	 is shown in 
-	 <samp class="codeph"><span style="color:blue"><strong>bold font</strong></span></samp>. 
-	 </p>
- 
-	 <pre><span style="color:blue"><strong>#include "tbb/tbb.h</strong>"</span>
- 
-<span style="color:blue"><strong>using namespace tbb;</strong></span>
- 
-<span style="color:blue"><strong>class ApplyFoo {</strong></span>
-    <span style="color:blue"><strong>float *const my_a;</strong></span>
-<span style="color:blue"><strong>public:</strong></span>
-    <span style="color:blue"><strong>void operator()( const blocked_range<size_t>& r ) const {</strong></span>
-        <span style="color:blue"><strong>float *a = my_a;</strong></span>
-        for( size_t i=r.begin(); i!=r.end(); ++i ) 
-           Foo(a[i]);
-    <span style="color:blue"><strong>}</strong></span>
-    <span style="color:blue"><strong>ApplyFoo( float a[] ) :</strong></span>
-        <span style="color:blue"><strong>my_a(a)</strong></span>
-    <span style="color:blue"><strong>{}</strong></span>
-<span style="color:blue"><strong>};</strong></span></pre> 
-	 <p>The 
-		<samp class="codeph">using</samp> directive in the example enables you to use the
-		library identifiers without having to write out the namespace prefix 
-		<samp class="codeph">tbb</samp> before each identifier. The rest of the examples
-		assume that such a 
-		<samp class="codeph">using</samp> directive is present. 
-	 </p>
- 
-	 <p>Note the argument to 
-		<samp class="codeph">operator()</samp>. A 
-		<samp class="codeph">blocked_range<T></samp> is a template class provided by
-		the library. It describes a one-dimensional iteration space over type 
-		<samp class="codeph">T</samp>. Class 
-		<samp class="codeph">parallel_for</samp> works with other kinds of iteration spaces
-		too. The library provides 
-		<samp class="codeph">blocked_range2d</samp> for two-dimensional spaces. You can
-		define your own spaces as explained in 
-		<strong>Advanced Topic: Other Kinds of Iteration Spaces</strong>. 
-	 </p>
- 
-	 <p>An instance of 
-		<samp class="codeph">ApplyFoo</samp> needs member fields that remember all the local
-		variables that were defined outside the original loop but used inside it.
-		Usually, the constructor for the body object will initialize these fields,
-		though 
-		<samp class="codeph">parallel_for</samp> does not care how the body object is
-		created. Template function 
-		<samp class="codeph">parallel_for</samp> requires that the body object have a copy
-		constructor, which is invoked to create a separate copy (or copies) for each
-		worker thread. It also invokes the destructor to destroy these copies. In most
-		cases, the implicitly generated copy constructor and destructor work correctly.
-		If they do not, it is almost always the case (as usual in C++) that you must
-		define 
-		<em>both</em> to be consistent. 
-	 </p>
- 
-	 <p>Because the body object might be copied, its 
-		<samp class="codeph">operator()</samp> should not modify the body. Otherwise the
-		modification might or might not become visible to the thread that invoked 
-		<samp class="codeph">parallel_for</samp>, depending upon whether 
-		<samp class="codeph">operator()</samp> is acting on the original or a copy. As a
-		reminder of this nuance, 
-		<samp class="codeph">parallel_for</samp> requires that the body object's 
-		<samp class="codeph">operator()</samp> be declared 
-		<samp class="codeph">const</samp>. 
-	 </p>
- 
-	 <p>The example 
-		<samp class="codeph">operator()</samp> loads 
-		<samp class="codeph">my_a</samp> into a local variable 
-		<samp class="codeph">a</samp>. Though not necessary, there are two reasons for doing
-		this in the example: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p><strong>Style</strong>. It makes the loop body look more like the original. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p><strong>Performance</strong>. Sometimes putting frequently accessed values
-			 into local variables helps the compiler optimize the loop better, because local
-			 variables are often easier for the compiler to track. 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>Once you have the loop body written as a body object, invoke the
-		template function 
-		<samp class="codeph">parallel_for</samp>, as follows: 
-	 </p>
- 
-	 <pre>#include "tbb/tbb.h"
- 
-void ParallelApplyFoo( float a[], size_t n ) {
-    parallel_for(blocked_range<size_t>(0,n), ApplyFoo(a));
-}</pre> 
-	 <p>The 
-		<samp class="codeph">blocked_range</samp> constructed here represents the entire
-		iteration space from 0 to n-1, which 
-		<samp class="codeph">parallel_for</samp> divides into subspaces for each processor.
-		The general form of the constructor is 
-		<samp class="codeph">blocked_range<T>(<em>begin</em>,<em>end</em>,<em>grainsize</em>)</samp>.
-		The 
-		<var>T</var> specifies the value type. The arguments 
-		<var>begin</var> and 
-		<samp class="codeph"><em>end</em></samp> specify the iteration space STL-style as a
-		half-open interval [<samp class="codeph"><em>begin</em></samp>,<var>end</var>). The
-		argument 
-		<em>grainsize</em> is explained in the 
-		<strong>Controlling Chunking 
-		</strong>section. The example uses the default grainsize of 1 because by
-		default 
-		<samp class="codeph">parallel_for</samp> applies a heuristic that works well with
-		the default grainsize. 
-	 </p>
- 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a></div>
-</div>
-<div class="See Also">
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Lambda_Expressions.htm">Lambda Expressions</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Automatic_Chunking.htm">Automatic Chunking</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Controlling_Chunking.htm">Controlling Chunking</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Bandwidth_and_Cache_Affinity.htm">Bandwidth and Cache Affinity</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Partitioner_Summary.htm">Partitioner Summary</a><br>
-</li>
-</ul>
-
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="Advanced_Topic_Other_Kinds_of_Iteration_Spaces.htm#tutorial_Advanced_Topic_Other_Kinds_of_Iteration_Spaces">Advanced Topic: Other Kinds of Iteration Spaces 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/parallel_reduce.htm b/doc/help/tbb_userguide/parallel_reduce.htm
deleted file mode 100755
index f1d8f4a..0000000
--- a/doc/help/tbb_userguide/parallel_reduce.htm
+++ /dev/null
@@ -1,230 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="parallel_reduce">
-<meta name="DC.subject" content="parallel_reduce">
-<meta name="keywords" content="parallel_reduce">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="parallel_for.htm#tutorial_parallel_for">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_parallel_reduce">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>parallel_reduce</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_parallel_reduce">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_parallel_reduce"><!-- --></a>
-
- 
-  <h1 class="topictitle1">parallel_reduce</h1>
- 
-   
-  <div> 
-	 <p>A loop can do a reduction, as in this summation: 
-	 </p>
- 
-	 <pre>float SerialSumFoo( float a[], size_t n ) {
-    float sum = 0;
-    for( size_t i=0; i!=n; ++i )
-        sum += Foo(a[i]);
-    return sum;
-}</pre> 
-	 <p>If the iterations are independent, you can parallelize this loop using
-		the template class 
-		<samp class="codeph">parallel_reduce</samp> as follows: 
-	 </p>
- 
-	 <pre>float ParallelSumFoo( const float a[], size_t n ) {
-    SumFoo sf(a);
-    parallel_reduce( blocked_range<size_t>(0,n), sf );
-    return <span style="color:blue"><strong>sf.my_</strong></span>sum;
-}</pre> 
-	 <p>The class 
-		<samp class="codeph">SumFoo</samp> specifies details of the reduction, such as how
-		to accumulate subsums and combine them. Here is the definition of class 
-		<samp class="codeph">SumFoo</samp>: 
-	 </p>
- 
-	 <pre>class SumFoo {
-    float* my_a;
-public:
-    float my_sum; 
-    void operator()( const blocked_range<size_t>& r ) {
-        float *a = my_a;
-        float sum = my_sum;
-        size_t end = r.end();
-        for( size_t i=r.begin(); i!=end; ++i ) 
-            sum += Foo(a[i]); 
-        <span style="color:blue"><strong>my_sum = sum;</strong></span>    
-    <span style="color:blue"><strong>}</strong></span>
- 
-    SumFoo( SumFoo& x, split ) : my_a(x.my_a), my_sum(0) {}
- 
-    void join( const SumFoo& y ) {my_sum+=y.my_sum;}
-             
-    SumFoo(float a[] ) :
-        my_a(a), my_sum(0)
-    {}
-};</pre> 
-	 <p>Note the differences with class 
-		<samp class="codeph">ApplyFoo</samp> from 
-		<span class="keyword">parallel_for</span>. First, 
-		<samp class="codeph">operator()</samp> is 
-		<em>not</em> 
-		<samp class="codeph">const</samp>. This is because it must update 
-	 <span class="option">SumFoo::my_sum</span>. Second, 
-	 <samp class="codeph">SumFoo</samp> has a 
-	 <em>splitting constructor</em> and a method 
-	 <samp class="codeph">join</samp> that must be present for 
-	 <samp class="codeph">parallel_reduce</samp> to work. The splitting constructor takes
-	 as arguments a reference to the original object, and a dummy argument of type 
-	 <samp class="codeph">split</samp>, which is defined by the library. The dummy argument
-	 distinguishes the splitting constructor from a copy constructor. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Tip</h3> 
-		<p>In the example, the definition of 
-		  <samp class="codeph">operator()</samp> uses local temporary variables
-		  (<samp class="codeph">a</samp>, 
-		  <samp class="codeph">sum</samp>, 
-		  <samp class="codeph">end</samp>) for scalar values accessed inside the loop. This
-		  technique can improve performance by making it obvious to the compiler that the
-		  values can be held in registers instead of memory. If the values are too large
-		  to fit in registers, or have their address taken in a way the compiler cannot
-		  track, the technique might not help. With a typical optimizing compiler, using
-		  local temporaries for only written variables (such as 
-		  <samp class="codeph">sum</samp> in the example) can suffice, because then the
-		  compiler can deduce that the loop does not write to any of the other locations,
-		  and hoist the other reads to outside the loop. 
-		</p>
- 
-	 </div> 
-	 <p>When a worker thread is available, as decided by the task scheduler, 
-		<samp class="codeph">parallel_reduce</samp> invokes the splitting constructor to
-		create a subtask for the worker. When the subtask completes, 
-		<samp class="codeph">parallel_reduce</samp> uses method 
-		<samp class="codeph">join</samp> to accumulate the result of the subtask. The graph
-		at the top of the following figure shows the split-join sequence that happens
-		when a worker is available: 
-	 </p>
- 
-	 <div class="fignone" id="fig5"><a name="fig5"><!-- --></a><span class="figcap">Graph of the Split-join Sequence</span> 
-		<br><img src="Images/image009.jpg" width="512" height="438"><br> 
-	 </div>
- 
-	 <p>An arc in the above figure indicates order in time. The splitting
-		constructor might run concurrently while object x is being used for the first
-		half of the reduction. Therefore, all actions of the splitting constructor that
-		creates y must be made thread safe with respect to x. So if the splitting
-		constructor needs to increment a reference count shared with other objects, it
-		should use an atomic increment. 
-	 </p>
- 
-	 <p>If a worker is not available, the second half of the iteration is
-		reduced using the same body object that reduced the first half. That is the
-		reduction of the second half starts where reduction of the first half finished.
-		
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>Because split/join are not used if workers are unavailable, 
-		  <samp class="codeph">parallel_reduce</samp> does not necessarily do recursive
-		  splitting. 
-		</p>
- 
-	 </div> 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Caution</h3> 
-		<p>Because the same body might be used to accumulate multiple subranges,
-		  it is critical that 
-		  <samp class="codeph">operator()</samp> not discard earlier accumulations. The code
-		  below shows an incorrect definition of 
-		  <samp class="codeph">SumFoo::operator()</samp>. 
-		</p>
- 
-	 </div> 
-	 <pre>class SumFoo {
-    ...
-public:
-    float my_sum; 
-    void operator()( const blocked_range<size_t>& r ) {
-        ...
-        float <span style="color:blue"><strong>sum = 0;</strong></span>  // WRONG – should be 'sum = <span style="color:blue"><strong>my_sum</strong></span>".
-        ...
-        for( ... ) 
-            sum += Foo(a[i]); 
-        my_sum = sum;   
-    }
-    ...
-};</pre> 
-	 <p>With the mistake, the body returns a partial sum for the last subrange
-		instead of all subranges to which 
-		<samp class="codeph">parallel_reduce</samp> applies it. 
-	 </p>
- 
-	 <p>The rules for partitioners and grain sizes for 
-		<samp class="codeph">parallel_reduce</samp> are the same as for 
-		<samp class="codeph">parallel_for</samp>. 
-	 </p>
- 
-	 <p><samp class="codeph">parallel_reduce</samp> generalizes to any associative
-		operation. In general, the splitting constructor does two things: 
-	 </p>
- 
-	 <ul type="disc"> 
-		<li> 
-		  <p>Copy read-only information necessary to run the loop body. 
-		  </p>
- 
-		</li>
- 
-		<li> 
-		  <p>Initialize the reduction variable(s) to the identity element of the
-			 operation(s). 
-		  </p>
- 
-		</li>
- 
-	 </ul>
- 
-	 <p>The join method should do the corresponding merge(s). You can do more
-		than one reduction at the same time: you can gather the min and max with a
-		single 
-		<samp class="codeph">parallel_reduce</samp>. 
-	 </p>
- 
-	 <div class="Note"><h3 class="NoteTipHead">
-					Note</h3> 
-		<p>The reduction operation can be non-commutative. The example still
-		  works if floating-point addition is replaced by string concatenation. 
-		</p>
- 
-	 </div> 
-  </div>
- 
-  
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a></div>
-</div>
-<div class="See Also">
-<h2>See Also</h2>
-<div class="linklist">
-<div><a href="parallel_for.htm#tutorial_parallel_for">parallel_for 
-		  </a></div></div>
-</div> 
-
-</body>
-</html>
diff --git a/doc/help/tbb_userguide/title.htm b/doc/help/tbb_userguide/title.htm
deleted file mode 100755
index ba3a31c..0000000
--- a/doc/help/tbb_userguide/title.htm
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- saved from url=(0014)about:internet -->
-<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<meta name="DC.Type" content="topic">
-<meta name="DC.Title" content="Intel® Threading Building Blocks (Intel® TBB) User Guide">
-<meta name="DC.Relation" scheme="URI" content="../main/title.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Package_Contents.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Simple_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Parallelizing_Complex_Loops.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Exceptions_and_Cancellation.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Containers.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Mutual_Exclusion.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Atomic_Operations.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Timing.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Memory_Allocation.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/The_Task_Scheduler.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/Design_Patterns/Design_Patterns.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/appendix_A.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/appendix_B.htm">
-<meta name="DC.Relation" scheme="URI" content="../tbb_userguide/References.htm">
-<meta name="prodname" content="Intel® Threading Building Blocks User Guide">
-<meta name="version" content="4.2">
-<meta name="release" content="319872-009US">
-<meta name="DC.Format" content="XHTML">
-<meta name="DC.Identifier" content="tutorial_title">
-<link rel="stylesheet" type="text/css" href="../intel_css_styles.css">
-<title>Intel® Threading Building Blocks (Intel® TBB) User Guide</title>
-<xml>
-<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
-<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
-<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
-</xml>
-</head>
-<body id="tutorial_title">
- <!-- ==============(Start:NavScript)================= -->
- <script src="..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
- <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script>
- <!-- ==============(End:NavScript)================= -->
-<a name="tutorial_title"><!-- --></a>
-
- 
-  <h1 class="firsttitle"> Intel® Threading Building Blocks (Intel®
-	 TBB) User Guide</h1>
- 
-   
-  <div> 
-	 <p> Intel® TBB 4.2 - Windows* OS 
-	 </p>
- 
-  </div>
- 
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div>
-</div>
-<div>
-<ul class="ullinks">
-<li class="ulchildlink"><a href="../tbb_userguide/Package_Contents.htm">Package Contents</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Parallelizing_Simple_Loops.htm">Parallelizing Simple Loops</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Parallelizing_Complex_Loops.htm">Parallelizing Complex Loops</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Exceptions_and_Cancellation.htm">Exceptions and Cancellation</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Containers.htm">Containers</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Mutual_Exclusion.htm">Mutual Exclusion</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Atomic_Operations.htm">Atomic Operations</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Timing.htm">Timing</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Memory_Allocation.htm">Memory Allocation</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/The_Task_Scheduler.htm">The Task Scheduler</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/Design_Patterns/Design_Patterns.htm">Design Patterns</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/appendix_A.htm">Appendix A Costs of Time Slicing</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/appendix_B.htm">Appendix B Mixing With Other Threading Packages</a><br>
-</li>
-<li class="ulchildlink"><a href="../tbb_userguide/References.htm">References</a><br>
-</li>
-</ul>
-</div>
-
-</body>
-</html>
diff --git a/doc/help/tree.css b/doc/help/tree.css
deleted file mode 100755
index 1e50546..0000000
--- a/doc/help/tree.css
+++ /dev/null
@@ -1,106 +0,0 @@
-
-.treeDiv
-{
-   font-family: verdana,arial,sans-serif;
-   font-size: 70.5%;
-   font-weight: normal;
-   background-color: #F1F1F1;   /* main background color */
-   color: #000000;               /* text color */ 
-   overflow: auto;
-   margin: 0px 0px 0px 0px;
-   padding: 0px 0px 0px 2px;  // 8px is better left padding but obscures the scroll bar in Chrome */
-}
-.treeNode
-{
-   white-space: nowrap;
-   text-indent: -14px;
-   margin: 5px 2px 5px 14px;
-}
-
-A.treeUnselected:hover, A.treeSelected:hover
-
-{
-   border-top: 1px solid #999999;
-   border-right: 1px solid #999999;
-   border-left: 1px solid #999999;
-   border-bottom: 1px solid #999999;
-   background-color: #CCCCCC;	     /* Rollover color */
-   color: #000000;                      /* Rollover text color */
-   text-decoration: none;
-
-}
-
-A.treeUnselected, A.treeSelected
-
-{
-   
-   color: Black;
-
-   padding: 1px 3px 1px 3px;
-
-   text-decoration: none;
-
-}
-
-A.treeSelected
-
-{
-
-   background-color: #FFFFFF;	   /* Node selection color */
-   border-top: 1px solid #999999;
-
-   border-right: 1px solid #999999;
-   border-left: 1px solid #999999;
-   border-bottom: 1px solid #999999;
-   color: #000000;               /* selected text color */ 
-}
-A.treeUnselected
-
-{
-   
-   border-top: solid 1px transparent;	    /* Non Select color - Should match background color */
-   border-right: solid 1px transparent;
-
-   border-left: solid 1px transparent;
-   border-bottom: solid 1px transparent;
-   background-color: transparent;
-
-
-   color: #000000;               /* text color */ 
-}
-
-.treeSubnodes
-
-{
-
-   display: block;
-
-}
-
-.treeSubnodesHidden
-
-{
-  
-   display: none;
-}
-
-.treeNode IMG.treeNoLinkImage, .treeNode IMG.treeLinkImage
-
-{
-   
-   width: 9px;		   /* Icon size in pixels*/
-   height: 9px;
-   
-   margin-left: 5px;
-   
-   margin-right: 0px;
-
-}
-
-.treeNode IMG.treeLinkImage
-
-{
-   
-   cursor: pointer;
-
-}
diff --git a/doc/help/tree.js b/doc/help/tree.js
deleted file mode 100755
index 202242d..0000000
--- a/doc/help/tree.js
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright © 2009-2011, Rob Chandler.
-// Please don't use this file without purchasing FAR. http://helpware.net/FAR/
-// This effectively licenses you to use my code. This code (before modification) was 
-// first written by Jean-Claude Manoli.
-// Changes
-// RWC: 2005-04-01 - Fix image pre-load section. Last line had typo causing some images not to load
-// RWC: 2005-05-21 - Some work fixing TOC Sync
-// RWC: 2008-01-30 - Change resizeTree() to be compatible with non-MS browsers
-// RWC: 2009-06-10 - All files now saved in UTF-8 file format.
-// RWC: 2009-09-26 - Allow Opera browser to scroll the tree when syncing TOC.
-// RWC: 2011-09-10 - Fix Sync for \\server\ UNC paths.
-// RWC: 2011-09-11 - Fix Sync for CJK paths.
-// RWC: 2012-09-04 - Added selectNext(fwd) & findLinkNode()
-
-
-/* Original Copyright © 2002 Jean-Claude Manoli [jc at manoli.net]
- *
- * This software is provided 'as-is', without any express or implied warranty.
- * In no event will the author(s) be held liable for any damages arising from
- * the use of this software.
- * 
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- * 
- *   1. The origin of this software must not be misrepresented; you must not
- *      claim that you wrote the original software. If you use this software
- *      in a product, an acknowledgment in the product documentation would be
- *      appreciated but is not required.
- * 
- *   2. Altered source versions must be plainly marked as such, and must not
- *      be misrepresented as being the original software.
- * 
- *   3. This notice may not be removed or altered from any source distribution.
- */ 
-
-
-
-var treeSelected = null; //last treeNode clicked
-
-//pre-load tree nodes images
-var imgPlus = new Image();
-imgPlus.src="treenodeplus.gif";
-var imgMinus = new Image();
-imgMinus.src="treenodeminus.gif";
-var imgDot = new Image();
-imgDot.src="treenodedot.gif";    //rwc - fixed. Was... imgPlus.src="treenodedot.gif";
-
-
-function findNode(el)
-{
-// Takes element and determines if it is a treeNode.
-// If not, seeks a treeNode in its parents.
-	while (el != null)
-	{
-		if (el.className == "treeNode")
-		{
-			break;
-		}
-		else
-		{
-			el = el.parentNode;
-		}
-	}
-	return el;
-}
-
-
-function clickAnchor(el)
-{
-// handles click on a TOC link
-//
-	expandNode(el.parentNode);
-	selectNode(el.parentNode);
-	el.blur();
-}
-
-function findLinkNode(node)
-{
-	if (node == null || node == undefined)
-		node = treeSelected;
-	node = findNode(node);
-	if (node == null)  
-		return null;
-	var anchors = node.getElementsByTagName('A');
-	if (anchors.length > 0)
-		return anchors[0];
-	return null;
-}
-
-
-function selectNext(fwd)
-{
-// Sync forward or back from current selected. Return href of newly selected node.
-//
-	var el;
-	var aref = "";
-        var node = document.getElementById('treeRoot');
-	var anchors = node.getElementsByTagName('A');
-
-	//nothing selected? - Select the first node
-	if (treeSelected == null)  
-	{
-		if (anchors.length > 0 && anchors[0] != null && anchors[0] != undefined)
-		{
-			el = anchors[0];
-			selectAndShowNode(el);
-			aref = el.getAttribute('href');
-		}
-	}
-	else //select the next node
-	{
-		for(var i = 0; i < anchors.length; i++)
-		{
-			el = anchors[i];
-			if (findNode(el) == treeSelected)  // find the current selected node & walk fwd or back
-			{
-				if (fwd) el = anchors[i+1];
-				else     el = anchors[i-1];
-				if (el != null && el != undefined)
-				{
-					selectAndShowNode(el);	
-					aref = el.getAttribute('href');
-				}
-				break;		
-			}
-		}
-	}
-	return aref;
-}
-
-
-function selectNode(el)
-{
-// Un-selects currently selected node, if any, and selects the specified node
-//
-	if (treeSelected != null)
-	{
-		setSubNodeClass(treeSelected, 'A', 'treeUnselected');
-	}
-	setSubNodeClass(el, 'A', 'treeSelected');
-	treeSelected = el;
-}
-
-
-function setSubNodeClass(el, nodeName, className)
-{
-// Sets the specified class name on el's first child that is a nodeName element
-//
-	var child;
-	for (var i=0; i < el.childNodes.length; i++)
-	{
-		child = el.childNodes[i];
-		if (child.nodeName == nodeName)
-		{
-			child.className = className;
-			break;
-		}
-	}
-}
-
-
-function expandCollapse(el)
-{
-//	If source treeNode has child nodes, expand or collapse view of treeNode
-//
-	if (el == null)
-		return;	//Do nothing if it isn't a treeNode
-		
-	var child;
-	var imgEl;
-	for(var i=0; i < el.childNodes.length; i++)
-	{
-		child = el.childNodes[i];
-		if (child.src)
-		{
-			imgEl = child;
-		}
-		else if (child.className == "treeSubnodesHidden")
-		{
-			child.className = "treeSubnodes";
-			imgEl.src = "treenodeminus.gif";
-			break;
-		}
-		else if (child.className == "treeSubnodes")
-		{
-			child.className = "treeSubnodesHidden";
-			imgEl.src = "treenodeplus.gif";
-			break;
-		}
-	}
-}
-
-
-function expandNode(el)
-{
-//	If source treeNode has child nodes, expand it
-//
-	var child;
-	var imgEl;
-	for(var i=0; i < el.childNodes.length; i++)
-	{
-		child = el.childNodes[i];
-		if (child.src)
-		{
-			imgEl = child;
-		}
-		if (child.className == "treeSubnodesHidden")
-		{
-			child.className = "treeSubnodes";
-			imgEl.src = "treenodeminus.gif";
-			break;
-		}
-	}
-}
-
-function GetUnixPath(url)
-{
-	var path = url.replace(/\\/g, '/');         // DOS to Unix slash
-	path = path.replace(/\/\/\//, "//");        // Force 2 slashes xxx://xxx
-	path = path.replace(/\/\/\//, "//");
-	path = path.replace(/\/\/\//, "//");
-	path = path.replace(/\/\/\//, "//");
-	return path;
-}
-
-
-function syncTree(href)
-{
-// Selects and scrolls into view the node that references the specified URL
-//
-        //RWC 2005-05-21 - This is the real URL base of the TOC
-        var gbase = GetUnixPath(location.href);
-        gbase = decodeURI(gbase);
-        gbase = gbase.substr(0, gbase.lastIndexOf('/') + 1);   //trim off file name. Leave trailing /
-
-	var loc = new String();
-	loc = GetUnixPath(href);
-
-	loc = encodeURI(loc); //encode as valid URI
-        //RWC 2005-05-21 - properly Scrub URL of encoding
-        loc = decodeURI(loc);  //Converts %2520 -> %20  (under FireFox)
-        loc = decodeURI(loc);  //Converts %20 = ' '
-
-	var tocEl = findHref(document.getElementById('treeRoot'), loc, gbase);
-	if (tocEl != null)
-	{
-		selectAndShowNode(tocEl);
-	}
-}
-
-function findHref(node, href, base)
-{
-// find the <a> element with the specified href value
-//
-        //RWC 24/3/2006: Consider any bookmark on the URL to test
-        var href_BaseURL = '';
-        var iBookmark = href.indexOf('#');
-        if (iBookmark > 0)
-          href_BaseURL = href.substr(0, iBookmark);
-
-
-	var el;
-	var anchors = node.getElementsByTagName('A');
-	for (var i = 0; i < anchors.length; i++)
-	{
-		el = anchors[i];
-		var aref = new String();
-		aref = el.getAttribute('href');
-		
-		if ((aref.substring(0, 7) != 'http://') 
-		&& (aref.substring(0, 8) != 'https://')
-		&& (aref.substring(0, 7) != 'file://'))
-		{
-			aref = base + aref;
-		}
-
-		aref = GetUnixPath(decodeURI(aref));
-                //if (i < 5)
-	        //  alert('aref=' + aref + ', href=' + href + ', base=' + base);
-
-                //RWC: If href has #bookmark and aref does not then compare without bookmarks
-                if ((href_BaseURL.length > 0) && (aref.indexOf('#') < 0))
-                  if (aref == href_BaseURL)
-                     return el;
-
-		if (aref == href)
-		{
-			return el;
-		}
-	}
-	return null;
-}
-
-function selectAndShowNode(node)
-{
-// Selects and scrolls into view the specified node
-//
-	var el = findNode(node);
-	if (el != null) 
-	{
-		selectNode(el);
-		do 
-		{
-			expandNode(el);
-			el = findNode(el.parentNode);
-		} while ((el != null))  
-		
-		//vertical scroll element into view
-		var windowTop;
-		var windowBottom;
-		var treeDiv = document.getElementById('tree');
-		
-		var ua = window.navigator.userAgent.toLowerCase();
-		if ((i = ua.indexOf('msie')) != -1)
-		{
-			windowTop = node.offsetTop - treeDiv.scrollTop;
-			windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight;
-		}
-		else if (ua.indexOf('gecko') != -1)
-		{
-			windowTop = node.offsetTop - treeDiv.offsetTop - treeDiv.scrollTop;
-			windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight;
-		}
-		else if (ua.indexOf('opera') != -1)
-		{
-			windowTop = node.offsetTop - treeDiv.offsetTop - treeDiv.scrollTop;
-			windowBottom = treeDiv.clientHeight - windowTop - node.offsetHeight;
-		}
-		else 
-		{
-			return;
-		}
-		
-		if (windowTop < 0)
-		{
-			treeDiv.scrollTop += windowTop - 18;
-			return;
-		}
-		if (windowBottom < 0)
-		{
-			treeDiv.scrollTop -= windowBottom - 18;
-			return;
-		}
-	}
-}
-
-
-
-function GetFrameWidth() 
-{ 
-	var x = 300; 
-	if (self.innerHeight) // all except Explorer 
-   	    x = self.innerWidth; 
-	else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode 
-	    x = document.documentElement.clientWidth; 
-	else if (document.body) // other Explorers 
-	    x = document.body.clientWidth; 
-	return(x); 
-} 
-
-function GetFrameHeight() 
-{ 
-	var y = 400; 
-	if (self.innerHeight) // all except Explorer 
-	    y = self.innerHeight; 
-	else if (document.documentElement && document.documentElement.clientWidth) // Explorer 6 Strict Mode 
-	    y = document.documentElement.clientHeight; 
-	else if (document.body) // other Explorers 
-	    y = document.body.clientHeight; 
-	return(y); 
-} 
-
-function resizeTree() 
-{
-	var treeDiv = document.getElementById("tree");
-	var DivFooter = document.getElementById("DivFooter");
-              var xTop = treeDiv.offsetTop;
-	if ((DivFooter != null) && (DivFooter != undefined))
-	    xTop = xTop + DivFooter.offsetHeight;
-	treeDiv.style.width = GetFrameWidth();
-	var HH = GetFrameHeight(); 
-	if (HH -  xTop > 0)
-	    treeDiv.style.height = HH -  xTop;
-}
-
-// old original func
-//function resizeTree()
-//{
-//	var treeDiv = document.getElementById('tree');
-//	//treeDiv.setAttribute('style', 'width: ' + document.body.offsetWidth + 'px; height: ' + (document.body.offsetHeight - 27) + 'px;');
-//	treeDiv.style.width = document.documentElement.offsetWidth;
-//	treeDiv.style.height = document.documentElement.offsetHeight - 27;
-//}
diff --git a/doc/help/treenodedot.gif b/doc/help/treenodedot.gif
deleted file mode 100755
index c135603..0000000
Binary files a/doc/help/treenodedot.gif and /dev/null differ
diff --git a/doc/help/treenodeminus.gif b/doc/help/treenodeminus.gif
deleted file mode 100755
index 1deac2f..0000000
Binary files a/doc/help/treenodeminus.gif and /dev/null differ
diff --git a/doc/help/treenodeplus.gif b/doc/help/treenodeplus.gif
deleted file mode 100755
index 2d15c14..0000000
Binary files a/doc/help/treenodeplus.gif and /dev/null differ
diff --git a/doc/html/a00001.html b/doc/html/a00001.html
index 55b5a43..5d398fd 100644
--- a/doc/html/a00001.html
+++ b/doc/html/a00001.html
@@ -50,7 +50,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00002.html b/doc/html/a00002.html
index 97196c9..adfece9 100644
--- a/doc/html/a00002.html
+++ b/doc/html/a00002.html
@@ -53,7 +53,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00003.html b/doc/html/a00003.html
index ae35648..fec1b11 100644
--- a/doc/html/a00003.html
+++ b/doc/html/a00003.html
@@ -46,7 +46,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00004.html b/doc/html/a00004.html
index 62957d9..7f94ce5 100644
--- a/doc/html/a00004.html
+++ b/doc/html/a00004.html
@@ -48,7 +48,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00005.html b/doc/html/a00005.html
index bb7dcf9..d538b45 100644
--- a/doc/html/a00005.html
+++ b/doc/html/a00005.html
@@ -34,7 +34,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00006.html b/doc/html/a00006.html
index 4413dc5..4033ce6 100644
--- a/doc/html/a00006.html
+++ b/doc/html/a00006.html
@@ -50,7 +50,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00007.html b/doc/html/a00007.html
index fcc6d22..243601c 100644
--- a/doc/html/a00007.html
+++ b/doc/html/a00007.html
@@ -44,7 +44,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00008.html b/doc/html/a00008.html
index 679bbb6..1496709 100644
--- a/doc/html/a00008.html
+++ b/doc/html/a00008.html
@@ -48,7 +48,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00009.html b/doc/html/a00009.html
index 8d1cdb1..289afe8 100644
--- a/doc/html/a00009.html
+++ b/doc/html/a00009.html
@@ -34,7 +34,7 @@
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="a00242.html">List of all members</a>  </div>
+<a href="a00262.html">List of all members</a>  </div>
   <div class="headertitle">
 <div class="title">__TBB_malloc_proxy_caller Struct Reference</div>  </div>
 </div><!--header-->
@@ -45,7 +45,7 @@
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00010.html b/doc/html/a00010.html
index a9913cd..bffa0d9 100644
--- a/doc/html/a00010.html
+++ b/doc/html/a00010.html
@@ -33,14 +33,14 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00010.html">accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00010.html">accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00335.html">List of all members</a>  </div>
+<a href="a00369.html">List of all members</a>  </div>
   <div class="headertitle">
 <div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference</div>  </div>
 </div><!--header-->
@@ -56,7 +56,7 @@ Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCom
  <div class="center">
   <img src="a00010.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" alt=""/>
   <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_map">
-<area href="a00047.html" title="Combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor" shape="rect" coords="0,56,488,80"/>
+<area href="a00054.html" title="Combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor" shape="rect" coords="0,56,488,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
@@ -67,12 +67,12 @@ typedef <br class="typebreak"/>
 concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#a850178bbdcdbc4cf5955cab37eb8c42c">value_type</a></td></tr>
 <tr class="memdesc:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
 <tr class="separator:a850178bbdcdbc4cf5955cab37eb8c42c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00047"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00047')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
-<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
+<tr class="inherit_header pub_types_a00054"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00054')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
+<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
 typedef const <br class="typebreak"/>
-concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
-<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
-<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00047"><td class="memSeparator" colspan="2"> </td></tr>
+concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
+<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
+<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda inherit pub_types_a00054"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
@@ -84,45 +84,45 @@ reference </td><td class="memItemRight" valign="bottom"><a class="el" href=
 pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">operator-></a> () const </td></tr>
 <tr class="memdesc:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
 <tr class="separator:ab04f73bd4a4ca7df0dc91a7b4d66f987"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00047"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00047')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
-<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
-<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
-<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
-<tr class="memdesc:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
-<tr class="separator:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
-<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
-<tr class="separator:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
-<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
-<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
-<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
-<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
-<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
-<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00054"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00054')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
+<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
+<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
+<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85 inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
+<tr class="memdesc:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
+<tr class="separator:a18390cb369369d72bdf7c867755b5190 inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
+<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
+<tr class="separator:a8adf04e33e7c8c876ba849f26807713a inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
+<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
+<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5 inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
+<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
+<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
+<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00054"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
+<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7 inherit pub_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
 Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_a00047"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00047')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
-<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
+<tr class="inherit_header pro_methods_a00054"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00054')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
+<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
 bool </td><td class="memItemRight" valign="bottom"><b>is_writer</b> ()</td></tr>
-<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00047"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00047')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
-<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
-<a class="el" href="a00082.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
-<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00047"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00047"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
+<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b inherit pro_methods_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00054"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00054')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td></tr>
+<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
+<a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
+<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28 inherit pro_attribs_a00054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
 hashcode_t </td><td class="memItemRight" valign="bottom"><b>my_hash</b></td></tr>
-<tr class="separator:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00047"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a5034084f595666b47734f99a6eaefa9f inherit pro_attribs_a00054"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
@@ -135,7 +135,7 @@ class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::acce
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00011.html b/doc/html/a00011.html
index c8a0517..425b6e8 100644
--- a/doc/html/a00011.html
+++ b/doc/html/a00011.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::aggregator Class Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,90 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00011.html">aggregator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00011.html">accessor_not_used</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00352.html">List of all members</a>  </div>
+<a href="a00370.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator Class Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Basic aggregator interface.  
- <a href="a00011.html#details">More...</a></p>
-
-<p><code>#include <aggregator.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface6::aggregator:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00011.png" usemap="#tbb::interface6::aggregator_map" alt=""/>
-  <map id="tbb::interface6::aggregator_map" name="tbb::interface6::aggregator_map">
-<area href="a00012.html" alt="tbb::interface6::aggregator_ext< internal::basic_handler >" shape="rect" coords="0,0,335,24"/>
-</map>
- </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
-<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00011.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a> (const Body &b)</td></tr>
-<tr class="memdesc:aa7cc924b6f0d17578d61fd9002f59f84"><td class="mdescLeft"> </td><td class="mdescRight">BASIC INTERFACE: Enter a function for exclusvie execution by the aggregator.  <a href="#aa7cc924b6f0d17578d61fd9002f59f84">More...</a><br/></td></tr>
-<tr class="separator:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_methods_a00012"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00012')"><img src="closed.png" alt="-"/> Private Member Functions inherited from <a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td></tr>
-<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
- </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const <a class="el" href="a00018.html">internal::basic_handler</a> &h)</td></tr>
-<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00013.html">aggregator_operation</a> *op)</td></tr>
-<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.  <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
-<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00012"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00013.html">aggregator_operation</a> &op)</td></tr>
-<tr class="separator:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00012"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28b496c90f07e4557a6dfa5a8dd3f4e1"></a>
+void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
+<tr class="separator:a28b496c90f07e4557a6dfa5a8dd3f4e1"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Basic aggregator interface. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aa7cc924b6f0d17578d61fd9002f59f84"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Body > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::interface6::aggregator::execute </td>
-          <td>(</td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>b</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>BASIC INTERFACE: Enter a function for exclusvie execution by the aggregator. </p>
-<p>The calling thread stores the function object in a basic_operation and places the operation in the aggregator's mailbox </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>aggregator.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00011.png b/doc/html/a00011.png
deleted file mode 100644
index d78b2db..0000000
Binary files a/doc/html/a00011.png and /dev/null differ
diff --git a/doc/html/a00012.html b/doc/html/a00012.html
index 0795988..bfcd6a7 100644
--- a/doc/html/a00012.html
+++ b/doc/html/a00012.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::aggregator_ext< handler_type > Class Template Reference</title>
+<title>tbb::interface6::aggregator Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,94 +33,68 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00012.html">aggregator_ext</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00012.html">aggregator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="a00351.html">List of all members</a>  </div>
+<a href="a00390.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator_ext< handler_type > Class Template Reference</div>  </div>
+<div class="title">tbb::interface6::aggregator Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Aggregator base class and expert interface.  
+<p>Basic aggregator interface.  
  <a href="a00012.html#details">More...</a></p>
 
 <p><code>#include <aggregator.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::aggregator_ext< handler_type >:</div>
+Inheritance diagram for tbb::interface6::aggregator:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00012.png" usemap="#tbb::interface6::aggregator_ext< handler_type >_map" alt=""/>
-  <map id="tbb::interface6::aggregator_ext< handler_type >_map" name="tbb::interface6::aggregator_ext< handler_type >_map">
+  <img src="a00012.png" usemap="#tbb::interface6::aggregator_map" alt=""/>
+  <map id="tbb::interface6::aggregator_map" name="tbb::interface6::aggregator_map">
+<area href="a00013.html" alt="tbb::interface6::aggregator_ext< internal::basic_handler >" shape="rect" coords="0,0,335,24"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
- </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const handler_type &h)</td></tr>
-<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00013.html">aggregator_operation</a> *op)</td></tr>
-<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.  <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
-<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
+<tr class="memitem:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00012.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a> (const Body &b)</td></tr>
+<tr class="memdesc:aa7cc924b6f0d17578d61fd9002f59f84"><td class="mdescLeft"> </td><td class="mdescRight">BASIC INTERFACE: Enter a function for exclusive execution by the aggregator.  <a href="#aa7cc924b6f0d17578d61fd9002f59f84">More...</a><br/></td></tr>
+<tr class="separator:aa7cc924b6f0d17578d61fd9002f59f84"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ad376e5c31d10e885f33964592aa629d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00013.html">aggregator_operation</a> &op)</td></tr>
-<tr class="separator:ad376e5c31d10e885f33964592aa629d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_methods_a00013"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00013')"><img src="closed.png" alt="-"/> Private Member Functions inherited from <a class="el" href="a00013.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td></tr>
+<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
+ </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const <a class="el" href="a00021.html">internal::basic_handler</a> &h)</td></tr>
+<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4 inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00014.html">aggregator_operation</a> *op)</td></tr>
+<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00013"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.  <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
+<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7 inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00013"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00014.html">aggregator_operation</a> &op)</td></tr>
+<tr class="separator:ad376e5c31d10e885f33964592aa629d4 inherit pro_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename handler_type><br/>
-class tbb::interface6::aggregator_ext< handler_type ></h3>
-
-<p>Aggregator base class and expert interface. </p>
-<p>An aggregator for collecting operations coming from multiple sources and executing them serially on a single thread. </p>
+<div class="textblock"><p>Basic aggregator interface. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ad376e5c31d10e885f33964592aa629d4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename handler_type> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00012.html">tbb::interface6::aggregator_ext</a>< handler_type >::execute_impl </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00013.html">aggregator_operation</a> & </td>
-          <td class="paramname"><em>op</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Place operation in mailbox, then either handle mailbox or wait for the operation to be completed by a different thread. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae55b16ec6af204aa00d6a716fccec9f7"></a>
+<a class="anchor" id="aa7cc924b6f0d17578d61fd9002f59f84"></a>
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template<typename handler_type> </div>
+template<typename Body > </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void <a class="el" href="a00012.html">tbb::interface6::aggregator_ext</a>< handler_type >::process </td>
+          <td class="memname">void tbb::interface6::aggregator::execute </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="a00013.html">aggregator_operation</a> * </td>
-          <td class="paramname"><em>op</em>)</td><td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>b</em>)</td><td></td>
           <td></td>
         </tr>
       </table>
@@ -131,8 +105,8 @@ template<typename handler_type> </div>
 </table>
 </div><div class="memdoc">
 
-<p>EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. </p>
-<p>Details of user-made operations must be handled by user-provided handler </p>
+<p>BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. </p>
+<p>The calling thread stores the function object in a basic_operation and places the operation in the aggregator's mailbox </p>
 
 </div>
 </div>
@@ -142,7 +116,7 @@ template<typename handler_type> </div>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00012.png b/doc/html/a00012.png
index 75772ae..d78b2db 100644
Binary files a/doc/html/a00012.png and b/doc/html/a00012.png differ
diff --git a/doc/html/a00013.html b/doc/html/a00013.html
index 3a50329..79f34e5 100644
--- a/doc/html/a00013.html
+++ b/doc/html/a00013.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::aggregator_operation Class Reference</title>
+<title>tbb::interface6::aggregator_ext< handler_type > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,72 +33,94 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00013.html">aggregator_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00013.html">aggregator_ext</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00350.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00389.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator_operation Class Reference</div>  </div>
+<div class="title">tbb::interface6::aggregator_ext< handler_type > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Aggregator base class and expert interface.  
+ <a href="a00013.html#details">More...</a></p>
+
+<p><code>#include <aggregator.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::aggregator_operation:</div>
+Inheritance diagram for tbb::interface6::aggregator_ext< handler_type >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00013.png" usemap="#tbb::interface6::aggregator_operation_map" alt=""/>
-  <map id="tbb::interface6::aggregator_operation_map" name="tbb::interface6::aggregator_operation_map">
-<area href="a00020.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
-<area href="a00019.html" alt="tbb::interface6::internal::basic_operation< Body >" shape="rect" coords="0,112,289,136"/>
+  <img src="a00013.png" usemap="#tbb::interface6::aggregator_ext< handler_type >_map" alt=""/>
+  <map id="tbb::interface6::aggregator_ext< handler_type >_map" name="tbb::interface6::aggregator_ext< handler_type >_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
-<b>agg_finished</b>
- }</td></tr>
-<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:adc0e032aa604f1da85ffc7ec269b157f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc0e032aa604f1da85ffc7ec269b157f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a> ()</td></tr>
-<tr class="memdesc:adc0e032aa604f1da85ffc7ec269b157f"><td class="mdescLeft"> </td><td class="mdescRight">Call start before handling this operation. <br/></td></tr>
-<tr class="separator:adc0e032aa604f1da85ffc7ec269b157f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7edadfe74f475783f3b429904e7010a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a> ()</td></tr>
-<tr class="memdesc:ac7edadfe74f475783f3b429904e7010a"><td class="mdescLeft"> </td><td class="mdescRight">Call finish when done handling this operation.  <a href="#ac7edadfe74f475783f3b429904e7010a">More...</a><br/></td></tr>
-<tr class="separator:ac7edadfe74f475783f3b429904e7010a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbce3d13545770501b54df153bf1e690"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbce3d13545770501b54df153bf1e690"></a>
-<a class="el" href="a00013.html">aggregator_operation</a> * </td><td class="memItemRight" valign="bottom"><b>next</b> ()</td></tr>
-<tr class="separator:acbce3d13545770501b54df153bf1e690"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cf9fad0ca21da61b83325a50e17d0b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_next</b> (<a class="el" href="a00013.html">aggregator_operation</a> *n)</td></tr>
-<tr class="separator:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae120a21264cc1ea0a9cfafaa0634e4"></a>
+ </td><td class="memItemRight" valign="bottom"><b>aggregator_ext</b> (const handler_type &h)</td></tr>
+<tr class="separator:a8ae120a21264cc1ea0a9cfafaa0634e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a> (<a class="el" href="a00014.html">aggregator_operation</a> *op)</td></tr>
+<tr class="memdesc:ae55b16ec6af204aa00d6a716fccec9f7"><td class="mdescLeft"> </td><td class="mdescRight">EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.  <a href="#ae55b16ec6af204aa00d6a716fccec9f7">More...</a><br/></td></tr>
+<tr class="separator:ae55b16ec6af204aa00d6a716fccec9f7"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f6e7d315f893b1b66d06ffdad12038e"></a>
-template<typename handler_type > </td></tr>
-<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>aggregator_ext</b></td></tr>
-<tr class="separator:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:ad376e5c31d10e885f33964592aa629d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a> (<a class="el" href="a00014.html">aggregator_operation</a> &op)</td></tr>
+<tr class="separator:ad376e5c31d10e885f33964592aa629d4"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ac7edadfe74f475783f3b429904e7010a"></a>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename handler_type><br/>
+class tbb::interface6::aggregator_ext< handler_type ></h3>
+
+<p>Aggregator base class and expert interface. </p>
+<p>An aggregator for collecting operations coming from multiple sources and executing them serially on a single thread. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ad376e5c31d10e885f33964592aa629d4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename handler_type> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00013.html">tbb::interface6::aggregator_ext</a>< handler_type >::execute_impl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00014.html">aggregator_operation</a> & </td>
+          <td class="paramname"><em>op</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Place operation in mailbox, then either handle mailbox or wait for the operation to be completed by a different thread. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae55b16ec6af204aa00d6a716fccec9f7"></a>
 <div class="memitem">
 <div class="memproto">
+<div class="memtemplate">
+template<typename handler_type> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void tbb::interface6::aggregator_operation::finish </td>
+          <td class="memname">void <a class="el" href="a00013.html">tbb::interface6::aggregator_ext</a>< handler_type >::process </td>
           <td>(</td>
-          <td class="paramname">)</td><td></td>
+          <td class="paramtype"><a class="el" href="a00014.html">aggregator_operation</a> * </td>
+          <td class="paramname"><em>op</em>)</td><td></td>
           <td></td>
         </tr>
       </table>
@@ -109,8 +131,8 @@ template<typename handler_type > </td></tr>
 </table>
 </div><div class="memdoc">
 
-<p>Call finish when done handling this operation. </p>
-<p>The operation will be released to its originating thread, and possibly deleted. </p>
+<p>EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. </p>
+<p>Details of user-made operations must be handled by user-provided handler </p>
 
 </div>
 </div>
@@ -120,7 +142,7 @@ template<typename handler_type > </td></tr>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00013.png b/doc/html/a00013.png
index 70eef83..75772ae 100644
Binary files a/doc/html/a00013.png and b/doc/html/a00013.png differ
diff --git a/doc/html/a00014.html b/doc/html/a00014.html
index bf6806d..77a5594 100644
--- a/doc/html/a00014.html
+++ b/doc/html/a00014.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::aligned_space< T, N > Class Template Reference</title>
+<title>tbb::interface6::aggregator_operation Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,47 +33,94 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00014.html">aligned_space</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00014.html">aggregator_operation</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00244.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00388.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::aligned_space< T, N > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::interface6::aggregator_operation Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Block of space aligned sufficiently to construct an array T with N elements.  
- <a href="a00014.html#details">More...</a></p>
-
-<p><code>#include <aligned_space.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface6::aggregator_operation:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00014.png" usemap="#tbb::interface6::aggregator_operation_map" alt=""/>
+  <map id="tbb::interface6::aggregator_operation_map" name="tbb::interface6::aggregator_operation_map">
+<area href="a00023.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
+<area href="a00022.html" alt="tbb::interface6::internal::basic_operation< Body >" shape="rect" coords="0,112,289,136"/>
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
+<b>agg_finished</b>
+ }</td></tr>
+<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3525dbbac0d4eaedfe18bc57b7760857"></a>
-T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">begin</a> ()</td></tr>
-<tr class="memdesc:a3525dbbac0d4eaedfe18bc57b7760857"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to beginning of array. <br/></td></tr>
-<tr class="separator:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae95620e1159984a2670bd418ed4748d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae95620e1159984a2670bd418ed4748d0"></a>
-T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ae95620e1159984a2670bd418ed4748d0">end</a> ()</td></tr>
-<tr class="memdesc:ae95620e1159984a2670bd418ed4748d0"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to one past last element in array. <br/></td></tr>
-<tr class="separator:ae95620e1159984a2670bd418ed4748d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc0e032aa604f1da85ffc7ec269b157f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc0e032aa604f1da85ffc7ec269b157f"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">start</a> ()</td></tr>
+<tr class="memdesc:adc0e032aa604f1da85ffc7ec269b157f"><td class="mdescLeft"> </td><td class="mdescRight">Call start before handling this operation. <br/></td></tr>
+<tr class="separator:adc0e032aa604f1da85ffc7ec269b157f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac7edadfe74f475783f3b429904e7010a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">finish</a> ()</td></tr>
+<tr class="memdesc:ac7edadfe74f475783f3b429904e7010a"><td class="mdescLeft"> </td><td class="mdescRight">Call finish when done handling this operation.  <a href="#ac7edadfe74f475783f3b429904e7010a">More...</a><br/></td></tr>
+<tr class="separator:ac7edadfe74f475783f3b429904e7010a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbce3d13545770501b54df153bf1e690"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbce3d13545770501b54df153bf1e690"></a>
+<a class="el" href="a00014.html">aggregator_operation</a> * </td><td class="memItemRight" valign="bottom"><b>next</b> ()</td></tr>
+<tr class="separator:acbce3d13545770501b54df153bf1e690"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cf9fad0ca21da61b83325a50e17d0b"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_next</b> (<a class="el" href="a00014.html">aggregator_operation</a> *n)</td></tr>
+<tr class="separator:a03cf9fad0ca21da61b83325a50e17d0b"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f6e7d315f893b1b66d06ffdad12038e"></a>
+template<typename handler_type > </td></tr>
+<tr class="memitem:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>aggregator_ext</b></td></tr>
+<tr class="separator:a7f6e7d315f893b1b66d06ffdad12038e"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ac7edadfe74f475783f3b429904e7010a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface6::aggregator_operation::finish </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, size_t N><br/>
-class tbb::aligned_space< T, N ></h3>
+</div><div class="memdoc">
 
-<p>Block of space aligned sufficiently to construct an array T with N elements. </p>
-<p>The elements are not constructed or destroyed by this class. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>aligned_space.h</li>
+<p>Call finish when done handling this operation. </p>
+<p>The operation will be released to its originating thread, and possibly deleted. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>aggregator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00013.png b/doc/html/a00014.png
similarity index 100%
copy from doc/html/a00013.png
copy to doc/html/a00014.png
diff --git a/doc/html/a00015.html b/doc/html/a00015.html
index ee605ad..c952cc4 100644
--- a/doc/html/a00015.html
+++ b/doc/html/a00015.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::atomic< T > Struct Template Reference</title>
+<title>tbb::aligned_space< T, N > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,56 +33,47 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00015.html">atomic</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00015.html">aligned_space</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00245.html">List of all members</a>  </div>
+<a href="a00264.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::atomic< T > Struct Template Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::aligned_space< T, N > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Primary template for atomic.  
+<p>Block of space aligned sufficiently to construct an array T with N elements.  
  <a href="a00015.html#details">More...</a></p>
 
-<p><code>#include <atomic.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::atomic< T >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00015.png" usemap="#tbb::atomic< T >_map" alt=""/>
-  <map id="tbb::atomic< T >_map" name="tbb::atomic< T >_map">
-</map>
- </div></div>
+<p><code>#include <aligned_space.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8624826901f5a3267853386bf880bd88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8624826901f5a3267853386bf880bd88"></a>
-constexpr </td><td class="memItemRight" valign="bottom"><b>atomic</b> (T arg)</td></tr>
-<tr class="separator:a8624826901f5a3267853386bf880bd88"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5942feb81281f810edddc61a48dd7a39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5942feb81281f810edddc61a48dd7a39"></a>
-T </td><td class="memItemRight" valign="bottom"><b>operator=</b> (T rhs)</td></tr>
-<tr class="separator:a5942feb81281f810edddc61a48dd7a39"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d65b6cae3bd11c79a8e51e25055be52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d65b6cae3bd11c79a8e51e25055be52"></a>
-<a class="el" href="a00015.html">atomic</a>< T > & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00015.html">atomic</a>< T > &rhs)</td></tr>
-<tr class="separator:a7d65b6cae3bd11c79a8e51e25055be52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3525dbbac0d4eaedfe18bc57b7760857"></a>
+T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">begin</a> ()</td></tr>
+<tr class="memdesc:a3525dbbac0d4eaedfe18bc57b7760857"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to beginning of array. <br/></td></tr>
+<tr class="separator:a3525dbbac0d4eaedfe18bc57b7760857"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae95620e1159984a2670bd418ed4748d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae95620e1159984a2670bd418ed4748d0"></a>
+T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html#ae95620e1159984a2670bd418ed4748d0">end</a> ()</td></tr>
+<tr class="memdesc:ae95620e1159984a2670bd418ed4748d0"><td class="mdescLeft"> </td><td class="mdescRight">Pointer to one past last element in array. <br/></td></tr>
+<tr class="separator:ae95620e1159984a2670bd418ed4748d0"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-struct tbb::atomic< T ></h3>
+<div class="textblock"><h3>template<typename T, size_t N = 1><br/>
+class tbb::aligned_space< T, N ></h3>
 
-<p>Primary template for atomic. </p>
-<p>See the Reference for details. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>atomic.h</li>
+<p>Block of space aligned sufficiently to construct an array T with N elements. </p>
+<p>The elements are not constructed or destroyed by this class. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>aligned_space.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00016.html b/doc/html/a00016.html
index abea826..758a042 100644
--- a/doc/html/a00016.html
+++ b/doc/html/a00016.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::atomic< void * > Struct Template Reference</title>
+<title>tbb::flow::interface7::internal::async_gateway< Output > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,55 +33,64 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00016.html">atomic< void * ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00016.html">async_gateway</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00246.html">List of all members</a>  </div>
+<a href="a00367.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::atomic< void * > Struct Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::internal::async_gateway< Output > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->.  
+<p>Pure virtual template class that defines interface for async communication.  
  <a href="a00016.html#details">More...</a></p>
 
-<p><code>#include <atomic.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::atomic< void * >:</div>
+Inheritance diagram for tbb::flow::interface7::internal::async_gateway< Output >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00016.png" usemap="#tbb::atomic< void * >_map" alt=""/>
-  <map id="tbb::atomic< void * >_map" name="tbb::atomic< void * >_map">
+  <img src="a00016.png" usemap="#tbb::flow::interface7::internal::async_gateway< Output >_map" alt=""/>
+  <map id="tbb::flow::interface7::internal::async_gateway< Output >_map" name="tbb::flow::interface7::internal::async_gateway< Output >_map">
+<area href="a00017.html" title="Implements a async node. " alt="tbb::flow::interface7::async_node< Input, Output, Allocator >" shape="rect" coords="0,56,353,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a9c71a50d231f333cfa20d01a90aadabb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c71a50d231f333cfa20d01a90aadabb"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a9c71a50d231f333cfa20d01a90aadabb"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a744970055554db56a922b83dd1125dcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a744970055554db56a922b83dd1125dcf"></a>
-constexpr </td><td class="memItemRight" valign="bottom"><b>atomic</b> (void *arg)</td></tr>
-<tr class="separator:a744970055554db56a922b83dd1125dcf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3da2906b224154d9961054f07b2e310b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3da2906b224154d9961054f07b2e310b"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator=</b> (void *rhs)</td></tr>
-<tr class="separator:a3da2906b224154d9961054f07b2e310b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cb22d05fe655337f6129dc8f3ab6783"></a>
-<a class="el" href="a00015.html">atomic</a>< void * > & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00015.html">atomic</a>< void * > &rhs)</td></tr>
-<tr class="separator:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a308f7feb8ac2fc3b7cbcf4e5246e78a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a308f7feb8ac2fc3b7cbcf4e5246e78a2"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html#a308f7feb8ac2fc3b7cbcf4e5246e78a2">async_try_put</a> (const output_type &i)=0</td></tr>
+<tr class="memdesc:a308f7feb8ac2fc3b7cbcf4e5246e78a2"><td class="mdescLeft"> </td><td class="mdescRight">Submit signal from Async Activity to FG. <br/></td></tr>
+<tr class="separator:a308f7feb8ac2fc3b7cbcf4e5246e78a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4f050c912d54e3de4f3bea8f1575f9c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f050c912d54e3de4f3bea8f1575f9c4"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>async_reserve</b> ()=0</td></tr>
+<tr class="separator:a4f050c912d54e3de4f3bea8f1575f9c4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a31ef0c4d0871f20c925fc993ef2ba29e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31ef0c4d0871f20c925fc993ef2ba29e"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>async_commit</b> ()=0</td></tr>
+<tr class="separator:a31ef0c4d0871f20c925fc993ef2ba29e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<><br/>
-struct tbb::atomic< void * ></h3>
+<div class="textblock"><h3>template<typename Output><br/>
+class tbb::flow::interface7::internal::async_gateway< Output ></h3>
 
-<p>Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>atomic.h</li>
+<p>Pure virtual template class that defines interface for async communication. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00016.png b/doc/html/a00016.png
index c5aaf08..dcd4220 100644
Binary files a/doc/html/a00016.png and b/doc/html/a00016.png differ
diff --git a/doc/html/a00017.html b/doc/html/a00017.html
index 25f6deb..b975dac 100644
--- a/doc/html/a00017.html
+++ b/doc/html/a00017.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::bad_last_alloc Class Reference</title>
+<title>tbb::flow::interface7::async_node< Input, Output, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,163 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00017.html">bad_last_alloc</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00017.html">async_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00297.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00365.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::bad_last_alloc Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::async_node< Input, Output, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Exception for concurrent containers.  
+<p>Implements a async node.  
  <a href="a00017.html#details">More...</a></p>
 
-<p><code>#include <tbb_exception.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::bad_last_alloc:</div>
+Inheritance diagram for tbb::flow::interface7::async_node< Input, Output, Allocator >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00017.png" usemap="#tbb::bad_last_alloc_map" alt=""/>
-  <map id="tbb::bad_last_alloc_map" name="tbb::bad_last_alloc_map">
+  <img src="a00017.png" usemap="#tbb::flow::interface7::async_node< Input, Output, Allocator >_map" alt=""/>
+  <map id="tbb::flow::interface7::async_node< Input, Output, Allocator >_map" name="tbb::flow::interface7::async_node< Input, Output, Allocator >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,445,80"/>
+<area href="a00016.html" title="Pure virtual template class that defines interface for async communication. " alt="tbb::flow::interface7::internal::async_gateway< Output >" shape="rect" coords="1365,56,1810,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a4fc13761259543a0ba2891c81d9ad85c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4fc13761259543a0ba2891c81d9ad85c"></a>
+typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a4fc13761259543a0ba2891c81d9ad85c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af8d828e55a967eba0f7c87bd37f24fc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8d828e55a967eba0f7c87bd37f24fc2"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:af8d828e55a967eba0f7c87bd37f24fc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac55df9e53ac2a08f9a05096adee713de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac55df9e53ac2a08f9a05096adee713de"></a>
+typedef <a class="el" href="a00017.html">async_node</a>< input_type, <br class="typebreak"/>
+output_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
+<tr class="separator:ac55df9e53ac2a08f9a05096adee713de"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af83684552df56da26be101d82b2b2e4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af83684552df56da26be101d82b2b2e4e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< input_type > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:af83684552df56da26be101d82b2b2e4e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0ded9c0369d0f216d0f980082a20b14b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ded9c0369d0f216d0f980082a20b14b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a0ded9c0369d0f216d0f980082a20b14b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2b0a312fe56e7b8caec9a600e9cfe0e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b0a312fe56e7b8caec9a600e9cfe0e3"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00016.html">internal::async_gateway</a><br class="typebreak"/>
+< output_type > </td><td class="memItemRight" valign="bottom"><b>async_gateway_type</b></td></tr>
+<tr class="separator:a2b0a312fe56e7b8caec9a600e9cfe0e3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1485a4390d2c815ce82d032b97e31035"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1485a4390d2c815ce82d032b97e31035"></a>
+typedef internal::async_input<br class="typebreak"/>
+< input_type, Allocator, <br class="typebreak"/>
+<a class="el" href="a00016.html">async_gateway_type</a> > </td><td class="memItemRight" valign="bottom"><b>async_input_type</b></td></tr>
+<tr class="separator:a1485a4390d2c815ce82d032b97e31035"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21aeeb8c7637c8de061c580054cf6c88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21aeeb8c7637c8de061c580054cf6c88"></a>
+typedef <br class="typebreak"/>
+internal::function_output<br class="typebreak"/>
+< output_type > </td><td class="memItemRight" valign="bottom"><b>async_output_type</b></td></tr>
+<tr class="separator:a21aeeb8c7637c8de061c580054cf6c88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00016"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00016')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td></tr>
+<tr class="memitem:a9c71a50d231f333cfa20d01a90aadabb inherit pub_types_a00016"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c71a50d231f333cfa20d01a90aadabb"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a9c71a50d231f333cfa20d01a90aadabb inherit pub_types_a00016"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a3dd95f1a9f15f50eed6a79c079b25d32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3dd95f1a9f15f50eed6a79c079b25d32"></a>
-const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-<tr class="separator:a3dd95f1a9f15f50eed6a79c079b25d32"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea2575eeaf4b1cc483d4d9854b47e823"><td class="memTemplParams" colspan="2"><a class="anchor" id="aea2575eeaf4b1cc483d4d9854b47e823"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:aea2575eeaf4b1cc483d4d9854b47e823"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00017.html#aea2575eeaf4b1cc483d4d9854b47e823">async_node</a> (<a class="el" href="a00070.html">graph</a> &g, Body body)</td></tr>
+<tr class="memdesc:aea2575eeaf4b1cc483d4d9854b47e823"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:aea2575eeaf4b1cc483d4d9854b47e823"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a941e58ff009aa492f1f011947f7b04ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a941e58ff009aa492f1f011947f7b04ac"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a941e58ff009aa492f1f011947f7b04ac">async_node</a> (const <a class="el" href="a00017.html">async_node</a> &src)</td></tr>
+<tr class="memdesc:a941e58ff009aa492f1f011947f7b04ac"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a941e58ff009aa492f1f011947f7b04ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39bcb91daab4ab2cb7e10efdd0b53083"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39bcb91daab4ab2cb7e10efdd0b53083"></a>
+<a class="el" href="a00016.html">async_gateway_type</a> & </td><td class="memItemRight" valign="bottom"><b>async_gateway</b> ()</td></tr>
+<tr class="separator:a39bcb91daab4ab2cb7e10efdd0b53083"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a190dde1c28070d20b9f676bcf0483ff4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a190dde1c28070d20b9f676bcf0483ff4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a190dde1c28070d20b9f676bcf0483ff4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a30804bd6f6ea4bd4611a5121dceec431"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30804bd6f6ea4bd4611a5121dceec431"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a30804bd6f6ea4bd4611a5121dceec431"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa0294c77649650f10771878a49dcaf4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0294c77649650f10771878a49dcaf4f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:aa0294c77649650f10771878a49dcaf4f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a24ff97d714cfc37251d6abc1fb97976e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24ff97d714cfc37251d6abc1fb97976e"></a>
+<a class="el" href="a00027.html">internal::broadcast_cache</a><br class="typebreak"/>
+< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
+<tr class="separator:a24ff97d714cfc37251d6abc1fb97976e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a565f12fc3ce62a14156398c94f401d9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a565f12fc3ce62a14156398c94f401d9c"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a565f12fc3ce62a14156398c94f401d9c">async_try_put</a> (const output_type &i)</td></tr>
+<tr class="memdesc:a565f12fc3ce62a14156398c94f401d9c"><td class="mdescLeft"> </td><td class="mdescRight">Submit signal from Async Activity to FG. <br/></td></tr>
+<tr class="separator:a565f12fc3ce62a14156398c94f401d9c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a06cc7f5c86f0ead4e602a24e799ad66a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06cc7f5c86f0ead4e602a24e799ad66a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>async_reserve</b> ()</td></tr>
+<tr class="separator:a06cc7f5c86f0ead4e602a24e799ad66a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1705bc756636004e615b26d857dac72f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1705bc756636004e615b26d857dac72f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>async_commit</b> ()</td></tr>
+<tr class="separator:a1705bc756636004e615b26d857dac72f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception for concurrent containers. </p>
+<div class="textblock"><h3>template<typename Input, typename Output, typename Allocator = cache_aligned_allocator<Input>><br/>
+class tbb::flow::interface7::async_node< Input, Output, Allocator ></h3>
+
+<p>Implements a async node. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00017.png b/doc/html/a00017.png
index 6cb758a..4b8b148 100644
Binary files a/doc/html/a00017.png and b/doc/html/a00017.png differ
diff --git a/doc/html/a00018.html b/doc/html/a00018.html
index 814977b..6433fa4 100644
--- a/doc/html/a00018.html
+++ b/doc/html/a00018.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::internal::basic_handler Class Reference</title>
+<title>tbb::atomic< T > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,56 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00018.html">basic_handler</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00018.html">atomic</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00368.html">List of all members</a>  </div>
+<a href="a00265.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_handler Class Reference</div>  </div>
+<div class="title">tbb::atomic< T > Struct Template Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Primary template for atomic.  
+ <a href="a00018.html#details">More...</a></p>
+
+<p><code>#include <atomic.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::atomic< T >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00018.png" usemap="#tbb::atomic< T >_map" alt=""/>
+  <map id="tbb::atomic< T >_map" name="tbb::atomic< T >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb0dec67968e9abdabb5a0e3ec8064a4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (<a class="el" href="a00013.html">aggregator_operation</a> *op_list) const </td></tr>
-<tr class="separator:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8624826901f5a3267853386bf880bd88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8624826901f5a3267853386bf880bd88"></a>
+constexpr </td><td class="memItemRight" valign="bottom"><b>atomic</b> (T arg)</td></tr>
+<tr class="separator:a8624826901f5a3267853386bf880bd88"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5942feb81281f810edddc61a48dd7a39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5942feb81281f810edddc61a48dd7a39"></a>
+T </td><td class="memItemRight" valign="bottom"><b>operator=</b> (T rhs)</td></tr>
+<tr class="separator:a5942feb81281f810edddc61a48dd7a39"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7d65b6cae3bd11c79a8e51e25055be52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d65b6cae3bd11c79a8e51e25055be52"></a>
+<a class="el" href="a00018.html">atomic</a>< T > & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00018.html">atomic</a>< T > &rhs)</td></tr>
+<tr class="separator:a7d65b6cae3bd11c79a8e51e25055be52"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>aggregator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T><br/>
+struct tbb::atomic< T ></h3>
+
+<p>Primary template for atomic. </p>
+<p>See the Reference for details. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>atomic.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00015.png b/doc/html/a00018.png
similarity index 100%
rename from doc/html/a00015.png
rename to doc/html/a00018.png
diff --git a/doc/html/a00019.html b/doc/html/a00019.html
index 2c77b97..d5ff5f3 100644
--- a/doc/html/a00019.html
+++ b/doc/html/a00019.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::internal::basic_operation< Body > Class Template Reference</title>
+<title>tbb::atomic< void * > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,49 +33,55 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00019.html">basic_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00019.html">atomic< void * ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00367.html">List of all members</a>  </div>
+<a href="a00266.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_operation< Body > Class Template Reference</div>  </div>
+<div class="title">tbb::atomic< void * > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Specialization for <a class="el" href="a00019.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->.  
+ <a href="a00019.html#details">More...</a></p>
+
+<p><code>#include <atomic.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::internal::basic_operation< Body >:</div>
+Inheritance diagram for tbb::atomic< void * >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00019.png" usemap="#tbb::interface6::internal::basic_operation< Body >_map" alt=""/>
-  <map id="tbb::interface6::internal::basic_operation< Body >_map" name="tbb::interface6::internal::basic_operation< Body >_map">
-<area href="a00020.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
-<area href="a00013.html" alt="tbb::interface6::aggregator_operation" shape="rect" coords="0,0,289,24"/>
+  <img src="a00019.png" usemap="#tbb::atomic< void * >_map" alt=""/>
+  <map id="tbb::atomic< void * >_map" name="tbb::atomic< void * >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:adf48b2339f7de2f002c24c8951a03057"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf48b2339f7de2f002c24c8951a03057"></a>
- </td><td class="memItemRight" valign="bottom"><b>basic_operation</b> (const Body &b)</td></tr>
-<tr class="separator:adf48b2339f7de2f002c24c8951a03057"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_types_a00013"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00013')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td></tr>
-<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
-<b>agg_finished</b>
- }</td></tr>
-<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a744970055554db56a922b83dd1125dcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a744970055554db56a922b83dd1125dcf"></a>
+constexpr </td><td class="memItemRight" valign="bottom"><b>atomic</b> (void *arg)</td></tr>
+<tr class="separator:a744970055554db56a922b83dd1125dcf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3da2906b224154d9961054f07b2e310b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3da2906b224154d9961054f07b2e310b"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator=</b> (void *rhs)</td></tr>
+<tr class="separator:a3da2906b224154d9961054f07b2e310b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cb22d05fe655337f6129dc8f3ab6783"></a>
+<a class="el" href="a00018.html">atomic</a>< void * > & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00018.html">atomic</a>< void * > &rhs)</td></tr>
+<tr class="separator:a8cb22d05fe655337f6129dc8f3ab6783"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>aggregator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<><br/>
+struct tbb::atomic< void * ></h3>
+
+<p>Specialization for <a class="el" href="a00019.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>atomic.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00019.png b/doc/html/a00019.png
index cadf33a..c5aaf08 100644
Binary files a/doc/html/a00019.png and b/doc/html/a00019.png differ
diff --git a/doc/html/a00020.html b/doc/html/a00020.html
index 09d6520..b231bd7 100644
--- a/doc/html/a00020.html
+++ b/doc/html/a00020.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::internal::basic_operation_base Class Reference</title>
+<title>tbb::bad_last_alloc Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,63 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00020.html">basic_operation_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00020.html">bad_last_alloc</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#friends">Friends</a> |
-<a href="a00366.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00318.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_operation_base Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::bad_last_alloc Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Exception for concurrent containers.  
+ <a href="a00020.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::internal::basic_operation_base:</div>
+Inheritance diagram for tbb::bad_last_alloc:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00020.png" usemap="#tbb::interface6::internal::basic_operation_base_map" alt=""/>
-  <map id="tbb::interface6::internal::basic_operation_base_map" name="tbb::interface6::internal::basic_operation_base_map">
-<area href="a00013.html" alt="tbb::interface6::aggregator_operation" shape="rect" coords="0,0,289,24"/>
-<area href="a00019.html" alt="tbb::interface6::internal::basic_operation< Body >" shape="rect" coords="0,112,289,136"/>
+  <img src="a00020.png" usemap="#tbb::bad_last_alloc_map" alt=""/>
+  <map id="tbb::bad_last_alloc_map" name="tbb::bad_last_alloc_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afe66260da7455bea5b701a3d8a537ba7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe66260da7455bea5b701a3d8a537ba7"></a>
-class </td><td class="memItemRight" valign="bottom"><b>basic_handler</b></td></tr>
-<tr class="separator:afe66260da7455bea5b701a3d8a537ba7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pub_types_a00013"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00013')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td></tr>
-<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
-<b>agg_finished</b>
- }</td></tr>
-<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00013"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00013"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00013')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td></tr>
-<tr class="memitem:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc0e032aa604f1da85ffc7ec269b157f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a> ()</td></tr>
-<tr class="memdesc:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00013"><td class="mdescLeft"> </td><td class="mdescRight">Call start before handling this operation. <br/></td></tr>
-<tr class="separator:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a> ()</td></tr>
-<tr class="memdesc:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00013"><td class="mdescLeft"> </td><td class="mdescRight">Call finish when done handling this operation.  <a href="#ac7edadfe74f475783f3b429904e7010a">More...</a><br/></td></tr>
-<tr class="separator:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbce3d13545770501b54df153bf1e690 inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbce3d13545770501b54df153bf1e690"></a>
-<a class="el" href="a00013.html">aggregator_operation</a> * </td><td class="memItemRight" valign="bottom"><b>next</b> ()</td></tr>
-<tr class="separator:acbce3d13545770501b54df153bf1e690 inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03cf9fad0ca21da61b83325a50e17d0b inherit pub_methods_a00013"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cf9fad0ca21da61b83325a50e17d0b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_next</b> (<a class="el" href="a00013.html">aggregator_operation</a> *n)</td></tr>
-<tr class="separator:a03cf9fad0ca21da61b83325a50e17d0b inherit pub_methods_a00013"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a3dd95f1a9f15f50eed6a79c079b25d32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3dd95f1a9f15f50eed6a79c079b25d32"></a>
+const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+<tr class="separator:a3dd95f1a9f15f50eed6a79c079b25d32"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>aggregator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception for concurrent containers. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00020.png b/doc/html/a00020.png
index 0f94299..6cb758a 100644
Binary files a/doc/html/a00020.png and b/doc/html/a00020.png differ
diff --git a/doc/html/a00021.html b/doc/html/a00021.html
index 4dbefc9..c1eb956 100644
--- a/doc/html/a00021.html
+++ b/doc/html/a00021.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::blocked_range< Value > Class Template Reference</title>
+<title>tbb::interface6::internal::basic_handler Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,240 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00021.html">blocked_range</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00021.html">basic_handler</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00247.html">List of all members</a>  </div>
+<a href="a00406.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::blocked_range< Value > Class Template Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::interface6::internal::basic_handler Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A range over which to iterate.  
- <a href="a00021.html#details">More...</a></p>
-
-<p><code>#include <blocked_range.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:ad56ca70af46acf8870b4970d8a809791"><td class="memItemLeft" align="right" valign="top">typedef Value </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a></td></tr>
-<tr class="memdesc:ad56ca70af46acf8870b4970d8a809791"><td class="mdescLeft"> </td><td class="mdescRight">Type of a value.  <a href="#ad56ca70af46acf8870b4970d8a809791">More...</a><br/></td></tr>
-<tr class="separator:ad56ca70af46acf8870b4970d8a809791"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a89b300cecd9d617e4ee801c786756e55"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89b300cecd9d617e4ee801c786756e55"></a>
-typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a></td></tr>
-<tr class="memdesc:a89b300cecd9d617e4ee801c786756e55"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of a range. <br/></td></tr>
-<tr class="separator:a89b300cecd9d617e4ee801c786756e55"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#aad176ab2cbd0bd73c3c2065761af3ccc">blocked_range</a> ()</td></tr>
-<tr class="memdesc:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="mdescLeft"> </td><td class="mdescRight">Construct range with default-constructed values for begin and end.  <a href="#aad176ab2cbd0bd73c3c2065761af3ccc">More...</a><br/></td></tr>
-<tr class="separator:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49a97576004711b7159170fcaf488e4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49a97576004711b7159170fcaf488e4e"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a49a97576004711b7159170fcaf488e4e">blocked_range</a> (Value begin_, Value end_, <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> grainsize_=1)</td></tr>
-<tr class="memdesc:a49a97576004711b7159170fcaf488e4e"><td class="mdescLeft"> </td><td class="mdescRight">Construct range over half-open interval [begin,end), with the given grainsize. <br/></td></tr>
-<tr class="separator:a49a97576004711b7159170fcaf488e4e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae225fa10454b0fa33533dfb56f5060a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae225fa10454b0fa33533dfb56f5060a2"></a>
-<a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2">begin</a> () const </td></tr>
-<tr class="memdesc:ae225fa10454b0fa33533dfb56f5060a2"><td class="mdescLeft"> </td><td class="mdescRight">Beginning of range. <br/></td></tr>
-<tr class="separator:ae225fa10454b0fa33533dfb56f5060a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99f829599d3e51b181a30b4cd57b06c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99f829599d3e51b181a30b4cd57b06c6"></a>
-<a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6">end</a> () const </td></tr>
-<tr class="memdesc:a99f829599d3e51b181a30b4cd57b06c6"><td class="mdescLeft"> </td><td class="mdescRight">One past last value in range. <br/></td></tr>
-<tr class="separator:a99f829599d3e51b181a30b4cd57b06c6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a347ef8caa40edca3b7f475f182281140"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a347ef8caa40edca3b7f475f182281140">size</a> () const </td></tr>
-<tr class="memdesc:a347ef8caa40edca3b7f475f182281140"><td class="mdescLeft"> </td><td class="mdescRight">Size of the range.  <a href="#a347ef8caa40edca3b7f475f182281140">More...</a><br/></td></tr>
-<tr class="separator:a347ef8caa40edca3b7f475f182281140"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab408f3cf90c85fa9203df5641a2f9bb1"></a>
-<a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ab408f3cf90c85fa9203df5641a2f9bb1">grainsize</a> () const </td></tr>
-<tr class="memdesc:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="mdescLeft"> </td><td class="mdescRight">The grain size for this range. <br/></td></tr>
-<tr class="separator:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59dec03416b3fefbf69600f798177710"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59dec03416b3fefbf69600f798177710"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a59dec03416b3fefbf69600f798177710">empty</a> () const </td></tr>
-<tr class="memdesc:a59dec03416b3fefbf69600f798177710"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
-<tr class="separator:a59dec03416b3fefbf69600f798177710"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">is_divisible</a> () const </td></tr>
-<tr class="memdesc:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible.  <a href="#ad90ad1db0d4d9a301ef1c9e17712e8a0">More...</a><br/></td></tr>
-<tr class="separator:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a75cae12286f4d5492970ea630a9783b9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a75cae12286f4d5492970ea630a9783b9">blocked_range</a> (<a class="el" href="a00021.html">blocked_range</a> &r, <a class="el" href="a00129.html">split</a>)</td></tr>
-<tr class="memdesc:a75cae12286f4d5492970ea630a9783b9"><td class="mdescLeft"> </td><td class="mdescRight">Split range.  <a href="#a75cae12286f4d5492970ea630a9783b9">More...</a><br/></td></tr>
-<tr class="separator:a75cae12286f4d5492970ea630a9783b9"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:aa504612e6c1ba07b8846bcd323847680"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa504612e6c1ba07b8846bcd323847680"></a>
-template<typename RowValue , typename ColValue > </td></tr>
-<tr class="memitem:aa504612e6c1ba07b8846bcd323847680"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>blocked_range2d</b></td></tr>
-<tr class="separator:aa504612e6c1ba07b8846bcd323847680"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a83f67fe3b421dbaeee9040aae730d5e8"></a>
-template<typename RowValue , typename ColValue , typename PageValue > </td></tr>
-<tr class="memitem:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>blocked_range3d</b></td></tr>
-<tr class="separator:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb0dec67968e9abdabb5a0e3ec8064a4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator()</b> (<a class="el" href="a00014.html">aggregator_operation</a> *op_list) const </td></tr>
+<tr class="separator:afb0dec67968e9abdabb5a0e3ec8064a4"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Value><br/>
-class tbb::blocked_range< Value ></h3>
-
-<p>A range over which to iterate. </p>
-</div><h2 class="groupheader">Member Typedef Documentation</h2>
-<a class="anchor" id="ad56ca70af46acf8870b4970d8a809791"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Value> </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef Value <a class="el" href="a00021.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Type of a value. </p>
-<p>Called a const_iterator for sake of algorithms that need to treat a <a class="el" href="a00021.html" title="A range over which to iterate. ">blocked_range</a> as an STL container. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aad176ab2cbd0bd73c3c2065761af3ccc"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Value> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00021.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00021.html">blocked_range</a> </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct range with default-constructed values for begin and end. </p>
-<p>Requires that Value have a default constructor. </p>
-
-</div>
-</div>
-<a class="anchor" id="a75cae12286f4d5492970ea630a9783b9"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Value> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00021.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00021.html">blocked_range</a> </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00021.html">blocked_range</a>< Value > & </td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="a00129.html">split</a> </td>
-          <td class="paramname"> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Split range. </p>
-<p>The new Range *this has the second half, the old range r has the first half. Unspecified if <a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a> or !is_divisible(). </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ad90ad1db0d4d9a301ef1c9e17712e8a0"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Value> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00021.html">tbb::blocked_range</a>< Value >::is_divisible </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>True if range is divisible. </p>
-<p>Unspecified if <a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a>. </p>
-
-<p>Referenced by <a class="el" href="a00022.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue >::is_divisible()</a>, and <a class="el" href="a00023.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue >::is_divisible()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a347ef8caa40edca3b7f475f182281140"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Value> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> <a class="el" href="a00021.html">tbb::blocked_range</a>< Value >::size </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Size of the range. </p>
-<p>Unspecified if <a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a>. </p>
-
-<p>Referenced by <a class="el" href="a00021.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< I >::is_divisible()</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>blocked_range.h</li>
+<li>aggregator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00022.html b/doc/html/a00022.html
index 9e423a3..d323237 100644
--- a/doc/html/a00022.html
+++ b/doc/html/a00022.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference</title>
+<title>tbb::interface6::internal::basic_operation< Body > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,74 +33,49 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00022.html">blocked_range2d</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00022.html">basic_operation</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00248.html">List of all members</a>  </div>
+<a href="a00405.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::blocked_range2d< RowValue, ColValue > Class Template Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::interface6::internal::basic_operation< Body > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A 2-dimensional range that models the Range concept.  
- <a href="a00022.html#details">More...</a></p>
-
-<p><code>#include <blocked_range2d.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface6::internal::basic_operation< Body >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00022.png" usemap="#tbb::interface6::internal::basic_operation< Body >_map" alt=""/>
+  <map id="tbb::interface6::internal::basic_operation< Body >_map" name="tbb::interface6::internal::basic_operation< Body >_map">
+<area href="a00023.html" alt="tbb::interface6::internal::basic_operation_base" shape="rect" coords="0,56,289,80"/>
+<area href="a00014.html" alt="tbb::interface6::aggregator_operation" shape="rect" coords="0,0,289,24"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:ada609b296a9af0591cc34761b8538100"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada609b296a9af0591cc34761b8538100"></a>
-typedef <a class="el" href="a00021.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html#ada609b296a9af0591cc34761b8538100">row_range_type</a></td></tr>
-<tr class="memdesc:ada609b296a9af0591cc34761b8538100"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteration range. <br/></td></tr>
-<tr class="separator:ada609b296a9af0591cc34761b8538100"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9820ed2f2560633d18bf35cece8b6493"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9820ed2f2560633d18bf35cece8b6493"></a>
-typedef <a class="el" href="a00021.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
-<tr class="separator:a9820ed2f2560633d18bf35cece8b6493"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a5aa4e2c389c4b833937fcad66efe2b6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5aa4e2c389c4b833937fcad66efe2b6a"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, typename <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">col_range_type::size_type</a> col_grainsize)</td></tr>
-<tr class="separator:a5aa4e2c389c4b833937fcad66efe2b6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf45f93921022437fdcb500585768a5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf45f93921022437fdcb500585768a5e"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
-<tr class="separator:aaf45f93921022437fdcb500585768a5e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5805972c8c41b2681d286f9c9771cf52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5805972c8c41b2681d286f9c9771cf52"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html#a5805972c8c41b2681d286f9c9771cf52">empty</a> () const </td></tr>
-<tr class="memdesc:a5805972c8c41b2681d286f9c9771cf52"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
-<tr class="separator:a5805972c8c41b2681d286f9c9771cf52"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac84c6cc2ff8b0974ffa719fed804f586"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac84c6cc2ff8b0974ffa719fed804f586"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html#ac84c6cc2ff8b0974ffa719fed804f586">is_divisible</a> () const </td></tr>
-<tr class="memdesc:ac84c6cc2ff8b0974ffa719fed804f586"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br/></td></tr>
-<tr class="separator:ac84c6cc2ff8b0974ffa719fed804f586"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0e752d01b661b01c9a473473bea43fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0e752d01b661b01c9a473473bea43fc"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (<a class="el" href="a00022.html">blocked_range2d</a> &r, <a class="el" href="a00129.html">split</a>)</td></tr>
-<tr class="separator:af0e752d01b661b01c9a473473bea43fc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4f7299e74c40df57dee2433c07ce65ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f7299e74c40df57dee2433c07ce65ae"></a>
-const <a class="el" href="a00022.html#ada609b296a9af0591cc34761b8538100">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html#a4f7299e74c40df57dee2433c07ce65ae">rows</a> () const </td></tr>
-<tr class="memdesc:a4f7299e74c40df57dee2433c07ce65ae"><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br/></td></tr>
-<tr class="separator:a4f7299e74c40df57dee2433c07ce65ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3bccfaf90126b285491096f78ca9473"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3bccfaf90126b285491096f78ca9473"></a>
-const <a class="el" href="a00021.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html#af3bccfaf90126b285491096f78ca9473">cols</a> () const </td></tr>
-<tr class="memdesc:af3bccfaf90126b285491096f78ca9473"><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br/></td></tr>
-<tr class="separator:af3bccfaf90126b285491096f78ca9473"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf48b2339f7de2f002c24c8951a03057"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf48b2339f7de2f002c24c8951a03057"></a>
+ </td><td class="memItemRight" valign="bottom"><b>basic_operation</b> (const Body &b)</td></tr>
+<tr class="separator:adf48b2339f7de2f002c24c8951a03057"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_types_a00014"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00014')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td></tr>
+<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00014"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
+<b>agg_finished</b>
+ }</td></tr>
+<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00014"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename RowValue, typename ColValue = RowValue><br/>
-class tbb::blocked_range2d< RowValue, ColValue ></h3>
-
-<p>A 2-dimensional range that models the Range concept. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>blocked_range2d.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>aggregator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00019.png b/doc/html/a00022.png
similarity index 100%
copy from doc/html/a00019.png
copy to doc/html/a00022.png
diff --git a/doc/html/a00023.html b/doc/html/a00023.html
index 67dd32e..e7be487 100644
--- a/doc/html/a00023.html
+++ b/doc/html/a00023.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference</title>
+<title>tbb::interface6::internal::basic_operation_base Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,81 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00023.html">blocked_range3d</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00023.html">basic_operation_base</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00249.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00404.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::interface6::internal::basic_operation_base Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A 3-dimensional range that models the Range concept.  
- <a href="a00023.html#details">More...</a></p>
-
-<p><code>#include <blocked_range3d.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface6::internal::basic_operation_base:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00023.png" usemap="#tbb::interface6::internal::basic_operation_base_map" alt=""/>
+  <map id="tbb::interface6::internal::basic_operation_base_map" name="tbb::interface6::internal::basic_operation_base_map">
+<area href="a00014.html" alt="tbb::interface6::aggregator_operation" shape="rect" coords="0,0,289,24"/>
+<area href="a00022.html" alt="tbb::interface6::internal::basic_operation< Body >" shape="rect" coords="0,112,289,136"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a8cdc866378a12ce198da870d0439676f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cdc866378a12ce198da870d0439676f"></a>
-typedef <a class="el" href="a00021.html">blocked_range</a>< PageValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a></td></tr>
-<tr class="memdesc:a8cdc866378a12ce198da870d0439676f"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteration range. <br/></td></tr>
-<tr class="separator:a8cdc866378a12ce198da870d0439676f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abe15e1e06f47809a477272f733a8abf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe15e1e06f47809a477272f733a8abf8"></a>
-typedef <a class="el" href="a00021.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><b>row_range_type</b></td></tr>
-<tr class="separator:abe15e1e06f47809a477272f733a8abf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3bffd5ffb14ad9897b1a9bf22980768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bffd5ffb14ad9897b1a9bf22980768"></a>
-typedef <a class="el" href="a00021.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
-<tr class="separator:ab3bffd5ffb14ad9897b1a9bf22980768"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afe66260da7455bea5b701a3d8a537ba7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe66260da7455bea5b701a3d8a537ba7"></a>
+class </td><td class="memItemRight" valign="bottom"><b>basic_handler</b></td></tr>
+<tr class="separator:afe66260da7455bea5b701a3d8a537ba7"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa5159e07e2d601319eece538edb8add0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5159e07e2d601319eece538edb8add0"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
-<tr class="separator:aa5159e07e2d601319eece538edb8add0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a671a22033260fa02734c5a1113dcf1ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a671a22033260fa02734c5a1113dcf1ac"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, typename <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">page_range_type::size_type</a> page_grainsize, RowValue row_begin, RowValue row_end, typename <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00021.html#a89b300cecd9d [...]
-<tr class="separator:a671a22033260fa02734c5a1113dcf1ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea992e0cd3d105f964a633b1a0a1a05f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea992e0cd3d105f964a633b1a0a1a05f"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#aea992e0cd3d105f964a633b1a0a1a05f">empty</a> () const </td></tr>
-<tr class="memdesc:aea992e0cd3d105f964a633b1a0a1a05f"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
-<tr class="separator:aea992e0cd3d105f964a633b1a0a1a05f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fce6bcae6269c37623c3a2cdbb8bcf0"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">is_divisible</a> () const </td></tr>
-<tr class="memdesc:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br/></td></tr>
-<tr class="separator:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a788ebedfb4a2eaa4bee11c2c967e0768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a788ebedfb4a2eaa4bee11c2c967e0768"></a>
- </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (<a class="el" href="a00023.html">blocked_range3d</a> &r, <a class="el" href="a00129.html">split</a>)</td></tr>
-<tr class="separator:a788ebedfb4a2eaa4bee11c2c967e0768"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b794fd53ba92106aeafa4eed85731d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b794fd53ba92106aeafa4eed85731d4"></a>
-const <a class="el" href="a00023.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#a5b794fd53ba92106aeafa4eed85731d4">pages</a> () const </td></tr>
-<tr class="memdesc:a5b794fd53ba92106aeafa4eed85731d4"><td class="mdescLeft"> </td><td class="mdescRight">The pages of the iteration space. <br/></td></tr>
-<tr class="separator:a5b794fd53ba92106aeafa4eed85731d4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeac1def585af81467573f30ebb42cb4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeac1def585af81467573f30ebb42cb4f"></a>
-const <a class="el" href="a00021.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#aeac1def585af81467573f30ebb42cb4f">rows</a> () const </td></tr>
-<tr class="memdesc:aeac1def585af81467573f30ebb42cb4f"><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br/></td></tr>
-<tr class="separator:aeac1def585af81467573f30ebb42cb4f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a308d7089a1d53ff26770a7040ed817cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a308d7089a1d53ff26770a7040ed817cd"></a>
-const <a class="el" href="a00021.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html#a308d7089a1d53ff26770a7040ed817cd">cols</a> () const </td></tr>
-<tr class="memdesc:a308d7089a1d53ff26770a7040ed817cd"><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br/></td></tr>
-<tr class="separator:a308d7089a1d53ff26770a7040ed817cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_types_a00014"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00014')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td></tr>
+<tr class="memitem:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00014"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>aggregator_operation_status</b> { <b>agg_waiting</b> =0, 
+<b>agg_finished</b>
+ }</td></tr>
+<tr class="separator:a855dc55cb1823ed4845f4ed6b0a87700 inherit pub_types_a00014"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00014"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00014')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td></tr>
+<tr class="memitem:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00014"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc0e032aa604f1da85ffc7ec269b157f"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">start</a> ()</td></tr>
+<tr class="memdesc:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00014"><td class="mdescLeft"> </td><td class="mdescRight">Call start before handling this operation. <br/></td></tr>
+<tr class="separator:adc0e032aa604f1da85ffc7ec269b157f inherit pub_methods_a00014"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00014"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">finish</a> ()</td></tr>
+<tr class="memdesc:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00014"><td class="mdescLeft"> </td><td class="mdescRight">Call finish when done handling this operation.  <a href="#ac7edadfe74f475783f3b429904e7010a">More...</a><br/></td></tr>
+<tr class="separator:ac7edadfe74f475783f3b429904e7010a inherit pub_methods_a00014"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbce3d13545770501b54df153bf1e690 inherit pub_methods_a00014"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbce3d13545770501b54df153bf1e690"></a>
+<a class="el" href="a00014.html">aggregator_operation</a> * </td><td class="memItemRight" valign="bottom"><b>next</b> ()</td></tr>
+<tr class="separator:acbce3d13545770501b54df153bf1e690 inherit pub_methods_a00014"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03cf9fad0ca21da61b83325a50e17d0b inherit pub_methods_a00014"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cf9fad0ca21da61b83325a50e17d0b"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_next</b> (<a class="el" href="a00014.html">aggregator_operation</a> *n)</td></tr>
+<tr class="separator:a03cf9fad0ca21da61b83325a50e17d0b inherit pub_methods_a00014"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue><br/>
-class tbb::blocked_range3d< PageValue, RowValue, ColValue ></h3>
-
-<p>A 3-dimensional range that models the Range concept. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>blocked_range3d.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>aggregator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00020.png b/doc/html/a00023.png
similarity index 100%
copy from doc/html/a00020.png
copy to doc/html/a00023.png
diff --git a/doc/html/a00024.html b/doc/html/a00024.html
index 65b54ff..ed9156b 100644
--- a/doc/html/a00024.html
+++ b/doc/html/a00024.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::internal::broadcast_cache< T, M > Class Template Reference</title>
+<title>tbb::blocked_range< Value > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,290 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00024.html">broadcast_cache</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00024.html">blocked_range</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00267.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::internal::broadcast_cache< T, M > Class Template Reference</div>  </div>
+<div class="title">tbb::blocked_range< Value > Class Template Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>A range over which to iterate.  
+ <a href="a00024.html#details">More...</a></p>
+
+<p><code>#include <blocked_range.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ad56ca70af46acf8870b4970d8a809791"><td class="memItemLeft" align="right" valign="top">typedef Value </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a></td></tr>
+<tr class="memdesc:ad56ca70af46acf8870b4970d8a809791"><td class="mdescLeft"> </td><td class="mdescRight">Type of a value.  <a href="#ad56ca70af46acf8870b4970d8a809791">More...</a><br/></td></tr>
+<tr class="separator:ad56ca70af46acf8870b4970d8a809791"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a89b300cecd9d617e4ee801c786756e55"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89b300cecd9d617e4ee801c786756e55"></a>
+typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a></td></tr>
+<tr class="memdesc:a89b300cecd9d617e4ee801c786756e55"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of a range. <br/></td></tr>
+<tr class="separator:a89b300cecd9d617e4ee801c786756e55"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#aad176ab2cbd0bd73c3c2065761af3ccc">blocked_range</a> ()</td></tr>
+<tr class="memdesc:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="mdescLeft"> </td><td class="mdescRight">Construct range with default-constructed values for begin and end.  <a href="#aad176ab2cbd0bd73c3c2065761af3ccc">More...</a><br/></td></tr>
+<tr class="separator:aad176ab2cbd0bd73c3c2065761af3ccc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49a97576004711b7159170fcaf488e4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49a97576004711b7159170fcaf488e4e"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a49a97576004711b7159170fcaf488e4e">blocked_range</a> (Value begin_, Value end_, <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> grainsize_=1)</td></tr>
+<tr class="memdesc:a49a97576004711b7159170fcaf488e4e"><td class="mdescLeft"> </td><td class="mdescRight">Construct range over half-open interval [begin,end), with the given grainsize. <br/></td></tr>
+<tr class="separator:a49a97576004711b7159170fcaf488e4e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae225fa10454b0fa33533dfb56f5060a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae225fa10454b0fa33533dfb56f5060a2"></a>
+<a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2">begin</a> () const </td></tr>
+<tr class="memdesc:ae225fa10454b0fa33533dfb56f5060a2"><td class="mdescLeft"> </td><td class="mdescRight">Beginning of range. <br/></td></tr>
+<tr class="separator:ae225fa10454b0fa33533dfb56f5060a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a99f829599d3e51b181a30b4cd57b06c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99f829599d3e51b181a30b4cd57b06c6"></a>
+<a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6">end</a> () const </td></tr>
+<tr class="memdesc:a99f829599d3e51b181a30b4cd57b06c6"><td class="mdescLeft"> </td><td class="mdescRight">One past last value in range. <br/></td></tr>
+<tr class="separator:a99f829599d3e51b181a30b4cd57b06c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a347ef8caa40edca3b7f475f182281140"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a347ef8caa40edca3b7f475f182281140">size</a> () const </td></tr>
+<tr class="memdesc:a347ef8caa40edca3b7f475f182281140"><td class="mdescLeft"> </td><td class="mdescRight">Size of the range.  <a href="#a347ef8caa40edca3b7f475f182281140">More...</a><br/></td></tr>
+<tr class="separator:a347ef8caa40edca3b7f475f182281140"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab408f3cf90c85fa9203df5641a2f9bb1"></a>
+<a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#ab408f3cf90c85fa9203df5641a2f9bb1">grainsize</a> () const </td></tr>
+<tr class="memdesc:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="mdescLeft"> </td><td class="mdescRight">The grain size for this range. <br/></td></tr>
+<tr class="separator:ab408f3cf90c85fa9203df5641a2f9bb1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59dec03416b3fefbf69600f798177710"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59dec03416b3fefbf69600f798177710"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a59dec03416b3fefbf69600f798177710">empty</a> () const </td></tr>
+<tr class="memdesc:a59dec03416b3fefbf69600f798177710"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
+<tr class="separator:a59dec03416b3fefbf69600f798177710"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">is_divisible</a> () const </td></tr>
+<tr class="memdesc:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible.  <a href="#ad90ad1db0d4d9a301ef1c9e17712e8a0">More...</a><br/></td></tr>
+<tr class="separator:ad90ad1db0d4d9a301ef1c9e17712e8a0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a75cae12286f4d5492970ea630a9783b9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a75cae12286f4d5492970ea630a9783b9">blocked_range</a> (<a class="el" href="a00024.html">blocked_range</a> &r, split)</td></tr>
+<tr class="memdesc:a75cae12286f4d5492970ea630a9783b9"><td class="mdescLeft"> </td><td class="mdescRight">Split range.  <a href="#a75cae12286f4d5492970ea630a9783b9">More...</a><br/></td></tr>
+<tr class="separator:a75cae12286f4d5492970ea630a9783b9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1f53fbb10b8b04a515f382704b00ed14"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#a1f53fbb10b8b04a515f382704b00ed14">blocked_range</a> (<a class="el" href="a00024.html">blocked_range</a> &r, proportional_split &proportion)</td></tr>
+<tr class="memdesc:a1f53fbb10b8b04a515f382704b00ed14"><td class="mdescLeft"> </td><td class="mdescRight">Split range.  <a href="#a1f53fbb10b8b04a515f382704b00ed14">More...</a><br/></td></tr>
+<tr class="separator:a1f53fbb10b8b04a515f382704b00ed14"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:ae2b0210e2468092b408123adeb54b01c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2b0210e2468092b408123adeb54b01c"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html#ae2b0210e2468092b408123adeb54b01c">is_splittable_in_proportion</a> = true</td></tr>
+<tr class="memdesc:ae2b0210e2468092b408123adeb54b01c"><td class="mdescLeft"> </td><td class="mdescRight">Static field to support proportional split. <br/></td></tr>
+<tr class="separator:ae2b0210e2468092b408123adeb54b01c"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:aa504612e6c1ba07b8846bcd323847680"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa504612e6c1ba07b8846bcd323847680"></a>
+template<typename RowValue , typename ColValue > </td></tr>
+<tr class="memitem:aa504612e6c1ba07b8846bcd323847680"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>blocked_range2d</b></td></tr>
+<tr class="separator:aa504612e6c1ba07b8846bcd323847680"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a83f67fe3b421dbaeee9040aae730d5e8"></a>
+template<typename RowValue , typename ColValue , typename PageValue > </td></tr>
+<tr class="memitem:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>blocked_range3d</b></td></tr>
+<tr class="separator:a83f67fe3b421dbaeee9040aae730d5e8"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Value><br/>
+class tbb::blocked_range< Value ></h3>
+
+<p>A range over which to iterate. </p>
+</div><h2 class="groupheader">Member Typedef Documentation</h2>
+<a class="anchor" id="ad56ca70af46acf8870b4970d8a809791"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef Value <a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Type of a value. </p>
+<p>Called a const_iterator for sake of algorithms that need to treat a <a class="el" href="a00024.html" title="A range over which to iterate. ">blocked_range</a> as an STL container. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="aad176ab2cbd0bd73c3c2065761af3ccc"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00024.html">blocked_range</a> </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct range with default-constructed values for begin and end. </p>
+<p>Requires that Value have a default constructor. </p>
+
+</div>
+</div>
+<a class="anchor" id="a75cae12286f4d5492970ea630a9783b9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00024.html">blocked_range</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00024.html">blocked_range</a>< Value > & </td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">split </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Split range. </p>
+<p>The new Range *this has the second part, the old range r has the first part. Unspecified if <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a> or !is_divisible(). </p>
+
+</div>
+</div>
+<a class="anchor" id="a1f53fbb10b8b04a515f382704b00ed14"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::<a class="el" href="a00024.html">blocked_range</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00024.html">blocked_range</a>< Value > & </td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">proportional_split & </td>
+          <td class="paramname"><em>proportion</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Split range. </p>
+<p>The new Range *this has the second part split according to specified proportion, the old range r has the first part. Unspecified if <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a> or !is_divisible(). </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ad90ad1db0d4d9a301ef1c9e17712e8a0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::is_divisible </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>True if range is divisible. </p>
+<p>Unspecified if <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a>. </p>
+
+<p>Referenced by <a class="el" href="a00025.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue >::is_divisible()</a>, and <a class="el" href="a00026.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue >::is_divisible()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a347ef8caa40edca3b7f475f182281140"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Value> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> <a class="el" href="a00024.html">tbb::blocked_range</a>< Value >::size </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Size of the range. </p>
+<p>Unspecified if <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6" title="One past last value in range. ">end()</a><<a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2" title="Beginning of range. ">begin()</a>. </p>
+
+<p>Referenced by <a class="el" href="a00024.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< I >::is_divisible()</a>.</p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>blocked_range.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00025.html b/doc/html/a00025.html
index bb8b3df..20e6f8d 100644
--- a/doc/html/a00025.html
+++ b/doc/html/a00025.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::broadcast_node< T > Class Template Reference</title>
+<title>tbb::blocked_range2d< RowValue, ColValue > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,185 +33,89 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00025.html">broadcast_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00025.html">blocked_range2d</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00324.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00268.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::broadcast_node< T > Class Template Reference</div>  </div>
+<div class="title">tbb::blocked_range2d< RowValue, ColValue > Class Template Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Forwards messages of type T to all successors.  
+<p>A 2-dimensional range that models the Range concept.  
  <a href="a00025.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::broadcast_node< T >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00025.png" usemap="#tbb::flow::interface7::broadcast_node< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::broadcast_node< T >_map" name="tbb::flow::interface7::broadcast_node< T >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,249,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="259,56,508,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="518,56,767,80"/>
-</map>
- </div></div>
+<p><code>#include <blocked_range2d.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a396fad97f7b6c1235c45775c359bf875"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a396fad97f7b6c1235c45775c359bf875"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a396fad97f7b6c1235c45775c359bf875"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb740e1db77807cf104c2337201ba62c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb740e1db77807cf104c2337201ba62c"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:abb740e1db77807cf104c2337201ba62c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7fa00c900bb20ee3571e34c9ca65aa18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fa00c900bb20ee3571e34c9ca65aa18"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a7fa00c900bb20ee3571e34c9ca65aa18"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a619fe24fac9c139c198fa421e002282c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a619fe24fac9c139c198fa421e002282c"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a619fe24fac9c139c198fa421e002282c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada609b296a9af0591cc34761b8538100"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada609b296a9af0591cc34761b8538100"></a>
+typedef <a class="el" href="a00024.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#ada609b296a9af0591cc34761b8538100">row_range_type</a></td></tr>
+<tr class="memdesc:ada609b296a9af0591cc34761b8538100"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteration range. <br/></td></tr>
+<tr class="separator:ada609b296a9af0591cc34761b8538100"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9820ed2f2560633d18bf35cece8b6493"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9820ed2f2560633d18bf35cece8b6493"></a>
+typedef <a class="el" href="a00024.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
+<tr class="separator:a9820ed2f2560633d18bf35cece8b6493"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:af6faf48f1b1aa2f2766c034b7f394d1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6faf48f1b1aa2f2766c034b7f394d1f"></a>
- </td><td class="memItemRight" valign="bottom"><b>broadcast_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:af6faf48f1b1aa2f2766c034b7f394d1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a467df310431cb8880df709d7686554eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a467df310431cb8880df709d7686554eb"></a>
- </td><td class="memItemRight" valign="bottom"><b>broadcast_node</b> (const <a class="el" href="a00025.html">broadcast_node</a> &src)</td></tr>
-<tr class="separator:a467df310431cb8880df709d7686554eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaba5a50d70a74c22ddee40c86f4be3ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaba5a50d70a74c22ddee40c86f4be3ff"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:aaba5a50d70a74c22ddee40c86f4be3ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36b5c86faa58a264d899b7c26286c80e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36b5c86faa58a264d899b7c26286c80e"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#a36b5c86faa58a264d899b7c26286c80e">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< T > &r)</td></tr>
-<tr class="memdesc:a36b5c86faa58a264d899b7c26286c80e"><td class="mdescLeft"> </td><td class="mdescRight">Adds a successor. <br/></td></tr>
-<tr class="separator:a36b5c86faa58a264d899b7c26286c80e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a22d463b071df6e0b7ca11df27bb2637e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d463b071df6e0b7ca11df27bb2637e"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#a22d463b071df6e0b7ca11df27bb2637e">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< T > &r)</td></tr>
-<tr class="memdesc:a22d463b071df6e0b7ca11df27bb2637e"><td class="mdescLeft"> </td><td class="mdescRight">Removes s as a successor. <br/></td></tr>
-<tr class="separator:a22d463b071df6e0b7ca11df27bb2637e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
-<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
-<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
-<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
-<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
-<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
-<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
-<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5aa4e2c389c4b833937fcad66efe2b6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5aa4e2c389c4b833937fcad66efe2b6a"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, typename <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">col_range_type::size_type</a> col_grainsize)</td></tr>
+<tr class="separator:a5aa4e2c389c4b833937fcad66efe2b6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaf45f93921022437fdcb500585768a5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf45f93921022437fdcb500585768a5e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
+<tr class="separator:aaf45f93921022437fdcb500585768a5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5805972c8c41b2681d286f9c9771cf52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5805972c8c41b2681d286f9c9771cf52"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#a5805972c8c41b2681d286f9c9771cf52">empty</a> () const </td></tr>
+<tr class="memdesc:a5805972c8c41b2681d286f9c9771cf52"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
+<tr class="separator:a5805972c8c41b2681d286f9c9771cf52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac84c6cc2ff8b0974ffa719fed804f586"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac84c6cc2ff8b0974ffa719fed804f586"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#ac84c6cc2ff8b0974ffa719fed804f586">is_divisible</a> () const </td></tr>
+<tr class="memdesc:ac84c6cc2ff8b0974ffa719fed804f586"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br/></td></tr>
+<tr class="separator:ac84c6cc2ff8b0974ffa719fed804f586"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0e752d01b661b01c9a473473bea43fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0e752d01b661b01c9a473473bea43fc"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (<a class="el" href="a00025.html">blocked_range2d</a> &r, split)</td></tr>
+<tr class="separator:af0e752d01b661b01c9a473473bea43fc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ebbf0fa580c0553ec2e3c5997b9799c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ebbf0fa580c0553ec2e3c5997b9799c"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range2d</b> (<a class="el" href="a00025.html">blocked_range2d</a> &r, proportional_split &proportion)</td></tr>
+<tr class="separator:a9ebbf0fa580c0553ec2e3c5997b9799c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a06ae436bae2c8be5a95212ea410791db"><td class="memTemplParams" colspan="2"><a class="anchor" id="a06ae436bae2c8be5a95212ea410791db"></a>
+template<typename Split > </td></tr>
+<tr class="memitem:a06ae436bae2c8be5a95212ea410791db"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>do_split</b> (<a class="el" href="a00025.html">blocked_range2d</a> &r, Split &split_obj)</td></tr>
+<tr class="separator:a06ae436bae2c8be5a95212ea410791db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4f7299e74c40df57dee2433c07ce65ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f7299e74c40df57dee2433c07ce65ae"></a>
+const <a class="el" href="a00025.html#ada609b296a9af0591cc34761b8538100">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#a4f7299e74c40df57dee2433c07ce65ae">rows</a> () const </td></tr>
+<tr class="memdesc:a4f7299e74c40df57dee2433c07ce65ae"><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br/></td></tr>
+<tr class="separator:a4f7299e74c40df57dee2433c07ce65ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3bccfaf90126b285491096f78ca9473"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3bccfaf90126b285491096f78ca9473"></a>
+const <a class="el" href="a00024.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#af3bccfaf90126b285491096f78ca9473">cols</a> () const </td></tr>
+<tr class="memdesc:af3bccfaf90126b285491096f78ca9473"><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br/></td></tr>
+<tr class="separator:af3bccfaf90126b285491096f78ca9473"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a07d030b43c6e2d9169a7e58db30a547b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07d030b43c6e2d9169a7e58db30a547b"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#a07d030b43c6e2d9169a7e58db30a547b">try_put_task</a> (const T &t)</td></tr>
-<tr class="memdesc:a07d030b43c6e2d9169a7e58db30a547b"><td class="mdescLeft"> </td><td class="mdescRight">build a task to run the successor if possible. Default is old behavior. <br/></td></tr>
-<tr class="separator:a07d030b43c6e2d9169a7e58db30a547b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8a801d0d1be061681318f29d29818034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a801d0d1be061681318f29d29818034"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a8a801d0d1be061681318f29d29818034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabdeda0195408b744c824296eb1734f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabdeda0195408b744c824296eb1734f8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:aabdeda0195408b744c824296eb1734f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:aa0519760654368000f7ebc87d9bfe898"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0519760654368000f7ebc87d9bfe898"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html#aa0519760654368000f7ebc87d9bfe898">is_splittable_in_proportion</a> = true</td></tr>
+<tr class="memdesc:aa0519760654368000f7ebc87d9bfe898"><td class="mdescLeft"> </td><td class="mdescRight">Static field to support proportional split. <br/></td></tr>
+<tr class="separator:aa0519760654368000f7ebc87d9bfe898"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::flow::interface7::broadcast_node< T ></h3>
+<div class="textblock"><h3>template<typename RowValue, typename ColValue = RowValue><br/>
+class tbb::blocked_range2d< RowValue, ColValue ></h3>
 
-<p>Forwards messages of type T to all successors. </p>
+<p>A 2-dimensional range that models the Range concept. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>blocked_range2d.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00025.png b/doc/html/a00025.png
deleted file mode 100644
index 1ccd735..0000000
Binary files a/doc/html/a00025.png and /dev/null differ
diff --git a/doc/html/a00026.html b/doc/html/a00026.html
index 6c07f23..60cd00d 100644
--- a/doc/html/a00026.html
+++ b/doc/html/a00026.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference</title>
+<title>tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,61 +33,96 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00026.html">bucket_accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00026.html">blocked_range3d</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00336.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00269.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference</div>  </div>
+<div class="title">tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>bucket accessor is to find, rehash, acquire a lock, and access a bucket  
+<p>A 3-dimensional range that models the Range concept.  
  <a href="a00026.html#details">More...</a></p>
 
-<p><code>#include <concurrent_hash_map.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00026.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map" alt=""/>
-  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map">
-</map>
- </div></div>
+<p><code>#include <blocked_range3d.h></code></p>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a8cdc866378a12ce198da870d0439676f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cdc866378a12ce198da870d0439676f"></a>
+typedef <a class="el" href="a00024.html">blocked_range</a>< PageValue > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a></td></tr>
+<tr class="memdesc:a8cdc866378a12ce198da870d0439676f"><td class="mdescLeft"> </td><td class="mdescRight">Type for size of an iteration range. <br/></td></tr>
+<tr class="separator:a8cdc866378a12ce198da870d0439676f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe15e1e06f47809a477272f733a8abf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe15e1e06f47809a477272f733a8abf8"></a>
+typedef <a class="el" href="a00024.html">blocked_range</a>< RowValue > </td><td class="memItemRight" valign="bottom"><b>row_range_type</b></td></tr>
+<tr class="separator:abe15e1e06f47809a477272f733a8abf8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab3bffd5ffb14ad9897b1a9bf22980768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3bffd5ffb14ad9897b1a9bf22980768"></a>
+typedef <a class="el" href="a00024.html">blocked_range</a>< ColValue > </td><td class="memItemRight" valign="bottom"><b>col_range_type</b></td></tr>
+<tr class="separator:ab3bffd5ffb14ad9897b1a9bf22980768"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab8dc51ef88ff53cc6cc4e40e2c2818eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8dc51ef88ff53cc6cc4e40e2c2818eb"></a>
- </td><td class="memItemRight" valign="bottom"><b>bucket_accessor</b> (<a class="el" href="a00035.html">concurrent_hash_map</a> *base, const hashcode_t h, bool writer=false)</td></tr>
-<tr class="separator:ab8dc51ef88ff53cc6cc4e40e2c2818eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d7d8f3d101bb18056b8e5d4d2c8b079"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">acquire</a> (<a class="el" href="a00035.html">concurrent_hash_map</a> *base, const hashcode_t h, bool writer=false)</td></tr>
-<tr class="memdesc:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="mdescLeft"> </td><td class="mdescRight">find a bucket by masked hashcode, optionally rehash, and acquire the lock <br/></td></tr>
-<tr class="separator:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa8167e2961330435fd23eb92127805c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa8167e2961330435fd23eb92127805c"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">is_writer</a> ()</td></tr>
-<tr class="memdesc:aaa8167e2961330435fd23eb92127805c"><td class="mdescLeft"> </td><td class="mdescRight">check whether bucket is locked for write <br/></td></tr>
-<tr class="separator:aaa8167e2961330435fd23eb92127805c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16e714a5e77dbf8daf81973df30722d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16e714a5e77dbf8daf81973df30722d4"></a>
-bucket * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a16e714a5e77dbf8daf81973df30722d4">operator()</a> ()</td></tr>
-<tr class="memdesc:a16e714a5e77dbf8daf81973df30722d4"><td class="mdescLeft"> </td><td class="mdescRight">get bucket pointer <br/></td></tr>
-<tr class="separator:a16e714a5e77dbf8daf81973df30722d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa5159e07e2d601319eece538edb8add0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5159e07e2d601319eece538edb8add0"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)</td></tr>
+<tr class="separator:aa5159e07e2d601319eece538edb8add0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a671a22033260fa02734c5a1113dcf1ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a671a22033260fa02734c5a1113dcf1ac"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (PageValue page_begin, PageValue page_end, typename <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">page_range_type::size_type</a> page_grainsize, RowValue row_begin, RowValue row_end, typename <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">row_range_type::size_type</a> row_grainsize, ColValue col_begin, ColValue col_end, typename <a class="el" href="a00024.html#a89b300cecd9d [...]
+<tr class="separator:a671a22033260fa02734c5a1113dcf1ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea992e0cd3d105f964a633b1a0a1a05f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea992e0cd3d105f964a633b1a0a1a05f"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#aea992e0cd3d105f964a633b1a0a1a05f">empty</a> () const </td></tr>
+<tr class="memdesc:aea992e0cd3d105f964a633b1a0a1a05f"><td class="mdescLeft"> </td><td class="mdescRight">True if range is empty. <br/></td></tr>
+<tr class="separator:aea992e0cd3d105f964a633b1a0a1a05f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fce6bcae6269c37623c3a2cdbb8bcf0"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">is_divisible</a> () const </td></tr>
+<tr class="memdesc:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="mdescLeft"> </td><td class="mdescRight">True if range is divisible into two pieces. <br/></td></tr>
+<tr class="separator:a0fce6bcae6269c37623c3a2cdbb8bcf0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a788ebedfb4a2eaa4bee11c2c967e0768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a788ebedfb4a2eaa4bee11c2c967e0768"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (<a class="el" href="a00026.html">blocked_range3d</a> &r, split)</td></tr>
+<tr class="separator:a788ebedfb4a2eaa4bee11c2c967e0768"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0e5fdb794ec7bfc5f21a59ddd466d8e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e5fdb794ec7bfc5f21a59ddd466d8e0"></a>
+ </td><td class="memItemRight" valign="bottom"><b>blocked_range3d</b> (<a class="el" href="a00026.html">blocked_range3d</a> &r, proportional_split &proportion)</td></tr>
+<tr class="separator:a0e5fdb794ec7bfc5f21a59ddd466d8e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac83b305fb6dc5da50a4f6c4fdb551654"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac83b305fb6dc5da50a4f6c4fdb551654"></a>
+template<typename Split > </td></tr>
+<tr class="memitem:ac83b305fb6dc5da50a4f6c4fdb551654"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>do_split</b> (<a class="el" href="a00026.html">blocked_range3d</a> &r, Split &split_obj)</td></tr>
+<tr class="separator:ac83b305fb6dc5da50a4f6c4fdb551654"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b794fd53ba92106aeafa4eed85731d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b794fd53ba92106aeafa4eed85731d4"></a>
+const <a class="el" href="a00026.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a5b794fd53ba92106aeafa4eed85731d4">pages</a> () const </td></tr>
+<tr class="memdesc:a5b794fd53ba92106aeafa4eed85731d4"><td class="mdescLeft"> </td><td class="mdescRight">The pages of the iteration space. <br/></td></tr>
+<tr class="separator:a5b794fd53ba92106aeafa4eed85731d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeac1def585af81467573f30ebb42cb4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeac1def585af81467573f30ebb42cb4f"></a>
+const <a class="el" href="a00024.html">row_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#aeac1def585af81467573f30ebb42cb4f">rows</a> () const </td></tr>
+<tr class="memdesc:aeac1def585af81467573f30ebb42cb4f"><td class="mdescLeft"> </td><td class="mdescRight">The rows of the iteration space. <br/></td></tr>
+<tr class="separator:aeac1def585af81467573f30ebb42cb4f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a308d7089a1d53ff26770a7040ed817cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a308d7089a1d53ff26770a7040ed817cd"></a>
+const <a class="el" href="a00024.html">col_range_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a308d7089a1d53ff26770a7040ed817cd">cols</a> () const </td></tr>
+<tr class="memdesc:a308d7089a1d53ff26770a7040ed817cd"><td class="mdescLeft"> </td><td class="mdescRight">The columns of the iteration space. <br/></td></tr>
+<tr class="separator:a308d7089a1d53ff26770a7040ed817cd"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a5940c1bd6ba0e8184ef83dea0ae56884"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5940c1bd6ba0e8184ef83dea0ae56884"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html#a5940c1bd6ba0e8184ef83dea0ae56884">is_splittable_in_proportion</a> = true</td></tr>
+<tr class="memdesc:a5940c1bd6ba0e8184ef83dea0ae56884"><td class="mdescLeft"> </td><td class="mdescRight">Static field to support proportional split. <br/></td></tr>
+<tr class="separator:a5940c1bd6ba0e8184ef83dea0ae56884"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
-class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</h3>
+<div class="textblock"><h3>template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue><br/>
+class tbb::blocked_range3d< PageValue, RowValue, ColValue ></h3>
 
-<p>bucket accessor is to find, rehash, acquire a lock, and access a bucket </p>
+<p>A 3-dimensional range that models the Range concept. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_hash_map.h</li>
+<li>blocked_range3d.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00027.html b/doc/html/a00027.html
index 1ebc403..1e51a90 100644
--- a/doc/html/a00027.html
+++ b/doc/html/a00027.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::buffer_node< T, A > Class Template Reference</title>
+<title>tbb::flow::interface7::internal::broadcast_cache< T, M > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,467 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00027.html">buffer_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00027.html">broadcast_cache</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00325.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::buffer_node< T, A > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::internal::broadcast_cache< T, M > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Forwards messages in arbitrary order.  
- <a href="a00027.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::buffer_node< T, A >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00027.png" usemap="#tbb::flow::interface7::buffer_node< T, A >_map" alt=""/>
-  <map id="tbb::flow::interface7::buffer_node< T, A >_map" name="tbb::flow::interface7::buffer_node< T, A >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,352,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="724,56,1076,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="1086,56,1438,80"/>
-<area href="a00091.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="362,168,714,192"/>
-<area href="a00092.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="724,168,1076,192"/>
-<area href="a00125.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="724,224,1076,248"/>
-</map>
- </div></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html">buffer_operation</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abedb8c98e62146c3473344b7148173b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:abedb8c98e62146c3473344b7148173b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c34a2182dcbbded45da979b0f405817"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a3c34a2182dcbbded45da979b0f405817"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
-<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a152f7bb9ab1f033ec56caa451327634c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00027.html">buffer_node</a> &src)</td></tr>
-<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a739635c43d1150f2c8dd3f455d698d36"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6d38f53c02a6fa64754826249dab5185"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d38f53c02a6fa64754826249dab5185"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a6d38f53c02a6fa64754826249dab5185"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab458d9fa2c7d6f39ec62d4027c9da376"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ab458d9fa2c7d6f39ec62d4027c9da376"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#ab458d9fa2c7d6f39ec62d4027c9da376">More...</a><br/></td></tr>
-<tr class="separator:ab458d9fa2c7d6f39ec62d4027c9da376"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70d3c1fb1af11deb9b92fa753fa8604c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:a70d3c1fb1af11deb9b92fa753fa8604c"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a70d3c1fb1af11deb9b92fa753fa8604c">More...</a><br/></td></tr>
-<tr class="separator:a70d3c1fb1af11deb9b92fa753fa8604c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00027.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
-<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
-<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
-<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa3745fd4705345df16fb33954d93e30"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
-<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
-<tr class="separator:aaa3745fd4705345df16fb33954d93e30"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a335072bc547c5e9b40f58dfeab525953"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
-<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
-<tr class="separator:a335072bc547c5e9b40f58dfeab525953"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
-  <b>reg_succ</b>, 
-<b>rem_succ</b>, 
-<b>req_item</b>, 
-<b>res_item</b>, 
-<br/>
-  <b>rel_res</b>, 
-<b>con_res</b>, 
-<b>put_item</b>, 
-<b>try_fwd_task</b>
-<br/>
- }</td></tr>
-<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
-typedef <br class="typebreak"/>
-internal::aggregating_functor<br class="typebreak"/>
-< <a class="el" href="a00027.html">my_class</a>, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
-<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a2d09326016a31e17acd57f8e6ce58054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d09326016a31e17acd57f8e6ce58054"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00028.html">buffer_operation</a> *op_list)</td></tr>
-<tr class="separator:a2d09326016a31e17acd57f8e6ce58054"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fde962bed26ee41c370e48bce678320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a5fde962bed26ee41c370e48bce678320"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
-virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
-<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
-<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
-<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
-<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3aa7578ccbd3d5f986869ab8698c037c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3aa7578ccbd3d5f986869ab8698c037c"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a3aa7578ccbd3d5f986869ab8698c037c">internal_forward_task</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:a3aa7578ccbd3d5f986869ab8698c037c"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
-<tr class="separator:a3aa7578ccbd3d5f986869ab8698c037c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe75e82e8dffa7d13fa9e82d9951dba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe75e82e8dffa7d13fa9e82d9951dba"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:a2fe75e82e8dffa7d13fa9e82d9951dba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a574bf95b7b06f24bafb13aa586dd2c66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a574bf95b7b06f24bafb13aa586dd2c66"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:a574bf95b7b06f24bafb13aa586dd2c66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeaea0922cb1344925524d892864f78e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeaea0922cb1344925524d892864f78e0"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:aeaea0922cb1344925524d892864f78e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f90411a5cc3f5c7c4210f8bb4e73f68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f90411a5cc3f5c7c4210f8bb4e73f68"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:a5f90411a5cc3f5c7c4210f8bb4e73f68"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7b3eee1ec878f6f0055f6133b233c09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7b3eee1ec878f6f0055f6133b233c09"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:ae7b3eee1ec878f6f0055f6133b233c09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
-<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
-<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c02d02bdb7ab20055d2f0aaba8d3c9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c02d02bdb7ab20055d2f0aaba8d3c9c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a5c02d02bdb7ab20055d2f0aaba8d3c9c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4fe0ea40c0f1ed6d109eed8d8bf25ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4fe0ea40c0f1ed6d109eed8d8bf25ee"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:aa4fe0ea40c0f1ed6d109eed8d8bf25ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ade2fe89be00e023aafb1d3c380762048"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
-<a class="el" href="a00108.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:ade2fe89be00e023aafb1d3c380762048"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
-<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
-internal::aggregator<br class="typebreak"/>
-< my_handler, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
-<tr class="separator:adc948866a1eb4c7a95b0edc08872d487"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ad66dc7488e0c58eef0d3ae292d900c04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad66dc7488e0c58eef0d3ae292d900c04"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass< buffer_node< T, A > ></b></td></tr>
-<tr class="separator:ad66dc7488e0c58eef0d3ae292d900c04"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8fa999cf286dcad00faeece4cbfa35d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fa999cf286dcad00faeece4cbfa35d2"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::aggregating_functor< my_class, buffer_operation ></b></td></tr>
-<tr class="separator:a8fa999cf286dcad00faeece4cbfa35d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
-class tbb::flow::interface7::buffer_node< T, A ></h3>
-
-<p>Forwards messages in arbitrary order. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ab458d9fa2c7d6f39ec62d4027c9da376"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::register_successor </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > & </td>
-          <td class="paramname"><em>r</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Adds a new successor. </p>
-<p>Adds successor r to the list of successors; may forward tasks. </p>
-
-<p>Implements <a class="el" href="a00124.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a70d3c1fb1af11deb9b92fa753fa8604c"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::remove_successor </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > & </td>
-          <td class="paramname"><em>r</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Removes a successor. </p>
-<p>Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor. </p>
-
-<p>Implements <a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a335072bc547c5e9b40f58dfeab525953"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_consume </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Consumes a reserved item. </p>
-<p>true = item is removed from sender and reservation removed </p>
-
-<p>Reimplemented from <a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a175cb77dfbdd0e322097a833a2271c1e"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_get </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>v</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Request an item from the <a class="el" href="a00027.html" title="Forwards messages in arbitrary order. ">buffer_node</a>. </p>
-<p>true = v contains the returned item<br/>
- false = no item has been returned </p>
-
-<p>Reimplemented from <a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaa3745fd4705345df16fb33954d93e30"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_release </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Release a reserved item. </p>
-<p>true = item has been released and so remains in sender </p>
-
-<p>Reimplemented from <a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3b12cdebf8cef15b90e3c9cd9e51019f"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, typename A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_reserve </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>v</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Reserves an item. </p>
-<p>false = no item can be reserved<br/>
- true = an item is reserved </p>
-
-<p>Reimplemented from <a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00027.png b/doc/html/a00027.png
deleted file mode 100644
index f834dda..0000000
Binary files a/doc/html/a00027.png and /dev/null differ
diff --git a/doc/html/a00028.html b/doc/html/a00028.html
index 9ab93b8..67479a4 100644
--- a/doc/html/a00028.html
+++ b/doc/html/a00028.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::buffer_node< T, A >::buffer_operation Class Reference</title>
+<title>tbb::flow::interface7::broadcast_node< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,58 +33,263 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00027.html">buffer_node</a></li><li class="navelem"><a class="el" href="a00028.html">buffer_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00028.html">broadcast_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00326.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00342.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::buffer_node< T, A >::buffer_operation Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::broadcast_node< T > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Forwards messages of type T to all successors.  
+ <a href="a00028.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::buffer_node< T, A >::buffer_operation:</div>
+Inheritance diagram for tbb::flow::interface7::broadcast_node< T >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00028.png" usemap="#tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map" alt=""/>
-  <map id="tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map" name="tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map">
+  <img src="a00028.png" usemap="#tbb::flow::interface7::broadcast_node< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::broadcast_node< T >_map" name="tbb::flow::interface7::broadcast_node< T >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,249,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="259,56,508,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="518,56,767,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a396fad97f7b6c1235c45775c359bf875"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a396fad97f7b6c1235c45775c359bf875"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a396fad97f7b6c1235c45775c359bf875"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb740e1db77807cf104c2337201ba62c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb740e1db77807cf104c2337201ba62c"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:abb740e1db77807cf104c2337201ba62c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7fa00c900bb20ee3571e34c9ca65aa18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fa00c900bb20ee3571e34c9ca65aa18"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a7fa00c900bb20ee3571e34c9ca65aa18"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a619fe24fac9c139c198fa421e002282c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a619fe24fac9c139c198fa421e002282c"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a619fe24fac9c139c198fa421e002282c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aac520af27bd130f4c40ab28cd1aac95b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac520af27bd130f4c40ab28cd1aac95b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:aac520af27bd130f4c40ab28cd1aac95b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ee80a328708b420ad8504ff888e6bbd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ee80a328708b420ad8504ff888e6bbd"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a1ee80a328708b420ad8504ff888e6bbd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1668e062bd1442a8af3c348b1a02deea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1668e062bd1442a8af3c348b1a02deea"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a1668e062bd1442a8af3c348b1a02deea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1c1a5eb328956c7c51ac54d433bc01b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c1a5eb328956c7c51ac54d433bc01b7"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a1c1a5eb328956c7c51ac54d433bc01b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a77b9eaaed3b74938679461fa5d1986e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77b9eaaed3b74938679461fa5d1986e1"></a>
- </td><td class="memItemRight" valign="bottom"><b>buffer_operation</b> (const T &e, op_type t)</td></tr>
-<tr class="separator:a77b9eaaed3b74938679461fa5d1986e1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1e3a76dd65fff852e9c5684cd6375ad1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e3a76dd65fff852e9c5684cd6375ad1"></a>
- </td><td class="memItemRight" valign="bottom"><b>buffer_operation</b> (op_type t)</td></tr>
-<tr class="separator:a1e3a76dd65fff852e9c5684cd6375ad1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af6faf48f1b1aa2f2766c034b7f394d1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6faf48f1b1aa2f2766c034b7f394d1f"></a>
+ </td><td class="memItemRight" valign="bottom"><b>broadcast_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:af6faf48f1b1aa2f2766c034b7f394d1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a467df310431cb8880df709d7686554eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a467df310431cb8880df709d7686554eb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>broadcast_node</b> (const <a class="el" href="a00028.html">broadcast_node</a> &src)</td></tr>
+<tr class="separator:a467df310431cb8880df709d7686554eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaba5a50d70a74c22ddee40c86f4be3ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaba5a50d70a74c22ddee40c86f4be3ff"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:aaba5a50d70a74c22ddee40c86f4be3ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a36b5c86faa58a264d899b7c26286c80e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36b5c86faa58a264d899b7c26286c80e"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a36b5c86faa58a264d899b7c26286c80e">register_successor</a> (<a class="el" href="a00124.html">receiver</a>< T > &r)</td></tr>
+<tr class="memdesc:a36b5c86faa58a264d899b7c26286c80e"><td class="mdescLeft"> </td><td class="mdescRight">Adds a successor. <br/></td></tr>
+<tr class="separator:a36b5c86faa58a264d899b7c26286c80e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a22d463b071df6e0b7ca11df27bb2637e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d463b071df6e0b7ca11df27bb2637e"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a22d463b071df6e0b7ca11df27bb2637e">remove_successor</a> (<a class="el" href="a00124.html">receiver</a>< T > &r)</td></tr>
+<tr class="memdesc:a22d463b071df6e0b7ca11df27bb2637e"><td class="mdescLeft"> </td><td class="mdescRight">Removes s as a successor. <br/></td></tr>
+<tr class="separator:a22d463b071df6e0b7ca11df27bb2637e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afe225a28166721a436275b719ff08d3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe225a28166721a436275b719ff08d3d"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:afe225a28166721a436275b719ff08d3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83b41cdc864a2632deb4f6ef9639abea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83b41cdc864a2632deb4f6ef9639abea"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:a83b41cdc864a2632deb4f6ef9639abea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af7529693f698411ee9a5b200af4c385e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7529693f698411ee9a5b200af4c385e"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:af7529693f698411ee9a5b200af4c385e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa21e8ec19385ac717e69800491e71762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa21e8ec19385ac717e69800491e71762"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:aa21e8ec19385ac717e69800491e71762"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95807fefbfbed9846968ca5d25224a9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95807fefbfbed9846968ca5d25224a9f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a95807fefbfbed9846968ca5d25224a9f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a319dcea71ee11d78f9b2145ac356a2fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a319dcea71ee11d78f9b2145ac356a2fb"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a319dcea71ee11d78f9b2145ac356a2fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a77a34aa2b540d022bd63326797182eea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a34aa2b540d022bd63326797182eea"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a77a34aa2b540d022bd63326797182eea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8cf76475df68f300c1b5426e1b9bdebd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8cf76475df68f300c1b5426e1b9bdebd"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a8cf76475df68f300c1b5426e1b9bdebd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9dd19ab27e5d4e69e8e50bf066eafc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9dd19ab27e5d4e69e8e50bf066eafc9"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:ac9dd19ab27e5d4e69e8e50bf066eafc9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63cde974dd706ac756abc03121093ec2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63cde974dd706ac756abc03121093ec2"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:a63cde974dd706ac756abc03121093ec2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aefe84a0ef509cd03eba043fe9bd45f9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe84a0ef509cd03eba043fe9bd45f9f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:aefe84a0ef509cd03eba043fe9bd45f9f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00142')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
+<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
+<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
+<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
+<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
+<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
+<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
+<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a07d030b43c6e2d9169a7e58db30a547b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07d030b43c6e2d9169a7e58db30a547b"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html#a07d030b43c6e2d9169a7e58db30a547b">try_put_task</a> (const T &t)</td></tr>
+<tr class="memdesc:a07d030b43c6e2d9169a7e58db30a547b"><td class="mdescLeft"> </td><td class="mdescRight">build a task to run the successor if possible. Default is old behavior. <br/></td></tr>
+<tr class="separator:a07d030b43c6e2d9169a7e58db30a547b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac83ec0b9ef18f06573a094aa4f525851"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac83ec0b9ef18f06573a094aa4f525851"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:ac83ec0b9ef18f06573a094aa4f525851"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8359e833552ecb59db265a3d61263d1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8359e833552ecb59db265a3d61263d1b"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a8359e833552ecb59db265a3d61263d1b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a55e368638761b5ce3827537e24cb42be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55e368638761b5ce3827537e24cb42be"></a>
-char </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
-<tr class="separator:a55e368638761b5ce3827537e24cb42be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b8cdbd2350a186908b1cc55119e4556"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b8cdbd2350a186908b1cc55119e4556"></a>
-T * </td><td class="memItemRight" valign="bottom"><b>elem</b></td></tr>
-<tr class="separator:a6b8cdbd2350a186908b1cc55119e4556"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3765a8f7bf12aa4f6c39d09565a6ba44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3765a8f7bf12aa4f6c39d09565a6ba44"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>ltask</b></td></tr>
-<tr class="separator:a3765a8f7bf12aa4f6c39d09565a6ba44"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b0eeb6204931c19e1df0087016f6548"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b0eeb6204931c19e1df0087016f6548"></a>
-<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> * </td><td class="memItemRight" valign="bottom"><b>r</b></td></tr>
-<tr class="separator:a0b0eeb6204931c19e1df0087016f6548"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::flow::interface7::broadcast_node< T ></h3>
+
+<p>Forwards messages of type T to all successors. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00028.png b/doc/html/a00028.png
index 742b4d1..1ccd735 100644
Binary files a/doc/html/a00028.png and b/doc/html/a00028.png differ
diff --git a/doc/html/a00029.html b/doc/html/a00029.html
index 8f3af5f..306bc5b 100644
--- a/doc/html/a00029.html
+++ b/doc/html/a00029.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::cache_aligned_allocator< T > Class Template Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,109 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00029.html">cache_aligned_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00029.html">bucket_accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00250.html">List of all members</a>  </div>
+<a href="a00371.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<p>bucket accessor is to find, rehash, acquire a lock, and access a bucket  
  <a href="a00029.html#details">More...</a></p>
 
-<p><code>#include <cache_aligned_allocator.h></code></p>
+<p><code>#include <concurrent_hash_map.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00029.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map" alt=""/>
+  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html">rebind</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a7aba3042b0a1c934879d5299f0c20e7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7aba3042b0a1c934879d5299f0c20e7e"></a>
-typedef <br class="typebreak"/>
-internal::allocator_type< T ><br class="typebreak"/>
-::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a7aba3042b0a1c934879d5299f0c20e7e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6fabbb51a8fd7b270b94fc4d9548847b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fabbb51a8fd7b270b94fc4d9548847b"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a6fabbb51a8fd7b270b94fc4d9548847b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a35edf40f1bb3418f61e7d33c9f796824"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35edf40f1bb3418f61e7d33c9f796824"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a35edf40f1bb3418f61e7d33c9f796824"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9f2f6c7ca74e1f3968d838eec2c4dcb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9f2f6c7ca74e1f3968d838eec2c4dcb"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:ac9f2f6c7ca74e1f3968d838eec2c4dcb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af50d27e385aea41dbb8a9cd0734f1c84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af50d27e385aea41dbb8a9cd0734f1c84"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:af50d27e385aea41dbb8a9cd0734f1c84"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51eed827a49fd636d1d6c73908f9635b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51eed827a49fd636d1d6c73908f9635b"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a51eed827a49fd636d1d6c73908f9635b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8bf47c52cdeee1bc0dcd410cc97faeec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bf47c52cdeee1bc0dcd410cc97faeec"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a8bf47c52cdeee1bc0dcd410cc97faeec"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a11b1921251262137671599e99fbe8d4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11b1921251262137671599e99fbe8d4e"></a>
- </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00029.html">cache_aligned_allocator</a> &)  throw ()</td></tr>
-<tr class="separator:a11b1921251262137671599e99fbe8d4e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab5a78cc56dcc0851117b3c88bb3af16a"></a>
-template<typename U > </td></tr>
-<tr class="memitem:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00029.html">cache_aligned_allocator</a>< U > &)  throw ()</td></tr>
-<tr class="separator:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39aa68042abff22210f801eab98f6dfa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39aa68042abff22210f801eab98f6dfa"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-<tr class="separator:a39aa68042abff22210f801eab98f6dfa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5bd8fe0e5de894404c8b868b37a0fe53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bd8fe0e5de894404c8b868b37a0fe53"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-<tr class="separator:a5bd8fe0e5de894404c8b868b37a0fe53"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99d05096f80877849cb31d80247e0f85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99d05096f80877849cb31d80247e0f85"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#a99d05096f80877849cb31d80247e0f85">allocate</a> (size_type n, const void *hint=0)</td></tr>
-<tr class="memdesc:a99d05096f80877849cb31d80247e0f85"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects, starting on a cache/sector line. <br/></td></tr>
-<tr class="separator:a99d05096f80877849cb31d80247e0f85"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f7310e046c4b6b8618864de8e27a471"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f7310e046c4b6b8618864de8e27a471"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#a7f7310e046c4b6b8618864de8e27a471">deallocate</a> (pointer p, size_type)</td></tr>
-<tr class="memdesc:a7f7310e046c4b6b8618864de8e27a471"><td class="mdescLeft"> </td><td class="mdescRight">Free block of memory that starts on a cache line. <br/></td></tr>
-<tr class="separator:a7f7310e046c4b6b8618864de8e27a471"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b945b3180ea3dfe16dfa048f4591c6d"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#a4b945b3180ea3dfe16dfa048f4591c6d">max_size</a> () const   throw ()</td></tr>
-<tr class="memdesc:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
-<tr class="separator:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab316f80a66b991801b4ec4ea88b852d9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab316f80a66b991801b4ec4ea88b852d9"></a>
-template<typename U , typename... Args> </td></tr>
-<tr class="memitem:ab316f80a66b991801b4ec4ea88b852d9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00029.html#ab316f80a66b991801b4ec4ea88b852d9">construct</a> (U *p, Args &&...args)</td></tr>
-<tr class="memdesc:ab316f80a66b991801b4ec4ea88b852d9"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
-<tr class="separator:ab316f80a66b991801b4ec4ea88b852d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5086d395a952eb13eb7d72bb0cb26937"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5086d395a952eb13eb7d72bb0cb26937"></a>
-void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
-<tr class="separator:a5086d395a952eb13eb7d72bb0cb26937"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2fd054d055403d4ea669fd3af661cc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2fd054d055403d4ea669fd3af661cc8"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#af2fd054d055403d4ea669fd3af661cc8">destroy</a> (pointer p)</td></tr>
-<tr class="memdesc:af2fd054d055403d4ea669fd3af661cc8"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
-<tr class="separator:af2fd054d055403d4ea669fd3af661cc8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8dc51ef88ff53cc6cc4e40e2c2818eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8dc51ef88ff53cc6cc4e40e2c2818eb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>bucket_accessor</b> (<a class="el" href="a00043.html">concurrent_hash_map</a> *base, const hashcode_t h, bool writer=false)</td></tr>
+<tr class="separator:ab8dc51ef88ff53cc6cc4e40e2c2818eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d7d8f3d101bb18056b8e5d4d2c8b079"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">acquire</a> (<a class="el" href="a00043.html">concurrent_hash_map</a> *base, const hashcode_t h, bool writer=false)</td></tr>
+<tr class="memdesc:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="mdescLeft"> </td><td class="mdescRight">find a bucket by masked hashcode, optionally rehash, and acquire the lock <br/></td></tr>
+<tr class="separator:a0d7d8f3d101bb18056b8e5d4d2c8b079"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa8167e2961330435fd23eb92127805c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa8167e2961330435fd23eb92127805c"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#aaa8167e2961330435fd23eb92127805c">is_writer</a> ()</td></tr>
+<tr class="memdesc:aaa8167e2961330435fd23eb92127805c"><td class="mdescLeft"> </td><td class="mdescRight">check whether bucket is locked for write <br/></td></tr>
+<tr class="separator:aaa8167e2961330435fd23eb92127805c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16e714a5e77dbf8daf81973df30722d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16e714a5e77dbf8daf81973df30722d4"></a>
+bucket * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html#a16e714a5e77dbf8daf81973df30722d4">operator()</a> ()</td></tr>
+<tr class="memdesc:a16e714a5e77dbf8daf81973df30722d4"><td class="mdescLeft"> </td><td class="mdescRight">get bucket pointer <br/></td></tr>
+<tr class="separator:a16e714a5e77dbf8daf81973df30722d4"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::cache_aligned_allocator< T ></h3>
+<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</h3>
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
-<p>The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
+<p>bucket accessor is to find, rehash, acquire a lock, and access a bucket </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>cache_aligned_allocator.h</li>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00026.png b/doc/html/a00029.png
similarity index 100%
rename from doc/html/a00026.png
rename to doc/html/a00029.png
diff --git a/doc/html/a00030.html b/doc/html/a00030.html
index 58bfb6b..ba4786a 100644
--- a/doc/html/a00030.html
+++ b/doc/html/a00030.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::cache_aligned_allocator< void > Class Template Reference</title>
+<title>tbb::flow::interface7::buffer_node< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,53 +33,585 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00030.html">buffer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
-<a href="a00252.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00343.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::buffer_node< T, A > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<p>Forwards messages in arbitrary order.  
  <a href="a00030.html#details">More...</a></p>
 
-<p><code>#include <cache_aligned_allocator.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::buffer_node< T, A >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00030.png" usemap="#tbb::flow::interface7::buffer_node< T, A >_map" alt=""/>
+  <map id="tbb::flow::interface7::buffer_node< T, A >_map" name="tbb::flow::interface7::buffer_node< T, A >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,352,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="724,56,1076,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="1086,56,1438,80"/>
+<area href="a00109.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="362,168,714,192"/>
+<area href="a00110.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="724,168,1076,192"/>
+<area href="a00143.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="724,224,1076,248"/>
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html">rebind</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html">buffer_operation</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a630325567e2ede3937a0d2e0f2da6a3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a630325567e2ede3937a0d2e0f2da6a3f"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a630325567e2ede3937a0d2e0f2da6a3f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36f63efa0a37d205705b9d5944432864"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f63efa0a37d205705b9d5944432864"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a36f63efa0a37d205705b9d5944432864"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af7f973d0bb12319600505cf9c1fb35b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7f973d0bb12319600505cf9c1fb35b0"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:af7f973d0bb12319600505cf9c1fb35b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abedb8c98e62146c3473344b7148173b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:abedb8c98e62146c3473344b7148173b8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c34a2182dcbbded45da979b0f405817"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a3c34a2182dcbbded45da979b0f405817"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
+<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a66143b157bc766e35601b0c28362f99e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66143b157bc766e35601b0c28362f99e"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a66143b157bc766e35601b0c28362f99e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39ebd2459b9cb2497e323141685c926f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39ebd2459b9cb2497e323141685c926f"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a39ebd2459b9cb2497e323141685c926f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a152f7bb9ab1f033ec56caa451327634c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00030.html">buffer_node</a> &src)</td></tr>
+<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a739635c43d1150f2c8dd3f455d698d36"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6d38f53c02a6fa64754826249dab5185"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d38f53c02a6fa64754826249dab5185"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a6d38f53c02a6fa64754826249dab5185"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e87f7e8fd8698f62f2cad8b52b6e565"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a5e87f7e8fd8698f62f2cad8b52b6e565"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#a5e87f7e8fd8698f62f2cad8b52b6e565">More...</a><br/></td></tr>
+<tr class="separator:a5e87f7e8fd8698f62f2cad8b52b6e565"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1db0288f46391e3a0a003c181ae87c38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1db0288f46391e3a0a003c181ae87c38"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:a1db0288f46391e3a0a003c181ae87c38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acce1c8dbcf21cfb56d1583cb716398f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acce1c8dbcf21cfb56d1583cb716398f4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:acce1c8dbcf21cfb56d1583cb716398f4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c20eb93a5601b442a589a20bca403a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c20eb93a5601b442a589a20bca403a4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a4c20eb93a5601b442a589a20bca403a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae19e0420a628d31cbd685c4c9e513f04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae19e0420a628d31cbd685c4c9e513f04"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:ae19e0420a628d31cbd685c4c9e513f04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a784b06e7c4091a3ef4f9a6b0ffe35bdb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a784b06e7c4091a3ef4f9a6b0ffe35bdb"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a784b06e7c4091a3ef4f9a6b0ffe35bdb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95a3b3ce6658e5c3298e2e361cde9a78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95a3b3ce6658e5c3298e2e361cde9a78"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:a95a3b3ce6658e5c3298e2e361cde9a78"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af20f7dba5c291f03bfabcabe250cbd23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af20f7dba5c291f03bfabcabe250cbd23"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:af20f7dba5c291f03bfabcabe250cbd23"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ec31111eb839e28e2cfeb08192bbfa5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec31111eb839e28e2cfeb08192bbfa5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a7ec31111eb839e28e2cfeb08192bbfa5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c31300c060bffbbad7798219e702aba"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a3c31300c060bffbbad7798219e702aba"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a3c31300c060bffbbad7798219e702aba">More...</a><br/></td></tr>
+<tr class="separator:a3c31300c060bffbbad7798219e702aba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
+<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00030.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
+<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
+<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
+<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa3745fd4705345df16fb33954d93e30"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
+<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
+<tr class="separator:aaa3745fd4705345df16fb33954d93e30"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a335072bc547c5e9b40f58dfeab525953"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
+<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
+<tr class="separator:a335072bc547c5e9b40f58dfeab525953"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fcdf027115b519b3b868a7430c39639"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcdf027115b519b3b868a7430c39639"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a6fcdf027115b519b3b868a7430c39639"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
+  <b>reg_succ</b>, 
+<b>rem_succ</b>, 
+<b>req_item</b>, 
+<b>res_item</b>, 
+<br/>
+  <b>rel_res</b>, 
+<b>con_res</b>, 
+<b>put_item</b>, 
+<b>try_fwd_task</b>, 
+<br/>
+  <b>add_blt_succ</b>, 
+<b>del_blt_succ</b>, 
+<b>add_blt_pred</b>, 
+<b>del_blt_pred</b>, 
+<br/>
+  <b>blt_succ_cnt</b>, 
+<b>blt_pred_cnt</b>, 
+<b>blt_succ_cpy</b>, 
+<b>blt_pred_cpy</b>
+<br/>
+ }</td></tr>
+<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
+typedef <br class="typebreak"/>
+internal::aggregating_functor<br class="typebreak"/>
+< <a class="el" href="a00030.html">my_class</a>, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
+<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f09abf6db812abcbeb262b7f1b844a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f09abf6db812abcbeb262b7f1b844a5"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a5f09abf6db812abcbeb262b7f1b844a5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a81e553b64ccf191ddf3768cb1c184c1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81e553b64ccf191ddf3768cb1c184c1d"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a81e553b64ccf191ddf3768cb1c184c1d"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a2d09326016a31e17acd57f8e6ce58054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d09326016a31e17acd57f8e6ce58054"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00031.html">buffer_operation</a> *op_list)</td></tr>
+<tr class="separator:a2d09326016a31e17acd57f8e6ce58054"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fde962bed26ee41c370e48bce678320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a5fde962bed26ee41c370e48bce678320"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
+virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
+<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
+<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
+<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
+<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3fd4023955e4ab600dbc0e31740e6321"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fd4023955e4ab600dbc0e31740e6321"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a3fd4023955e4ab600dbc0e31740e6321"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb7b729bec462169cb67326bd17b11e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb7b729bec462169cb67326bd17b11e4"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aeb7b729bec462169cb67326bd17b11e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac382cedb8002e429ce2ccda29ed0d137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac382cedb8002e429ce2ccda29ed0d137"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac382cedb8002e429ce2ccda29ed0d137"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a951a36f8f2ed91f9b7c918486dc915"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a951a36f8f2ed91f9b7c918486dc915"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a1a951a36f8f2ed91f9b7c918486dc915"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac851d86cc55d14f57b4cc7ef889610be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac851d86cc55d14f57b4cc7ef889610be"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac851d86cc55d14f57b4cc7ef889610be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a32ff0f0106531343a46b53b882763317"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32ff0f0106531343a46b53b882763317"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a32ff0f0106531343a46b53b882763317"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a632cbb0a8529d8fb559aa33cbd99b613"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a632cbb0a8529d8fb559aa33cbd99b613"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_succ_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a632cbb0a8529d8fb559aa33cbd99b613"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa162bcd7cf8f7021ad8571d4db505bff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa162bcd7cf8f7021ad8571d4db505bff"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_pred_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aa162bcd7cf8f7021ad8571d4db505bff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2fad967e9fff72d5e7669f94744bc2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fad967e9fff72d5e7669f94744bc2d"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_succs</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ae2fad967e9fff72d5e7669f94744bc2d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c60751dba6a99adef58871ee520ae6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c60751dba6a99adef58871ee520ae6e"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_preds</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a5c60751dba6a99adef58871ee520ae6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3aa7578ccbd3d5f986869ab8698c037c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3aa7578ccbd3d5f986869ab8698c037c"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3aa7578ccbd3d5f986869ab8698c037c">internal_forward_task</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:a3aa7578ccbd3d5f986869ab8698c037c"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
+<tr class="separator:a3aa7578ccbd3d5f986869ab8698c037c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2fe75e82e8dffa7d13fa9e82d9951dba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe75e82e8dffa7d13fa9e82d9951dba"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a2fe75e82e8dffa7d13fa9e82d9951dba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a574bf95b7b06f24bafb13aa586dd2c66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a574bf95b7b06f24bafb13aa586dd2c66"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a574bf95b7b06f24bafb13aa586dd2c66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeaea0922cb1344925524d892864f78e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeaea0922cb1344925524d892864f78e0"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aeaea0922cb1344925524d892864f78e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f90411a5cc3f5c7c4210f8bb4e73f68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f90411a5cc3f5c7c4210f8bb4e73f68"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a5f90411a5cc3f5c7c4210f8bb4e73f68"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae7b3eee1ec878f6f0055f6133b233c09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7b3eee1ec878f6f0055f6133b233c09"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ae7b3eee1ec878f6f0055f6133b233c09"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
+<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
+<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ace801f92ca3f0525835d67afba0eef6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace801f92ca3f0525835d67afba0eef6c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:ace801f92ca3f0525835d67afba0eef6c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc1b4323f79b01468a106ca313cfede7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc1b4323f79b01468a106ca313cfede7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:acc1b4323f79b01468a106ca313cfede7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ade2fe89be00e023aafb1d3c380762048"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
+<a class="el" href="a00126.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
+<a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:ade2fe89be00e023aafb1d3c380762048"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4eda90c0f6300644705f142c6ada1a4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eda90c0f6300644705f142c6ada1a4d"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:a4eda90c0f6300644705f142c6ada1a4d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
+<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
+internal::aggregator<br class="typebreak"/>
+< my_handler, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
+<tr class="separator:adc948866a1eb4c7a95b0edc08872d487"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ad66dc7488e0c58eef0d3ae292d900c04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad66dc7488e0c58eef0d3ae292d900c04"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass< buffer_node< T, A > ></b></td></tr>
+<tr class="separator:ad66dc7488e0c58eef0d3ae292d900c04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fa999cf286dcad00faeece4cbfa35d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fa999cf286dcad00faeece4cbfa35d2"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::aggregating_functor< my_class, buffer_operation ></b></td></tr>
+<tr class="separator:a8fa999cf286dcad00faeece4cbfa35d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<><br/>
-class tbb::cache_aligned_allocator< void ></h3>
+<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
+class tbb::flow::interface7::buffer_node< T, A ></h3>
+
+<p>Forwards messages in arbitrary order. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a5e87f7e8fd8698f62f2cad8b52b6e565"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::register_successor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> & </td>
+          <td class="paramname"><em>r</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Adds a new successor. </p>
+<p>Adds successor r to the list of successors; may forward tasks. </p>
+
+<p>Implements <a class="el" href="a00142.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3c31300c060bffbbad7798219e702aba"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::remove_successor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> & </td>
+          <td class="paramname"><em>r</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Removes a successor. </p>
+<p>Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor. </p>
+
+<p>Implements <a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>.</p>
+
+<p>References <a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< T >::remove_predecessor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a335072bc547c5e9b40f58dfeab525953"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_consume </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Consumes a reserved item. </p>
+<p>true = item is removed from sender and reservation removed </p>
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>cache_aligned_allocator.h</li>
+<p>Reimplemented from <a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a175cb77dfbdd0e322097a833a2271c1e"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_get </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"><em>v</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Request an item from the <a class="el" href="a00030.html" title="Forwards messages in arbitrary order. ">buffer_node</a>. </p>
+<p>true = v contains the returned item<br/>
+ false = no item has been returned </p>
+
+<p>Reimplemented from <a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaa3745fd4705345df16fb33954d93e30"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_release </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Release a reserved item. </p>
+<p>true = item has been released and so remains in sender </p>
+
+<p>Reimplemented from <a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b12cdebf8cef15b90e3c9cd9e51019f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, typename A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node</a>< T, A >::try_reserve </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"><em>v</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Reserves an item. </p>
+<p>false = no item can be reserved<br/>
+ true = an item is reserved </p>
+
+<p>Reimplemented from <a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00030.png b/doc/html/a00030.png
new file mode 100644
index 0000000..169664e
Binary files /dev/null and b/doc/html/a00030.png differ
diff --git a/doc/html/a00031.html b/doc/html/a00031.html
index 9916d54..c1f79eb 100644
--- a/doc/html/a00031.html
+++ b/doc/html/a00031.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::captured_exception Class Reference</title>
+<title>tbb::flow::interface7::buffer_node< T, A >::buffer_operation Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,179 +33,68 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00031.html">captured_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00030.html">buffer_node</a></li><li class="navelem"><a class="el" href="a00031.html">buffer_operation</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00303.html">List of all members</a>  </div>
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00344.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::captured_exception Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::buffer_node< T, A >::buffer_operation Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>This class is used by TBB to propagate information about unhandled exceptions into the root thread.  
- <a href="a00031.html#details">More...</a></p>
-
-<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::captured_exception:</div>
+Inheritance diagram for tbb::flow::interface7::buffer_node< T, A >::buffer_operation:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00031.png" usemap="#tbb::captured_exception_map" alt=""/>
-  <map id="tbb::captured_exception_map" name="tbb::captured_exception_map">
-<area href="a00146.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads..." alt="tbb::tbb_exception" shape="rect" coords="0,56,146,80"/>
+  <img src="a00031.png" usemap="#tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map" alt=""/>
+  <map id="tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map" name="tbb::flow::interface7::buffer_node< T, A >::buffer_operation_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a56f6c51b6d4f8ce31669457ff8f0c07f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56f6c51b6d4f8ce31669457ff8f0c07f"></a>
- </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const <a class="el" href="a00031.html">captured_exception</a> &src)</td></tr>
-<tr class="separator:a56f6c51b6d4f8ce31669457ff8f0c07f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3d72662db6a2badffa95a649a6c0bdd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3d72662db6a2badffa95a649a6c0bdd"></a>
- </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const char *name_, const char *info)</td></tr>
-<tr class="separator:ab3d72662db6a2badffa95a649a6c0bdd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78a66603238d40da9ec6a750b6a2425c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78a66603238d40da9ec6a750b6a2425c"></a>
-<a class="el" href="a00031.html">captured_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00031.html">captured_exception</a> &src)</td></tr>
-<tr class="separator:a78a66603238d40da9ec6a750b6a2425c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb221485cd260349efdef681f633a6a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00031.html">captured_exception</a> <br class="typebreak"/>
-*__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4">move</a> ()  throw ()</td></tr>
-<tr class="memdesc:abb221485cd260349efdef681f633a6a4"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#abb221485cd260349efdef681f633a6a4">More...</a><br/></td></tr>
-<tr class="separator:abb221485cd260349efdef681f633a6a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3006b6825dda6c746d28fb748f5675de"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html#a3006b6825dda6c746d28fb748f5675de">destroy</a> ()  throw ()</td></tr>
-<tr class="memdesc:a3006b6825dda6c746d28fb748f5675de"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#a3006b6825dda6c746d28fb748f5675de">More...</a><br/></td></tr>
-<tr class="separator:a3006b6825dda6c746d28fb748f5675de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html#ac9ae925678fcc0cc02a74df7d06b8d63">throw_self</a> ()</td></tr>
-<tr class="memdesc:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#ac9ae925678fcc0cc02a74df7d06b8d63">More...</a><br/></td></tr>
-<tr class="separator:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a23426113851b78d3f0069956afd21976"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23426113851b78d3f0069956afd21976"></a>
-const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html#a23426113851b78d3f0069956afd21976">name</a> () const   throw ()</td></tr>
-<tr class="memdesc:a23426113851b78d3f0069956afd21976"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
-<tr class="separator:a23426113851b78d3f0069956afd21976"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac97ee315d8613c803dae2f6d3e0b91a7"></a>
-const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html#ac97ee315d8613c803dae2f6d3e0b91a7">what</a> () const   throw ()</td></tr>
-<tr class="memdesc:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00031.html#ac97ee315d8613c803dae2f6d3e0b91a7" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
-<tr class="separator:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa72deb29316e8c08700f7e6afa4a48e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa72deb29316e8c08700f7e6afa4a48e8"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>set</b> (const char *<a class="el" href="a00031.html#a23426113851b78d3f0069956afd21976">name</a>, const char *info)  throw ()</td></tr>
-<tr class="separator:aa72deb29316e8c08700f7e6afa4a48e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b160c0fc5d2fab90df2be96ea14088a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b160c0fc5d2fab90df2be96ea14088a"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>clear</b> ()  throw ()</td></tr>
-<tr class="separator:a0b160c0fc5d2fab90df2be96ea14088a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00146"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00146')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00146.html">tbb::tbb_exception</a></td></tr>
-<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00146"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
-<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00146"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a77b9eaaed3b74938679461fa5d1986e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77b9eaaed3b74938679461fa5d1986e1"></a>
+ </td><td class="memItemRight" valign="bottom"><b>buffer_operation</b> (const T &e, op_type t)</td></tr>
+<tr class="separator:a77b9eaaed3b74938679461fa5d1986e1"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a55e368638761b5ce3827537e24cb42be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55e368638761b5ce3827537e24cb42be"></a>
+char </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+<tr class="separator:a55e368638761b5ce3827537e24cb42be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abffd4381c42c8649a55a84c8b3bcdaf6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abffd4381c42c8649a55a84c8b3bcdaf6"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>ltask</b></td></tr>
+<tr class="separator:abffd4381c42c8649a55a84c8b3bcdaf6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acfc7bfd392d3df23d72022c6747c7500"><td class="memItemLeft" ><a class="anchor" id="acfc7bfd392d3df23d72022c6747c7500"></a>
+union {</td></tr>
+<tr class="memitem:a8604f4565a9775acc626b615270d05f9"><td class="memItemLeft" >   input_type *   <b>elem</b></td></tr>
+<tr class="separator:a8604f4565a9775acc626b615270d05f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb6eba4187566eebb8b08c66b7c02fea"><td class="memItemLeft" >   <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> *   <b>r</b></td></tr>
+<tr class="separator:abb6eba4187566eebb8b08c66b7c02fea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af51cf10e00fb3e14f6452e4eeeb440eb"><td class="memItemLeft" >   <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> *   <b>p</b></td></tr>
+<tr class="separator:af51cf10e00fb3e14f6452e4eeeb440eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a096faad0d5b0081fbe536995fae63b8e"><td class="memItemLeft" >   size_t   <b>cnt_val</b></td></tr>
+<tr class="separator:a096faad0d5b0081fbe536995fae63b8e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aa258d48282332dda22f8b605f84db0"><td class="memItemLeft" >   successor_list_type *   <b>svec</b></td></tr>
+<tr class="separator:a8aa258d48282332dda22f8b605f84db0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a45cfe2f7d4ad0d85ab30df3594f2b404"><td class="memItemLeft" >   predecessor_list_type *   <b>pvec</b></td></tr>
+<tr class="separator:a45cfe2f7d4ad0d85ab30df3594f2b404"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acfc7bfd392d3df23d72022c6747c7500"><td class="memItemLeft" valign="top">}; </td><td class="memItemRight" valign="bottom"></td></tr>
+<tr class="separator:acfc7bfd392d3df23d72022c6747c7500"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6b8cdbd2350a186908b1cc55119e4556"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b8cdbd2350a186908b1cc55119e4556"></a>
+T * </td><td class="memItemRight" valign="bottom"><b>elem</b></td></tr>
+<tr class="separator:a6b8cdbd2350a186908b1cc55119e4556"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>This class is used by TBB to propagate information about unhandled exceptions into the root thread. </p>
-<p>Exception of this type is thrown by TBB in the root thread (thread that started a parallel algorithm ) if an unhandled exception was intercepted during the algorithm execution in one of the workers. </p>
-<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00146.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> </dd></dl>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a3006b6825dda6c746d28fb748f5675de"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::captured_exception::destroy </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Destroys objects created by the <a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
-<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
-
-<p>Implements <a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="abb221485cd260349efdef681f633a6a4"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00031.html">captured_exception</a>* __TBB_EXPORTED_METHOD tbb::captured_exception::move </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Creates and returns pointer to the deep copy of this exception object. </p>
-<p>Move semantics is allowed. </p>
-
-<p>Implements <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac9ae925678fcc0cc02a74df7d06b8d63"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::captured_exception::throw_self </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Throws this exception object. </p>
-<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
-
-<p>Implements <a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00031.png b/doc/html/a00031.png
index 131abf6..742b4d1 100644
Binary files a/doc/html/a00031.png and b/doc/html/a00031.png differ
diff --git a/doc/html/a00032.html b/doc/html/a00032.html
index 87f4cd8..bb25834 100644
--- a/doc/html/a00032.html
+++ b/doc/html/a00032.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::combinable< T > Class Template Reference</title>
+<title>tbb::cache_aligned_allocator< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,69 +33,112 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">combinable</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">cache_aligned_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00254.html">List of all members</a>  </div>
+<a href="a00270.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::combinable< T > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::cache_aligned_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Thread-local storage with optional reduction.  
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
  <a href="a00032.html#details">More...</a></p>
 
-<p><code>#include <combinable.h></code></p>
+<p><code>#include <cache_aligned_allocator.h></code></p>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a7aba3042b0a1c934879d5299f0c20e7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7aba3042b0a1c934879d5299f0c20e7e"></a>
+typedef <br class="typebreak"/>
+internal::allocator_type< T ><br class="typebreak"/>
+::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a7aba3042b0a1c934879d5299f0c20e7e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fabbb51a8fd7b270b94fc4d9548847b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fabbb51a8fd7b270b94fc4d9548847b"></a>
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a6fabbb51a8fd7b270b94fc4d9548847b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35edf40f1bb3418f61e7d33c9f796824"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35edf40f1bb3418f61e7d33c9f796824"></a>
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a35edf40f1bb3418f61e7d33c9f796824"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9f2f6c7ca74e1f3968d838eec2c4dcb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9f2f6c7ca74e1f3968d838eec2c4dcb"></a>
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:ac9f2f6c7ca74e1f3968d838eec2c4dcb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af50d27e385aea41dbb8a9cd0734f1c84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af50d27e385aea41dbb8a9cd0734f1c84"></a>
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:af50d27e385aea41dbb8a9cd0734f1c84"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a51eed827a49fd636d1d6c73908f9635b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51eed827a49fd636d1d6c73908f9635b"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a51eed827a49fd636d1d6c73908f9635b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8bf47c52cdeee1bc0dcd410cc97faeec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bf47c52cdeee1bc0dcd410cc97faeec"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a8bf47c52cdeee1bc0dcd410cc97faeec"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab3c539d5731faaafd81979b207a4fa1f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab3c539d5731faaafd81979b207a4fa1f"></a>
-template<typename finit > </td></tr>
-<tr class="memitem:ab3c539d5731faaafd81979b207a4fa1f"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>combinable</b> (finit _finit)</td></tr>
-<tr class="separator:ab3c539d5731faaafd81979b207a4fa1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a52f00cf262d768048db72ab73c8f3ca4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52f00cf262d768048db72ab73c8f3ca4"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a52f00cf262d768048db72ab73c8f3ca4">~combinable</a> ()</td></tr>
-<tr class="memdesc:a52f00cf262d768048db72ab73c8f3ca4"><td class="mdescLeft"> </td><td class="mdescRight">destructor <br/></td></tr>
-<tr class="separator:a52f00cf262d768048db72ab73c8f3ca4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a376f44cba71450fc18ccddaad61b76cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376f44cba71450fc18ccddaad61b76cc"></a>
- </td><td class="memItemRight" valign="bottom"><b>combinable</b> (const <a class="el" href="a00032.html">combinable</a> &other)</td></tr>
-<tr class="separator:a376f44cba71450fc18ccddaad61b76cc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab011fbe2f0600900b6e1b9760d82aead"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab011fbe2f0600900b6e1b9760d82aead"></a>
-<a class="el" href="a00032.html">combinable</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00032.html">combinable</a> &other)</td></tr>
-<tr class="separator:ab011fbe2f0600900b6e1b9760d82aead"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ecfe80161a59f04ffd9676e79701de6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ecfe80161a59f04ffd9676e79701de6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
-<tr class="separator:a8ecfe80161a59f04ffd9676e79701de6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae47f982dbd396d225f0f546e60690d42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47f982dbd396d225f0f546e60690d42"></a>
-T & </td><td class="memItemRight" valign="bottom"><b>local</b> ()</td></tr>
-<tr class="separator:ae47f982dbd396d225f0f546e60690d42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2433d2b3b53b9979d0b3bb2a175abc9b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2433d2b3b53b9979d0b3bb2a175abc9b"></a>
-T & </td><td class="memItemRight" valign="bottom"><b>local</b> (bool &exists)</td></tr>
-<tr class="separator:a2433d2b3b53b9979d0b3bb2a175abc9b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3d564f6d480e0c7fe8e756d1de1cf0e2"></a>
-template<typename combine_func_t > </td></tr>
-<tr class="memitem:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>combine</b> (combine_func_t f_combine)</td></tr>
-<tr class="separator:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aadadee714004d977f0e95a479bfb80ac"><td class="memTemplParams" colspan="2"><a class="anchor" id="aadadee714004d977f0e95a479bfb80ac"></a>
-template<typename combine_func_t > </td></tr>
-<tr class="memitem:aadadee714004d977f0e95a479bfb80ac"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>combine_each</b> (combine_func_t f_combine)</td></tr>
-<tr class="separator:aadadee714004d977f0e95a479bfb80ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a11b1921251262137671599e99fbe8d4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11b1921251262137671599e99fbe8d4e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00032.html">cache_aligned_allocator</a> &)  throw ()</td></tr>
+<tr class="separator:a11b1921251262137671599e99fbe8d4e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab5a78cc56dcc0851117b3c88bb3af16a"></a>
+template<typename U > </td></tr>
+<tr class="memitem:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>cache_aligned_allocator</b> (const <a class="el" href="a00032.html">cache_aligned_allocator</a>< U > &)  throw ()</td></tr>
+<tr class="separator:ab5a78cc56dcc0851117b3c88bb3af16a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39aa68042abff22210f801eab98f6dfa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39aa68042abff22210f801eab98f6dfa"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+<tr class="separator:a39aa68042abff22210f801eab98f6dfa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5bd8fe0e5de894404c8b868b37a0fe53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bd8fe0e5de894404c8b868b37a0fe53"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+<tr class="separator:a5bd8fe0e5de894404c8b868b37a0fe53"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a99d05096f80877849cb31d80247e0f85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99d05096f80877849cb31d80247e0f85"></a>
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a99d05096f80877849cb31d80247e0f85">allocate</a> (size_type n, const void *hint=0)</td></tr>
+<tr class="memdesc:a99d05096f80877849cb31d80247e0f85"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects, starting on a cache/sector line. <br/></td></tr>
+<tr class="separator:a99d05096f80877849cb31d80247e0f85"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f7310e046c4b6b8618864de8e27a471"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f7310e046c4b6b8618864de8e27a471"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a7f7310e046c4b6b8618864de8e27a471">deallocate</a> (pointer p, size_type)</td></tr>
+<tr class="memdesc:a7f7310e046c4b6b8618864de8e27a471"><td class="mdescLeft"> </td><td class="mdescRight">Free block of memory that starts on a cache line. <br/></td></tr>
+<tr class="separator:a7f7310e046c4b6b8618864de8e27a471"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b945b3180ea3dfe16dfa048f4591c6d"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#a4b945b3180ea3dfe16dfa048f4591c6d">max_size</a> () const   throw ()</td></tr>
+<tr class="memdesc:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
+<tr class="separator:a4b945b3180ea3dfe16dfa048f4591c6d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab316f80a66b991801b4ec4ea88b852d9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab316f80a66b991801b4ec4ea88b852d9"></a>
+template<typename U , typename... Args> </td></tr>
+<tr class="memitem:ab316f80a66b991801b4ec4ea88b852d9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00032.html#ab316f80a66b991801b4ec4ea88b852d9">construct</a> (U *p, Args &&...args)</td></tr>
+<tr class="memdesc:ab316f80a66b991801b4ec4ea88b852d9"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
+<tr class="separator:ab316f80a66b991801b4ec4ea88b852d9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac5b39984a3eee60e5bf0f10ef609dc4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5b39984a3eee60e5bf0f10ef609dc4c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, value_type &&value)</td></tr>
+<tr class="separator:ac5b39984a3eee60e5bf0f10ef609dc4c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5086d395a952eb13eb7d72bb0cb26937"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5086d395a952eb13eb7d72bb0cb26937"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
+<tr class="separator:a5086d395a952eb13eb7d72bb0cb26937"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af2fd054d055403d4ea669fd3af661cc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2fd054d055403d4ea669fd3af661cc8"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html#af2fd054d055403d4ea669fd3af661cc8">destroy</a> (pointer p)</td></tr>
+<tr class="memdesc:af2fd054d055403d4ea669fd3af661cc8"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
+<tr class="separator:af2fd054d055403d4ea669fd3af661cc8"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><h3>template<typename T><br/>
-class tbb::combinable< T ></h3>
+class tbb::cache_aligned_allocator< T ></h3>
 
-<p>Thread-local storage with optional reduction. </p>
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
+<p>The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>combinable.h</li>
+<li>cache_aligned_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00033.html b/doc/html/a00033.html
index 00e700c..8bbb943 100644
--- a/doc/html/a00033.html
+++ b/doc/html/a00033.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference</title>
+<title>tbb::cache_aligned_allocator< void > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,53 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00033.html">concrete_filter</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="a00272.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+ <a href="a00033.html#details">More...</a></p>
+
+<p><code>#include <cache_aligned_allocator.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a630325567e2ede3937a0d2e0f2da6a3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a630325567e2ede3937a0d2e0f2da6a3f"></a>
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a630325567e2ede3937a0d2e0f2da6a3f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a36f63efa0a37d205705b9d5944432864"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f63efa0a37d205705b9d5944432864"></a>
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a36f63efa0a37d205705b9d5944432864"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af7f973d0bb12319600505cf9c1fb35b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7f973d0bb12319600505cf9c1fb35b0"></a>
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:af7f973d0bb12319600505cf9c1fb35b0"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<><br/>
+class tbb::cache_aligned_allocator< void ></h3>
+
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>cache_aligned_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00034.html b/doc/html/a00034.html
index 7d035ff..e90181a 100644
--- a/doc/html/a00034.html
+++ b/doc/html/a00034.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::concurrent_bounded_queue< T, A > Class Template Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,330 +33,41 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00034.html">concurrent_bounded_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00034.html">call_clear_on_leave</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00256.html">List of all members</a>  </div>
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00372.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::concurrent_bounded_queue< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A high-performance thread-safe blocking concurrent bounded queue.  
- <a href="a00034.html#details">More...</a></p>
-
-<p><code>#include <concurrent_queue.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::concurrent_bounded_queue< T, A >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00034.png" usemap="#tbb::concurrent_bounded_queue< T, A >_map" alt=""/>
-  <map id="tbb::concurrent_bounded_queue< T, A >_map" name="tbb::concurrent_bounded_queue< T, A >_map">
-<area href="a00039.html" title="A high-performance thread-safe blocking concurrent bounded queue. " alt="tbb::deprecated::concurrent_queue< T, A >" shape="rect" coords="0,112,257,136"/>
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb564625fef03dd9a5881d5d4e52f9f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a></td></tr>
-<tr class="memdesc:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
-<tr class="separator:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbfceb845de1c770e2b56409f09b0364"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbfceb845de1c770e2b56409f09b0364"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a></td></tr>
-<tr class="memdesc:acbfceb845de1c770e2b56409f09b0364"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
-<tr class="separator:acbfceb845de1c770e2b56409f09b0364"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa4002bcd265d9d3ed305e3b686f1da"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a></td></tr>
-<tr class="memdesc:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
-<tr class="separator:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af838e520ce0db2c22369748c019b11cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af838e520ce0db2c22369748c019b11cb"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">const_reference</a></td></tr>
-<tr class="memdesc:af838e520ce0db2c22369748c019b11cb"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
-<tr class="separator:af838e520ce0db2c22369748c019b11cb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a></td></tr>
-<tr class="memdesc:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue.  <a href="#ae73fa352d781bdb9d01bfb77f2a8bc28">More...</a><br/></td></tr>
-<tr class="separator:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72725361e050c5a981035a20ef1b773e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72725361e050c5a981035a20ef1b773e"></a>
-typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">difference_type</a></td></tr>
-<tr class="memdesc:a72725361e050c5a981035a20ef1b773e"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
-<tr class="separator:a72725361e050c5a981035a20ef1b773e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42dfb71b1e4bdc0da3c1217d0d40ddd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42dfb71b1e4bdc0da3c1217d0d40ddd5"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00034.html">concurrent_bounded_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a42dfb71b1e4bdc0da3c1217d0d40ddd5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18049841284051e18b854692bd04602c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18049841284051e18b854692bd04602c"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00034.html">concurrent_bounded_queue</a>, <br class="typebreak"/>
-const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a18049841284051e18b854692bd04602c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a85f8a800cae02b601f36ad7a655a0126"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85f8a800cae02b601f36ad7a655a0126"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a> (const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
-<tr class="memdesc:a85f8a800cae02b601f36ad7a655a0126"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
-<tr class="separator:a85f8a800cae02b601f36ad7a655a0126"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad6fd2353d64c2c31d074cd99df58c02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad6fd2353d64c2c31d074cd99df58c02"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a> (const <a class="el" href="a00034.html">concurrent_bounded_queue</a> &src, const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
-<tr class="memdesc:aad6fd2353d64c2c31d074cd99df58c02"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aad6fd2353d64c2c31d074cd99df58c02"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcfdc998e106fdb7b2dfa5df880cd9cf"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00034.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())< [...]
-<tr class="memdesc:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
-<tr class="separator:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1291bf6837ecfb8836c24dde5dd80b5"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a> ()</td></tr>
-<tr class="memdesc:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br/></td></tr>
-<tr class="separator:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5e9051772bbc93b2ccb8fd0a98a21f5"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a> (const T &source)</td></tr>
-<tr class="memdesc:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br/></td></tr>
-<tr class="separator:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87926c31967a918ce80690a9ed5d6fa8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a> (T &destination)</td></tr>
-<tr class="memdesc:a87926c31967a918ce80690a9ed5d6fa8"><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue.  <a href="#a87926c31967a918ce80690a9ed5d6fa8">More...</a><br/></td></tr>
-<tr class="separator:a87926c31967a918ce80690a9ed5d6fa8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a77a755d94cabf5208905d10d5b57419c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a755d94cabf5208905d10d5b57419c"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">abort</a> ()</td></tr>
-<tr class="memdesc:a77a755d94cabf5208905d10d5b57419c"><td class="mdescLeft"> </td><td class="mdescRight">Abort all pending queue operations. <br/></td></tr>
-<tr class="separator:a77a755d94cabf5208905d10d5b57419c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03d93a240841a21788396bebd71c51bd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">try_push</a> (const T &source)</td></tr>
-<tr class="memdesc:a03d93a240841a21788396bebd71c51bd"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#a03d93a240841a21788396bebd71c51bd">More...</a><br/></td></tr>
-<tr class="separator:a03d93a240841a21788396bebd71c51bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a> (T &destination)</td></tr>
-<tr class="memdesc:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#a3086cb4dcdeee245ef5cf34f72fb3e10">More...</a><br/></td></tr>
-<tr class="separator:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a> () const </td></tr>
-<tr class="memdesc:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="mdescLeft"> </td><td class="mdescRight">Return number of pushes minus number of pops.  <a href="#a9d6c20fd8c193c12b6a7b0c3101fd966">More...</a><br/></td></tr>
-<tr class="separator:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8c59578f28c5fb4718b0eff43776e879"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c59578f28c5fb4718b0eff43776e879"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">empty</a> () const </td></tr>
-<tr class="memdesc:a8c59578f28c5fb4718b0eff43776e879"><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to <a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966" title="Return number of pushes minus number of pops. ">size()</a><=0. <br/></td></tr>
-<tr class="separator:a8c59578f28c5fb4718b0eff43776e879"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a526487063242569685af8c8d778d39e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a526487063242569685af8c8d778d39e0"></a>
-<a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">capacity</a> () const </td></tr>
-<tr class="memdesc:a526487063242569685af8c8d778d39e0"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of allowed elements. <br/></td></tr>
-<tr class="separator:a526487063242569685af8c8d778d39e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a768699675813575eec08c1f43afda395"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">set_capacity</a> (<a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> new_capacity)</td></tr>
-<tr class="memdesc:a768699675813575eec08c1f43afda395"><td class="mdescLeft"> </td><td class="mdescRight">Set the capacity.  <a href="#a768699675813575eec08c1f43afda395">More...</a><br/></td></tr>
-<tr class="separator:a768699675813575eec08c1f43afda395"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeba11bbcd368a7a3a6e6e2dd3082c9c"></a>
-<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a> () const </td></tr>
-<tr class="memdesc:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
-<tr class="separator:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a246be3920e079ea4847933f106baa98f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a246be3920e079ea4847933f106baa98f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">clear</a> ()</td></tr>
-<tr class="memdesc:a246be3920e079ea4847933f106baa98f"><td class="mdescLeft"> </td><td class="mdescRight">clear the queue. not thread-safe. <br/></td></tr>
-<tr class="separator:a246be3920e079ea4847933f106baa98f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0c931eaa1ddc30025e49d06cc383703"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0c931eaa1ddc30025e49d06cc383703"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> ()</td></tr>
-<tr class="separator:ac0c931eaa1ddc30025e49d06cc383703"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a634cece9742cbaba56ba6f7777568e4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a634cece9742cbaba56ba6f7777568e4c"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> ()</td></tr>
-<tr class="separator:a634cece9742cbaba56ba6f7777568e4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ed2f8130fd679e89327cb292fb25510"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ed2f8130fd679e89327cb292fb25510"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> () const </td></tr>
-<tr class="separator:a2ed2f8130fd679e89327cb292fb25510"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a873d62f59fd79959c0204f5fb44c774d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a873d62f59fd79959c0204f5fb44c774d"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> () const </td></tr>
-<tr class="separator:a873d62f59fd79959c0204f5fb44c774d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b242f28514cb0e4fb2e462c8fead03e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b242f28514cb0e4fb2e462c8fead03e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>call_clear_on_leave</b> (<a class="el" href="a00043.html">concurrent_hash_map</a> *a_ch_map)</td></tr>
+<tr class="separator:a4b242f28514cb0e4fb2e462c8fead03e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0e56acf6cbc5a9bc38018a8640050054"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e56acf6cbc5a9bc38018a8640050054"></a>
+void </td><td class="memItemRight" valign="bottom"><b>dismiss</b> ()</td></tr>
+<tr class="separator:a0e56acf6cbc5a9bc38018a8640050054"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f5eec0de2e660ea5372d19393f0920b"></a>
-template<typename Container , typename Value > </td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
-<tr class="separator:a1f5eec0de2e660ea5372d19393f0920b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, class A = cache_aligned_allocator<T>><br/>
-class tbb::concurrent_bounded_queue< T, A ></h3>
-
-<p>A high-performance thread-safe blocking concurrent bounded queue. </p>
-<p>This is the pre-PPL TBB concurrent queue which supports boundedness and blocking semantics. Note that method names agree with the PPL-style concurrent queue. Multiple threads may each push and pop concurrently. Assignment construction is not allowed. </p>
-</div><h2 class="groupheader">Member Typedef Documentation</h2>
-<a class="anchor" id="ae73fa352d781bdb9d01bfb77f2a8bc28"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef std::ptrdiff_t <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::<a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Integral type for representing size of the queue. </p>
-<p>Note that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a87926c31967a918ce80690a9ed5d6fa8"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::pop </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>destination</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Dequeue item from head of queue. </p>
-<p>Block until an item becomes available, and then dequeue it. </p>
-
-</div>
-</div>
-<a class="anchor" id="a768699675813575eec08c1f43afda395"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::set_capacity </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td>
-          <td class="paramname"><em>new_capacity</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Set the capacity. </p>
-<p>Setting the capacity to 0 causes subsequent try_push operations to always fail, and subsequent push operations to block forever. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9d6c20fd8c193c12b6a7b0c3101fd966"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::size </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a22e1559dccd2fd4345ca0ff389c6ad29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22e1559dccd2fd4345ca0ff389c6ad29"></a>
+<a class="el" href="a00043.html">concurrent_hash_map</a> * </td><td class="memItemRight" valign="bottom"><b>my_ch_map</b></td></tr>
+<tr class="separator:a22e1559dccd2fd4345ca0ff389c6ad29"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>Return number of pushes minus number of pops. </p>
-<p>Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed <a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0" title="Maximum number of allowed elements. ">capacity()</a> if there are push operations in flight. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3086cb4dcdeee245ef5cf34f72fb3e10"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::try_pop </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>destination</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Attempt to dequeue an item from head of queue. </p>
-<p>Does not wait for item to become available. Returns true if successful; false otherwise. </p>
-
-<p>Referenced by <a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">tbb::deprecated::concurrent_queue< T, A >::pop_if_present()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a03d93a240841a21788396bebd71c51bd"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00034.html">tbb::concurrent_bounded_queue</a>< T, A >::try_push </td>
-          <td>(</td>
-          <td class="paramtype">const T & </td>
-          <td class="paramname"><em>source</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Enqueue an item at tail of queue if queue is not already full. </p>
-<p>Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full. </p>
-
-<p>Referenced by <a class="el" href="a00039.html#a129cde9f5f101ddd623619c838be07f3">tbb::deprecated::concurrent_queue< T, A >::push_if_not_full()</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_queue.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00034.png b/doc/html/a00034.png
deleted file mode 100644
index 690944f..0000000
Binary files a/doc/html/a00034.png and /dev/null differ
diff --git a/doc/html/a00035.html b/doc/html/a00035.html
index 22c9604..ee3ec7b 100644
--- a/doc/html/a00035.html
+++ b/doc/html/a00035.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference</title>
+<title>tbb::captured_exception Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,750 +33,179 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00035.html">captured_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00334.html">List of all members</a>  </div>
+<a href="a00324.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::captured_exception Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Unordered map from Key to T.  
+<p>This class is used by TBB to propagate information about unhandled exceptions into the root thread.  
  <a href="a00035.html#details">More...</a></p>
 
-<p><code>#include <concurrent_hash_map.h></code></p>
+<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >:</div>
+Inheritance diagram for tbb::captured_exception:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00035.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map" alt=""/>
-  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map">
+  <img src="a00035.png" usemap="#tbb::captured_exception_map" alt=""/>
+  <map id="tbb::captured_exception_map" name="tbb::captured_exception_map">
+<area href="a00161.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads..." alt="tbb::tbb_exception" shape="rect" coords="0,56,146,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html">accessor</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Allows write access to elements and combines data access, locking, and garbage collection.  <a href="a00010.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html">bucket_accessor</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">bucket accessor is to find, rehash, acquire a lock, and access a bucket  <a href="a00026.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html">const_accessor</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Combines data access, locking, and garbage collection.  <a href="a00047.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00082.html">node</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a73476eabf0605a4a17e33eca379b567c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73476eabf0605a4a17e33eca379b567c"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:a73476eabf0605a4a17e33eca379b567c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09f82b7e1255cd4a7ab13f694f04e0a2"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-<tr class="separator:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10da770ec791fd8f3bddbf19d852b2f6"></a>
-typedef std::pair< const Key, T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4346b898af1007960c70b1d5a12b3dda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4346b898af1007960c70b1d5a12b3dda"></a>
-typedef hash_map_base::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a4346b898af1007960c70b1d5a12b3dda"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae6344f41fc1b2aae8b310442f609db0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae6344f41fc1b2aae8b310442f609db0"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:aae6344f41fc1b2aae8b310442f609db0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8fca882f67e98d54a675c9b75db3cc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8fca882f67e98d54a675c9b75db3cc0"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:af8fca882f67e98d54a675c9b75db3cc0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaf14214618545aa7e0aa59a3af4a6bd"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5064777ff7c17e294d74ca60f96f28db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5064777ff7c17e294d74ca60f96f28db"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a5064777ff7c17e294d74ca60f96f28db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6291ee6059597aac8f59dc8fd5558036"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6291ee6059597aac8f59dc8fd5558036"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a6291ee6059597aac8f59dc8fd5558036"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6af7bf91f1cbd859aef1ffc6197b41a"></a>
-typedef <br class="typebreak"/>
-internal::hash_map_iterator<br class="typebreak"/>
-< <a class="el" href="a00035.html">concurrent_hash_map</a>, <br class="typebreak"/>
-value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af416067eaf691c88e6b73bf3b3323f66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af416067eaf691c88e6b73bf3b3323f66"></a>
-typedef <br class="typebreak"/>
-internal::hash_map_iterator<br class="typebreak"/>
-< <a class="el" href="a00035.html">concurrent_hash_map</a>, const <br class="typebreak"/>
-value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:af416067eaf691c88e6b73bf3b3323f66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a69508e67134dd5282b89e1847e71c31b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69508e67134dd5282b89e1847e71c31b"></a>
-typedef <br class="typebreak"/>
-internal::hash_map_range<br class="typebreak"/>
-< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
-<tr class="separator:a69508e67134dd5282b89e1847e71c31b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b9d06751969eacda84b01582e4aa1d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b9d06751969eacda84b01582e4aa1d2"></a>
-typedef <br class="typebreak"/>
-internal::hash_map_range<br class="typebreak"/>
-< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
-<tr class="separator:a0b9d06751969eacda84b01582e4aa1d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85c266c1560f7faa64772d349d0280a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85c266c1560f7faa64772d349d0280a4"></a>
-typedef Allocator </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a85c266c1560f7faa64772d349d0280a4"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aa3a9767b525144a2afb69ed125714c53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3a9767b525144a2afb69ed125714c53"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aa3a9767b525144a2afb69ed125714c53">concurrent_hash_map</a> (const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:aa3a9767b525144a2afb69ed125714c53"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table. <br/></td></tr>
-<tr class="separator:aa3a9767b525144a2afb69ed125714c53"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aae76e1252b56b107685f8746e0f6a1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae76e1252b56b107685f8746e0f6a1f4"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aae76e1252b56b107685f8746e0f6a1f4">concurrent_hash_map</a> (size_type n, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:aae76e1252b56b107685f8746e0f6a1f4"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
-<tr class="separator:aae76e1252b56b107685f8746e0f6a1f4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8a73b86f9a5e9836b38713e56c546654"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a73b86f9a5e9836b38713e56c546654"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a8a73b86f9a5e9836b38713e56c546654">concurrent_hash_map</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &table, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a8a73b86f9a5e9836b38713e56c546654"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a8a73b86f9a5e9836b38713e56c546654"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad56fc19d656099d49051f3c363cefc89"></a>
-template<typename I > </td></tr>
-<tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#ad56fc19d656099d49051f3c363cefc89">concurrent_hash_map</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:ad56fc19d656099d49051f3c363cefc89"><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br/></td></tr>
-<tr class="separator:ad56fc19d656099d49051f3c363cefc89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b9c93b6e5f3d7b52289846ecf9701d2"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a1b9c93b6e5f3d7b52289846ecf9701d2">concurrent_hash_map</a> (const std::initializer_list< value_type > &il, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
-<tr class="separator:a1b9c93b6e5f3d7b52289846ecf9701d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63e01b1f79c287ae0257ccfd483fd90a"></a>
-<a class="el" href="a00035.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a">operator=</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &table)</td></tr>
-<tr class="memdesc:a63e01b1f79c287ae0257ccfd483fd90a"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
-<tr class="separator:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49e4e3979b46669a4712e7d3208e75f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49e4e3979b46669a4712e7d3208e75f2"></a>
-<a class="el" href="a00035.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a49e4e3979b46669a4712e7d3208e75f2">operator=</a> (const std::initializer_list< value_type > &il)</td></tr>
-<tr class="memdesc:a49e4e3979b46669a4712e7d3208e75f2"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
-<tr class="separator:a49e4e3979b46669a4712e7d3208e75f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf1fa9470c605731063e5949f0418eb7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#adf1fa9470c605731063e5949f0418eb7">rehash</a> (size_type n=0)</td></tr>
-<tr class="memdesc:adf1fa9470c605731063e5949f0418eb7"><td class="mdescLeft"> </td><td class="mdescRight">Rehashes and optionally resizes the whole table.  <a href="#adf1fa9470c605731063e5949f0418eb7">More...</a><br/></td></tr>
-<tr class="separator:adf1fa9470c605731063e5949f0418eb7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8295bc260b5e4df883fef11574b84c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8295bc260b5e4df883fef11574b84c6"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ab8295bc260b5e4df883fef11574b84c6">clear</a> ()</td></tr>
-<tr class="memdesc:ab8295bc260b5e4df883fef11574b84c6"><td class="mdescLeft"> </td><td class="mdescRight">Clear table. <br/></td></tr>
-<tr class="separator:ab8295bc260b5e4df883fef11574b84c6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ce9ab8c954bf6979c2c57d10fd8a8ed"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">~concurrent_hash_map</a> ()</td></tr>
-<tr class="memdesc:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="mdescLeft"> </td><td class="mdescRight">Clear table and destroy it. <br/></td></tr>
-<tr class="separator:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10dc8d8b91878b211c12a3e6b1bb38bb"></a>
-range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1)</td></tr>
-<tr class="separator:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8698274a4ffb94bb0468c387ffdc2e56"></a>
-const_range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1) const </td></tr>
-<tr class="separator:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38b7d6443502ee9f4c2374d34ea8d742"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
-<tr class="separator:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa85633d3fc7494f49728b4064db59f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa85633d3fc7494f49728b4064db59f6"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
-<tr class="separator:afa85633d3fc7494f49728b4064db59f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aa6dc98653a88d410d0cfddd514f0d"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-<tr class="separator:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ed8cd11a3a5c400d9bc11492d136dfd"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-<tr class="separator:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01a1c3032bb193a5c4f37425adbe306c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01a1c3032bb193a5c4f37425adbe306c"></a>
-std::pair< iterator, iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key)</td></tr>
-<tr class="separator:a01a1c3032bb193a5c4f37425adbe306c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af368c8d8f49a9a74706c9ed11f8fd7e4"></a>
-std::pair< const_iterator, <br class="typebreak"/>
-const_iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key) const </td></tr>
-<tr class="separator:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2ce6da7cd62bc7425f0a29498332ab4"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4">size</a> () const </td></tr>
-<tr class="memdesc:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="mdescLeft"> </td><td class="mdescRight">Number of items in table. <br/></td></tr>
-<tr class="separator:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e05f2a1ca3accfb4252d7ee82d1e990"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990">empty</a> () const </td></tr>
-<tr class="memdesc:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="mdescLeft"> </td><td class="mdescRight">True if <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a>==0. <br/></td></tr>
-<tr class="separator:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea0a0e5220a0dcb67da57d0280d36005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea0a0e5220a0dcb67da57d0280d36005"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aea0a0e5220a0dcb67da57d0280d36005">max_size</a> () const </td></tr>
-<tr class="memdesc:aea0a0e5220a0dcb67da57d0280d36005"><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on size. <br/></td></tr>
-<tr class="separator:aea0a0e5220a0dcb67da57d0280d36005"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa067a2a4db1d96f38555369a89deee64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa067a2a4db1d96f38555369a89deee64"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aa067a2a4db1d96f38555369a89deee64">bucket_count</a> () const </td></tr>
-<tr class="memdesc:aa067a2a4db1d96f38555369a89deee64"><td class="mdescLeft"> </td><td class="mdescRight">Returns the current number of buckets. <br/></td></tr>
-<tr class="separator:aa067a2a4db1d96f38555369a89deee64"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a121865c574f8ae5cae69ed3d6b7e0511"></a>
-allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511">get_allocator</a> () const </td></tr>
-<tr class="memdesc:a121865c574f8ae5cae69ed3d6b7e0511"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
-<tr class="separator:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c8edf603bc776a6c84c007702c1808e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c8edf603bc776a6c84c007702c1808e"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e">swap</a> (<a class="el" href="a00035.html">concurrent_hash_map</a> &table)</td></tr>
-<tr class="memdesc:a4c8edf603bc776a6c84c007702c1808e"><td class="mdescLeft"> </td><td class="mdescRight">swap two instances. Iterators are invalidated <br/></td></tr>
-<tr class="separator:a4c8edf603bc776a6c84c007702c1808e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac375d3884bf9c80efe56117757c822e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac375d3884bf9c80efe56117757c822e7"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7">count</a> (const Key &key) const </td></tr>
-<tr class="memdesc:ac375d3884bf9c80efe56117757c822e7"><td class="mdescLeft"> </td><td class="mdescRight">Return count of items (0 or 1) <br/></td></tr>
-<tr class="separator:ac375d3884bf9c80efe56117757c822e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff">find</a> (<a class="el" href="a00047.html">const_accessor</a> &result, const Key &key) const </td></tr>
-<tr class="memdesc:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a read lock on the item.  <a href="#a27a3f296dc170ae25f8e3fd9efa93cff">More...</a><br/></td></tr>
-<tr class="separator:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b61799e2018381b5ee4b78752a41483"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a6b61799e2018381b5ee4b78752a41483">find</a> (<a class="el" href="a00010.html">accessor</a> &result, const Key &key)</td></tr>
-<tr class="memdesc:a6b61799e2018381b5ee4b78752a41483"><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a write lock on the item.  <a href="#a6b61799e2018381b5ee4b78752a41483">More...</a><br/></td></tr>
-<tr class="separator:a6b61799e2018381b5ee4b78752a41483"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaebb10a9e9dcb24e63860caa745a281d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d">insert</a> (<a class="el" href="a00047.html">const_accessor</a> &result, const Key &key)</td></tr>
-<tr class="memdesc:aaebb10a9e9dcb24e63860caa745a281d"><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a read lock on the item.  <a href="#aaebb10a9e9dcb24e63860caa745a281d">More...</a><br/></td></tr>
-<tr class="separator:aaebb10a9e9dcb24e63860caa745a281d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a766c6033c203e8f342501d85a7cf3405"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a766c6033c203e8f342501d85a7cf3405">insert</a> (<a class="el" href="a00010.html">accessor</a> &result, const Key &key)</td></tr>
-<tr class="memdesc:a766c6033c203e8f342501d85a7cf3405"><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a write lock on the item.  <a href="#a766c6033c203e8f342501d85a7cf3405">More...</a><br/></td></tr>
-<tr class="separator:a766c6033c203e8f342501d85a7cf3405"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ae0b420cdb752e749790c8a7daa15c3c2">insert</a> (<a class="el" href="a00047.html">const_accessor</a> &result, const value_type &value)</td></tr>
-<tr class="memdesc:ae0b420cdb752e749790c8a7daa15c3c2"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#ae0b420cdb752e749790c8a7daa15c3c2">More...</a><br/></td></tr>
-<tr class="separator:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2047214e041b7674c3b83e204d0d6c6a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a2047214e041b7674c3b83e204d0d6c6a">insert</a> (<a class="el" href="a00010.html">accessor</a> &result, const value_type &value)</td></tr>
-<tr class="memdesc:a2047214e041b7674c3b83e204d0d6c6a"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#a2047214e041b7674c3b83e204d0d6c6a">More...</a><br/></td></tr>
-<tr class="separator:a2047214e041b7674c3b83e204d0d6c6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e39501f9edb3210504c9c4ca05384b7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a8e39501f9edb3210504c9c4ca05384b7">insert</a> (const value_type &value)</td></tr>
-<tr class="memdesc:a8e39501f9edb3210504c9c4ca05384b7"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#a8e39501f9edb3210504c9c4ca05384b7">More...</a><br/></td></tr>
-<tr class="separator:a8e39501f9edb3210504c9c4ca05384b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab84dfd77316252cbf39c7ae89e365a00"></a>
-template<typename I > </td></tr>
-<tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#ab84dfd77316252cbf39c7ae89e365a00">insert</a> (I first, I last)</td></tr>
-<tr class="memdesc:ab84dfd77316252cbf39c7ae89e365a00"><td class="mdescLeft"> </td><td class="mdescRight">Insert range [first, last) <br/></td></tr>
-<tr class="separator:ab84dfd77316252cbf39c7ae89e365a00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5144122dbb946d933b94a92117543b33"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a5144122dbb946d933b94a92117543b33">erase</a> (const Key &key)</td></tr>
-<tr class="memdesc:a5144122dbb946d933b94a92117543b33"><td class="mdescLeft"> </td><td class="mdescRight">Erase item.  <a href="#a5144122dbb946d933b94a92117543b33">More...</a><br/></td></tr>
-<tr class="separator:a5144122dbb946d933b94a92117543b33"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a2ec6f95ed9beda9d32df56cdd45c1842">erase</a> (<a class="el" href="a00047.html">const_accessor</a> &item_accessor)</td></tr>
-<tr class="memdesc:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="mdescLeft"> </td><td class="mdescRight">Erase item by <a class="el" href="a00047.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>.  <a href="#a2ec6f95ed9beda9d32df56cdd45c1842">More...</a><br/></td></tr>
-<tr class="separator:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">erase</a> (<a class="el" href="a00010.html">accessor</a> &item_accessor)</td></tr>
-<tr class="memdesc:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="mdescLeft"> </td><td class="mdescRight">Erase item by accessor.  <a href="#a3ed0fbcc6cfd4db8242e100355ac1fa5">More...</a><br/></td></tr>
-<tr class="separator:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81dddc5d509f7f074d84d9c38e83efb9"></a>
-typedef Allocator::template <br class="typebreak"/>
-rebind< <a class="el" href="a00082.html">node</a> >::other </td><td class="memItemRight" valign="bottom"><b>node_allocator_type</b></td></tr>
-<tr class="separator:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:aed0e0def29516d9ee7aab2192727b69b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed0e0def29516d9ee7aab2192727b69b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>delete_node</b> (node_base *n)</td></tr>
-<tr class="separator:aed0e0def29516d9ee7aab2192727b69b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae44a70417f9674a2169f9a1fd437a3bd"></a>
-<a class="el" href="a00082.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>search_bucket</b> (const key_type &key, bucket *b) const </td></tr>
-<tr class="separator:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b57e036f82bc2b1ef1ede41b02d46b5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>rehash_bucket</b> (bucket *b_new, const hashcode_t h)</td></tr>
-<tr class="separator:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0435730c6b9dbbe2937fb38b9403147c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0435730c6b9dbbe2937fb38b9403147c"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a0435730c6b9dbbe2937fb38b9403147c">lookup</a> (bool op_insert, const Key &key, const T *t, <a class="el" href="a00047.html">const_accessor</a> *result, bool write)</td></tr>
-<tr class="memdesc:a0435730c6b9dbbe2937fb38b9403147c"><td class="mdescLeft"> </td><td class="mdescRight">Insert or find item and optionally acquire a lock on the item. <br/></td></tr>
-<tr class="separator:a0435730c6b9dbbe2937fb38b9403147c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fec452b31b8f0e185dc2de64b7128b2"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a6fec452b31b8f0e185dc2de64b7128b2">exclude</a> (<a class="el" href="a00047.html">const_accessor</a> &item_accessor)</td></tr>
-<tr class="memdesc:a6fec452b31b8f0e185dc2de64b7128b2"><td class="mdescLeft"> </td><td class="mdescRight">delete item by accessor <br/></td></tr>
-<tr class="separator:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8603f5288db63ec35a16844427e97e42"></a>
-template<typename I > </td></tr>
-<tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplItemLeft" align="right" valign="top">std::pair< I, I > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00035.html#a8603f5288db63ec35a16844427e97e42">internal_equal_range</a> (const Key &key, I end) const </td></tr>
-<tr class="memdesc:a8603f5288db63ec35a16844427e97e42"><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator for an item defined by the key, or for the next item after it (if upper==true) <br/></td></tr>
-<tr class="separator:a8603f5288db63ec35a16844427e97e42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bc3593f82b3b4f9839fc051780212ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc3593f82b3b4f9839fc051780212ab"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a0bc3593f82b3b4f9839fc051780212ab">internal_copy</a> (const <a class="el" href="a00035.html">concurrent_hash_map</a> &source)</td></tr>
-<tr class="memdesc:a0bc3593f82b3b4f9839fc051780212ab"><td class="mdescLeft"> </td><td class="mdescRight">Copy "source" to *this, where *this must start out empty. <br/></td></tr>
-<tr class="separator:a0bc3593f82b3b4f9839fc051780212ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplParams" colspan="2"><a class="anchor" id="a31e69cc4fd5adafb379e7c6de5660912"></a>
-template<typename I > </td></tr>
-<tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_copy</b> (I first, I last)</td></tr>
-<tr class="separator:a31e69cc4fd5adafb379e7c6de5660912"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memItemLeft" align="right" valign="top">const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">internal_fast_find</a> (const Key &key) const </td></tr>
-<tr class="memdesc:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="mdescLeft"> </td><td class="mdescRight">Fast find when no concurrent erasure is used. For internal use inside TBB only!  <a href="#acbb5b18c097fb32f264b7b5fe8d9fdd4">More...</a><br/></td></tr>
-<tr class="separator:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3f082b2719a9e3c3c15a51a9564202"></a>
-node_allocator_type </td><td class="memItemRight" valign="bottom"><b>my_allocator</b></td></tr>
-<tr class="separator:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae67c3c723768e7e396104f84577f7240"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae67c3c723768e7e396104f84577f7240"></a>
-HashCompare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
-<tr class="separator:ae67c3c723768e7e396104f84577f7240"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0ecadabdc31088d7bace5a0b6e5ee3f9"></a>
-template<typename Container , typename Value > </td></tr>
-<tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
-<tr class="separator:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad49112156111ee1b85be9f4b89e410ca"></a>
-template<typename I > </td></tr>
-<tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
-<tr class="separator:ad49112156111ee1b85be9f4b89e410ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a584bf754a8408612d4bfd33a3eafd80d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584bf754a8408612d4bfd33a3eafd80d"></a>
-class </td><td class="memItemRight" valign="bottom"><b>const_accessor</b></td></tr>
-<tr class="separator:a584bf754a8408612d4bfd33a3eafd80d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56f6c51b6d4f8ce31669457ff8f0c07f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56f6c51b6d4f8ce31669457ff8f0c07f"></a>
+ </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const <a class="el" href="a00035.html">captured_exception</a> &src)</td></tr>
+<tr class="separator:a56f6c51b6d4f8ce31669457ff8f0c07f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab3d72662db6a2badffa95a649a6c0bdd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3d72662db6a2badffa95a649a6c0bdd"></a>
+ </td><td class="memItemRight" valign="bottom"><b>captured_exception</b> (const char *name_, const char *info)</td></tr>
+<tr class="separator:ab3d72662db6a2badffa95a649a6c0bdd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a78a66603238d40da9ec6a750b6a2425c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78a66603238d40da9ec6a750b6a2425c"></a>
+<a class="el" href="a00035.html">captured_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00035.html">captured_exception</a> &src)</td></tr>
+<tr class="separator:a78a66603238d40da9ec6a750b6a2425c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb221485cd260349efdef681f633a6a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00035.html">captured_exception</a> <br class="typebreak"/>
+*__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4">move</a> ()  throw ()</td></tr>
+<tr class="memdesc:abb221485cd260349efdef681f633a6a4"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#abb221485cd260349efdef681f633a6a4">More...</a><br/></td></tr>
+<tr class="separator:abb221485cd260349efdef681f633a6a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3006b6825dda6c746d28fb748f5675de"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a3006b6825dda6c746d28fb748f5675de">destroy</a> ()  throw ()</td></tr>
+<tr class="memdesc:a3006b6825dda6c746d28fb748f5675de"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#a3006b6825dda6c746d28fb748f5675de">More...</a><br/></td></tr>
+<tr class="separator:a3006b6825dda6c746d28fb748f5675de"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ac9ae925678fcc0cc02a74df7d06b8d63">throw_self</a> ()</td></tr>
+<tr class="memdesc:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#ac9ae925678fcc0cc02a74df7d06b8d63">More...</a><br/></td></tr>
+<tr class="separator:ac9ae925678fcc0cc02a74df7d06b8d63"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a23426113851b78d3f0069956afd21976"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23426113851b78d3f0069956afd21976"></a>
+const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#a23426113851b78d3f0069956afd21976">name</a> () const   throw ()</td></tr>
+<tr class="memdesc:a23426113851b78d3f0069956afd21976"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
+<tr class="separator:a23426113851b78d3f0069956afd21976"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac97ee315d8613c803dae2f6d3e0b91a7"></a>
+const char *__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html#ac97ee315d8613c803dae2f6d3e0b91a7">what</a> () const   throw ()</td></tr>
+<tr class="memdesc:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00035.html#ac97ee315d8613c803dae2f6d3e0b91a7" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
+<tr class="separator:ac97ee315d8613c803dae2f6d3e0b91a7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa72deb29316e8c08700f7e6afa4a48e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa72deb29316e8c08700f7e6afa4a48e8"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>set</b> (const char *<a class="el" href="a00035.html#a23426113851b78d3f0069956afd21976">name</a>, const char *info)  throw ()</td></tr>
+<tr class="separator:aa72deb29316e8c08700f7e6afa4a48e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b160c0fc5d2fab90df2be96ea14088a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b160c0fc5d2fab90df2be96ea14088a"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>clear</b> ()  throw ()</td></tr>
+<tr class="separator:a0b160c0fc5d2fab90df2be96ea14088a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00161"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00161')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00161.html">tbb::tbb_exception</a></td></tr>
+<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00161"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
+<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00161"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
-class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></h3>
-
-<p>Unordered map from Key to T. </p>
-<pre class="fragment">concurrent_hash_map is associative container with concurrent access.
-</pre><dl class="section user"><dt>Compatibility</dt><dd>The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).</dd></dl>
-<dl class="section user"><dt>Exception Safety</dt><dd><ul>
-<li>Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.</li>
-<li>If exception happens during <a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).</li>
-<li>If exception happens during <a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a" title="Assignment. ">operator=()</a> operation, the container can have a part of source items, and methods <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a> and <a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990" title="True if size()==0. ">empty()</a> can return wrong results.</li>
-</ul>
-</dd></dl>
-<dl class="section user"><dt>Changes since TBB 2.1</dt><dd><ul>
-<li>Replaced internal algorithm and data structure. Patent is pending.</li>
-<li>Added buckets number argument for constructor</li>
-</ul>
-</dd></dl>
-<dl class="section user"><dt>Changes since TBB 2.0</dt><dd><ul>
-<li>Fixed exception-safety</li>
-<li>Added template argument for allocator</li>
-<li>Added allocator argument in constructors</li>
-<li>Added constructor from a range of iterators</li>
-<li>Added several new overloaded <a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> methods</li>
-<li>Added <a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511" title="return allocator object ">get_allocator()</a></li>
-<li>Added <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a></li>
-<li>Added <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a></li>
-<li>Added overloaded <a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5" title="Erase item by accessor. ">erase(accessor &)</a> and <a class="el" href="a00035.html#a2ec6f95ed9beda9d32df56cdd45c1842" title="Erase item by const_accessor. ">erase(const_accessor&)</a></li>
-<li>Added equal_range() [const]</li>
-<li>Added [const_]pointer, [const_]reference, and allocator_type types</li>
-<li>Added global functions: operator==(), operator!=(), and <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a> </li>
-</ul>
-</dd></dl>
+<div class="textblock"><p>This class is used by TBB to propagate information about unhandled exceptions into the root thread. </p>
+<p>Exception of this type is thrown by TBB in the root thread (thread that started a parallel algorithm ) if an unhandled exception was intercepted during the algorithm execution in one of the workers. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00161.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> </dd></dl>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a5144122dbb946d933b94a92117543b33"></a>
+<a class="anchor" id="a3006b6825dda6c746d28fb748f5675de"></a>
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare , typename A > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
-          <td>(</td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Erase item. </p>
-<p>Return true if item was erased by particularly this call. </p>
-
-<p>References <a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor::is_writer()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2ec6f95ed9beda9d32df56cdd45c1842"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::captured_exception::destroy </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> & </td>
-          <td class="paramname"><em>item_accessor</em>)</td><td></td>
+          <td class="paramname">)</td><td></td>
           <td></td>
         </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Erase item by <a class="el" href="a00047.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>. </p>
-<p>Return true if item was erased by particularly this call. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ed0fbcc6cfd4db8242e100355ac1fa5"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
-          <td class="paramname"><em>item_accessor</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Erase item by accessor. </p>
-<p>Return true if item was erased by particularly this call. </p>
-
-</div>
-</div>
-<a class="anchor" id="a27a3f296dc170ae25f8e3fd9efa93cff"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::find </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
         <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em> </td>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
         </tr>
         <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td> const</td>
+          <td align="right"></td><td>)</td><td></td><td></td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>Find item and acquire a read lock on the item. </p>
-<p>Return true if item is found, false otherwise. </p>
+<p>Destroys objects created by the <a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
+<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
 
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+<p>Implements <a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a6b61799e2018381b5ee4b78752a41483"></a>
+<a class="anchor" id="abb221485cd260349efdef681f633a6a4"></a>
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::find </td>
+          <td class="memname"><a class="el" href="a00035.html">captured_exception</a>* __TBB_EXPORTED_METHOD tbb::captured_exception::move </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
+          <td class="paramname">)</td><td></td>
           <td></td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em> </td>
         </tr>
         <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Find item and acquire a write lock on the item. </p>
-<p>Return true if item is found, false otherwise. </p>
-
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aaebb10a9e9dcb24e63860caa745a281d"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em> </td>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
         </tr>
         <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
+          <td align="right"></td><td>)</td><td></td><td></td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>Insert item (if not already present) and acquire a read lock on the item. </p>
-<p>Returns true if item is new. </p>
+<p>Creates and returns pointer to the deep copy of this exception object. </p>
+<p>Move semantics is allowed. </p>
 
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+<p>Implements <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="a766c6033c203e8f342501d85a7cf3405"></a>
+<a class="anchor" id="ac9ae925678fcc0cc02a74df7d06b8d63"></a>
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td class="memname">void tbb::captured_exception::throw_self </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em> </td>
-        </tr>
-        <tr>
+          <td class="paramname">)</td><td></td>
           <td></td>
-          <td>)</td>
-          <td></td><td></td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>Insert item (if not already present) and acquire a write lock on the item. </p>
-<p>Returns true if item is new. </p>
-
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae0b420cdb752e749790c8a7daa15c3c2"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00047.html">const_accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const value_type & </td>
-          <td class="paramname"><em>value</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Insert item by copying if there is no such key present already and acquire a read lock on the item. </p>
-<p>Returns true if item is new. </p>
-
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2047214e041b7674c3b83e204d0d6c6a"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
-          <td class="paramname"><em>result</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const value_type & </td>
-          <td class="paramname"><em>value</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Insert item by copying if there is no such key present already and acquire a write lock on the item. </p>
-<p>Returns true if item is new. </p>
-
-<p>References <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8e39501f9edb3210504c9c4ca05384b7"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
-          <td>(</td>
-          <td class="paramtype">const value_type & </td>
-          <td class="paramname"><em>value</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Insert item by copying if there is no such key present already. </p>
-<p>Returns true if item is inserted. </p>
-
-</div>
-</div>
-<a class="anchor" id="acbb5b18c097fb32f264b7b5fe8d9fdd4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">const_pointer <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::internal_fast_find </td>
-          <td>(</td>
-          <td class="paramtype">const Key & </td>
-          <td class="paramname"><em>key</em>)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Fast find when no concurrent erasure is used. For internal use inside TBB only! </p>
-<p>Return pointer to item with given key, or NULL if no such item exists. Must not be called concurrently with erasure operations. </p>
-
-</div>
-</div>
-<a class="anchor" id="adf1fa9470c605731063e5949f0418eb7"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Key , typename T , typename HashCompare , typename A > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::rehash </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>n</em> = <code>0</code>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
+<p>Throws this exception object. </p>
+<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
 
-<p>Rehashes and optionally resizes the whole table. </p>
-<p>Useful to optimize performance before or after concurrent operations. Also enables using of <a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff" title="Find item and acquire a read lock on the item. ">find()</a> and <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a> concurrent methods in serial context. </p>
+<p>Implements <a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>.</p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_hash_map.h</li>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00035.png b/doc/html/a00035.png
index 3f0a8f2..131abf6 100644
Binary files a/doc/html/a00035.png and b/doc/html/a00035.png differ
diff --git a/doc/html/a00036.html b/doc/html/a00036.html
index 53789c7..c864963 100644
--- a/doc/html/a00036.html
+++ b/doc/html/a00036.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference</title>
+<title>tbb::combinable< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,57 +33,69 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00036.html">concurrent_lru_cache</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00036.html">combinable</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00353.html">List of all members</a>  </div>
+<a href="a00274.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference</div>  </div>
+<div class="title">tbb::combinable< T > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00036.png" usemap="#tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map" alt=""/>
-  <map id="tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map" name="tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map">
-</map>
- </div></div>
+
+<p>Thread-local storage with optional reduction.  
+ <a href="a00036.html#details">More...</a></p>
+
+<p><code>#include <combinable.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:ac498dc4d73a75cbc0d50a15622f06e13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac498dc4d73a75cbc0d50a15622f06e13"></a>
-typedef handle_object </td><td class="memItemRight" valign="bottom"><b>handle</b></td></tr>
-<tr class="separator:ac498dc4d73a75cbc0d50a15622f06e13"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ad4c0b512bb4ad5109eaae1519ba06d98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4c0b512bb4ad5109eaae1519ba06d98"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_lru_cache</b> (value_function_type f, std::size_t number_of_lru_history_items)</td></tr>
-<tr class="separator:ad4c0b512bb4ad5109eaae1519ba06d98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a632c3911a55cfda997acce279c471ec3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a632c3911a55cfda997acce279c471ec3"></a>
-handle_object </td><td class="memItemRight" valign="bottom"><b>operator[]</b> (key_type k)</td></tr>
-<tr class="separator:a632c3911a55cfda997acce279c471ec3"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ab9fb998ff3f90c4dc7cefd09f8ff1365"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9fb998ff3f90c4dc7cefd09f8ff1365"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::aggregating_functor< self_type, aggregated_operation_type ></b></td></tr>
-<tr class="separator:ab9fb998ff3f90c4dc7cefd09f8ff1365"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab3c539d5731faaafd81979b207a4fa1f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab3c539d5731faaafd81979b207a4fa1f"></a>
+template<typename finit > </td></tr>
+<tr class="memitem:ab3c539d5731faaafd81979b207a4fa1f"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>combinable</b> (finit _finit)</td></tr>
+<tr class="separator:ab3c539d5731faaafd81979b207a4fa1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a52f00cf262d768048db72ab73c8f3ca4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52f00cf262d768048db72ab73c8f3ca4"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html#a52f00cf262d768048db72ab73c8f3ca4">~combinable</a> ()</td></tr>
+<tr class="memdesc:a52f00cf262d768048db72ab73c8f3ca4"><td class="mdescLeft"> </td><td class="mdescRight">destructor <br/></td></tr>
+<tr class="separator:a52f00cf262d768048db72ab73c8f3ca4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a376f44cba71450fc18ccddaad61b76cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376f44cba71450fc18ccddaad61b76cc"></a>
+ </td><td class="memItemRight" valign="bottom"><b>combinable</b> (const <a class="el" href="a00036.html">combinable</a> &other)</td></tr>
+<tr class="separator:a376f44cba71450fc18ccddaad61b76cc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab011fbe2f0600900b6e1b9760d82aead"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab011fbe2f0600900b6e1b9760d82aead"></a>
+<a class="el" href="a00036.html">combinable</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00036.html">combinable</a> &other)</td></tr>
+<tr class="separator:ab011fbe2f0600900b6e1b9760d82aead"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ecfe80161a59f04ffd9676e79701de6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ecfe80161a59f04ffd9676e79701de6"></a>
+void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:a8ecfe80161a59f04ffd9676e79701de6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae47f982dbd396d225f0f546e60690d42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47f982dbd396d225f0f546e60690d42"></a>
+T & </td><td class="memItemRight" valign="bottom"><b>local</b> ()</td></tr>
+<tr class="separator:ae47f982dbd396d225f0f546e60690d42"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2433d2b3b53b9979d0b3bb2a175abc9b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2433d2b3b53b9979d0b3bb2a175abc9b"></a>
+T & </td><td class="memItemRight" valign="bottom"><b>local</b> (bool &exists)</td></tr>
+<tr class="separator:a2433d2b3b53b9979d0b3bb2a175abc9b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3d564f6d480e0c7fe8e756d1de1cf0e2"></a>
+template<typename combine_func_t > </td></tr>
+<tr class="memitem:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>combine</b> (combine_func_t f_combine)</td></tr>
+<tr class="separator:a3d564f6d480e0c7fe8e756d1de1cf0e2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aadadee714004d977f0e95a479bfb80ac"><td class="memTemplParams" colspan="2"><a class="anchor" id="aadadee714004d977f0e95a479bfb80ac"></a>
+template<typename combine_func_t > </td></tr>
+<tr class="memitem:aadadee714004d977f0e95a479bfb80ac"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>combine_each</b> (combine_func_t f_combine)</td></tr>
+<tr class="separator:aadadee714004d977f0e95a479bfb80ac"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_lru_cache.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::combinable< T ></h3>
+
+<p>Thread-local storage with optional reduction. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>combinable.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00036.png b/doc/html/a00036.png
deleted file mode 100644
index 856b3af..0000000
Binary files a/doc/html/a00036.png and /dev/null differ
diff --git a/doc/html/a00037.html b/doc/html/a00037.html
index b420020..5f0579e 100644
--- a/doc/html/a00037.html
+++ b/doc/html/a00037.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference</title>
+<title>tbb::flow::interface7::composite_node< InputTuple, OutputTuple > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,398 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00037.html">concurrent_priority_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00037.html">composite_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00339.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< InputTuple, OutputTuple > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Concurrent priority queue.  
- <a href="a00037.html#details">More...</a></p>
-
-<p><code>#include <concurrent_priority_queue.h></code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a2c75d97ae429019363ab6fd1a872512e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c75d97ae429019363ab6fd1a872512e"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a></td></tr>
-<tr class="memdesc:a2c75d97ae429019363ab6fd1a872512e"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
-<tr class="separator:a2c75d97ae429019363ab6fd1a872512e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4b7ed2ddc8ec6cc910f935c9d299c7a"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a></td></tr>
-<tr class="memdesc:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
-<tr class="separator:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bd617fe8e4657777e86f0ae15d8094f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd617fe8e4657777e86f0ae15d8094f"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a></td></tr>
-<tr class="memdesc:a0bd617fe8e4657777e86f0ae15d8094f"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
-<tr class="separator:a0bd617fe8e4657777e86f0ae15d8094f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d3da9b47ec58e1c09e3550f702edcfc"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a></td></tr>
-<tr class="memdesc:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue. <br/></td></tr>
-<tr class="separator:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae010b1fa9c0942504737228474b51a0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae010b1fa9c0942504737228474b51a0b"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#ae010b1fa9c0942504737228474b51a0b">difference_type</a></td></tr>
-<tr class="memdesc:ae010b1fa9c0942504737228474b51a0b"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
-<tr class="separator:ae010b1fa9c0942504737228474b51a0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d2cebf242fa83d88eebdc3ad6891fb1"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a></td></tr>
-<tr class="memdesc:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
-<tr class="separator:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a405be01bac4048f214797c287e2571a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a405be01bac4048f214797c287e2571a1"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a405be01bac4048f214797c287e2571a1">concurrent_priority_queue</a> (const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
-<tr class="memdesc:a405be01bac4048f214797c287e2571a1"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00037.html" title="Concurrent priority queue. ">concurrent_priority_queue</a> with default capacity. <br/></td></tr>
-<tr class="separator:a405be01bac4048f214797c287e2571a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43c3917ea8a19cf1fec947e29ad4ff3e"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a43c3917ea8a19cf1fec947e29ad4ff3e">concurrent_priority_queue</a> (<a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> init_capacity, const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
-<tr class="memdesc:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00037.html" title="Concurrent priority queue. ">concurrent_priority_queue</a> with init_sz capacity. <br/></td></tr>
-<tr class="separator:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0cebee26cc0d00d4dcbb1c74e08029f7"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00037.html#a0cebee26cc0d00d4dcbb1c74e08029f7">concurrent_priority_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>()) [...]
-<tr class="memdesc:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
-<tr class="separator:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a111763d621fa792f281c2a13bd3e5edf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a111763d621fa792f281c2a13bd3e5edf"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a111763d621fa792f281c2a13bd3e5edf">concurrent_priority_queue</a> (std::initializer_list< T > const &init_list, const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
-<tr class="memdesc:a111763d621fa792f281c2a13bd3e5edf"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from std::initializer_list. <br/></td></tr>
-<tr class="separator:a111763d621fa792f281c2a13bd3e5edf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a332d26234f9c37a6b7ba269c648815d0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a332d26234f9c37a6b7ba269c648815d0">concurrent_priority_queue</a> (const <a class="el" href="a00037.html">concurrent_priority_queue</a> &src)</td></tr>
-<tr class="memdesc:a332d26234f9c37a6b7ba269c648815d0"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor.  <a href="#a332d26234f9c37a6b7ba269c648815d0">More...</a><br/></td></tr>
-<tr class="separator:a332d26234f9c37a6b7ba269c648815d0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa52cea369b6630699ee78cc42622be9d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#aa52cea369b6630699ee78cc42622be9d">concurrent_priority_queue</a> (const <a class="el" href="a00037.html">concurrent_priority_queue</a> &src, const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a)</td></tr>
-<tr class="memdesc:aa52cea369b6630699ee78cc42622be9d"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor with specific allocator.  <a href="#aa52cea369b6630699ee78cc42622be9d">More...</a><br/></td></tr>
-<tr class="separator:aa52cea369b6630699ee78cc42622be9d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0c3f41b10f04547f3438517c40cf8a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00037.html">concurrent_priority_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#ac0c3f41b10f04547f3438517c40cf8a5">operator=</a> (const <a class="el" href="a00037.html">concurrent_priority_queue</a> &src)</td></tr>
-<tr class="memdesc:ac0c3f41b10f04547f3438517c40cf8a5"><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator.  <a href="#ac0c3f41b10f04547f3438517c40cf8a5">More...</a><br/></td></tr>
-<tr class="separator:ac0c3f41b10f04547f3438517c40cf8a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac64c7b627708f0d6b2e5421fb0d49150"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00037.html#ac64c7b627708f0d6b2e5421fb0d49150">assign</a> (InputIterator begin, InputIterator end)</td></tr>
-<tr class="memdesc:ac64c7b627708f0d6b2e5421fb0d49150"><td class="mdescLeft"> </td><td class="mdescRight">Assign the queue from [begin,end) range, not thread-safe. <br/></td></tr>
-<tr class="separator:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada4a58867572d9ff340c6692a226d457"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada4a58867572d9ff340c6692a226d457"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#ada4a58867572d9ff340c6692a226d457">assign</a> (std::initializer_list< T > const &il)</td></tr>
-<tr class="memdesc:ada4a58867572d9ff340c6692a226d457"><td class="mdescLeft"> </td><td class="mdescRight">Assign the queue from std::initializer_list, not thread-safe. <br/></td></tr>
-<tr class="separator:ada4a58867572d9ff340c6692a226d457"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a32eb9c65caf399b62fac7c13e65af05f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32eb9c65caf399b62fac7c13e65af05f"></a>
-<a class="el" href="a00037.html">concurrent_priority_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a32eb9c65caf399b62fac7c13e65af05f">operator=</a> (std::initializer_list< T > const &il)</td></tr>
-<tr class="memdesc:a32eb9c65caf399b62fac7c13e65af05f"><td class="mdescLeft"> </td><td class="mdescRight">Assign from std::initializer_list, not thread-safe. <br/></td></tr>
-<tr class="separator:a32eb9c65caf399b62fac7c13e65af05f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">empty</a> () const </td></tr>
-<tr class="memdesc:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if empty, false otherwise.  <a href="#a8dec2dd0e8b22af14f1753eaef1bf5eb">More...</a><br/></td></tr>
-<tr class="separator:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d86ba200474b51ec99a6b917429c6bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a7d86ba200474b51ec99a6b917429c6bb">size</a> () const </td></tr>
-<tr class="memdesc:a7d86ba200474b51ec99a6b917429c6bb"><td class="mdescLeft"> </td><td class="mdescRight">Returns the current number of elements contained in the queue.  <a href="#a7d86ba200474b51ec99a6b917429c6bb">More...</a><br/></td></tr>
-<tr class="separator:a7d86ba200474b51ec99a6b917429c6bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1bfa0e7269b3407d6bb5c706264d2406"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a1bfa0e7269b3407d6bb5c706264d2406">push</a> (<a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> elem)</td></tr>
-<tr class="memdesc:a1bfa0e7269b3407d6bb5c706264d2406"><td class="mdescLeft"> </td><td class="mdescRight">Pushes elem onto the queue, increasing capacity of queue if necessary.  <a href="#a1bfa0e7269b3407d6bb5c706264d2406">More...</a><br/></td></tr>
-<tr class="separator:a1bfa0e7269b3407d6bb5c706264d2406"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a954177b09e184cf3db47f1b180a7ef5e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a954177b09e184cf3db47f1b180a7ef5e">try_pop</a> (<a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> elem)</td></tr>
-<tr class="memdesc:a954177b09e184cf3db47f1b180a7ef5e"><td class="mdescLeft"> </td><td class="mdescRight">Gets a reference to and removes highest priority element.  <a href="#a954177b09e184cf3db47f1b180a7ef5e">More...</a><br/></td></tr>
-<tr class="separator:a954177b09e184cf3db47f1b180a7ef5e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2459166998a4103880d603b237c429e6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a2459166998a4103880d603b237c429e6">clear</a> ()</td></tr>
-<tr class="memdesc:a2459166998a4103880d603b237c429e6"><td class="mdescLeft"> </td><td class="mdescRight">Clear the queue; not thread-safe.  <a href="#a2459166998a4103880d603b237c429e6">More...</a><br/></td></tr>
-<tr class="separator:a2459166998a4103880d603b237c429e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#aa6ee6d356e538b67a7cb4e242e6e36c9">swap</a> (<a class="el" href="a00037.html">concurrent_priority_queue</a> &q)</td></tr>
-<tr class="memdesc:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="mdescLeft"> </td><td class="mdescRight">Swap this queue with another; not thread-safe.  <a href="#aa6ee6d356e538b67a7cb4e242e6e36c9">More...</a><br/></td></tr>
-<tr class="separator:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a312e88e51246da4c516d35abbb30721a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a312e88e51246da4c516d35abbb30721a"></a>
-<a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html#a312e88e51246da4c516d35abbb30721a">get_allocator</a> () const </td></tr>
-<tr class="memdesc:a312e88e51246da4c516d35abbb30721a"><td class="mdescLeft"> </td><td class="mdescRight">Return allocator object. <br/></td></tr>
-<tr class="separator:a312e88e51246da4c516d35abbb30721a"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>><br/>
-class tbb::interface5::concurrent_priority_queue< T, Compare, A ></h3>
-
-<p>Concurrent priority queue. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a332d26234f9c37a6b7ba269c648815d0"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00037.html">concurrent_priority_queue</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="a00037.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
-          <td class="paramname"><em>src</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Copy constructor. </p>
-<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa52cea369b6630699ee78cc42622be9d"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00037.html">concurrent_priority_queue</a> </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="a00037.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
-          <td class="paramname"><em>src</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> & </td>
-          <td class="paramname"><em>a</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Copy constructor with specific allocator. </p>
-<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a2459166998a4103880d603b237c429e6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::clear </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Clear the queue; not thread-safe. </p>
-<p>This operation is unsafe if there are pending concurrent operations on the queue. Resets size, effectively emptying queue; does not free space. May not clear elements added in pending operations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8dec2dd0e8b22af14f1753eaef1bf5eb"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::empty </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Returns true if empty, false otherwise. </p>
-<p>Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac0c3f41b10f04547f3438517c40cf8a5"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00037.html">concurrent_priority_queue</a>& <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::operator= </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="a00037.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
-          <td class="paramname"><em>src</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Assignment operator. </p>
-<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1bfa0e7269b3407d6bb5c706264d2406"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::push </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> </td>
-          <td class="paramname"><em>elem</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Pushes elem onto the queue, increasing capacity of queue if necessary. </p>
-<p>This operation can be safely used concurrently with other push, try_pop or reserve operations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7d86ba200474b51ec99a6b917429c6bb"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::size </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Returns the current number of elements contained in the queue. </p>
-<p>Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa6ee6d356e538b67a7cb4e242e6e36c9"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::swap </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00037.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
-          <td class="paramname"><em>q</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Swap this queue with another; not thread-safe. </p>
-<p>This operation is unsafe if there are pending concurrent operations on the queue. </p>
-
-</div>
-</div>
-<a class="anchor" id="a954177b09e184cf3db47f1b180a7ef5e"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::try_pop </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> </td>
-          <td class="paramname"><em>elem</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Gets a reference to and removes highest priority element. </p>
-<p>If a highest priority element was found, sets elem and returns true, otherwise returns false. This operation can be safely used concurrently with other push, try_pop or reserve operations. </p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_priority_queue.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00038.html b/doc/html/a00038.html
index 650fe57..949ff2c 100644
--- a/doc/html/a00038.html
+++ b/doc/html/a00038.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference</title>
+<title>tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,175 +33,114 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>strict_ppl</b></li><li class="navelem"><a class="el" href="a00038.html">concurrent_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00038.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00383.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00362.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A high-performance thread-safe non-blocking concurrent queue.  
- <a href="a00038.html#details">More...</a></p>
-
-<p><code>#include <concurrent_queue.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::strict_ppl::concurrent_queue< T, A >:</div>
+Inheritance diagram for tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00038.png" usemap="#tbb::strict_ppl::concurrent_queue< T, A >_map" alt=""/>
-  <map id="tbb::strict_ppl::concurrent_queue< T, A >_map" name="tbb::strict_ppl::concurrent_queue< T, A >_map">
+  <img src="a00038.png" usemap="#tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >_map" alt=""/>
+  <map id="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >_map" name="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,603,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:aeeee93a7ac2eecc80bbf3e857e900538"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeee93a7ac2eecc80bbf3e857e900538"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#aeeee93a7ac2eecc80bbf3e857e900538">value_type</a></td></tr>
-<tr class="memdesc:aeeee93a7ac2eecc80bbf3e857e900538"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
-<tr class="separator:aeeee93a7ac2eecc80bbf3e857e900538"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab26ddf11b15d61ac87e6c1ae67af92a2"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#ab26ddf11b15d61ac87e6c1ae67af92a2">reference</a></td></tr>
-<tr class="memdesc:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
-<tr class="separator:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a478c2b7f763b2e821e01cc14e13baf4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a478c2b7f763b2e821e01cc14e13baf4c"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a478c2b7f763b2e821e01cc14e13baf4c">const_reference</a></td></tr>
-<tr class="memdesc:a478c2b7f763b2e821e01cc14e13baf4c"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
-<tr class="separator:a478c2b7f763b2e821e01cc14e13baf4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9f883e49afea16293ba92da779981bb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f883e49afea16293ba92da779981bb8"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a9f883e49afea16293ba92da779981bb8">size_type</a></td></tr>
-<tr class="memdesc:a9f883e49afea16293ba92da779981bb8"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue. <br/></td></tr>
-<tr class="separator:a9f883e49afea16293ba92da779981bb8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63b42d83a9ed13fc6741e0b4388b0e96"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a63b42d83a9ed13fc6741e0b4388b0e96">difference_type</a></td></tr>
-<tr class="memdesc:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
-<tr class="separator:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbdd1a5bd034358fb0774b322a66b1ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbdd1a5bd034358fb0774b322a66b1ed"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a></td></tr>
-<tr class="memdesc:acbdd1a5bd034358fb0774b322a66b1ed"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
-<tr class="separator:acbdd1a5bd034358fb0774b322a66b1ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1361aa7fd454fe593609be740ab8a4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1361aa7fd454fe593609be740ab8a4c"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00038.html">concurrent_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:ab1361aa7fd454fe593609be740ab8a4c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a674e375edf0a3463ae1cec5d6158593d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a674e375edf0a3463ae1cec5d6158593d"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00038.html">concurrent_queue</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a674e375edf0a3463ae1cec5d6158593d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f7377e49da370266786ad7169aadbd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f7377e49da370266786ad7169aadbd4"></a>
+typedef tbb::flow::tuple<br class="typebreak"/>
+< <a class="el" href="a00124.html">receiver</a>< InputTypes > &... > </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
+<tr class="separator:a7f7377e49da370266786ad7169aadbd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2f3489a1608a5234ea8ffa5c6f8c2ffa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3489a1608a5234ea8ffa5c6f8c2ffa"></a>
+typedef tbb::flow::tuple<br class="typebreak"/>
+< <a class="el" href="a00142.html">sender</a>< OutputTypes > &... > </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
+<tr class="separator:a2f3489a1608a5234ea8ffa5c6f8c2ffa"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a49b2e16902577cd3174355be0fa684e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b2e16902577cd3174355be0fa684e5"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a49b2e16902577cd3174355be0fa684e5">concurrent_queue</a> (const <a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
-<tr class="memdesc:a49b2e16902577cd3174355be0fa684e5"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
-<tr class="separator:a49b2e16902577cd3174355be0fa684e5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a43ac953152e60815c09fe4a4d4a623a9"><td class="memTemplParams" colspan="2"><a class="anchor" id="a43ac953152e60815c09fe4a4d4a623a9"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:a43ac953152e60815c09fe4a4d4a623a9"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00038.html#a43ac953152e60815c09fe4a4d4a623a9">concurrent_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
-<tr class="memdesc:a43ac953152e60815c09fe4a4d4a623a9"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
-<tr class="separator:a43ac953152e60815c09fe4a4d4a623a9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae918807d098d5d5b41cc6d606fa2e7a1"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#ae918807d098d5d5b41cc6d606fa2e7a1">concurrent_queue</a> (const <a class="el" href="a00038.html">concurrent_queue</a> &src, const <a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
-<tr class="memdesc:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0056b242f280f5e25332ce998f9f670"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0056b242f280f5e25332ce998f9f670"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#aa0056b242f280f5e25332ce998f9f670">~concurrent_queue</a> ()</td></tr>
-<tr class="memdesc:aa0056b242f280f5e25332ce998f9f670"><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br/></td></tr>
-<tr class="separator:aa0056b242f280f5e25332ce998f9f670"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9330ca6590980d80ef7b1ea3613a699a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9330ca6590980d80ef7b1ea3613a699a"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a9330ca6590980d80ef7b1ea3613a699a">push</a> (const T &source)</td></tr>
-<tr class="memdesc:a9330ca6590980d80ef7b1ea3613a699a"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br/></td></tr>
-<tr class="separator:a9330ca6590980d80ef7b1ea3613a699a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabb1acef18196fa11ed7db8e046c3943"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#aabb1acef18196fa11ed7db8e046c3943">try_pop</a> (T &result)</td></tr>
-<tr class="memdesc:aabb1acef18196fa11ed7db8e046c3943"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#aabb1acef18196fa11ed7db8e046c3943">More...</a><br/></td></tr>
-<tr class="separator:aabb1acef18196fa11ed7db8e046c3943"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad4b253ba595637b0b146eb6565556f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad4b253ba595637b0b146eb6565556f2"></a>
-<a class="el" href="a00038.html#a9f883e49afea16293ba92da779981bb8">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#aad4b253ba595637b0b146eb6565556f2">unsafe_size</a> () const </td></tr>
-<tr class="memdesc:aad4b253ba595637b0b146eb6565556f2"><td class="mdescLeft"> </td><td class="mdescRight">Return the number of items in the queue; thread unsafe. <br/></td></tr>
-<tr class="separator:aad4b253ba595637b0b146eb6565556f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeda3156929d0c250faed7b807ca6ab0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda3156929d0c250faed7b807ca6ab0e"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#aeda3156929d0c250faed7b807ca6ab0e">empty</a> () const </td></tr>
-<tr class="memdesc:aeda3156929d0c250faed7b807ca6ab0e"><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to size()==0. <br/></td></tr>
-<tr class="separator:aeda3156929d0c250faed7b807ca6ab0e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3384818fb6350a494d5ec62445e59ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3384818fb6350a494d5ec62445e59ee"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#ad3384818fb6350a494d5ec62445e59ee">clear</a> ()</td></tr>
-<tr class="memdesc:ad3384818fb6350a494d5ec62445e59ee"><td class="mdescLeft"> </td><td class="mdescRight">Clear the queue. not thread-safe. <br/></td></tr>
-<tr class="separator:ad3384818fb6350a494d5ec62445e59ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f2b39f350281590b86db906eca6c480"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f2b39f350281590b86db906eca6c480"></a>
-<a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html#a7f2b39f350281590b86db906eca6c480">get_allocator</a> () const </td></tr>
-<tr class="memdesc:a7f2b39f350281590b86db906eca6c480"><td class="mdescLeft"> </td><td class="mdescRight">Return allocator object. <br/></td></tr>
-<tr class="separator:a7f2b39f350281590b86db906eca6c480"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6658faeae3c10135a553fedadddde239"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6658faeae3c10135a553fedadddde239"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> ()</td></tr>
-<tr class="separator:a6658faeae3c10135a553fedadddde239"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa7593de5e76006ed3adef4d060f0009c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7593de5e76006ed3adef4d060f0009c"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> ()</td></tr>
-<tr class="separator:aa7593de5e76006ed3adef4d060f0009c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f84b37020f4267f17c7e91acfc0c446"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f84b37020f4267f17c7e91acfc0c446"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> () const </td></tr>
-<tr class="separator:a0f84b37020f4267f17c7e91acfc0c446"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a118a79d7e20cdbd807fa7fccc2a5b848"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a118a79d7e20cdbd807fa7fccc2a5b848"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> () const </td></tr>
-<tr class="separator:a118a79d7e20cdbd807fa7fccc2a5b848"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9e7854019a261988e840953e5f40f1b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e7854019a261988e840953e5f40f1b4"></a>
+ </td><td class="memItemRight" valign="bottom"><b>composite_node</b> (<a class="el" href="a00070.html">graph</a> &g, const char *my_type_name=" ")</td></tr>
+<tr class="separator:a9e7854019a261988e840953e5f40f1b4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab3f34ddf880b079533e1d948601f89f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3f34ddf880b079533e1d948601f89f1"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (input_ports_type &&input_ports_tuple, output_ports_type &&output_ports_tuple)</td></tr>
+<tr class="separator:ab3f34ddf880b079533e1d948601f89f1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9576abde248452d8cc1794e9769e5fa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9576abde248452d8cc1794e9769e5fa1"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (const input_ports_type &input_ports_tuple, const output_ports_type &output_ports_tuple)</td></tr>
+<tr class="separator:a9576abde248452d8cc1794e9769e5fa1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aceb4421acadbf01444709b7c8acdfdd5"><td class="memTemplParams" colspan="2"><a class="anchor" id="aceb4421acadbf01444709b7c8acdfdd5"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:aceb4421acadbf01444709b7c8acdfdd5"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:aceb4421acadbf01444709b7c8acdfdd5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a663d728c0c7b827f1d2bb53a63a3f105"><td class="memTemplParams" colspan="2"><a class="anchor" id="a663d728c0c7b827f1d2bb53a63a3f105"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:a663d728c0c7b827f1d2bb53a63a3f105"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:a663d728c0c7b827f1d2bb53a63a3f105"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c5d148a5f0eea9272f1010dcccfd707"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3c5d148a5f0eea9272f1010dcccfd707"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a3c5d148a5f0eea9272f1010dcccfd707"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a3c5d148a5f0eea9272f1010dcccfd707"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a648efe8899cdbe388a4457e741e39cd1"><td class="memTemplParams" colspan="2"><a class="anchor" id="a648efe8899cdbe388a4457e741e39cd1"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a648efe8899cdbe388a4457e741e39cd1"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a648efe8899cdbe388a4457e741e39cd1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac02d81092f80b069e8289c8e394dc04a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac02d81092f80b069e8289c8e394dc04a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:ac02d81092f80b069e8289c8e394dc04a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a320ac64c2145474e4ec602a323676368"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a320ac64c2145474e4ec602a323676368"></a>
+input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports</b> ()</td></tr>
+<tr class="separator:a320ac64c2145474e4ec602a323676368"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab39a6ca4fcb2d1c6be7f0c9d5b44b1e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab39a6ca4fcb2d1c6be7f0c9d5b44b1e6"></a>
+output_ports_type </td><td class="memItemRight" valign="bottom"><b>output_ports</b> ()</td></tr>
+<tr class="separator:ab39a6ca4fcb2d1c6be7f0c9d5b44b1e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7727dea1d2d0be963f467404ccc5f3d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7727dea1d2d0be963f467404ccc5f3d6"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a7727dea1d2d0be963f467404ccc5f3d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f5eec0de2e660ea5372d19393f0920b"></a>
-template<typename Container , typename Value > </td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
-<tr class="separator:a1f5eec0de2e660ea5372d19393f0920b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
-class tbb::strict_ppl::concurrent_queue< T, A ></h3>
-
-<p>A high-performance thread-safe non-blocking concurrent queue. </p>
-<p>Multiple threads may each push and pop concurrently. Assignment construction is not allowed. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aabb1acef18196fa11ed7db8e046c3943"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , typename A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue</a>< T, A >::try_pop </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>result</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a9faacbfa63625a96f41efa9983037d5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9faacbfa63625a96f41efa9983037d5a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:a9faacbfa63625a96f41efa9983037d5a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>Attempt to dequeue an item from head of queue. </p>
-<p>Does not wait for item to become available. Returns true if successful; false otherwise. </p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_queue.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00038.png b/doc/html/a00038.png
index c7a9a4d..72fce7d 100644
Binary files a/doc/html/a00038.png and b/doc/html/a00038.png differ
diff --git a/doc/html/a00039.html b/doc/html/a00039.html
index 77008eb..8e58b86 100644
--- a/doc/html/a00039.html
+++ b/doc/html/a00039.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::deprecated::concurrent_queue< T, A > Class Template Reference</title>
+<title>tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,269 +33,107 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>deprecated</b></li><li class="navelem"><a class="el" href="a00039.html">concurrent_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00039.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00307.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00363.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::deprecated::concurrent_queue< T, A > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A high-performance thread-safe blocking concurrent bounded queue.  
- <a href="a00039.html#details">More...</a></p>
-
-<p><code>#include <concurrent_queue.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::deprecated::concurrent_queue< T, A >:</div>
+Inheritance diagram for tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00039.png" usemap="#tbb::deprecated::concurrent_queue< T, A >_map" alt=""/>
-  <map id="tbb::deprecated::concurrent_queue< T, A >_map" name="tbb::deprecated::concurrent_queue< T, A >_map">
-<area href="a00034.html" title="A high-performance thread-safe blocking concurrent bounded queue. " alt="tbb::concurrent_bounded_queue< T, A >" shape="rect" coords="0,56,257,80"/>
+  <img src="a00039.png" usemap="#tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >_map" alt=""/>
+  <map id="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >_map" name="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,515,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a112f9c42f53dffaa9c40476b3c9f0163"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a112f9c42f53dffaa9c40476b3c9f0163"></a>
-typedef <br class="typebreak"/>
-<a class="el" href="a00034.html">concurrent_bounded_queue</a>< T, A ><br class="typebreak"/>
-::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a112f9c42f53dffaa9c40476b3c9f0163"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada4cdd6e903dd46e3788c9d8feaba85d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada4cdd6e903dd46e3788c9d8feaba85d"></a>
-typedef <br class="typebreak"/>
-<a class="el" href="a00034.html">concurrent_bounded_queue</a>< T, A ><br class="typebreak"/>
-::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:ada4cdd6e903dd46e3788c9d8feaba85d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00034"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00034')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td></tr>
-<tr class="memitem:a6eb564625fef03dd9a5881d5d4e52f9f inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb564625fef03dd9a5881d5d4e52f9f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a></td></tr>
-<tr class="memdesc:a6eb564625fef03dd9a5881d5d4e52f9f inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
-<tr class="separator:a6eb564625fef03dd9a5881d5d4e52f9f inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbfceb845de1c770e2b56409f09b0364 inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbfceb845de1c770e2b56409f09b0364"></a>
-typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a></td></tr>
-<tr class="memdesc:acbfceb845de1c770e2b56409f09b0364 inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
-<tr class="separator:acbfceb845de1c770e2b56409f09b0364 inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fa4002bcd265d9d3ed305e3b686f1da inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa4002bcd265d9d3ed305e3b686f1da"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a></td></tr>
-<tr class="memdesc:a5fa4002bcd265d9d3ed305e3b686f1da inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
-<tr class="separator:a5fa4002bcd265d9d3ed305e3b686f1da inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af838e520ce0db2c22369748c019b11cb inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af838e520ce0db2c22369748c019b11cb"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">const_reference</a></td></tr>
-<tr class="memdesc:af838e520ce0db2c22369748c019b11cb inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
-<tr class="separator:af838e520ce0db2c22369748c019b11cb inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae73fa352d781bdb9d01bfb77f2a8bc28 inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a></td></tr>
-<tr class="memdesc:ae73fa352d781bdb9d01bfb77f2a8bc28 inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue.  <a href="#ae73fa352d781bdb9d01bfb77f2a8bc28">More...</a><br/></td></tr>
-<tr class="separator:ae73fa352d781bdb9d01bfb77f2a8bc28 inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72725361e050c5a981035a20ef1b773e inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72725361e050c5a981035a20ef1b773e"></a>
-typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">difference_type</a></td></tr>
-<tr class="memdesc:a72725361e050c5a981035a20ef1b773e inherit pub_types_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
-<tr class="separator:a72725361e050c5a981035a20ef1b773e inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42dfb71b1e4bdc0da3c1217d0d40ddd5 inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42dfb71b1e4bdc0da3c1217d0d40ddd5"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00034.html">concurrent_bounded_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a42dfb71b1e4bdc0da3c1217d0d40ddd5 inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18049841284051e18b854692bd04602c inherit pub_types_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18049841284051e18b854692bd04602c"></a>
-typedef <br class="typebreak"/>
-internal::concurrent_queue_iterator<br class="typebreak"/>
-< <a class="el" href="a00034.html">concurrent_bounded_queue</a>, <br class="typebreak"/>
-const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a18049841284051e18b854692bd04602c inherit pub_types_a00034"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a58598c68983fb401096b90b838c43f5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58598c68983fb401096b90b838c43f5e"></a>
+typedef tbb::flow::tuple<br class="typebreak"/>
+< <a class="el" href="a00124.html">receiver</a>< InputTypes > &... > </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
+<tr class="separator:a58598c68983fb401096b90b838c43f5e"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:adc192aba16ef123aebbc4ada0fb53708"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc192aba16ef123aebbc4ada0fb53708"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#adc192aba16ef123aebbc4ada0fb53708">concurrent_queue</a> (const A &a=A())</td></tr>
-<tr class="memdesc:adc192aba16ef123aebbc4ada0fb53708"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
-<tr class="separator:adc192aba16ef123aebbc4ada0fb53708"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa7d1fb274d89c0109fa72d9d87ed329d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7d1fb274d89c0109fa72d9d87ed329d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#aa7d1fb274d89c0109fa72d9d87ed329d">concurrent_queue</a> (const <a class="el" href="a00039.html">concurrent_queue</a> &src, const A &a=A())</td></tr>
-<tr class="memdesc:aa7d1fb274d89c0109fa72d9d87ed329d"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aa7d1fb274d89c0109fa72d9d87ed329d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93a2e58af05f73a763cc23c32d4de010"><td class="memTemplParams" colspan="2"><a class="anchor" id="a93a2e58af05f73a763cc23c32d4de010"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:a93a2e58af05f73a763cc23c32d4de010"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00039.html#a93a2e58af05f73a763cc23c32d4de010">concurrent_queue</a> (InputIterator b, InputIterator e, const A &a=A())</td></tr>
-<tr class="memdesc:a93a2e58af05f73a763cc23c32d4de010"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
-<tr class="separator:a93a2e58af05f73a763cc23c32d4de010"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a129cde9f5f101ddd623619c838be07f3"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a129cde9f5f101ddd623619c838be07f3">push_if_not_full</a> (const T &source)</td></tr>
-<tr class="memdesc:a129cde9f5f101ddd623619c838be07f3"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#a129cde9f5f101ddd623619c838be07f3">More...</a><br/></td></tr>
-<tr class="separator:a129cde9f5f101ddd623619c838be07f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d6825341ca673ea316202474a021174"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">pop_if_present</a> (T &destination)</td></tr>
-<tr class="memdesc:a8d6825341ca673ea316202474a021174"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#a8d6825341ca673ea316202474a021174">More...</a><br/></td></tr>
-<tr class="separator:a8d6825341ca673ea316202474a021174"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad648858b6ba8bd3b4ad8f886de855c42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad648858b6ba8bd3b4ad8f886de855c42"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
-<tr class="separator:ad648858b6ba8bd3b4ad8f886de855c42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6539cec6179a0f51ad78d69aed406b86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6539cec6179a0f51ad78d69aed406b86"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
-<tr class="separator:a6539cec6179a0f51ad78d69aed406b86"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a171c35afe03799768bd08ab6bfe438d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a171c35afe03799768bd08ab6bfe438d5"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-<tr class="separator:a171c35afe03799768bd08ab6bfe438d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aec0ba8d8052b1669468ea5bb7345927c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec0ba8d8052b1669468ea5bb7345927c"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-<tr class="separator:aec0ba8d8052b1669468ea5bb7345927c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00034"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00034')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td></tr>
-<tr class="memitem:a85f8a800cae02b601f36ad7a655a0126 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85f8a800cae02b601f36ad7a655a0126"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a> (const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
-<tr class="memdesc:a85f8a800cae02b601f36ad7a655a0126 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
-<tr class="separator:a85f8a800cae02b601f36ad7a655a0126 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad6fd2353d64c2c31d074cd99df58c02 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad6fd2353d64c2c31d074cd99df58c02"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a> (const <a class="el" href="a00034.html">concurrent_bounded_queue</a> &src, const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
-<tr class="memdesc:aad6fd2353d64c2c31d074cd99df58c02 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aad6fd2353d64c2c31d074cd99df58c02 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf inherit pub_methods_a00034"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcfdc998e106fdb7b2dfa5df880cd9cf"></a>
-template<typename InputIterator > </td></tr>
-<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf inherit pub_methods_a00034"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00034.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0 [...]
-<tr class="memdesc:afcfdc998e106fdb7b2dfa5df880cd9cf inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
-<tr class="separator:afcfdc998e106fdb7b2dfa5df880cd9cf inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1291bf6837ecfb8836c24dde5dd80b5 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1291bf6837ecfb8836c24dde5dd80b5"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a> ()</td></tr>
-<tr class="memdesc:ab1291bf6837ecfb8836c24dde5dd80b5 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br/></td></tr>
-<tr class="separator:ab1291bf6837ecfb8836c24dde5dd80b5 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae5e9051772bbc93b2ccb8fd0a98a21f5 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5e9051772bbc93b2ccb8fd0a98a21f5"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a> (const T &source)</td></tr>
-<tr class="memdesc:ae5e9051772bbc93b2ccb8fd0a98a21f5 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br/></td></tr>
-<tr class="separator:ae5e9051772bbc93b2ccb8fd0a98a21f5 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87926c31967a918ce80690a9ed5d6fa8 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a> (T &destination)</td></tr>
-<tr class="memdesc:a87926c31967a918ce80690a9ed5d6fa8 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue.  <a href="#a87926c31967a918ce80690a9ed5d6fa8">More...</a><br/></td></tr>
-<tr class="separator:a87926c31967a918ce80690a9ed5d6fa8 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a77a755d94cabf5208905d10d5b57419c inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a755d94cabf5208905d10d5b57419c"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">abort</a> ()</td></tr>
-<tr class="memdesc:a77a755d94cabf5208905d10d5b57419c inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Abort all pending queue operations. <br/></td></tr>
-<tr class="separator:a77a755d94cabf5208905d10d5b57419c inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03d93a240841a21788396bebd71c51bd inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">try_push</a> (const T &source)</td></tr>
-<tr class="memdesc:a03d93a240841a21788396bebd71c51bd inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#a03d93a240841a21788396bebd71c51bd">More...</a><br/></td></tr>
-<tr class="separator:a03d93a240841a21788396bebd71c51bd inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3086cb4dcdeee245ef5cf34f72fb3e10 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a> (T &destination)</td></tr>
-<tr class="memdesc:a3086cb4dcdeee245ef5cf34f72fb3e10 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#a3086cb4dcdeee245ef5cf34f72fb3e10">More...</a><br/></td></tr>
-<tr class="separator:a3086cb4dcdeee245ef5cf34f72fb3e10 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9d6c20fd8c193c12b6a7b0c3101fd966 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a> () const </td></tr>
-<tr class="memdesc:a9d6c20fd8c193c12b6a7b0c3101fd966 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Return number of pushes minus number of pops.  <a href="#a9d6c20fd8c193c12b6a7b0c3101fd966">More...</a><br/></td></tr>
-<tr class="separator:a9d6c20fd8c193c12b6a7b0c3101fd966 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8c59578f28c5fb4718b0eff43776e879 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c59578f28c5fb4718b0eff43776e879"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">empty</a> () const </td></tr>
-<tr class="memdesc:a8c59578f28c5fb4718b0eff43776e879 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to <a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966" title="Return number of pushes minus number of pops. ">size()</a><=0. <br/></td></tr>
-<tr class="separator:a8c59578f28c5fb4718b0eff43776e879 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a526487063242569685af8c8d778d39e0 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a526487063242569685af8c8d778d39e0"></a>
-<a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">capacity</a> () const </td></tr>
-<tr class="memdesc:a526487063242569685af8c8d778d39e0 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of allowed elements. <br/></td></tr>
-<tr class="separator:a526487063242569685af8c8d778d39e0 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a768699675813575eec08c1f43afda395 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">set_capacity</a> (<a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> new_capacity)</td></tr>
-<tr class="memdesc:a768699675813575eec08c1f43afda395 inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">Set the capacity.  <a href="#a768699675813575eec08c1f43afda395">More...</a><br/></td></tr>
-<tr class="separator:a768699675813575eec08c1f43afda395 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaeba11bbcd368a7a3a6e6e2dd3082c9c inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeba11bbcd368a7a3a6e6e2dd3082c9c"></a>
-<a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a> () const </td></tr>
-<tr class="memdesc:aaeba11bbcd368a7a3a6e6e2dd3082c9c inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
-<tr class="separator:aaeba11bbcd368a7a3a6e6e2dd3082c9c inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a246be3920e079ea4847933f106baa98f inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a246be3920e079ea4847933f106baa98f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">clear</a> ()</td></tr>
-<tr class="memdesc:a246be3920e079ea4847933f106baa98f inherit pub_methods_a00034"><td class="mdescLeft"> </td><td class="mdescRight">clear the queue. not thread-safe. <br/></td></tr>
-<tr class="separator:a246be3920e079ea4847933f106baa98f inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0c931eaa1ddc30025e49d06cc383703 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0c931eaa1ddc30025e49d06cc383703"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> ()</td></tr>
-<tr class="separator:ac0c931eaa1ddc30025e49d06cc383703 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a634cece9742cbaba56ba6f7777568e4c inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a634cece9742cbaba56ba6f7777568e4c"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> ()</td></tr>
-<tr class="separator:a634cece9742cbaba56ba6f7777568e4c inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ed2f8130fd679e89327cb292fb25510 inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ed2f8130fd679e89327cb292fb25510"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> () const </td></tr>
-<tr class="separator:a2ed2f8130fd679e89327cb292fb25510 inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a873d62f59fd79959c0204f5fb44c774d inherit pub_methods_a00034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a873d62f59fd79959c0204f5fb44c774d"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> () const </td></tr>
-<tr class="separator:a873d62f59fd79959c0204f5fb44c774d inherit pub_methods_a00034"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a265966ab2224ed2357c4663a014f9416"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a265966ab2224ed2357c4663a014f9416"></a>
+ </td><td class="memItemRight" valign="bottom"><b>composite_node</b> (<a class="el" href="a00070.html">graph</a> &g, const char *my_type_name=" ")</td></tr>
+<tr class="separator:a265966ab2224ed2357c4663a014f9416"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4bf4fd24864c9c9bd7b95b0b723d5cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4bf4fd24864c9c9bd7b95b0b723d5cf"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (input_ports_type &&input_ports_tuple)</td></tr>
+<tr class="separator:af4bf4fd24864c9c9bd7b95b0b723d5cf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab53aaaefe7fe523ec9a6c8483543182b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab53aaaefe7fe523ec9a6c8483543182b"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (const input_ports_type &input_ports_tuple)</td></tr>
+<tr class="separator:ab53aaaefe7fe523ec9a6c8483543182b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0c0f814d31ed86ccc8b174b19b309cae"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0c0f814d31ed86ccc8b174b19b309cae"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:a0c0f814d31ed86ccc8b174b19b309cae"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:a0c0f814d31ed86ccc8b174b19b309cae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a283b78f1933bfbab0654e362c674a5d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a283b78f1933bfbab0654e362c674a5d8"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:a283b78f1933bfbab0654e362c674a5d8"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:a283b78f1933bfbab0654e362c674a5d8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a735ca183055d140820b34b11385e3e43"><td class="memTemplParams" colspan="2"><a class="anchor" id="a735ca183055d140820b34b11385e3e43"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a735ca183055d140820b34b11385e3e43"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a735ca183055d140820b34b11385e3e43"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a134aa2413fc951701e9c319f64702863"><td class="memTemplParams" colspan="2"><a class="anchor" id="a134aa2413fc951701e9c319f64702863"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a134aa2413fc951701e9c319f64702863"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a134aa2413fc951701e9c319f64702863"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0bd7484365a0623f41b266e15a6d9c0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd7484365a0623f41b266e15a6d9c0a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a0bd7484365a0623f41b266e15a6d9c0a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7418f40b315f1218767c26a84af8c028"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7418f40b315f1218767c26a84af8c028"></a>
+input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports</b> ()</td></tr>
+<tr class="separator:a7418f40b315f1218767c26a84af8c028"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acebd1735e9564afee4aee7fc39f4a3a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acebd1735e9564afee4aee7fc39f4a3a1"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:acebd1735e9564afee4aee7fc39f4a3a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f5eec0de2e660ea5372d19393f0920b"></a>
-template<typename Container , typename Value > </td></tr>
-<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
-<tr class="separator:a1f5eec0de2e660ea5372d19393f0920b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, class A = cache_aligned_allocator<T>><br/>
-class tbb::deprecated::concurrent_queue< T, A ></h3>
-
-<p>A high-performance thread-safe blocking concurrent bounded queue. </p>
-<p>This is the pre-PPL TBB concurrent queue which support boundedness and blocking semantics. Note that method names agree with the PPL-style concurrent queue. Multiple threads may each push and pop concurrently. Assignment construction is not allowed. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a8d6825341ca673ea316202474a021174"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , class A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue</a>< T, A >::pop_if_present </td>
-          <td>(</td>
-          <td class="paramtype">T & </td>
-          <td class="paramname"><em>destination</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Attempt to dequeue an item from head of queue. </p>
-<p>Does not wait for item to become available. Returns true if successful; false otherwise. </p>
-<dl class="deprecated"><dt><b><a class="el" href="a00240.html#_deprecated000001">Deprecated:</a></b></dt><dd>Use <a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10" title="Attempt to dequeue an item from head of queue. ">try_pop()</a> </dd></dl>
-
-<p>References <a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">tbb::concurrent_bounded_queue< T, A >::try_pop()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a129cde9f5f101ddd623619c838be07f3"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T , class A  = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue</a>< T, A >::push_if_not_full </td>
-          <td>(</td>
-          <td class="paramtype">const T & </td>
-          <td class="paramname"><em>source</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a6ea382fd2852242253f6a67ccaff475c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ea382fd2852242253f6a67ccaff475c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:a6ea382fd2852242253f6a67ccaff475c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>Enqueue an item at tail of queue if queue is not already full. </p>
-<p>Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full. </p>
-
-<p>References <a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">tbb::concurrent_bounded_queue< T, A >::try_push()</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_queue.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00039.png b/doc/html/a00039.png
index 7228766..8b3ba80 100644
Binary files a/doc/html/a00039.png and b/doc/html/a00039.png differ
diff --git a/doc/html/a00040.html b/doc/html/a00040.html
index 00adb8e..d1c3e68 100644
--- a/doc/html/a00040.html
+++ b/doc/html/a00040.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</title>
+<title>tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,145 +33,107 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00040.html">concurrent_unordered_map</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00040.html">composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00342.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00364.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >:</div>
+Inheritance diagram for tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00040.png" usemap="#tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map" alt=""/>
-  <map id="tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map">
+  <img src="a00040.png" usemap="#tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >_map" alt=""/>
+  <map id="tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >_map" name="tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,525,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a35d2ace709769b7059e8f8b2a144f8b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35d2ace709769b7059e8f8b2a144f8b9"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:a35d2ace709769b7059e8f8b2a144f8b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9260034417dde6b3810347c5e347a9f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9260034417dde6b3810347c5e347a9f8"></a>
-typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a9260034417dde6b3810347c5e347a9f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ece8ff3de51bc415d8fc1338f793cbf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ece8ff3de51bc415d8fc1338f793cbf"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-<tr class="separator:a8ece8ff3de51bc415d8fc1338f793cbf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afeef87b046af352e20cd92e56c0fcf34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afeef87b046af352e20cd92e56c0fcf34"></a>
-typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
-<tr class="separator:afeef87b046af352e20cd92e56c0fcf34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21f5f2fbf3b1f721051c6b4c5fa2a735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21f5f2fbf3b1f721051c6b4c5fa2a735"></a>
-typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
-<tr class="separator:a21f5f2fbf3b1f721051c6b4c5fa2a735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa15c94df26d89ef38daa7516df5e0729"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa15c94df26d89ef38daa7516df5e0729"></a>
-typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
-<tr class="separator:aa15c94df26d89ef38daa7516df5e0729"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1acd4ab50584a9dc55712e0e113583e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1acd4ab50584a9dc55712e0e113583e2"></a>
-typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a1acd4ab50584a9dc55712e0e113583e2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7e29fb2f75cdec0746afdbed0b9c5451"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e29fb2f75cdec0746afdbed0b9c5451"></a>
-typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a7e29fb2f75cdec0746afdbed0b9c5451"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5d26f7002e7810e4c02890a1d7bdc41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5d26f7002e7810e4c02890a1d7bdc41"></a>
-typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:ab5d26f7002e7810e4c02890a1d7bdc41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01e118e1e0bfe57083d8f76f4f848d2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01e118e1e0bfe57083d8f76f4f848d2b"></a>
-typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a01e118e1e0bfe57083d8f76f4f848d2b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad1072935f6765abe3ec1b04f24f80deb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1072935f6765abe3ec1b04f24f80deb"></a>
-typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:ad1072935f6765abe3ec1b04f24f80deb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae31360122b604d6735b12fc027f10924"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae31360122b604d6735b12fc027f10924"></a>
-typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ae31360122b604d6735b12fc027f10924"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f903f0ca898b0aa80e3a6b921b8f21a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f903f0ca898b0aa80e3a6b921b8f21a"></a>
-typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a0f903f0ca898b0aa80e3a6b921b8f21a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a267aff808d10aa0c437fd9261286467e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a267aff808d10aa0c437fd9261286467e"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a267aff808d10aa0c437fd9261286467e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c2d1a61d1e6ed09fb3df14270d61a01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c2d1a61d1e6ed09fb3df14270d61a01"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a5c2d1a61d1e6ed09fb3df14270d61a01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a744c0cf93efb5a134d6ddfb3a5fb75d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a744c0cf93efb5a134d6ddfb3a5fb75d3"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
-<tr class="separator:a744c0cf93efb5a134d6ddfb3a5fb75d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5df36261f0e5a1aea64235702fdacb62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5df36261f0e5a1aea64235702fdacb62"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
-<tr class="separator:a5df36261f0e5a1aea64235702fdacb62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad8d345948eace7fdba49849d155a9854"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8d345948eace7fdba49849d155a9854"></a>
+typedef tbb::flow::tuple<br class="typebreak"/>
+< <a class="el" href="a00142.html">sender</a>< OutputTypes > &... > </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
+<tr class="separator:ad8d345948eace7fdba49849d155a9854"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a067ba3dc60d4701c92476437f2d57861"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a067ba3dc60d4701c92476437f2d57861"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a067ba3dc60d4701c92476437f2d57861"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad0e15127e237c29c923db83fb509f624"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0e15127e237c29c923db83fb509f624"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const Allocator &a)</td></tr>
-<tr class="separator:ad0e15127e237c29c923db83fb509f624"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade184bd00a3092e670fbb4ba912bedaa"><td class="memTemplParams" colspan="2"><a class="anchor" id="ade184bd00a3092e670fbb4ba912bedaa"></a>
-template<typename Iterator > </td></tr>
-<tr class="memitem:ade184bd00a3092e670fbb4ba912bedaa"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_map</b> (Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:ade184bd00a3092e670fbb4ba912bedaa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa45010d834cc5e082321b49fec06f73d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa45010d834cc5e082321b49fec06f73d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#aa45010d834cc5e082321b49fec06f73d">concurrent_unordered_map</a> (std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:aa45010d834cc5e082321b49fec06f73d"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
-<tr class="separator:aa45010d834cc5e082321b49fec06f73d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1593b0f93256736d163cfbcc23c7de26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1593b0f93256736d163cfbcc23c7de26"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const <a class="el" href="a00040.html">concurrent_unordered_map</a> &table)</td></tr>
-<tr class="separator:a1593b0f93256736d163cfbcc23c7de26"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2e1cce13f9fa458a616b424c84790c25"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e1cce13f9fa458a616b424c84790c25"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const <a class="el" href="a00040.html">concurrent_unordered_map</a> &table, const Allocator &a)</td></tr>
-<tr class="separator:a2e1cce13f9fa458a616b424c84790c25"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47b4eec40fac7fb8b6a8023758c1a34c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47b4eec40fac7fb8b6a8023758c1a34c"></a>
-<a class="el" href="a00040.html">concurrent_unordered_map</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00040.html">concurrent_unordered_map</a> &table)</td></tr>
-<tr class="separator:a47b4eec40fac7fb8b6a8023758c1a34c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad641e7a34077b6a490625da4858b509a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad641e7a34077b6a490625da4858b509a"></a>
-<a class="el" href="a00040.html">concurrent_unordered_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html#ad641e7a34077b6a490625da4858b509a">operator=</a> (std::initializer_list< value_type > const &il)</td></tr>
-<tr class="memdesc:ad641e7a34077b6a490625da4858b509a"><td class="mdescLeft"> </td><td class="mdescRight">assignment operator from initializer_list <br/></td></tr>
-<tr class="separator:ad641e7a34077b6a490625da4858b509a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7dfd40414bc9dd5b6bfdc79ae02d96c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7dfd40414bc9dd5b6bfdc79ae02d96c4"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator where)</td></tr>
-<tr class="separator:a7dfd40414bc9dd5b6bfdc79ae02d96c4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3d6536a7739b09fe9ee013026cdf8fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3d6536a7739b09fe9ee013026cdf8fe"></a>
-size_type </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const key_type &key)</td></tr>
-<tr class="separator:ab3d6536a7739b09fe9ee013026cdf8fe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa372bc29e1a2edb63286193c846db726"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa372bc29e1a2edb63286193c846db726"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator first, const_iterator last)</td></tr>
-<tr class="separator:aa372bc29e1a2edb63286193c846db726"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aac713ca5a9715b6d32e889ab452becab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac713ca5a9715b6d32e889ab452becab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00040.html">concurrent_unordered_map</a> &table)</td></tr>
-<tr class="separator:aac713ca5a9715b6d32e889ab452becab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a266062d18ccb33886189738674921ef0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a266062d18ccb33886189738674921ef0"></a>
-hasher </td><td class="memItemRight" valign="bottom"><b>hash_function</b> () const </td></tr>
-<tr class="separator:a266062d18ccb33886189738674921ef0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeda4a251af5d695f0c08e3927bd9a1a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda4a251af5d695f0c08e3927bd9a1a4"></a>
-key_equal </td><td class="memItemRight" valign="bottom"><b>key_eq</b> () const </td></tr>
-<tr class="separator:aeda4a251af5d695f0c08e3927bd9a1a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae49177d89c80434a30aa346201abb986"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae49177d89c80434a30aa346201abb986"></a>
-mapped_type & </td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const key_type &key)</td></tr>
-<tr class="separator:ae49177d89c80434a30aa346201abb986"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2e1ccbd986686ef2e93c880a965e861"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2e1ccbd986686ef2e93c880a965e861"></a>
-mapped_type & </td><td class="memItemRight" valign="bottom"><b>at</b> (const key_type &key)</td></tr>
-<tr class="separator:af2e1ccbd986686ef2e93c880a965e861"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a54173c11cd3bc91b491b3f83375868e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54173c11cd3bc91b491b3f83375868e4"></a>
-const mapped_type & </td><td class="memItemRight" valign="bottom"><b>at</b> (const key_type &key) const </td></tr>
-<tr class="separator:a54173c11cd3bc91b491b3f83375868e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae46b2fdef6e72821b8d2ef846206e566"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae46b2fdef6e72821b8d2ef846206e566"></a>
+ </td><td class="memItemRight" valign="bottom"><b>composite_node</b> (<a class="el" href="a00070.html">graph</a> &g, const char *my_type_name=" ")</td></tr>
+<tr class="separator:ae46b2fdef6e72821b8d2ef846206e566"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aba80d7313c29da094360a464e2283367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba80d7313c29da094360a464e2283367"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (output_ports_type &&output_ports_tuple)</td></tr>
+<tr class="separator:aba80d7313c29da094360a464e2283367"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af9b49bd9e95cdcb692b6d4ffa77ca93c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9b49bd9e95cdcb692b6d4ffa77ca93c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_external_ports</b> (const output_ports_type &output_ports_tuple)</td></tr>
+<tr class="separator:af9b49bd9e95cdcb692b6d4ffa77ca93c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5280d744d01516ca569e61f5024112d"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad5280d744d01516ca569e61f5024112d"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:ad5280d744d01516ca569e61f5024112d"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:ad5280d744d01516ca569e61f5024112d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aac2534ebce62dbe1f1d8e8f433b2d82a"><td class="memTemplParams" colspan="2"><a class="anchor" id="aac2534ebce62dbe1f1d8e8f433b2d82a"></a>
+template<typename... NodeTypes> </td></tr>
+<tr class="memitem:aac2534ebce62dbe1f1d8e8f433b2d82a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (const NodeTypes &...n)</td></tr>
+<tr class="separator:aac2534ebce62dbe1f1d8e8f433b2d82a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2fa82a3f1efa005e794f867f66b5fe1a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2fa82a3f1efa005e794f867f66b5fe1a"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a2fa82a3f1efa005e794f867f66b5fe1a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a2fa82a3f1efa005e794f867f66b5fe1a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a520381361b29bb2e97c18b87c7354169"><td class="memTemplParams" colspan="2"><a class="anchor" id="a520381361b29bb2e97c18b87c7354169"></a>
+template<typename... Nodes> </td></tr>
+<tr class="memitem:a520381361b29bb2e97c18b87c7354169"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>add_visible_nodes</b> (Nodes &...)</td></tr>
+<tr class="separator:a520381361b29bb2e97c18b87c7354169"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1338b299a1aef053174714b5387b5a5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1338b299a1aef053174714b5387b5a5c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a1338b299a1aef053174714b5387b5a5c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1315e2c72b5feb2c1c229346bad661d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1315e2c72b5feb2c1c229346bad661d"></a>
+output_ports_type </td><td class="memItemRight" valign="bottom"><b>output_ports</b> ()</td></tr>
+<tr class="separator:ac1315e2c72b5feb2c1c229346bad661d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a86eca1388a41ce03b3b880668cc6d23c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86eca1388a41ce03b3b880668cc6d23c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a86eca1388a41ce03b3b880668cc6d23c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:ad15e5dd2e145aaad2f0f43ad4bd9ba2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad15e5dd2e145aaad2f0f43ad4bd9ba2e"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:ad15e5dd2e145aaad2f0f43ad4bd9ba2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_map.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00040.png b/doc/html/a00040.png
index 0e3c404..364d38a 100644
Binary files a/doc/html/a00040.png and b/doc/html/a00040.png differ
diff --git a/doc/html/a00041.html b/doc/html/a00041.html
index 1a8d63c..25e9a39 100644
--- a/doc/html/a00041.html
+++ b/doc/html/a00041.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</title>
+<title>tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,72 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00041.html">concurrent_unordered_map_traits</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00041.html">concrete_filter</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-static-methods">Static Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="a00340.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</div>  </div>
+<div class="title">tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html">value_compare</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a3a4d3aae580451e86649ce3a3ae38894"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>allow_multimapping</b> = Allow_multimapping
- }</td></tr>
-<tr class="separator:a3a4d3aae580451e86649ce3a3ae38894"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c77b12f17473e24cda4b60b38e847fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c77b12f17473e24cda4b60b38e847fd"></a>
-typedef std::pair< const Key, T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a0c77b12f17473e24cda4b60b38e847fd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a133cf0868239271387488f6067ce56ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133cf0868239271387488f6067ce56ee"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:a133cf0868239271387488f6067ce56ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdf65dc261abb44bd733ebab0f54f01b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdf65dc261abb44bd733ebab0f54f01b"></a>
-typedef Hash_compare </td><td class="memItemRight" valign="bottom"><b>hash_compare</b></td></tr>
-<tr class="separator:afdf65dc261abb44bd733ebab0f54f01b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5f015ac2f9770d8cd69d0656447b66ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f015ac2f9770d8cd69d0656447b66ac"></a>
-typedef Allocator::template <br class="typebreak"/>
-rebind< value_type >::other </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a5f015ac2f9770d8cd69d0656447b66ac"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ae9e1e3147bd444fb77c544ef7ecb5bef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9e1e3147bd444fb77c544ef7ecb5bef"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map_traits</b> (const hash_compare &hc)</td></tr>
-<tr class="separator:ae9e1e3147bd444fb77c544ef7ecb5bef"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
-Static Protected Member Functions</h2></td></tr>
-<tr class="memitem:a561f2cf05060387c8282ad57f5c816ca"><td class="memTemplParams" colspan="2"><a class="anchor" id="a561f2cf05060387c8282ad57f5c816ca"></a>
-template<class Type1 , class Type2 > </td></tr>
-<tr class="memitem:a561f2cf05060387c8282ad57f5c816ca"><td class="memTemplItemLeft" align="right" valign="top">static const Key & </td><td class="memTemplItemRight" valign="bottom"><b>get_key</b> (const std::pair< Type1, Type2 > &value)</td></tr>
-<tr class="separator:a561f2cf05060387c8282ad57f5c816ca"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ad8f108aa7fc21e9e38050a9d56e691b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8f108aa7fc21e9e38050a9d56e691b7"></a>
-hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
-<tr class="separator:ad8f108aa7fc21e9e38050a9d56e691b7"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_map.h</li>
+<li>pipeline.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00042.html b/doc/html/a00042.html
index 4c2fb40..b15b84c 100644
--- a/doc/html/a00042.html
+++ b/doc/html/a00042.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</title>
+<title>tbb::concurrent_bounded_queue< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,136 +33,376 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00042.html">concurrent_unordered_multimap</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00042.html">concurrent_bounded_queue</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00343.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00276.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::concurrent_bounded_queue< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>A high-performance thread-safe blocking concurrent bounded queue.  
+ <a href="a00042.html#details">More...</a></p>
+
+<p><code>#include <concurrent_queue.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >:</div>
+Inheritance diagram for tbb::concurrent_bounded_queue< T, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00042.png" usemap="#tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map" alt=""/>
-  <map id="tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map">
+  <img src="a00042.png" usemap="#tbb::concurrent_bounded_queue< T, A >_map" alt=""/>
+  <map id="tbb::concurrent_bounded_queue< T, A >_map" name="tbb::concurrent_bounded_queue< T, A >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a13c740f45a112984c9a0c6d0d0a1a4d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13c740f45a112984c9a0c6d0d0a1a4d8"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:a13c740f45a112984c9a0c6d0d0a1a4d8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b89d9eeca4d1c194433b40671da2bf2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b89d9eeca4d1c194433b40671da2bf2"></a>
-typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a1b89d9eeca4d1c194433b40671da2bf2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a627d86449ed7299d1baa4b09b6dd93f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a627d86449ed7299d1baa4b09b6dd93f6"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-<tr class="separator:a627d86449ed7299d1baa4b09b6dd93f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8485b8d61b666ac6ddd81e1d4b286d5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8485b8d61b666ac6ddd81e1d4b286d5e"></a>
-typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
-<tr class="separator:a8485b8d61b666ac6ddd81e1d4b286d5e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72a124e1c8c64499677e58171a7b9383"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72a124e1c8c64499677e58171a7b9383"></a>
-typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
-<tr class="separator:a72a124e1c8c64499677e58171a7b9383"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6ecb30201df0bd885fbba309b2392bd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ecb30201df0bd885fbba309b2392bd4"></a>
-typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
-<tr class="separator:a6ecb30201df0bd885fbba309b2392bd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaeeee0c045e0003b85f60a6851d1d827"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeeee0c045e0003b85f60a6851d1d827"></a>
-typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:aaeeee0c045e0003b85f60a6851d1d827"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a029187ffe49ae876f41dfca39fe6f288"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a029187ffe49ae876f41dfca39fe6f288"></a>
-typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a029187ffe49ae876f41dfca39fe6f288"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55c029b4a58d1201e08ef5ba14fc0a66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55c029b4a58d1201e08ef5ba14fc0a66"></a>
-typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a55c029b4a58d1201e08ef5ba14fc0a66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac4613be39e17bc83cf85d3b90a13fa09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4613be39e17bc83cf85d3b90a13fa09"></a>
-typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:ac4613be39e17bc83cf85d3b90a13fa09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b9ef2bc9a8574b16ef678e838ff4e96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b9ef2bc9a8574b16ef678e838ff4e96"></a>
-typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a0b9ef2bc9a8574b16ef678e838ff4e96"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49038d8ed5f392bce440d7906b39ee53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49038d8ed5f392bce440d7906b39ee53"></a>
-typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a49038d8ed5f392bce440d7906b39ee53"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a517a0b94b44d429f7f23b6d9f5366b36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a517a0b94b44d429f7f23b6d9f5366b36"></a>
-typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a517a0b94b44d429f7f23b6d9f5366b36"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a494392b2f3400393ae2696a70e2411f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a494392b2f3400393ae2696a70e2411f4"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a494392b2f3400393ae2696a70e2411f4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2460242ba39d70a0473eac4ee62b898c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2460242ba39d70a0473eac4ee62b898c"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a2460242ba39d70a0473eac4ee62b898c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a75ad2607efde410d591002203deb65e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75ad2607efde410d591002203deb65e6"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
-<tr class="separator:a75ad2607efde410d591002203deb65e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab7647068dd628f35d3e3f7ed161b3fc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7647068dd628f35d3e3f7ed161b3fc0"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
-<tr class="separator:ab7647068dd628f35d3e3f7ed161b3fc0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb564625fef03dd9a5881d5d4e52f9f"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a></td></tr>
+<tr class="memdesc:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
+<tr class="separator:a6eb564625fef03dd9a5881d5d4e52f9f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbfceb845de1c770e2b56409f09b0364"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbfceb845de1c770e2b56409f09b0364"></a>
+typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a></td></tr>
+<tr class="memdesc:acbfceb845de1c770e2b56409f09b0364"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
+<tr class="separator:acbfceb845de1c770e2b56409f09b0364"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa4002bcd265d9d3ed305e3b686f1da"></a>
+typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a></td></tr>
+<tr class="memdesc:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
+<tr class="separator:a5fa4002bcd265d9d3ed305e3b686f1da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af838e520ce0db2c22369748c019b11cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af838e520ce0db2c22369748c019b11cb"></a>
+typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#af838e520ce0db2c22369748c019b11cb">const_reference</a></td></tr>
+<tr class="memdesc:af838e520ce0db2c22369748c019b11cb"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
+<tr class="separator:af838e520ce0db2c22369748c019b11cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a></td></tr>
+<tr class="memdesc:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue.  <a href="#ae73fa352d781bdb9d01bfb77f2a8bc28">More...</a><br/></td></tr>
+<tr class="separator:ae73fa352d781bdb9d01bfb77f2a8bc28"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a72725361e050c5a981035a20ef1b773e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72725361e050c5a981035a20ef1b773e"></a>
+typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a72725361e050c5a981035a20ef1b773e">difference_type</a></td></tr>
+<tr class="memdesc:a72725361e050c5a981035a20ef1b773e"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
+<tr class="separator:a72725361e050c5a981035a20ef1b773e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a42dfb71b1e4bdc0da3c1217d0d40ddd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42dfb71b1e4bdc0da3c1217d0d40ddd5"></a>
+typedef <br class="typebreak"/>
+internal::concurrent_queue_iterator<br class="typebreak"/>
+< <a class="el" href="a00042.html">concurrent_bounded_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a42dfb71b1e4bdc0da3c1217d0d40ddd5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18049841284051e18b854692bd04602c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18049841284051e18b854692bd04602c"></a>
+typedef <br class="typebreak"/>
+internal::concurrent_queue_iterator<br class="typebreak"/>
+< <a class="el" href="a00042.html">concurrent_bounded_queue</a>, <br class="typebreak"/>
+const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a18049841284051e18b854692bd04602c"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9d01e1e4f0fbf1b5f3ab145a84b2cfc7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d01e1e4f0fbf1b5f3ab145a84b2cfc7"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a9d01e1e4f0fbf1b5f3ab145a84b2cfc7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2fe78524a0f0cd268194cf2461e3ab0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fe78524a0f0cd268194cf2461e3ab0"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const Allocator &a)</td></tr>
-<tr class="separator:ae2fe78524a0f0cd268194cf2461e3ab0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a263f3d222a72a3f691eabb3a581c6534"><td class="memTemplParams" colspan="2"><a class="anchor" id="a263f3d222a72a3f691eabb3a581c6534"></a>
-template<typename Iterator > </td></tr>
-<tr class="memitem:a263f3d222a72a3f691eabb3a581c6534"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a263f3d222a72a3f691eabb3a581c6534"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a169314a424d47679e4aa343b70f75f00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a169314a424d47679e4aa343b70f75f00"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a169314a424d47679e4aa343b70f75f00">concurrent_unordered_multimap</a> (std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a169314a424d47679e4aa343b70f75f00"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
-<tr class="separator:a169314a424d47679e4aa343b70f75f00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aacf347cd41c61dd026e844fa9311130c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf347cd41c61dd026e844fa9311130c"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const <a class="el" href="a00042.html">concurrent_unordered_multimap</a> &table)</td></tr>
-<tr class="separator:aacf347cd41c61dd026e844fa9311130c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a34148bd7279ce189a6c0c26380df0a2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34148bd7279ce189a6c0c26380df0a2a"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const <a class="el" href="a00042.html">concurrent_unordered_multimap</a> &table, const Allocator &a)</td></tr>
-<tr class="separator:a34148bd7279ce189a6c0c26380df0a2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a58939ac30bfced4b6e2cf0377c1b7d71"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58939ac30bfced4b6e2cf0377c1b7d71"></a>
-<a class="el" href="a00042.html">concurrent_unordered_multimap</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00042.html">concurrent_unordered_multimap</a> &table)</td></tr>
-<tr class="separator:a58939ac30bfced4b6e2cf0377c1b7d71"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adac1da59fdf8b536f95ea5be3134785f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adac1da59fdf8b536f95ea5be3134785f"></a>
-<a class="el" href="a00042.html">concurrent_unordered_multimap</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#adac1da59fdf8b536f95ea5be3134785f">operator=</a> (std::initializer_list< value_type > const &il)</td></tr>
-<tr class="memdesc:adac1da59fdf8b536f95ea5be3134785f"><td class="mdescLeft"> </td><td class="mdescRight">assignment operator from initializer_list <br/></td></tr>
-<tr class="separator:adac1da59fdf8b536f95ea5be3134785f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a32ab0ae50fd7055338185163f0dad6d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32ab0ae50fd7055338185163f0dad6d1"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator where)</td></tr>
-<tr class="separator:a32ab0ae50fd7055338185163f0dad6d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59e06ce68d9e6c42d347ae5d0ebe05ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59e06ce68d9e6c42d347ae5d0ebe05ac"></a>
-size_type </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const key_type &key)</td></tr>
-<tr class="separator:a59e06ce68d9e6c42d347ae5d0ebe05ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a587130b6d80b030d6c86fe858a36e837"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a587130b6d80b030d6c86fe858a36e837"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator first, const_iterator last)</td></tr>
-<tr class="separator:a587130b6d80b030d6c86fe858a36e837"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a42305140d2b46035dc83e5029bfd251d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42305140d2b46035dc83e5029bfd251d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00042.html">concurrent_unordered_multimap</a> &table)</td></tr>
-<tr class="separator:a42305140d2b46035dc83e5029bfd251d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af380d71440609f8e73cb68ef46910861"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af380d71440609f8e73cb68ef46910861"></a>
-hasher </td><td class="memItemRight" valign="bottom"><b>hash_function</b> () const </td></tr>
-<tr class="separator:af380d71440609f8e73cb68ef46910861"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abc250a7abba25183449dabbe8b18d134"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc250a7abba25183449dabbe8b18d134"></a>
-key_equal </td><td class="memItemRight" valign="bottom"><b>key_eq</b> () const </td></tr>
-<tr class="separator:abc250a7abba25183449dabbe8b18d134"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85f8a800cae02b601f36ad7a655a0126"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85f8a800cae02b601f36ad7a655a0126"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a> (const <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
+<tr class="memdesc:a85f8a800cae02b601f36ad7a655a0126"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
+<tr class="separator:a85f8a800cae02b601f36ad7a655a0126"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad6fd2353d64c2c31d074cd99df58c02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad6fd2353d64c2c31d074cd99df58c02"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a> (const <a class="el" href="a00042.html">concurrent_bounded_queue</a> &src, const <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())</td></tr>
+<tr class="memdesc:aad6fd2353d64c2c31d074cd99df58c02"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:aad6fd2353d64c2c31d074cd99df58c02"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a228b9d3bf3158a9379748894a93fbe55"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a228b9d3bf3158a9379748894a93fbe55"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a228b9d3bf3158a9379748894a93fbe55">concurrent_bounded_queue</a> (<a class="el" href="a00042.html">concurrent_bounded_queue</a> &&src)</td></tr>
+<tr class="memdesc:a228b9d3bf3158a9379748894a93fbe55"><td class="mdescLeft"> </td><td class="mdescRight">Move constructors. <br/></td></tr>
+<tr class="separator:a228b9d3bf3158a9379748894a93fbe55"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed0303dafc38c5088ae62ac023fffb4e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed0303dafc38c5088ae62ac023fffb4e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_bounded_queue</b> (<a class="el" href="a00042.html">concurrent_bounded_queue</a> &&src, const <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a)</td></tr>
+<tr class="separator:aed0303dafc38c5088ae62ac023fffb4e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcfdc998e106fdb7b2dfa5df880cd9cf"></a>
+template<typename InputIterator > </td></tr>
+<tr class="memitem:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00042.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> &a=<a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a>())< [...]
+<tr class="memdesc:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
+<tr class="separator:afcfdc998e106fdb7b2dfa5df880cd9cf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1291bf6837ecfb8836c24dde5dd80b5"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a> ()</td></tr>
+<tr class="memdesc:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br/></td></tr>
+<tr class="separator:ab1291bf6837ecfb8836c24dde5dd80b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5e9051772bbc93b2ccb8fd0a98a21f5"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a> (const T &source)</td></tr>
+<tr class="memdesc:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br/></td></tr>
+<tr class="separator:ae5e9051772bbc93b2ccb8fd0a98a21f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a62a03e9c185562254ecb4104f38c106d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62a03e9c185562254ecb4104f38c106d"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a62a03e9c185562254ecb4104f38c106d">push</a> (T &&source)</td></tr>
+<tr class="memdesc:a62a03e9c185562254ecb4104f38c106d"><td class="mdescLeft"> </td><td class="mdescRight">Move an item at tail of queue. <br/></td></tr>
+<tr class="separator:a62a03e9c185562254ecb4104f38c106d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab9009e8a1bdf70623f6480681bb6b56a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab9009e8a1bdf70623f6480681bb6b56a"></a>
+template<typename... Arguments> </td></tr>
+<tr class="memitem:ab9009e8a1bdf70623f6480681bb6b56a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>emplace</b> (Arguments &&...args)</td></tr>
+<tr class="separator:ab9009e8a1bdf70623f6480681bb6b56a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a87926c31967a918ce80690a9ed5d6fa8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a> (T &destination)</td></tr>
+<tr class="memdesc:a87926c31967a918ce80690a9ed5d6fa8"><td class="mdescLeft"> </td><td class="mdescRight">Dequeue item from head of queue.  <a href="#a87926c31967a918ce80690a9ed5d6fa8">More...</a><br/></td></tr>
+<tr class="separator:a87926c31967a918ce80690a9ed5d6fa8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a77a755d94cabf5208905d10d5b57419c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77a755d94cabf5208905d10d5b57419c"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a77a755d94cabf5208905d10d5b57419c">abort</a> ()</td></tr>
+<tr class="memdesc:a77a755d94cabf5208905d10d5b57419c"><td class="mdescLeft"> </td><td class="mdescRight">Abort all pending queue operations. <br/></td></tr>
+<tr class="separator:a77a755d94cabf5208905d10d5b57419c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03d93a240841a21788396bebd71c51bd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a03d93a240841a21788396bebd71c51bd">try_push</a> (const T &source)</td></tr>
+<tr class="memdesc:a03d93a240841a21788396bebd71c51bd"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue if queue is not already full.  <a href="#a03d93a240841a21788396bebd71c51bd">More...</a><br/></td></tr>
+<tr class="separator:a03d93a240841a21788396bebd71c51bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a93f35e9d9381629e0a2993f9fdd96d92"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a93f35e9d9381629e0a2993f9fdd96d92">try_push</a> (T &&source)</td></tr>
+<tr class="memdesc:a93f35e9d9381629e0a2993f9fdd96d92"><td class="mdescLeft"> </td><td class="mdescRight">Move an item at tail of queue if queue is not already full.  <a href="#a93f35e9d9381629e0a2993f9fdd96d92">More...</a><br/></td></tr>
+<tr class="separator:a93f35e9d9381629e0a2993f9fdd96d92"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a4351eb8c93b6b2d9feaff0c7088ee8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0a4351eb8c93b6b2d9feaff0c7088ee8"></a>
+template<typename... Arguments> </td></tr>
+<tr class="memitem:a0a4351eb8c93b6b2d9feaff0c7088ee8"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>try_emplace</b> (Arguments &&...args)</td></tr>
+<tr class="separator:a0a4351eb8c93b6b2d9feaff0c7088ee8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a> (T &destination)</td></tr>
+<tr class="memdesc:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#a3086cb4dcdeee245ef5cf34f72fb3e10">More...</a><br/></td></tr>
+<tr class="separator:a3086cb4dcdeee245ef5cf34f72fb3e10"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a> () const </td></tr>
+<tr class="memdesc:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="mdescLeft"> </td><td class="mdescRight">Return number of pushes minus number of pops.  <a href="#a9d6c20fd8c193c12b6a7b0c3101fd966">More...</a><br/></td></tr>
+<tr class="separator:a9d6c20fd8c193c12b6a7b0c3101fd966"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8c59578f28c5fb4718b0eff43776e879"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c59578f28c5fb4718b0eff43776e879"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a8c59578f28c5fb4718b0eff43776e879">empty</a> () const </td></tr>
+<tr class="memdesc:a8c59578f28c5fb4718b0eff43776e879"><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to <a class="el" href="a00042.html#a9d6c20fd8c193c12b6a7b0c3101fd966" title="Return number of pushes minus number of pops. ">size()</a><=0. <br/></td></tr>
+<tr class="separator:a8c59578f28c5fb4718b0eff43776e879"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a526487063242569685af8c8d778d39e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a526487063242569685af8c8d778d39e0"></a>
+<a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a526487063242569685af8c8d778d39e0">capacity</a> () const </td></tr>
+<tr class="memdesc:a526487063242569685af8c8d778d39e0"><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of allowed elements. <br/></td></tr>
+<tr class="separator:a526487063242569685af8c8d778d39e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a768699675813575eec08c1f43afda395"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a768699675813575eec08c1f43afda395">set_capacity</a> (<a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> new_capacity)</td></tr>
+<tr class="memdesc:a768699675813575eec08c1f43afda395"><td class="mdescLeft"> </td><td class="mdescRight">Set the capacity.  <a href="#a768699675813575eec08c1f43afda395">More...</a><br/></td></tr>
+<tr class="separator:a768699675813575eec08c1f43afda395"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeba11bbcd368a7a3a6e6e2dd3082c9c"></a>
+<a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a> () const </td></tr>
+<tr class="memdesc:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
+<tr class="separator:aaeba11bbcd368a7a3a6e6e2dd3082c9c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a246be3920e079ea4847933f106baa98f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a246be3920e079ea4847933f106baa98f"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html#a246be3920e079ea4847933f106baa98f">clear</a> ()</td></tr>
+<tr class="memdesc:a246be3920e079ea4847933f106baa98f"><td class="mdescLeft"> </td><td class="mdescRight">clear the queue. not thread-safe. <br/></td></tr>
+<tr class="separator:a246be3920e079ea4847933f106baa98f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac0c931eaa1ddc30025e49d06cc383703"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0c931eaa1ddc30025e49d06cc383703"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> ()</td></tr>
+<tr class="separator:ac0c931eaa1ddc30025e49d06cc383703"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a634cece9742cbaba56ba6f7777568e4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a634cece9742cbaba56ba6f7777568e4c"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> ()</td></tr>
+<tr class="separator:a634cece9742cbaba56ba6f7777568e4c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ed2f8130fd679e89327cb292fb25510"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ed2f8130fd679e89327cb292fb25510"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> () const </td></tr>
+<tr class="separator:a2ed2f8130fd679e89327cb292fb25510"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a873d62f59fd79959c0204f5fb44c774d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a873d62f59fd79959c0204f5fb44c774d"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> () const </td></tr>
+<tr class="separator:a873d62f59fd79959c0204f5fb44c774d"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f5eec0de2e660ea5372d19393f0920b"></a>
+template<typename Container , typename Value > </td></tr>
+<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
+<tr class="separator:a1f5eec0de2e660ea5372d19393f0920b"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T, class A = cache_aligned_allocator<T>><br/>
+class tbb::concurrent_bounded_queue< T, A ></h3>
+
+<p>A high-performance thread-safe blocking concurrent bounded queue. </p>
+<p>This is the pre-PPL TBB concurrent queue which supports boundedness and blocking semantics. Note that method names agree with the PPL-style concurrent queue. Multiple threads may each push and pop concurrently. Assignment construction is not allowed. </p>
+</div><h2 class="groupheader">Member Typedef Documentation</h2>
+<a class="anchor" id="ae73fa352d781bdb9d01bfb77f2a8bc28"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef std::ptrdiff_t <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::<a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Integral type for representing size of the queue. </p>
+<p>Note that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a87926c31967a918ce80690a9ed5d6fa8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::pop </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"><em>destination</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
 </table>
+</div><div class="memdoc">
+
+<p>Dequeue item from head of queue. </p>
+<p>Block until an item becomes available, and then dequeue it. </p>
+
+</div>
+</div>
+<a class="anchor" id="a768699675813575eec08c1f43afda395"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::set_capacity </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> </td>
+          <td class="paramname"><em>new_capacity</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Set the capacity. </p>
+<p>Setting the capacity to 0 causes subsequent try_push operations to always fail, and subsequent push operations to block forever. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9d6c20fd8c193c12b6a7b0c3101fd966"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::size </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return number of pushes minus number of pops. </p>
+<p>Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed <a class="el" href="a00042.html#a526487063242569685af8c8d778d39e0" title="Maximum number of allowed elements. ">capacity()</a> if there are push operations in flight. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3086cb4dcdeee245ef5cf34f72fb3e10"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::try_pop </td>
+          <td>(</td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"><em>destination</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Attempt to dequeue an item from head of queue. </p>
+<p>Does not wait for item to become available. Returns true if successful; false otherwise. </p>
+
+</div>
+</div>
+<a class="anchor" id="a03d93a240841a21788396bebd71c51bd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::try_push </td>
+          <td>(</td>
+          <td class="paramtype">const T & </td>
+          <td class="paramname"><em>source</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Enqueue an item at tail of queue if queue is not already full. </p>
+<p>Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full. </p>
+
+</div>
+</div>
+<a class="anchor" id="a93f35e9d9381629e0a2993f9fdd96d92"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , class A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00042.html">tbb::concurrent_bounded_queue</a>< T, A >::try_push </td>
+          <td>(</td>
+          <td class="paramtype">T && </td>
+          <td class="paramname"><em>source</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Move an item at tail of queue if queue is not already full. </p>
+<p>Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_map.h</li>
+<li>concurrent_queue.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00042.png b/doc/html/a00042.png
index 6fa3b58..3dc03c3 100644
Binary files a/doc/html/a00042.png and b/doc/html/a00042.png differ
diff --git a/doc/html/a00043.html b/doc/html/a00043.html
index bdc3a47..e555ccc 100644
--- a/doc/html/a00043.html
+++ b/doc/html/a00043.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,161 +33,1054 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_unordered_multiset</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00346.html">List of all members</a>  </div>
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-static-methods">Static Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00368.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Unordered map from Key to T.  
+ <a href="a00043.html#details">More...</a></p>
+
+<p><code>#include <concurrent_hash_map.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >:</div>
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00043.png" usemap="#tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map" alt=""/>
-  <map id="tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map">
+  <img src="a00043.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map" alt=""/>
+  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00010.html">accessor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Allows write access to elements and combines data access, locking, and garbage collection.  <a href="a00010.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00011.html">accessor_not_used</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html">bucket_accessor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">bucket accessor is to find, rehash, acquire a lock, and access a bucket  <a href="a00029.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html">call_clear_on_leave</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html">const_accessor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Combines data access, locking, and garbage collection.  <a href="a00054.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html">node</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ab1c670cc0b75a7f6c13432b264669ac0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1c670cc0b75a7f6c13432b264669ac0"></a>
-typedef internal::hash_compare<br class="typebreak"/>
-< Key, Hasher, Key_equality > </td><td class="memItemRight" valign="bottom"><b>hash_compare</b></td></tr>
-<tr class="separator:ab1c670cc0b75a7f6c13432b264669ac0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abd3897cd2679d5e6804cd8f6ff6eb071"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd3897cd2679d5e6804cd8f6ff6eb071"></a>
+<tr class="memitem:a73476eabf0605a4a17e33eca379b567c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73476eabf0605a4a17e33eca379b567c"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:a73476eabf0605a4a17e33eca379b567c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09f82b7e1255cd4a7ab13f694f04e0a2"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+<tr class="separator:a09f82b7e1255cd4a7ab13f694f04e0a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10da770ec791fd8f3bddbf19d852b2f6"></a>
+typedef std::pair< const Key, T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a10da770ec791fd8f3bddbf19d852b2f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4346b898af1007960c70b1d5a12b3dda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4346b898af1007960c70b1d5a12b3dda"></a>
+typedef hash_map_base::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a4346b898af1007960c70b1d5a12b3dda"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aae6344f41fc1b2aae8b310442f609db0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae6344f41fc1b2aae8b310442f609db0"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:aae6344f41fc1b2aae8b310442f609db0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af8fca882f67e98d54a675c9b75db3cc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8fca882f67e98d54a675c9b75db3cc0"></a>
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:af8fca882f67e98d54a675c9b75db3cc0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaf14214618545aa7e0aa59a3af4a6bd"></a>
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:acaf14214618545aa7e0aa59a3af4a6bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5064777ff7c17e294d74ca60f96f28db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5064777ff7c17e294d74ca60f96f28db"></a>
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a5064777ff7c17e294d74ca60f96f28db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6291ee6059597aac8f59dc8fd5558036"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6291ee6059597aac8f59dc8fd5558036"></a>
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a6291ee6059597aac8f59dc8fd5558036"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6af7bf91f1cbd859aef1ffc6197b41a"></a>
 typedef <br class="typebreak"/>
-<a class="el" href="a00045.html">concurrent_unordered_set_traits</a><br class="typebreak"/>
-< Key, hash_compare, Allocator, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><b>traits_type</b></td></tr>
-<tr class="separator:abd3897cd2679d5e6804cd8f6ff6eb071"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16714895a578ae9e77b4a862811f3d0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16714895a578ae9e77b4a862811f3d0d"></a>
+internal::hash_map_iterator<br class="typebreak"/>
+< <a class="el" href="a00043.html">concurrent_hash_map</a>, <br class="typebreak"/>
+value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:ae6af7bf91f1cbd859aef1ffc6197b41a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af416067eaf691c88e6b73bf3b3323f66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af416067eaf691c88e6b73bf3b3323f66"></a>
 typedef <br class="typebreak"/>
-internal::concurrent_unordered_base<br class="typebreak"/>
-< <a class="el" href="a00045.html">traits_type</a> > </td><td class="memItemRight" valign="bottom"><b>base_type</b></td></tr>
-<tr class="separator:a16714895a578ae9e77b4a862811f3d0d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1eb846a05a4e2d30a3ff7f66acad7c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1eb846a05a4e2d30a3ff7f66acad7c7"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:af1eb846a05a4e2d30a3ff7f66acad7c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a559df68fc84a16b494a9638085c7379b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559df68fc84a16b494a9638085c7379b"></a>
-typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a559df68fc84a16b494a9638085c7379b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada492d245619aac2683b57c9f52106c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada492d245619aac2683b57c9f52106c7"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-<tr class="separator:ada492d245619aac2683b57c9f52106c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab6b0ed8e5a20690cc06644520d0e5ef3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6b0ed8e5a20690cc06644520d0e5ef3"></a>
-typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
-<tr class="separator:ab6b0ed8e5a20690cc06644520d0e5ef3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3d8b36c79741c229cf9a5c9d93516b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3d8b36c79741c229cf9a5c9d93516b7"></a>
-typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
-<tr class="separator:aa3d8b36c79741c229cf9a5c9d93516b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ec7f32ab51ebbfdb06d57ab8b17044b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ec7f32ab51ebbfdb06d57ab8b17044b"></a>
-typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
-<tr class="separator:a8ec7f32ab51ebbfdb06d57ab8b17044b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1f89a49912b58d42ddbb3f344b6304ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f89a49912b58d42ddbb3f344b6304ca"></a>
-typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a1f89a49912b58d42ddbb3f344b6304ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad4ff41efe0ead5030b011c999dd748de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4ff41efe0ead5030b011c999dd748de"></a>
-typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:ad4ff41efe0ead5030b011c999dd748de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4327ff04c8a5dc7653b47763263b9f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4327ff04c8a5dc7653b47763263b9f9"></a>
-typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:ab4327ff04c8a5dc7653b47763263b9f9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef5518b17cd9da59b9e6d9b9374f5245"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5518b17cd9da59b9e6d9b9374f5245"></a>
-typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:aef5518b17cd9da59b9e6d9b9374f5245"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7084b7dd3f9b1df0ffdd520529e87f3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7084b7dd3f9b1df0ffdd520529e87f3c"></a>
-typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a7084b7dd3f9b1df0ffdd520529e87f3c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad04d6c35ee079e8a49d38744c8f305b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad04d6c35ee079e8a49d38744c8f305b3"></a>
-typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ad04d6c35ee079e8a49d38744c8f305b3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6e9babf06dc79948bb787793a7cb0d37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e9babf06dc79948bb787793a7cb0d37"></a>
-typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a6e9babf06dc79948bb787793a7cb0d37"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a229ae1c0786ea9509c66256fcf1c8f47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a229ae1c0786ea9509c66256fcf1c8f47"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a229ae1c0786ea9509c66256fcf1c8f47"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a69ed6ae85fe54e53b2804b61a6f30fa2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69ed6ae85fe54e53b2804b61a6f30fa2"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a69ed6ae85fe54e53b2804b61a6f30fa2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a532cdc67028e27231846b41bfd9a0e26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a532cdc67028e27231846b41bfd9a0e26"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
-<tr class="separator:a532cdc67028e27231846b41bfd9a0e26"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4f42202dd9f2bc114c9411928431217"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4f42202dd9f2bc114c9411928431217"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
-<tr class="separator:af4f42202dd9f2bc114c9411928431217"><td class="memSeparator" colspan="2"> </td></tr>
+internal::hash_map_iterator<br class="typebreak"/>
+< <a class="el" href="a00043.html">concurrent_hash_map</a>, const <br class="typebreak"/>
+value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:af416067eaf691c88e6b73bf3b3323f66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a69508e67134dd5282b89e1847e71c31b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69508e67134dd5282b89e1847e71c31b"></a>
+typedef <br class="typebreak"/>
+internal::hash_map_range<br class="typebreak"/>
+< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
+<tr class="separator:a69508e67134dd5282b89e1847e71c31b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b9d06751969eacda84b01582e4aa1d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b9d06751969eacda84b01582e4aa1d2"></a>
+typedef <br class="typebreak"/>
+internal::hash_map_range<br class="typebreak"/>
+< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
+<tr class="separator:a0b9d06751969eacda84b01582e4aa1d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85c266c1560f7faa64772d349d0280a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85c266c1560f7faa64772d349d0280a4"></a>
+typedef Allocator </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a85c266c1560f7faa64772d349d0280a4"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a10adc362c74af28dd7dd16ca335ce1c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10adc362c74af28dd7dd16ca335ce1c9"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a10adc362c74af28dd7dd16ca335ce1c9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf8c095a7be6913dd96e22a6ce9af187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf8c095a7be6913dd96e22a6ce9af187"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const Allocator &a)</td></tr>
-<tr class="separator:adf8c095a7be6913dd96e22a6ce9af187"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a830962289c517e0466704e1b9b70fe71"><td class="memTemplParams" colspan="2"><a class="anchor" id="a830962289c517e0466704e1b9b70fe71"></a>
-template<typename Iterator > </td></tr>
-<tr class="memitem:a830962289c517e0466704e1b9b70fe71"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a830962289c517e0466704e1b9b70fe71"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab2fa28924f52578bb59200b9ffa976c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2fa28924f52578bb59200b9ffa976c8"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ab2fa28924f52578bb59200b9ffa976c8">concurrent_unordered_multiset</a> (std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:ab2fa28924f52578bb59200b9ffa976c8"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
-<tr class="separator:ab2fa28924f52578bb59200b9ffa976c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3110fb1a6f8e2a3071d2acbe4b7b154b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3110fb1a6f8e2a3071d2acbe4b7b154b"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const <a class="el" href="a00043.html">concurrent_unordered_multiset</a> &table)</td></tr>
-<tr class="separator:a3110fb1a6f8e2a3071d2acbe4b7b154b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a229089da66522fd4f3d77e9f57e19fbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a229089da66522fd4f3d77e9f57e19fbb"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const <a class="el" href="a00043.html">concurrent_unordered_multiset</a> &table, const Allocator &a)</td></tr>
-<tr class="separator:a229089da66522fd4f3d77e9f57e19fbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1fb116ee3fdf6c6c810fe21eb01e209"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1fb116ee3fdf6c6c810fe21eb01e209"></a>
-<a class="el" href="a00043.html">concurrent_unordered_multiset</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00043.html">concurrent_unordered_multiset</a> &table)</td></tr>
-<tr class="separator:ac1fb116ee3fdf6c6c810fe21eb01e209"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01e685fab9a39cbd69c53bb3b8befce6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01e685fab9a39cbd69c53bb3b8befce6"></a>
-<a class="el" href="a00043.html">concurrent_unordered_multiset</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a01e685fab9a39cbd69c53bb3b8befce6">operator=</a> (std::initializer_list< value_type > const &il)</td></tr>
-<tr class="memdesc:a01e685fab9a39cbd69c53bb3b8befce6"><td class="mdescLeft"> </td><td class="mdescRight">assignment operator from initializer_list <br/></td></tr>
-<tr class="separator:a01e685fab9a39cbd69c53bb3b8befce6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a38147175641e9ae03c3136de9efad03b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38147175641e9ae03c3136de9efad03b"></a>
-std::pair< iterator, bool > </td><td class="memItemRight" valign="bottom"><b>insert</b> (const value_type &value)</td></tr>
-<tr class="separator:a38147175641e9ae03c3136de9efad03b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b4845a6d788668ea54ba5aa6d8a1a65"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b4845a6d788668ea54ba5aa6d8a1a65"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>insert</b> (const_iterator where, const value_type &value)</td></tr>
-<tr class="separator:a8b4845a6d788668ea54ba5aa6d8a1a65"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a962a3b35f481723e91a48fdd179b4803"><td class="memTemplParams" colspan="2"><a class="anchor" id="a962a3b35f481723e91a48fdd179b4803"></a>
-template<class Iterator > </td></tr>
-<tr class="memitem:a962a3b35f481723e91a48fdd179b4803"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>insert</b> (Iterator first, Iterator last)</td></tr>
-<tr class="separator:a962a3b35f481723e91a48fdd179b4803"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1278d73388093ea34292c81159952c94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1278d73388093ea34292c81159952c94"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator where)</td></tr>
-<tr class="separator:a1278d73388093ea34292c81159952c94"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1cd1fefe17cda678734882018bb75ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1cd1fefe17cda678734882018bb75ad"></a>
-size_type </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const key_type &key)</td></tr>
-<tr class="separator:aa1cd1fefe17cda678734882018bb75ad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a598e558219dd96f1946146312a441e5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a598e558219dd96f1946146312a441e5c"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator first, const_iterator last)</td></tr>
-<tr class="separator:a598e558219dd96f1946146312a441e5c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a868f5d5658afe698d23231ce70de3d2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a868f5d5658afe698d23231ce70de3d2d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00043.html">concurrent_unordered_multiset</a> &table)</td></tr>
-<tr class="separator:a868f5d5658afe698d23231ce70de3d2d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8c9826f91c36d15b5a370d8c813f0b84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c9826f91c36d15b5a370d8c813f0b84"></a>
-hasher </td><td class="memItemRight" valign="bottom"><b>hash_function</b> () const </td></tr>
-<tr class="separator:a8c9826f91c36d15b5a370d8c813f0b84"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1e4c658fb25acae25a335004d5023a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1e4c658fb25acae25a335004d5023a8"></a>
-key_equal </td><td class="memItemRight" valign="bottom"><b>key_eq</b> () const </td></tr>
-<tr class="separator:ac1e4c658fb25acae25a335004d5023a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3a9767b525144a2afb69ed125714c53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3a9767b525144a2afb69ed125714c53"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aa3a9767b525144a2afb69ed125714c53">concurrent_hash_map</a> (const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:aa3a9767b525144a2afb69ed125714c53"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table. <br/></td></tr>
+<tr class="separator:aa3a9767b525144a2afb69ed125714c53"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aae76e1252b56b107685f8746e0f6a1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae76e1252b56b107685f8746e0f6a1f4"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aae76e1252b56b107685f8746e0f6a1f4">concurrent_hash_map</a> (size_type n, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:aae76e1252b56b107685f8746e0f6a1f4"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
+<tr class="separator:aae76e1252b56b107685f8746e0f6a1f4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8a73b86f9a5e9836b38713e56c546654"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a73b86f9a5e9836b38713e56c546654"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a8a73b86f9a5e9836b38713e56c546654">concurrent_hash_map</a> (const <a class="el" href="a00043.html">concurrent_hash_map</a> &table, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a8a73b86f9a5e9836b38713e56c546654"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a8a73b86f9a5e9836b38713e56c546654"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2bd04845683b15a590913a72a19fa3dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bd04845683b15a590913a72a19fa3dc"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a2bd04845683b15a590913a72a19fa3dc">concurrent_hash_map</a> (<a class="el" href="a00043.html">concurrent_hash_map</a> &&table)</td></tr>
+<tr class="memdesc:a2bd04845683b15a590913a72a19fa3dc"><td class="mdescLeft"> </td><td class="mdescRight">Move constructor. <br/></td></tr>
+<tr class="separator:a2bd04845683b15a590913a72a19fa3dc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad642e497153df5669e6454acef095675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad642e497153df5669e6454acef095675"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ad642e497153df5669e6454acef095675">concurrent_hash_map</a> (<a class="el" href="a00043.html">concurrent_hash_map</a> &&table, const allocator_type &a)</td></tr>
+<tr class="memdesc:ad642e497153df5669e6454acef095675"><td class="mdescLeft"> </td><td class="mdescRight">Move constructor. <br/></td></tr>
+<tr class="separator:ad642e497153df5669e6454acef095675"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad56fc19d656099d49051f3c363cefc89"></a>
+template<typename I > </td></tr>
+<tr class="memitem:ad56fc19d656099d49051f3c363cefc89"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#ad56fc19d656099d49051f3c363cefc89">concurrent_hash_map</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:ad56fc19d656099d49051f3c363cefc89"><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br/></td></tr>
+<tr class="separator:ad56fc19d656099d49051f3c363cefc89"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a57149f90060b033b1f2493f2a88ef291"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57149f90060b033b1f2493f2a88ef291"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a57149f90060b033b1f2493f2a88ef291">concurrent_hash_map</a> (std::initializer_list< value_type > il, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a57149f90060b033b1f2493f2a88ef291"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty table with n preallocated buckets. This number serves also as initial concurrency level. <br/></td></tr>
+<tr class="separator:a57149f90060b033b1f2493f2a88ef291"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63e01b1f79c287ae0257ccfd483fd90a"></a>
+<a class="el" href="a00043.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a63e01b1f79c287ae0257ccfd483fd90a">operator=</a> (const <a class="el" href="a00043.html">concurrent_hash_map</a> &table)</td></tr>
+<tr class="memdesc:a63e01b1f79c287ae0257ccfd483fd90a"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
+<tr class="separator:a63e01b1f79c287ae0257ccfd483fd90a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a92b506ceed93d1c25979948961054380"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92b506ceed93d1c25979948961054380"></a>
+<a class="el" href="a00043.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a92b506ceed93d1c25979948961054380">operator=</a> (<a class="el" href="a00043.html">concurrent_hash_map</a> &&table)</td></tr>
+<tr class="memdesc:a92b506ceed93d1c25979948961054380"><td class="mdescLeft"> </td><td class="mdescRight">Move Assignment. <br/></td></tr>
+<tr class="separator:a92b506ceed93d1c25979948961054380"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aac73665b1a55e3de7332f36598488252"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac73665b1a55e3de7332f36598488252"></a>
+<a class="el" href="a00043.html">concurrent_hash_map</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aac73665b1a55e3de7332f36598488252">operator=</a> (std::initializer_list< value_type > il)</td></tr>
+<tr class="memdesc:aac73665b1a55e3de7332f36598488252"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
+<tr class="separator:aac73665b1a55e3de7332f36598488252"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf1fa9470c605731063e5949f0418eb7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#adf1fa9470c605731063e5949f0418eb7">rehash</a> (size_type n=0)</td></tr>
+<tr class="memdesc:adf1fa9470c605731063e5949f0418eb7"><td class="mdescLeft"> </td><td class="mdescRight">Rehashes and optionally resizes the whole table.  <a href="#adf1fa9470c605731063e5949f0418eb7">More...</a><br/></td></tr>
+<tr class="separator:adf1fa9470c605731063e5949f0418eb7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8295bc260b5e4df883fef11574b84c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8295bc260b5e4df883fef11574b84c6"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ab8295bc260b5e4df883fef11574b84c6">clear</a> ()</td></tr>
+<tr class="memdesc:ab8295bc260b5e4df883fef11574b84c6"><td class="mdescLeft"> </td><td class="mdescRight">Clear table. <br/></td></tr>
+<tr class="separator:ab8295bc260b5e4df883fef11574b84c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ce9ab8c954bf6979c2c57d10fd8a8ed"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">~concurrent_hash_map</a> ()</td></tr>
+<tr class="memdesc:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="mdescLeft"> </td><td class="mdescRight">Clear table and destroy it. <br/></td></tr>
+<tr class="separator:a9ce9ab8c954bf6979c2c57d10fd8a8ed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10dc8d8b91878b211c12a3e6b1bb38bb"></a>
+range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1)</td></tr>
+<tr class="separator:a10dc8d8b91878b211c12a3e6b1bb38bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8698274a4ffb94bb0468c387ffdc2e56"></a>
+const_range_type </td><td class="memItemRight" valign="bottom"><b>range</b> (size_type grainsize=1) const </td></tr>
+<tr class="separator:a8698274a4ffb94bb0468c387ffdc2e56"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38b7d6443502ee9f4c2374d34ea8d742"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+<tr class="separator:a38b7d6443502ee9f4c2374d34ea8d742"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa85633d3fc7494f49728b4064db59f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa85633d3fc7494f49728b4064db59f6"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+<tr class="separator:afa85633d3fc7494f49728b4064db59f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46aa6dc98653a88d410d0cfddd514f0d"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
+<tr class="separator:a46aa6dc98653a88d410d0cfddd514f0d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ed8cd11a3a5c400d9bc11492d136dfd"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
+<tr class="separator:a0ed8cd11a3a5c400d9bc11492d136dfd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a01a1c3032bb193a5c4f37425adbe306c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01a1c3032bb193a5c4f37425adbe306c"></a>
+std::pair< iterator, iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key)</td></tr>
+<tr class="separator:a01a1c3032bb193a5c4f37425adbe306c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af368c8d8f49a9a74706c9ed11f8fd7e4"></a>
+std::pair< const_iterator, <br class="typebreak"/>
+const_iterator > </td><td class="memItemRight" valign="bottom"><b>equal_range</b> (const Key &key) const </td></tr>
+<tr class="separator:af368c8d8f49a9a74706c9ed11f8fd7e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2ce6da7cd62bc7425f0a29498332ab4"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4">size</a> () const </td></tr>
+<tr class="memdesc:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="mdescLeft"> </td><td class="mdescRight">Number of items in table. <br/></td></tr>
+<tr class="separator:ad2ce6da7cd62bc7425f0a29498332ab4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e05f2a1ca3accfb4252d7ee82d1e990"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a5e05f2a1ca3accfb4252d7ee82d1e990">empty</a> () const </td></tr>
+<tr class="memdesc:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="mdescLeft"> </td><td class="mdescRight">True if <a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a>==0. <br/></td></tr>
+<tr class="separator:a5e05f2a1ca3accfb4252d7ee82d1e990"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea0a0e5220a0dcb67da57d0280d36005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea0a0e5220a0dcb67da57d0280d36005"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aea0a0e5220a0dcb67da57d0280d36005">max_size</a> () const </td></tr>
+<tr class="memdesc:aea0a0e5220a0dcb67da57d0280d36005"><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on size. <br/></td></tr>
+<tr class="separator:aea0a0e5220a0dcb67da57d0280d36005"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa067a2a4db1d96f38555369a89deee64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa067a2a4db1d96f38555369a89deee64"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aa067a2a4db1d96f38555369a89deee64">bucket_count</a> () const </td></tr>
+<tr class="memdesc:aa067a2a4db1d96f38555369a89deee64"><td class="mdescLeft"> </td><td class="mdescRight">Returns the current number of buckets. <br/></td></tr>
+<tr class="separator:aa067a2a4db1d96f38555369a89deee64"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a121865c574f8ae5cae69ed3d6b7e0511"></a>
+allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a121865c574f8ae5cae69ed3d6b7e0511">get_allocator</a> () const </td></tr>
+<tr class="memdesc:a121865c574f8ae5cae69ed3d6b7e0511"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
+<tr class="separator:a121865c574f8ae5cae69ed3d6b7e0511"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c8edf603bc776a6c84c007702c1808e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c8edf603bc776a6c84c007702c1808e"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e">swap</a> (<a class="el" href="a00043.html">concurrent_hash_map</a> &table)</td></tr>
+<tr class="memdesc:a4c8edf603bc776a6c84c007702c1808e"><td class="mdescLeft"> </td><td class="mdescRight">swap two instances. Iterators are invalidated <br/></td></tr>
+<tr class="separator:a4c8edf603bc776a6c84c007702c1808e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac375d3884bf9c80efe56117757c822e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac375d3884bf9c80efe56117757c822e7"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7">count</a> (const Key &key) const </td></tr>
+<tr class="memdesc:ac375d3884bf9c80efe56117757c822e7"><td class="mdescLeft"> </td><td class="mdescRight">Return count of items (0 or 1) <br/></td></tr>
+<tr class="separator:ac375d3884bf9c80efe56117757c822e7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a27a3f296dc170ae25f8e3fd9efa93cff">find</a> (<a class="el" href="a00054.html">const_accessor</a> &result, const Key &key) const </td></tr>
+<tr class="memdesc:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a read lock on the item.  <a href="#a27a3f296dc170ae25f8e3fd9efa93cff">More...</a><br/></td></tr>
+<tr class="separator:a27a3f296dc170ae25f8e3fd9efa93cff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6b61799e2018381b5ee4b78752a41483"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a6b61799e2018381b5ee4b78752a41483">find</a> (<a class="el" href="a00010.html">accessor</a> &result, const Key &key)</td></tr>
+<tr class="memdesc:a6b61799e2018381b5ee4b78752a41483"><td class="mdescLeft"> </td><td class="mdescRight">Find item and acquire a write lock on the item.  <a href="#a6b61799e2018381b5ee4b78752a41483">More...</a><br/></td></tr>
+<tr class="separator:a6b61799e2018381b5ee4b78752a41483"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaebb10a9e9dcb24e63860caa745a281d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#aaebb10a9e9dcb24e63860caa745a281d">insert</a> (<a class="el" href="a00054.html">const_accessor</a> &result, const Key &key)</td></tr>
+<tr class="memdesc:aaebb10a9e9dcb24e63860caa745a281d"><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a read lock on the item.  <a href="#aaebb10a9e9dcb24e63860caa745a281d">More...</a><br/></td></tr>
+<tr class="separator:aaebb10a9e9dcb24e63860caa745a281d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a766c6033c203e8f342501d85a7cf3405"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a766c6033c203e8f342501d85a7cf3405">insert</a> (<a class="el" href="a00010.html">accessor</a> &result, const Key &key)</td></tr>
+<tr class="memdesc:a766c6033c203e8f342501d85a7cf3405"><td class="mdescLeft"> </td><td class="mdescRight">Insert item (if not already present) and acquire a write lock on the item.  <a href="#a766c6033c203e8f342501d85a7cf3405">More...</a><br/></td></tr>
+<tr class="separator:a766c6033c203e8f342501d85a7cf3405"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#ae0b420cdb752e749790c8a7daa15c3c2">insert</a> (<a class="el" href="a00054.html">const_accessor</a> &result, const value_type &value)</td></tr>
+<tr class="memdesc:ae0b420cdb752e749790c8a7daa15c3c2"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#ae0b420cdb752e749790c8a7daa15c3c2">More...</a><br/></td></tr>
+<tr class="separator:ae0b420cdb752e749790c8a7daa15c3c2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2047214e041b7674c3b83e204d0d6c6a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a2047214e041b7674c3b83e204d0d6c6a">insert</a> (<a class="el" href="a00010.html">accessor</a> &result, const value_type &value)</td></tr>
+<tr class="memdesc:a2047214e041b7674c3b83e204d0d6c6a"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#a2047214e041b7674c3b83e204d0d6c6a">More...</a><br/></td></tr>
+<tr class="separator:a2047214e041b7674c3b83e204d0d6c6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8e39501f9edb3210504c9c4ca05384b7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a8e39501f9edb3210504c9c4ca05384b7">insert</a> (const value_type &value)</td></tr>
+<tr class="memdesc:a8e39501f9edb3210504c9c4ca05384b7"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#a8e39501f9edb3210504c9c4ca05384b7">More...</a><br/></td></tr>
+<tr class="separator:a8e39501f9edb3210504c9c4ca05384b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a446910c1ca4818bdb00f4ffa91b9108a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a446910c1ca4818bdb00f4ffa91b9108a">insert</a> (<a class="el" href="a00054.html">const_accessor</a> &result, value_type &&value)</td></tr>
+<tr class="memdesc:a446910c1ca4818bdb00f4ffa91b9108a"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#a446910c1ca4818bdb00f4ffa91b9108a">More...</a><br/></td></tr>
+<tr class="separator:a446910c1ca4818bdb00f4ffa91b9108a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a50c929e78ecfa36986c8821287665a70"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a50c929e78ecfa36986c8821287665a70">insert</a> (<a class="el" href="a00010.html">accessor</a> &result, value_type &&value)</td></tr>
+<tr class="memdesc:a50c929e78ecfa36986c8821287665a70"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#a50c929e78ecfa36986c8821287665a70">More...</a><br/></td></tr>
+<tr class="separator:a50c929e78ecfa36986c8821287665a70"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5d3da283d2e74c7ff0ecb0dfd4d371fd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a5d3da283d2e74c7ff0ecb0dfd4d371fd">insert</a> (value_type &&value)</td></tr>
+<tr class="memdesc:a5d3da283d2e74c7ff0ecb0dfd4d371fd"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#a5d3da283d2e74c7ff0ecb0dfd4d371fd">More...</a><br/></td></tr>
+<tr class="separator:a5d3da283d2e74c7ff0ecb0dfd4d371fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a382178ea2f00f69096c91bcf76ae7913"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
+<tr class="memitem:a382178ea2f00f69096c91bcf76ae7913"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#a382178ea2f00f69096c91bcf76ae7913">emplace</a> (<a class="el" href="a00054.html">const_accessor</a> &result, Args &&...args)</td></tr>
+<tr class="memdesc:a382178ea2f00f69096c91bcf76ae7913"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a read lock on the item.  <a href="#a382178ea2f00f69096c91bcf76ae7913">More...</a><br/></td></tr>
+<tr class="separator:a382178ea2f00f69096c91bcf76ae7913"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17e51c8864282c35aa4d23f22909cc4a"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
+<tr class="memitem:a17e51c8864282c35aa4d23f22909cc4a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#a17e51c8864282c35aa4d23f22909cc4a">emplace</a> (<a class="el" href="a00010.html">accessor</a> &result, Args &&...args)</td></tr>
+<tr class="memdesc:a17e51c8864282c35aa4d23f22909cc4a"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already and acquire a write lock on the item.  <a href="#a17e51c8864282c35aa4d23f22909cc4a">More...</a><br/></td></tr>
+<tr class="separator:a17e51c8864282c35aa4d23f22909cc4a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbe1d0f3a87786a83a7021af2ef52ee0"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
+<tr class="memitem:acbe1d0f3a87786a83a7021af2ef52ee0"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#acbe1d0f3a87786a83a7021af2ef52ee0">emplace</a> (Args &&...args)</td></tr>
+<tr class="memdesc:acbe1d0f3a87786a83a7021af2ef52ee0"><td class="mdescLeft"> </td><td class="mdescRight">Insert item by copying if there is no such key present already.  <a href="#acbe1d0f3a87786a83a7021af2ef52ee0">More...</a><br/></td></tr>
+<tr class="separator:acbe1d0f3a87786a83a7021af2ef52ee0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab84dfd77316252cbf39c7ae89e365a00"></a>
+template<typename I > </td></tr>
+<tr class="memitem:ab84dfd77316252cbf39c7ae89e365a00"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#ab84dfd77316252cbf39c7ae89e365a00">insert</a> (I first, I last)</td></tr>
+<tr class="memdesc:ab84dfd77316252cbf39c7ae89e365a00"><td class="mdescLeft"> </td><td class="mdescRight">Insert range [first, last) <br/></td></tr>
+<tr class="separator:ab84dfd77316252cbf39c7ae89e365a00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a580fdba266e87106ad41470479f641d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a580fdba266e87106ad41470479f641d6"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a580fdba266e87106ad41470479f641d6">insert</a> (std::initializer_list< value_type > il)</td></tr>
+<tr class="memdesc:a580fdba266e87106ad41470479f641d6"><td class="mdescLeft"> </td><td class="mdescRight">Insert initializer list. <br/></td></tr>
+<tr class="separator:a580fdba266e87106ad41470479f641d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5144122dbb946d933b94a92117543b33"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a5144122dbb946d933b94a92117543b33">erase</a> (const Key &key)</td></tr>
+<tr class="memdesc:a5144122dbb946d933b94a92117543b33"><td class="mdescLeft"> </td><td class="mdescRight">Erase item.  <a href="#a5144122dbb946d933b94a92117543b33">More...</a><br/></td></tr>
+<tr class="separator:a5144122dbb946d933b94a92117543b33"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a2ec6f95ed9beda9d32df56cdd45c1842">erase</a> (<a class="el" href="a00054.html">const_accessor</a> &item_accessor)</td></tr>
+<tr class="memdesc:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="mdescLeft"> </td><td class="mdescRight">Erase item by <a class="el" href="a00054.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>.  <a href="#a2ec6f95ed9beda9d32df56cdd45c1842">More...</a><br/></td></tr>
+<tr class="separator:a2ec6f95ed9beda9d32df56cdd45c1842"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">erase</a> (<a class="el" href="a00010.html">accessor</a> &item_accessor)</td></tr>
+<tr class="memdesc:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="mdescLeft"> </td><td class="mdescRight">Erase item by accessor.  <a href="#a3ed0fbcc6cfd4db8242e100355ac1fa5">More...</a><br/></td></tr>
+<tr class="separator:a3ed0fbcc6cfd4db8242e100355ac1fa5"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81dddc5d509f7f074d84d9c38e83efb9"></a>
+typedef Allocator::template <br class="typebreak"/>
+rebind< <a class="el" href="a00100.html">node</a> >::other </td><td class="memItemRight" valign="bottom"><b>node_allocator_type</b></td></tr>
+<tr class="separator:a81dddc5d509f7f074d84d9c38e83efb9"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aed0e0def29516d9ee7aab2192727b69b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed0e0def29516d9ee7aab2192727b69b"></a>
+void </td><td class="memItemRight" valign="bottom"><b>delete_node</b> (node_base *n)</td></tr>
+<tr class="separator:aed0e0def29516d9ee7aab2192727b69b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae44a70417f9674a2169f9a1fd437a3bd"></a>
+<a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>search_bucket</b> (const key_type &key, bucket *b) const </td></tr>
+<tr class="separator:ae44a70417f9674a2169f9a1fd437a3bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b57e036f82bc2b1ef1ede41b02d46b5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>rehash_bucket</b> (bucket *b_new, const hashcode_t h)</td></tr>
+<tr class="separator:a1b57e036f82bc2b1ef1ede41b02d46b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2a319cf46fb9cf9a88aab6c0a20c98b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a319cf46fb9cf9a88aab6c0a20c98b3"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a2a319cf46fb9cf9a88aab6c0a20c98b3">lookup</a> (bool op_insert, const Key &key, const T *t, <a class="el" href="a00054.html">const_accessor</a> *result, bool write, <a class="el" href="a00100.html">node</a> *(*allocate_node)(node_allocator_type &, const Key &, const T *), <a class="el" href="a00100.html">node</a> *tmp_n=0)</td></tr>
+<tr class="memdesc:a2a319cf46fb9cf9a88aab6c0a20c98b3"><td class="mdescLeft"> </td><td class="mdescRight">Insert or find item and optionally acquire a lock on the item. <br/></td></tr>
+<tr class="separator:a2a319cf46fb9cf9a88aab6c0a20c98b3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6204ad5c57618556931e4c90e1938d1e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6204ad5c57618556931e4c90e1938d1e"></a>
+template<typename Accessor > </td></tr>
+<tr class="memitem:a6204ad5c57618556931e4c90e1938d1e"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>generic_move_insert</b> (Accessor &&result, value_type &&value)</td></tr>
+<tr class="separator:a6204ad5c57618556931e4c90e1938d1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a81c0a242bf8d4a210d74d551dbc61c18"><td class="memTemplParams" colspan="2"><a class="anchor" id="a81c0a242bf8d4a210d74d551dbc61c18"></a>
+template<typename Accessor , typename... Args> </td></tr>
+<tr class="memitem:a81c0a242bf8d4a210d74d551dbc61c18"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>generic_emplace</b> (Accessor &&result, Args &&...args)</td></tr>
+<tr class="separator:a81c0a242bf8d4a210d74d551dbc61c18"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fec452b31b8f0e185dc2de64b7128b2"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a6fec452b31b8f0e185dc2de64b7128b2">exclude</a> (<a class="el" href="a00054.html">const_accessor</a> &item_accessor)</td></tr>
+<tr class="memdesc:a6fec452b31b8f0e185dc2de64b7128b2"><td class="mdescLeft"> </td><td class="mdescRight">delete item by accessor <br/></td></tr>
+<tr class="separator:a6fec452b31b8f0e185dc2de64b7128b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8603f5288db63ec35a16844427e97e42"></a>
+template<typename I > </td></tr>
+<tr class="memitem:a8603f5288db63ec35a16844427e97e42"><td class="memTemplItemLeft" align="right" valign="top">std::pair< I, I > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00043.html#a8603f5288db63ec35a16844427e97e42">internal_equal_range</a> (const Key &key, I end) const </td></tr>
+<tr class="memdesc:a8603f5288db63ec35a16844427e97e42"><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator for an item defined by the key, or for the next item after it (if upper==true) <br/></td></tr>
+<tr class="separator:a8603f5288db63ec35a16844427e97e42"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0bc3593f82b3b4f9839fc051780212ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc3593f82b3b4f9839fc051780212ab"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#a0bc3593f82b3b4f9839fc051780212ab">internal_copy</a> (const <a class="el" href="a00043.html">concurrent_hash_map</a> &source)</td></tr>
+<tr class="memdesc:a0bc3593f82b3b4f9839fc051780212ab"><td class="mdescLeft"> </td><td class="mdescRight">Copy "source" to *this, where *this must start out empty. <br/></td></tr>
+<tr class="separator:a0bc3593f82b3b4f9839fc051780212ab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplParams" colspan="2"><a class="anchor" id="a31e69cc4fd5adafb379e7c6de5660912"></a>
+template<typename I > </td></tr>
+<tr class="memitem:a31e69cc4fd5adafb379e7c6de5660912"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_copy</b> (I first, I last)</td></tr>
+<tr class="separator:a31e69cc4fd5adafb379e7c6de5660912"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memItemLeft" align="right" valign="top">const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">internal_fast_find</a> (const Key &key) const </td></tr>
+<tr class="memdesc:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="mdescLeft"> </td><td class="mdescRight">Fast find when no concurrent erasure is used. For internal use inside TBB only!  <a href="#acbb5b18c097fb32f264b7b5fe8d9fdd4">More...</a><br/></td></tr>
+<tr class="separator:acbb5b18c097fb32f264b7b5fe8d9fdd4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
+Static Protected Member Functions</h2></td></tr>
+<tr class="memitem:aa220373171ca2feccb74c23823c6329f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa220373171ca2feccb74c23823c6329f"></a>
+static <a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>allocate_node_copy_construct</b> (node_allocator_type &allocator, const Key &key, const T *t)</td></tr>
+<tr class="separator:aa220373171ca2feccb74c23823c6329f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59416689b95d20f4d69e43a23aa4f300"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59416689b95d20f4d69e43a23aa4f300"></a>
+static <a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>allocate_node_move_construct</b> (node_allocator_type &allocator, const Key &key, const T *t)</td></tr>
+<tr class="separator:a59416689b95d20f4d69e43a23aa4f300"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8e8388c1d433042b67d3cc12181189c3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8e8388c1d433042b67d3cc12181189c3"></a>
+template<typename... Args> </td></tr>
+<tr class="memitem:a8e8388c1d433042b67d3cc12181189c3"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="a00100.html">node</a> * </td><td class="memTemplItemRight" valign="bottom"><b>allocate_node_emplace_construct</b> (node_allocator_type &allocator, Args &&...args)</td></tr>
+<tr class="separator:a8e8388c1d433042b67d3cc12181189c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1f92f68816357df14d30650b29ab94cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f92f68816357df14d30650b29ab94cb"></a>
+static <a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>allocate_node_default_construct</b> (node_allocator_type &allocator, const Key &key, const T *)</td></tr>
+<tr class="separator:a1f92f68816357df14d30650b29ab94cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a684cc0d3eb4b6ba8b88a14189c40bb20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a684cc0d3eb4b6ba8b88a14189c40bb20"></a>
+static <a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>do_not_allocate_node</b> (node_allocator_type &, const Key &, const T *)</td></tr>
+<tr class="separator:a684cc0d3eb4b6ba8b88a14189c40bb20"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3f082b2719a9e3c3c15a51a9564202"></a>
+node_allocator_type </td><td class="memItemRight" valign="bottom"><b>my_allocator</b></td></tr>
+<tr class="separator:a2f3f082b2719a9e3c3c15a51a9564202"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae67c3c723768e7e396104f84577f7240"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae67c3c723768e7e396104f84577f7240"></a>
+HashCompare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
+<tr class="separator:ae67c3c723768e7e396104f84577f7240"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0ecadabdc31088d7bace5a0b6e5ee3f9"></a>
+template<typename Container , typename Value > </td></tr>
+<tr class="memitem:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_iterator</b></td></tr>
+<tr class="separator:a0ecadabdc31088d7bace5a0b6e5ee3f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad49112156111ee1b85be9f4b89e410ca"></a>
+template<typename I > </td></tr>
+<tr class="memitem:ad49112156111ee1b85be9f4b89e410ca"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::hash_map_range</b></td></tr>
+<tr class="separator:ad49112156111ee1b85be9f4b89e410ca"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a584bf754a8408612d4bfd33a3eafd80d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584bf754a8408612d4bfd33a3eafd80d"></a>
+class </td><td class="memItemRight" valign="bottom"><b>const_accessor</b></td></tr>
+<tr class="separator:a584bf754a8408612d4bfd33a3eafd80d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6e234c756e22e65a3c99771fdeb67d7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e234c756e22e65a3c99771fdeb67d7a"></a>
+<a class="el" href="a00054.html">const_accessor</a> * </td><td class="memItemRight" valign="bottom"><b>accessor_location</b> (<a class="el" href="a00011.html">accessor_not_used</a> const &)</td></tr>
+<tr class="separator:a6e234c756e22e65a3c99771fdeb67d7a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0216633e60539f42cf9d645d3f3b7117"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0216633e60539f42cf9d645d3f3b7117"></a>
+<a class="el" href="a00054.html">const_accessor</a> * </td><td class="memItemRight" valign="bottom"><b>accessor_location</b> (<a class="el" href="a00054.html">const_accessor</a> &a)</td></tr>
+<tr class="separator:a0216633e60539f42cf9d645d3f3b7117"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa491682f70c12a8c7f783a427791ce4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa491682f70c12a8c7f783a427791ce4"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_write_access_needed</b> (<a class="el" href="a00010.html">accessor</a> const &)</td></tr>
+<tr class="separator:afa491682f70c12a8c7f783a427791ce4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a34c835f5e1b689d1fbbff61519c0ef5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34c835f5e1b689d1fbbff61519c0ef5f"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_write_access_needed</b> (<a class="el" href="a00054.html">const_accessor</a> const &)</td></tr>
+<tr class="separator:a34c835f5e1b689d1fbbff61519c0ef5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b4bdfdc062d155dc1ace8cc18acc8d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b4bdfdc062d155dc1ace8cc18acc8d6"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_write_access_needed</b> (<a class="el" href="a00011.html">accessor_not_used</a> const &)</td></tr>
+<tr class="separator:a7b4bdfdc062d155dc1ace8cc18acc8d6"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></h3>
+
+<p>Unordered map from Key to T. </p>
+<pre class="fragment">concurrent_hash_map is associative container with concurrent access.
+</pre><dl class="section user"><dt>Compatibility</dt><dd>The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).</dd></dl>
+<dl class="section user"><dt>Exception Safety</dt><dd><ul>
+<li>Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.</li>
+<li>If exception happens during <a class="el" href="a00043.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).</li>
+<li>If exception happens during <a class="el" href="a00043.html#a63e01b1f79c287ae0257ccfd483fd90a" title="Assignment. ">operator=()</a> operation, the container can have a part of source items, and methods <a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4" title="Number of items in table. ">size()</a> and <a class="el" href="a00043.html#a5e05f2a1ca3accfb4252d7ee82d1e990" title="True if size()==0. ">empty()</a> can return wrong results.</li>
+</ul>
+</dd></dl>
+<dl class="section user"><dt>Changes since TBB 2.1</dt><dd><ul>
+<li>Replaced internal algorithm and data structure. Patent is pending.</li>
+<li>Added buckets number argument for constructor</li>
+</ul>
+</dd></dl>
+<dl class="section user"><dt>Changes since TBB 2.0</dt><dd><ul>
+<li>Fixed exception-safety</li>
+<li>Added template argument for allocator</li>
+<li>Added allocator argument in constructors</li>
+<li>Added constructor from a range of iterators</li>
+<li>Added several new overloaded <a class="el" href="a00043.html#aaebb10a9e9dcb24e63860caa745a281d" title="Insert item (if not already present) and acquire a read lock on the item. ">insert()</a> methods</li>
+<li>Added <a class="el" href="a00043.html#a121865c574f8ae5cae69ed3d6b7e0511" title="return allocator object ">get_allocator()</a></li>
+<li>Added <a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a></li>
+<li>Added <a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a></li>
+<li>Added overloaded <a class="el" href="a00043.html#a3ed0fbcc6cfd4db8242e100355ac1fa5" title="Erase item by accessor. ">erase(accessor &)</a> and <a class="el" href="a00043.html#a2ec6f95ed9beda9d32df56cdd45c1842" title="Erase item by const_accessor. ">erase(const_accessor&)</a></li>
+<li>Added equal_range() [const]</li>
+<li>Added [const_]pointer, [const_]reference, and allocator_type types</li>
+<li>Added global functions: operator==(), operator!=(), and <a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e" title="swap two instances. Iterators are invalidated ">swap()</a> </li>
+</ul>
+</dd></dl>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a382178ea2f00f69096c91bcf76ae7913"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<div class="memtemplate">
+template<typename... Args> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::emplace </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Args &&... </td>
+          <td class="paramname"><em>args</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a read lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+</div>
+</div>
+<a class="anchor" id="a17e51c8864282c35aa4d23f22909cc4a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<div class="memtemplate">
+template<typename... Args> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::emplace </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Args &&... </td>
+          <td class="paramname"><em>args</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
 </table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a write lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+</div>
+</div>
+<a class="anchor" id="acbe1d0f3a87786a83a7021af2ef52ee0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<div class="memtemplate">
+template<typename... Args> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::emplace </td>
+          <td>(</td>
+          <td class="paramtype">Args &&... </td>
+          <td class="paramname"><em>args</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already. </p>
+<p>Returns true if item is inserted. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5144122dbb946d933b94a92117543b33"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare , typename A > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
+          <td>(</td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Erase item. </p>
+<p>Return true if item was erased by particularly this call. </p>
+
+<p>References <a class="el" href="a00029.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor::is_writer()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2ec6f95ed9beda9d32df56cdd45c1842"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>item_accessor</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Erase item by <a class="el" href="a00054.html" title="Combines data access, locking, and garbage collection. ">const_accessor</a>. </p>
+<p>Return true if item was erased by particularly this call. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3ed0fbcc6cfd4db8242e100355ac1fa5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::erase </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>item_accessor</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Erase item by accessor. </p>
+<p>Return true if item was erased by particularly this call. </p>
+
+</div>
+</div>
+<a class="anchor" id="a27a3f296dc170ae25f8e3fd9efa93cff"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::find </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Find item and acquire a read lock on the item. </p>
+<p>Return true if item is found, false otherwise. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6b61799e2018381b5ee4b78752a41483"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::find </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Find item and acquire a write lock on the item. </p>
+<p>Return true if item is found, false otherwise. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaebb10a9e9dcb24e63860caa745a281d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item (if not already present) and acquire a read lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a766c6033c203e8f342501d85a7cf3405"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item (if not already present) and acquire a write lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae0b420cdb752e749790c8a7daa15c3c2"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a read lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2047214e041b7674c3b83e204d0d6c6a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a write lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+<p>References <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8e39501f9edb3210504c9c4ca05384b7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype">const value_type & </td>
+          <td class="paramname"><em>value</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already. </p>
+<p>Returns true if item is inserted. </p>
+
+</div>
+</div>
+<a class="anchor" id="a446910c1ca4818bdb00f4ffa91b9108a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00054.html">const_accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">value_type && </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a read lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+</div>
+</div>
+<a class="anchor" id="a50c929e78ecfa36986c8821287665a70"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00010.html">accessor</a> & </td>
+          <td class="paramname"><em>result</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">value_type && </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already and acquire a write lock on the item. </p>
+<p>Returns true if item is new. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5d3da283d2e74c7ff0ecb0dfd4d371fd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::insert </td>
+          <td>(</td>
+          <td class="paramtype">value_type && </td>
+          <td class="paramname"><em>value</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Insert item by copying if there is no such key present already. </p>
+<p>Returns true if item is inserted. </p>
+
+</div>
+</div>
+<a class="anchor" id="acbb5b18c097fb32f264b7b5fe8d9fdd4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare  = tbb_hash_compare<Key>, typename A  = tbb_allocator<std::pair<Key, T> >> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const_pointer <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::internal_fast_find </td>
+          <td>(</td>
+          <td class="paramtype">const Key & </td>
+          <td class="paramname"><em>key</em>)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Fast find when no concurrent erasure is used. For internal use inside TBB only! </p>
+<p>Return pointer to item with given key, or NULL if no such item exists. Must not be called concurrently with erasure operations. </p>
+
+</div>
+</div>
+<a class="anchor" id="adf1fa9470c605731063e5949f0418eb7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Key , typename T , typename HashCompare , typename A > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map</a>< Key, T, HashCompare, A >::rehash </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>n</em> = <code>0</code>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Rehashes and optionally resizes the whole table. </p>
+<p>Useful to optimize performance before or after concurrent operations. Also enables using of <a class="el" href="a00043.html#a27a3f296dc170ae25f8e3fd9efa93cff" title="Find item and acquire a read lock on the item. ">find()</a> and <a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7" title="Return count of items (0 or 1) ">count()</a> concurrent methods in serial context. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_set.h</li>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00043.png b/doc/html/a00043.png
index 3ef6d19..3f0a8f2 100644
Binary files a/doc/html/a00043.png and b/doc/html/a00043.png differ
diff --git a/doc/html/a00044.html b/doc/html/a00044.html
index a67cbdc..1e1d4ee 100644
--- a/doc/html/a00044.html
+++ b/doc/html/a00044.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference</title>
+<title>tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,136 +33,57 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00044.html">concurrent_unordered_set</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00044.html">concurrent_lru_cache</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00345.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00391.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >:</div>
+Inheritance diagram for tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00044.png" usemap="#tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map" alt=""/>
-  <map id="tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map">
+  <img src="a00044.png" usemap="#tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map" alt=""/>
+  <map id="tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map" name="tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:afad91155e1803ee686e5f42637594e7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afad91155e1803ee686e5f42637594e7b"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:afad91155e1803ee686e5f42637594e7b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a461fe414bf3ae73e7cc57e851ff592e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a461fe414bf3ae73e7cc57e851ff592e4"></a>
-typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a461fe414bf3ae73e7cc57e851ff592e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3a64703b55d07509d5c88810c2342ba5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a64703b55d07509d5c88810c2342ba5"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
-<tr class="separator:a3a64703b55d07509d5c88810c2342ba5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6952de8a7ff93025c1065bb3e729da72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6952de8a7ff93025c1065bb3e729da72"></a>
-typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
-<tr class="separator:a6952de8a7ff93025c1065bb3e729da72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a376a7355aa091fff6a30689141407acd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376a7355aa091fff6a30689141407acd"></a>
-typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
-<tr class="separator:a376a7355aa091fff6a30689141407acd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acc450473249e39658c46596d8252eef0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc450473249e39658c46596d8252eef0"></a>
-typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
-<tr class="separator:acc450473249e39658c46596d8252eef0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2010e490e8bfb13d9b969ec2fd5e4de4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2010e490e8bfb13d9b969ec2fd5e4de4"></a>
-typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a2010e490e8bfb13d9b969ec2fd5e4de4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5a8c52d4a2b57b9b4b5d889e96d88f44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a8c52d4a2b57b9b4b5d889e96d88f44"></a>
-typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a5a8c52d4a2b57b9b4b5d889e96d88f44"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a281276279a33ef1c5dfba5c196118ae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a281276279a33ef1c5dfba5c196118ae7"></a>
-typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a281276279a33ef1c5dfba5c196118ae7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aec3d473d0fa601d51f13efe605cd9862"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec3d473d0fa601d51f13efe605cd9862"></a>
-typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:aec3d473d0fa601d51f13efe605cd9862"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab7da53912d0deffca91618b73ed4995f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7da53912d0deffca91618b73ed4995f"></a>
-typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:ab7da53912d0deffca91618b73ed4995f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5808a50995fc228f114c3c93aeddf331"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5808a50995fc228f114c3c93aeddf331"></a>
-typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a5808a50995fc228f114c3c93aeddf331"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7aaed1937820a90cb657a824e1391c1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7aaed1937820a90cb657a824e1391c1f"></a>
-typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a7aaed1937820a90cb657a824e1391c1f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb76557f1755f96dc2e78728cb231e57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb76557f1755f96dc2e78728cb231e57"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:abb76557f1755f96dc2e78728cb231e57"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a983d10264bc785a59b11dc94001e0042"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a983d10264bc785a59b11dc94001e0042"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a983d10264bc785a59b11dc94001e0042"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb12b4b1df9a7108a5193b0d3bbfc677"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb12b4b1df9a7108a5193b0d3bbfc677"></a>
-typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
-<tr class="separator:acb12b4b1df9a7108a5193b0d3bbfc677"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af111bc738ee2a1b4b1cf2967a1252322"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af111bc738ee2a1b4b1cf2967a1252322"></a>
-typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
-<tr class="separator:af111bc738ee2a1b4b1cf2967a1252322"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac498dc4d73a75cbc0d50a15622f06e13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac498dc4d73a75cbc0d50a15622f06e13"></a>
+typedef handle_object </td><td class="memItemRight" valign="bottom"><b>handle</b></td></tr>
+<tr class="separator:ac498dc4d73a75cbc0d50a15622f06e13"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a698a4e743d1c4314a2b59017e4d5fcb7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a698a4e743d1c4314a2b59017e4d5fcb7"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a698a4e743d1c4314a2b59017e4d5fcb7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2d307ae4ebb3e2d46b0a75713824d109"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d307ae4ebb3e2d46b0a75713824d109"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const Allocator &a)</td></tr>
-<tr class="separator:a2d307ae4ebb3e2d46b0a75713824d109"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b46e3bed0514110fb62bd9ddd5b2f08"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7b46e3bed0514110fb62bd9ddd5b2f08"></a>
-template<typename Iterator > </td></tr>
-<tr class="memitem:a7b46e3bed0514110fb62bd9ddd5b2f08"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_set</b> (Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="separator:a7b46e3bed0514110fb62bd9ddd5b2f08"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0570fa46456245509cc789e17bd0c21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0570fa46456245509cc789e17bd0c21"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#ae0570fa46456245509cc789e17bd0c21">concurrent_unordered_set</a> (std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:ae0570fa46456245509cc789e17bd0c21"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
-<tr class="separator:ae0570fa46456245509cc789e17bd0c21"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac3c68d5286d6ca29fba2b38c59bdbc66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3c68d5286d6ca29fba2b38c59bdbc66"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const <a class="el" href="a00044.html">concurrent_unordered_set</a> &table)</td></tr>
-<tr class="separator:ac3c68d5286d6ca29fba2b38c59bdbc66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aecea62fe5c8beab0d7907dbc33ef583f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecea62fe5c8beab0d7907dbc33ef583f"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const <a class="el" href="a00044.html">concurrent_unordered_set</a> &table, const Allocator &a)</td></tr>
-<tr class="separator:aecea62fe5c8beab0d7907dbc33ef583f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39097dddf99fd057919197b8293bd807"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39097dddf99fd057919197b8293bd807"></a>
-<a class="el" href="a00044.html">concurrent_unordered_set</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00044.html">concurrent_unordered_set</a> &table)</td></tr>
-<tr class="separator:a39097dddf99fd057919197b8293bd807"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8bc097b955ce129641eb3cf9f4cd4d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8bc097b955ce129641eb3cf9f4cd4d5"></a>
-<a class="el" href="a00044.html">concurrent_unordered_set</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00044.html#ab8bc097b955ce129641eb3cf9f4cd4d5">operator=</a> (std::initializer_list< value_type > const &il)</td></tr>
-<tr class="memdesc:ab8bc097b955ce129641eb3cf9f4cd4d5"><td class="mdescLeft"> </td><td class="mdescRight">assignment operator from initializer_list <br/></td></tr>
-<tr class="separator:ab8bc097b955ce129641eb3cf9f4cd4d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57ea76009e7b47f53013155a6239e1a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57ea76009e7b47f53013155a6239e1a5"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator where)</td></tr>
-<tr class="separator:a57ea76009e7b47f53013155a6239e1a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a215c80928460f6b5fe25081420adbde5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a215c80928460f6b5fe25081420adbde5"></a>
-size_type </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const key_type &key)</td></tr>
-<tr class="separator:a215c80928460f6b5fe25081420adbde5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acc343e941430786da14b7f34cf9b8ae9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc343e941430786da14b7f34cf9b8ae9"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_erase</b> (const_iterator first, const_iterator last)</td></tr>
-<tr class="separator:acc343e941430786da14b7f34cf9b8ae9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3595d3bb4309b175dbd3a88aeb239435"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3595d3bb4309b175dbd3a88aeb239435"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00044.html">concurrent_unordered_set</a> &table)</td></tr>
-<tr class="separator:a3595d3bb4309b175dbd3a88aeb239435"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabd074ac29a288edff454b6595e620ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabd074ac29a288edff454b6595e620ff"></a>
-hasher </td><td class="memItemRight" valign="bottom"><b>hash_function</b> () const </td></tr>
-<tr class="separator:aabd074ac29a288edff454b6595e620ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac80cfcd664360c7947a3ba43a6dfc00b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac80cfcd664360c7947a3ba43a6dfc00b"></a>
-key_equal </td><td class="memItemRight" valign="bottom"><b>key_eq</b> () const </td></tr>
-<tr class="separator:ac80cfcd664360c7947a3ba43a6dfc00b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad4c0b512bb4ad5109eaae1519ba06d98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4c0b512bb4ad5109eaae1519ba06d98"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_lru_cache</b> (value_function_type f, std::size_t number_of_lru_history_items)</td></tr>
+<tr class="separator:ad4c0b512bb4ad5109eaae1519ba06d98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a632c3911a55cfda997acce279c471ec3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a632c3911a55cfda997acce279c471ec3"></a>
+handle_object </td><td class="memItemRight" valign="bottom"><b>operator[]</b> (key_type k)</td></tr>
+<tr class="separator:a632c3911a55cfda997acce279c471ec3"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ab9fb998ff3f90c4dc7cefd09f8ff1365"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab9fb998ff3f90c4dc7cefd09f8ff1365"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::aggregating_functor< self_type, aggregated_operation_type ></b></td></tr>
+<tr class="separator:ab9fb998ff3f90c4dc7cefd09f8ff1365"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_set.h</li>
+<li>concurrent_lru_cache.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00044.png b/doc/html/a00044.png
index 9f9a099..856b3af 100644
Binary files a/doc/html/a00044.png and b/doc/html/a00044.png differ
diff --git a/doc/html/a00045.html b/doc/html/a00045.html
index 0819ac7..01f4bce 100644
--- a/doc/html/a00045.html
+++ b/doc/html/a00045.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</title>
+<title>tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,68 +33,571 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00045.html">concurrent_unordered_set_traits</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00045.html">concurrent_priority_queue</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-static-methods">Static Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="a00344.html">List of all members</a>  </div>
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00375.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Concurrent priority queue.  
+ <a href="a00045.html#details">More...</a></p>
+
+<p><code>#include <concurrent_priority_queue.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a10fca95c59a7c0542d2d6bc1b8306e1c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>allow_multimapping</b> = Allow_multimapping
- }</td></tr>
-<tr class="separator:a10fca95c59a7c0542d2d6bc1b8306e1c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a935ab6e249964c5a7e1caffd308bf008"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a935ab6e249964c5a7e1caffd308bf008"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a935ab6e249964c5a7e1caffd308bf008"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b1d770b7db20b5d0d51af0b910aebb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b1d770b7db20b5d0d51af0b910aebb2"></a>
-typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
-<tr class="separator:a8b1d770b7db20b5d0d51af0b910aebb2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c1ef314e63eb78db91ce99cb8617b87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c1ef314e63eb78db91ce99cb8617b87"></a>
-typedef Hash_compare </td><td class="memItemRight" valign="bottom"><b>hash_compare</b></td></tr>
-<tr class="separator:a3c1ef314e63eb78db91ce99cb8617b87"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a453126bb05d3c798914cb91852e0b3a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a453126bb05d3c798914cb91852e0b3a5"></a>
-typedef Allocator::template <br class="typebreak"/>
-rebind< value_type >::other </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a453126bb05d3c798914cb91852e0b3a5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa846331955302afdcaa6ba10e47ff427"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa846331955302afdcaa6ba10e47ff427"></a>
-typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>value_compare</b></td></tr>
-<tr class="separator:aa846331955302afdcaa6ba10e47ff427"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a2c75d97ae429019363ab6fd1a872512e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c75d97ae429019363ab6fd1a872512e"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a></td></tr>
+<tr class="memdesc:a2c75d97ae429019363ab6fd1a872512e"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
+<tr class="separator:a2c75d97ae429019363ab6fd1a872512e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4b7ed2ddc8ec6cc910f935c9d299c7a"></a>
+typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a></td></tr>
+<tr class="memdesc:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
+<tr class="separator:ae4b7ed2ddc8ec6cc910f935c9d299c7a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0bd617fe8e4657777e86f0ae15d8094f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd617fe8e4657777e86f0ae15d8094f"></a>
+typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a></td></tr>
+<tr class="memdesc:a0bd617fe8e4657777e86f0ae15d8094f"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
+<tr class="separator:a0bd617fe8e4657777e86f0ae15d8094f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d3da9b47ec58e1c09e3550f702edcfc"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a></td></tr>
+<tr class="memdesc:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue. <br/></td></tr>
+<tr class="separator:a7d3da9b47ec58e1c09e3550f702edcfc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae010b1fa9c0942504737228474b51a0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae010b1fa9c0942504737228474b51a0b"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#ae010b1fa9c0942504737228474b51a0b">difference_type</a></td></tr>
+<tr class="memdesc:ae010b1fa9c0942504737228474b51a0b"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
+<tr class="separator:ae010b1fa9c0942504737228474b51a0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d2cebf242fa83d88eebdc3ad6891fb1"></a>
+typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a></td></tr>
+<tr class="memdesc:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
+<tr class="separator:a1d2cebf242fa83d88eebdc3ad6891fb1"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a958c02e4dbd967575a9f03290bb0cad3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a958c02e4dbd967575a9f03290bb0cad3"></a>
- </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set_traits</b> (const hash_compare &hc)</td></tr>
-<tr class="separator:a958c02e4dbd967575a9f03290bb0cad3"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
-Static Protected Member Functions</h2></td></tr>
-<tr class="memitem:a3f4bfe96ddb3db04d4701e06611fc73d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f4bfe96ddb3db04d4701e06611fc73d"></a>
-static const Key & </td><td class="memItemRight" valign="bottom"><b>get_key</b> (const value_type &value)</td></tr>
-<tr class="separator:a3f4bfe96ddb3db04d4701e06611fc73d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ae134f56adf668d7bd31f7ee8fb36ead5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae134f56adf668d7bd31f7ee8fb36ead5"></a>
-hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
-<tr class="separator:ae134f56adf668d7bd31f7ee8fb36ead5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a405be01bac4048f214797c287e2571a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a405be01bac4048f214797c287e2571a1"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a405be01bac4048f214797c287e2571a1">concurrent_priority_queue</a> (const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
+<tr class="memdesc:a405be01bac4048f214797c287e2571a1"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00045.html" title="Concurrent priority queue. ">concurrent_priority_queue</a> with default capacity. <br/></td></tr>
+<tr class="separator:a405be01bac4048f214797c287e2571a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43c3917ea8a19cf1fec947e29ad4ff3e"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a43c3917ea8a19cf1fec947e29ad4ff3e">concurrent_priority_queue</a> (<a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> init_capacity, const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
+<tr class="memdesc:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00045.html" title="Concurrent priority queue. ">concurrent_priority_queue</a> with init_sz capacity. <br/></td></tr>
+<tr class="separator:a43c3917ea8a19cf1fec947e29ad4ff3e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0cebee26cc0d00d4dcbb1c74e08029f7"></a>
+template<typename InputIterator > </td></tr>
+<tr class="memitem:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00045.html#a0cebee26cc0d00d4dcbb1c74e08029f7">concurrent_priority_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>()) [...]
+<tr class="memdesc:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
+<tr class="separator:a0cebee26cc0d00d4dcbb1c74e08029f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa8ac175143e12db29a014674a392b38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa8ac175143e12db29a014674a392b38"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#aaa8ac175143e12db29a014674a392b38">concurrent_priority_queue</a> (std::initializer_list< T > init_list, const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a=<a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a>())</td></tr>
+<tr class="memdesc:aaa8ac175143e12db29a014674a392b38"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from std::initializer_list. <br/></td></tr>
+<tr class="separator:aaa8ac175143e12db29a014674a392b38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a332d26234f9c37a6b7ba269c648815d0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a332d26234f9c37a6b7ba269c648815d0">concurrent_priority_queue</a> (const <a class="el" href="a00045.html">concurrent_priority_queue</a> &src)</td></tr>
+<tr class="memdesc:a332d26234f9c37a6b7ba269c648815d0"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor.  <a href="#a332d26234f9c37a6b7ba269c648815d0">More...</a><br/></td></tr>
+<tr class="separator:a332d26234f9c37a6b7ba269c648815d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa52cea369b6630699ee78cc42622be9d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#aa52cea369b6630699ee78cc42622be9d">concurrent_priority_queue</a> (const <a class="el" href="a00045.html">concurrent_priority_queue</a> &src, const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a)</td></tr>
+<tr class="memdesc:aa52cea369b6630699ee78cc42622be9d"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor with specific allocator.  <a href="#aa52cea369b6630699ee78cc42622be9d">More...</a><br/></td></tr>
+<tr class="separator:aa52cea369b6630699ee78cc42622be9d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac0c3f41b10f04547f3438517c40cf8a5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00045.html">concurrent_priority_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#ac0c3f41b10f04547f3438517c40cf8a5">operator=</a> (const <a class="el" href="a00045.html">concurrent_priority_queue</a> &src)</td></tr>
+<tr class="memdesc:ac0c3f41b10f04547f3438517c40cf8a5"><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator.  <a href="#ac0c3f41b10f04547f3438517c40cf8a5">More...</a><br/></td></tr>
+<tr class="separator:ac0c3f41b10f04547f3438517c40cf8a5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae9ac965bbac3933c7db89f512adfcbcb"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#ae9ac965bbac3933c7db89f512adfcbcb">concurrent_priority_queue</a> (<a class="el" href="a00045.html">concurrent_priority_queue</a> &&src)</td></tr>
+<tr class="memdesc:ae9ac965bbac3933c7db89f512adfcbcb"><td class="mdescLeft"> </td><td class="mdescRight">Move constructor.  <a href="#ae9ac965bbac3933c7db89f512adfcbcb">More...</a><br/></td></tr>
+<tr class="separator:ae9ac965bbac3933c7db89f512adfcbcb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14dd20a4673f77cff3eb6f269a888016"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a14dd20a4673f77cff3eb6f269a888016">concurrent_priority_queue</a> (<a class="el" href="a00045.html">concurrent_priority_queue</a> &&src, const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> &a)</td></tr>
+<tr class="memdesc:a14dd20a4673f77cff3eb6f269a888016"><td class="mdescLeft"> </td><td class="mdescRight">Move constructor with specific allocator.  <a href="#a14dd20a4673f77cff3eb6f269a888016">More...</a><br/></td></tr>
+<tr class="separator:a14dd20a4673f77cff3eb6f269a888016"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9b21bd56aff8c412c5fcdd0d88b48c98"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00045.html">concurrent_priority_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a9b21bd56aff8c412c5fcdd0d88b48c98">operator=</a> (<a class="el" href="a00045.html">concurrent_priority_queue</a> &&src)</td></tr>
+<tr class="memdesc:a9b21bd56aff8c412c5fcdd0d88b48c98"><td class="mdescLeft"> </td><td class="mdescRight">Move assignment operator.  <a href="#a9b21bd56aff8c412c5fcdd0d88b48c98">More...</a><br/></td></tr>
+<tr class="separator:a9b21bd56aff8c412c5fcdd0d88b48c98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac64c7b627708f0d6b2e5421fb0d49150"></a>
+template<typename InputIterator > </td></tr>
+<tr class="memitem:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00045.html#ac64c7b627708f0d6b2e5421fb0d49150">assign</a> (InputIterator begin, InputIterator end)</td></tr>
+<tr class="memdesc:ac64c7b627708f0d6b2e5421fb0d49150"><td class="mdescLeft"> </td><td class="mdescRight">Assign the queue from [begin,end) range, not thread-safe. <br/></td></tr>
+<tr class="separator:ac64c7b627708f0d6b2e5421fb0d49150"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1b3a945aac5a17c85d56756cc6aa3d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1b3a945aac5a17c85d56756cc6aa3d1"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#ac1b3a945aac5a17c85d56756cc6aa3d1">assign</a> (std::initializer_list< T > il)</td></tr>
+<tr class="memdesc:ac1b3a945aac5a17c85d56756cc6aa3d1"><td class="mdescLeft"> </td><td class="mdescRight">Assign the queue from std::initializer_list, not thread-safe. <br/></td></tr>
+<tr class="separator:ac1b3a945aac5a17c85d56756cc6aa3d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7eaa05dcb74604e45e0e2c55e1e456e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7eaa05dcb74604e45e0e2c55e1e456e9"></a>
+<a class="el" href="a00045.html">concurrent_priority_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a7eaa05dcb74604e45e0e2c55e1e456e9">operator=</a> (std::initializer_list< T > il)</td></tr>
+<tr class="memdesc:a7eaa05dcb74604e45e0e2c55e1e456e9"><td class="mdescLeft"> </td><td class="mdescRight">Assign from std::initializer_list, not thread-safe. <br/></td></tr>
+<tr class="separator:a7eaa05dcb74604e45e0e2c55e1e456e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">empty</a> () const </td></tr>
+<tr class="memdesc:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if empty, false otherwise.  <a href="#a8dec2dd0e8b22af14f1753eaef1bf5eb">More...</a><br/></td></tr>
+<tr class="separator:a8dec2dd0e8b22af14f1753eaef1bf5eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7d86ba200474b51ec99a6b917429c6bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a7d86ba200474b51ec99a6b917429c6bb">size</a> () const </td></tr>
+<tr class="memdesc:a7d86ba200474b51ec99a6b917429c6bb"><td class="mdescLeft"> </td><td class="mdescRight">Returns the current number of elements contained in the queue.  <a href="#a7d86ba200474b51ec99a6b917429c6bb">More...</a><br/></td></tr>
+<tr class="separator:a7d86ba200474b51ec99a6b917429c6bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1bfa0e7269b3407d6bb5c706264d2406"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a1bfa0e7269b3407d6bb5c706264d2406">push</a> (<a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> elem)</td></tr>
+<tr class="memdesc:a1bfa0e7269b3407d6bb5c706264d2406"><td class="mdescLeft"> </td><td class="mdescRight">Pushes elem onto the queue, increasing capacity of queue if necessary.  <a href="#a1bfa0e7269b3407d6bb5c706264d2406">More...</a><br/></td></tr>
+<tr class="separator:a1bfa0e7269b3407d6bb5c706264d2406"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a72ff26945c61b4ce3ce7ca0f9b9aaa48"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a72ff26945c61b4ce3ce7ca0f9b9aaa48">push</a> (<a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a> &&elem)</td></tr>
+<tr class="memdesc:a72ff26945c61b4ce3ce7ca0f9b9aaa48"><td class="mdescLeft"> </td><td class="mdescRight">Pushes elem onto the queue, increasing capacity of queue if necessary.  <a href="#a72ff26945c61b4ce3ce7ca0f9b9aaa48">More...</a><br/></td></tr>
+<tr class="separator:a72ff26945c61b4ce3ce7ca0f9b9aaa48"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a278d208cd92e5aeccc9c7f6fc192e3ce"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
+<tr class="memitem:a278d208cd92e5aeccc9c7f6fc192e3ce"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00045.html#a278d208cd92e5aeccc9c7f6fc192e3ce">emplace</a> (Args &&...args)</td></tr>
+<tr class="memdesc:a278d208cd92e5aeccc9c7f6fc192e3ce"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new element using args as the arguments for its construction and pushes it onto the queue */.  <a href="#a278d208cd92e5aeccc9c7f6fc192e3ce">More...</a><br/></td></tr>
+<tr class="separator:a278d208cd92e5aeccc9c7f6fc192e3ce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a954177b09e184cf3db47f1b180a7ef5e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a954177b09e184cf3db47f1b180a7ef5e">try_pop</a> (<a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> elem)</td></tr>
+<tr class="memdesc:a954177b09e184cf3db47f1b180a7ef5e"><td class="mdescLeft"> </td><td class="mdescRight">Gets a reference to and removes highest priority element.  <a href="#a954177b09e184cf3db47f1b180a7ef5e">More...</a><br/></td></tr>
+<tr class="separator:a954177b09e184cf3db47f1b180a7ef5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2459166998a4103880d603b237c429e6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a2459166998a4103880d603b237c429e6">clear</a> ()</td></tr>
+<tr class="memdesc:a2459166998a4103880d603b237c429e6"><td class="mdescLeft"> </td><td class="mdescRight">Clear the queue; not thread-safe.  <a href="#a2459166998a4103880d603b237c429e6">More...</a><br/></td></tr>
+<tr class="separator:a2459166998a4103880d603b237c429e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#aa6ee6d356e538b67a7cb4e242e6e36c9">swap</a> (<a class="el" href="a00045.html">concurrent_priority_queue</a> &q)</td></tr>
+<tr class="memdesc:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="mdescLeft"> </td><td class="mdescRight">Swap this queue with another; not thread-safe.  <a href="#aa6ee6d356e538b67a7cb4e242e6e36c9">More...</a><br/></td></tr>
+<tr class="separator:aa6ee6d356e538b67a7cb4e242e6e36c9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a312e88e51246da4c516d35abbb30721a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a312e88e51246da4c516d35abbb30721a"></a>
+<a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00045.html#a312e88e51246da4c516d35abbb30721a">get_allocator</a> () const </td></tr>
+<tr class="memdesc:a312e88e51246da4c516d35abbb30721a"><td class="mdescLeft"> </td><td class="mdescRight">Return allocator object. <br/></td></tr>
+<tr class="separator:a312e88e51246da4c516d35abbb30721a"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>><br/>
+class tbb::interface5::concurrent_priority_queue< T, Compare, A ></h3>
+
+<p>Concurrent priority queue. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a332d26234f9c37a6b7ba269c648815d0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00045.html">concurrent_priority_queue</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
+          <td class="paramname"><em>src</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Copy constructor. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa52cea369b6630699ee78cc42622be9d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00045.html">concurrent_priority_queue</a> </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
+          <td class="paramname"><em>src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> & </td>
+          <td class="paramname"><em>a</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Copy constructor with specific allocator. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae9ac965bbac3933c7db89f512adfcbcb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00045.html">concurrent_priority_queue</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > && </td>
+          <td class="paramname"><em>src</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Move constructor. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="a14dd20a4673f77cff3eb6f269a888016"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::<a class="el" href="a00045.html">concurrent_priority_queue</a> </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > && </td>
+          <td class="paramname"><em>src</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> & </td>
+          <td class="paramname"><em>a</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Move constructor with specific allocator. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a2459166998a4103880d603b237c429e6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::clear </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Clear the queue; not thread-safe. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the queue. Resets size, effectively emptying queue; does not free space. May not clear elements added in pending operations. </p>
+
+</div>
+</div>
+<a class="anchor" id="a278d208cd92e5aeccc9c7f6fc192e3ce"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<div class="memtemplate">
+template<typename... Args> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::emplace </td>
+          <td>(</td>
+          <td class="paramtype">Args &&... </td>
+          <td class="paramname"><em>args</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Constructs a new element using args as the arguments for its construction and pushes it onto the queue */. </p>
+<p>This operation can be safely used concurrently with other push, try_pop or emplace operations. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8dec2dd0e8b22af14f1753eaef1bf5eb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::empty </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns true if empty, false otherwise. </p>
+<p>Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac0c3f41b10f04547f3438517c40cf8a5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">concurrent_priority_queue</a>& <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::operator= </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
+          <td class="paramname"><em>src</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Assignment operator. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9b21bd56aff8c412c5fcdd0d88b48c98"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html">concurrent_priority_queue</a>& <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::operator= </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > && </td>
+          <td class="paramname"><em>src</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Move assignment operator. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the src queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1bfa0e7269b3407d6bb5c706264d2406"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::push </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> </td>
+          <td class="paramname"><em>elem</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Pushes elem onto the queue, increasing capacity of queue if necessary. </p>
+<p>This operation can be safely used concurrently with other push, try_pop or emplace operations. </p>
+
+</div>
+</div>
+<a class="anchor" id="a72ff26945c61b4ce3ce7ca0f9b9aaa48"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::push </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a> && </td>
+          <td class="paramname"><em>elem</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
 </table>
+</div><div class="memdoc">
+
+<p>Pushes elem onto the queue, increasing capacity of queue if necessary. </p>
+<p>This operation can be safely used concurrently with other push, try_pop or emplace operations. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7d86ba200474b51ec99a6b917429c6bb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::size </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the current number of elements contained in the queue. </p>
+<p>Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa6ee6d356e538b67a7cb4e242e6e36c9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::swap </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html">concurrent_priority_queue</a>< T, Compare, A > & </td>
+          <td class="paramname"><em>q</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Swap this queue with another; not thread-safe. </p>
+<p>This operation is unsafe if there are pending concurrent operations on the queue. </p>
+
+</div>
+</div>
+<a class="anchor" id="a954177b09e184cf3db47f1b180a7ef5e"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T , typename Compare  = std::less<T>, typename A  = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue</a>< T, Compare, A >::try_pop </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> </td>
+          <td class="paramname"><em>elem</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Gets a reference to and removes highest priority element. </p>
+<p>If a highest priority element was found, sets elem and returns true, otherwise returns false. This operation can be safely used concurrently with other push, try_pop or emplace operations. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_set.h</li>
+<li>concurrent_priority_queue.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00046.html b/doc/html/a00046.html
index 1de1a05..4188ad0 100644
--- a/doc/html/a00046.html
+++ b/doc/html/a00046.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::concurrent_vector< T, A > Class Template Reference</title>
+<title>tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,662 +33,167 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00046.html">concurrent_vector</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>strict_ppl</b></li><li class="navelem"><a class="el" href="a00046.html">concurrent_queue</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
 <a href="#friends">Friends</a> |
-<a href="a00257.html">List of all members</a>  </div>
+<a href="a00421.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::concurrent_vector< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Concurrent vector container.  
+<p>A high-performance thread-safe non-blocking concurrent queue.  
  <a href="a00046.html#details">More...</a></p>
 
-<p><code>#include <concurrent_vector.h></code></p>
+<p><code>#include <concurrent_queue.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::concurrent_vector< T, A >:</div>
+Inheritance diagram for tbb::strict_ppl::concurrent_queue< T, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00046.png" usemap="#tbb::concurrent_vector< T, A >_map" alt=""/>
-  <map id="tbb::concurrent_vector< T, A >_map" name="tbb::concurrent_vector< T, A >_map">
+  <img src="a00046.png" usemap="#tbb::strict_ppl::concurrent_queue< T, A >_map" alt=""/>
+  <map id="tbb::strict_ppl::concurrent_queue< T, A >_map" name="tbb::strict_ppl::concurrent_queue< T, A >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ada098ff121699bfed7ae37e759eff93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada098ff121699bfed7ae37e759eff93d"></a>
+<tr class="memitem:aeeee93a7ac2eecc80bbf3e857e900538"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeee93a7ac2eecc80bbf3e857e900538"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aeeee93a7ac2eecc80bbf3e857e900538">value_type</a></td></tr>
+<tr class="memdesc:aeeee93a7ac2eecc80bbf3e857e900538"><td class="mdescLeft"> </td><td class="mdescRight">Element type in the queue. <br/></td></tr>
+<tr class="separator:aeeee93a7ac2eecc80bbf3e857e900538"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab26ddf11b15d61ac87e6c1ae67af92a2"></a>
+typedef T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ab26ddf11b15d61ac87e6c1ae67af92a2">reference</a></td></tr>
+<tr class="memdesc:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="mdescLeft"> </td><td class="mdescRight">Reference type. <br/></td></tr>
+<tr class="separator:ab26ddf11b15d61ac87e6c1ae67af92a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a478c2b7f763b2e821e01cc14e13baf4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a478c2b7f763b2e821e01cc14e13baf4c"></a>
+typedef const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a478c2b7f763b2e821e01cc14e13baf4c">const_reference</a></td></tr>
+<tr class="memdesc:a478c2b7f763b2e821e01cc14e13baf4c"><td class="mdescLeft"> </td><td class="mdescRight">Const reference type. <br/></td></tr>
+<tr class="separator:a478c2b7f763b2e821e01cc14e13baf4c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9f883e49afea16293ba92da779981bb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f883e49afea16293ba92da779981bb8"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9f883e49afea16293ba92da779981bb8">size_type</a></td></tr>
+<tr class="memdesc:a9f883e49afea16293ba92da779981bb8"><td class="mdescLeft"> </td><td class="mdescRight">Integral type for representing size of the queue. <br/></td></tr>
+<tr class="separator:a9f883e49afea16293ba92da779981bb8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63b42d83a9ed13fc6741e0b4388b0e96"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a63b42d83a9ed13fc6741e0b4388b0e96">difference_type</a></td></tr>
+<tr class="memdesc:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="mdescLeft"> </td><td class="mdescRight">Difference type for iterator. <br/></td></tr>
+<tr class="separator:a63b42d83a9ed13fc6741e0b4388b0e96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbdd1a5bd034358fb0774b322a66b1ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbdd1a5bd034358fb0774b322a66b1ed"></a>
+typedef A </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a></td></tr>
+<tr class="memdesc:acbdd1a5bd034358fb0774b322a66b1ed"><td class="mdescLeft"> </td><td class="mdescRight">Allocator type. <br/></td></tr>
+<tr class="separator:acbdd1a5bd034358fb0774b322a66b1ed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1361aa7fd454fe593609be740ab8a4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1361aa7fd454fe593609be740ab8a4c"></a>
 typedef <br class="typebreak"/>
-internal::concurrent_vector_base_v3::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ada098ff121699bfed7ae37e759eff93d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7560567b5735c57159e55b12d20b6710"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7560567b5735c57159e55b12d20b6710"></a>
+internal::concurrent_queue_iterator<br class="typebreak"/>
+< <a class="el" href="a00046.html">concurrent_queue</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:ab1361aa7fd454fe593609be740ab8a4c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a674e375edf0a3463ae1cec5d6158593d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a674e375edf0a3463ae1cec5d6158593d"></a>
 typedef <br class="typebreak"/>
-internal::allocator_base< T, A ><br class="typebreak"/>
-::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a7560567b5735c57159e55b12d20b6710"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5cf801a503d4e5fe739f53d7321dd2ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf801a503d4e5fe739f53d7321dd2ef"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a5cf801a503d4e5fe739f53d7321dd2ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1bb52adb877d3b680dac5f0bd289700b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bb52adb877d3b680dac5f0bd289700b"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a1bb52adb877d3b680dac5f0bd289700b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a412441e93ad8656f96b14c5ecb9d817f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412441e93ad8656f96b14c5ecb9d817f"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a412441e93ad8656f96b14c5ecb9d817f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5ecbb1eb2c7264df9d58255ce211207c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ecbb1eb2c7264df9d58255ce211207c"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a5ecbb1eb2c7264df9d58255ce211207c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa2c4f00678df69d2d11497e8dd6ed9cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2c4f00678df69d2d11497e8dd6ed9cf"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:aa2c4f00678df69d2d11497e8dd6ed9cf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa0d28eb686589cbaf4733ca0eabc071"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa0d28eb686589cbaf4733ca0eabc071"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:afa0d28eb686589cbaf4733ca0eabc071"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4cee8eaee236867c0b6e87309380cb0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cee8eaee236867c0b6e87309380cb0f"></a>
-typedef <br class="typebreak"/>
-internal::vector_iterator<br class="typebreak"/>
-< <a class="el" href="a00046.html">concurrent_vector</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a4cee8eaee236867c0b6e87309380cb0f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa9a55035528c055ae985db2a61c8b0b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9a55035528c055ae985db2a61c8b0b2"></a>
-typedef <br class="typebreak"/>
-internal::vector_iterator<br class="typebreak"/>
-< <a class="el" href="a00046.html">concurrent_vector</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:aa9a55035528c055ae985db2a61c8b0b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1623110816f9ef8f08e7bf6768aed273"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1623110816f9ef8f08e7bf6768aed273"></a>
-typedef std::reverse_iterator<br class="typebreak"/>
-< iterator > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
-<tr class="separator:a1623110816f9ef8f08e7bf6768aed273"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada43b048144c3814036da624d3bb8c58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada43b048144c3814036da624d3bb8c58"></a>
-typedef std::reverse_iterator<br class="typebreak"/>
-< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
-<tr class="separator:ada43b048144c3814036da624d3bb8c58"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adbeeef740ea402fa136ca3962fc0c307"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbeeef740ea402fa136ca3962fc0c307"></a>
-typedef std::reverse_iterator<br class="typebreak"/>
-< iterator, T, T &, T * > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
-<tr class="separator:adbeeef740ea402fa136ca3962fc0c307"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a705a54ffc90b914fc9c30d4177e8228a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a705a54ffc90b914fc9c30d4177e8228a"></a>
-typedef std::reverse_iterator<br class="typebreak"/>
-< const_iterator, T, const T <br class="typebreak"/>
-&, const T * > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
-<tr class="separator:a705a54ffc90b914fc9c30d4177e8228a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a443492ee9918c9e3372b5daca82314ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a443492ee9918c9e3372b5daca82314ca"></a>
-typedef generic_range_type<br class="typebreak"/>
-< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
-<tr class="separator:a443492ee9918c9e3372b5daca82314ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1312eb29abf7ca07aa365c727b7844e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1312eb29abf7ca07aa365c727b7844e3"></a>
-typedef generic_range_type<br class="typebreak"/>
-< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
-<tr class="separator:a1312eb29abf7ca07aa365c727b7844e3"><td class="memSeparator" colspan="2"> </td></tr>
+internal::concurrent_queue_iterator<br class="typebreak"/>
+< <a class="el" href="a00046.html">concurrent_queue</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a674e375edf0a3463ae1cec5d6158593d"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a5bd95c2241653c760704a92b2c887a48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bd95c2241653c760704a92b2c887a48"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a5bd95c2241653c760704a92b2c887a48">concurrent_vector</a> (const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a5bd95c2241653c760704a92b2c887a48"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty vector. <br/></td></tr>
-<tr class="separator:a5bd95c2241653c760704a92b2c887a48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa25dccd2f65fbfa148e92d01a11c20ff"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aa25dccd2f65fbfa148e92d01a11c20ff">concurrent_vector</a> (std::initializer_list< T > init_list, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
-<tr class="separator:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03b5a0e9069b30dc4e2e5fc2f191ccb6"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">concurrent_vector</a> (const <a class="el" href="a00046.html">concurrent_vector</a> &vector, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor. <br/></td></tr>
-<tr class="separator:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abb0e376a31c3fdb91beaaa98441735f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="abb0e376a31c3fdb91beaaa98441735f5"></a>
-template<class M > </td></tr>
-<tr class="memitem:abb0e376a31c3fdb91beaaa98441735f5"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00046.html#abb0e376a31c3fdb91beaaa98441735f5">concurrent_vector</a> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, M > &vector, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:abb0e376a31c3fdb91beaaa98441735f5"><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor for vector with different allocator type. <br/></td></tr>
-<tr class="separator:abb0e376a31c3fdb91beaaa98441735f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa898a39aad73711ceca70cd465dc0b4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa898a39aad73711ceca70cd465dc0b4f"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aa898a39aad73711ceca70cd465dc0b4f">concurrent_vector</a> (size_type n)</td></tr>
-<tr class="memdesc:aa898a39aad73711ceca70cd465dc0b4f"><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n. <br/></td></tr>
-<tr class="separator:aa898a39aad73711ceca70cd465dc0b4f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a736c6e35f1df11625636968ea546e21f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a736c6e35f1df11625636968ea546e21f"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a736c6e35f1df11625636968ea546e21f">concurrent_vector</a> (size_type n, const_reference t, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:a736c6e35f1df11625636968ea546e21f"><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance. <br/></td></tr>
-<tr class="separator:a736c6e35f1df11625636968ea546e21f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0d384ec56032d18f63e26960029d3ce"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae0d384ec56032d18f63e26960029d3ce"></a>
-template<class I > </td></tr>
-<tr class="memitem:ae0d384ec56032d18f63e26960029d3ce"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00046.html#ae0d384ec56032d18f63e26960029d3ce">concurrent_vector</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
-<tr class="memdesc:ae0d384ec56032d18f63e26960029d3ce"><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br/></td></tr>
-<tr class="separator:ae0d384ec56032d18f63e26960029d3ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a920384aece0eb8beea3049956320ec91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a920384aece0eb8beea3049956320ec91"></a>
-<a class="el" href="a00046.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a920384aece0eb8beea3049956320ec91">operator=</a> (const <a class="el" href="a00046.html">concurrent_vector</a> &vector)</td></tr>
-<tr class="memdesc:a920384aece0eb8beea3049956320ec91"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
-<tr class="separator:a920384aece0eb8beea3049956320ec91"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1fe7f0b60bbf304890a9293a35e6819d"></a>
-template<class M > </td></tr>
-<tr class="memitem:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00046.html">concurrent_vector</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00046.html#a1fe7f0b60bbf304890a9293a35e6819d">operator=</a> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, M > &vector)</td></tr>
-<tr class="memdesc:a1fe7f0b60bbf304890a9293a35e6819d"><td class="mdescLeft"> </td><td class="mdescRight">Assignment for vector with different allocator type. <br/></td></tr>
-<tr class="separator:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6e57d73b199ccd03922898e9da4888fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e57d73b199ccd03922898e9da4888fb"></a>
-<a class="el" href="a00046.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a6e57d73b199ccd03922898e9da4888fb">operator=</a> (const std::initializer_list< T > &init_list)</td></tr>
-<tr class="memdesc:a6e57d73b199ccd03922898e9da4888fb"><td class="mdescLeft"> </td><td class="mdescRight">Assignment for initializer_list. <br/></td></tr>
-<tr class="separator:a6e57d73b199ccd03922898e9da4888fb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c8452b88bc79c3c88d47c455064c012"><td class="memItemLeft" align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9c8452b88bc79c3c88d47c455064c012">grow_by</a> (size_type delta)</td></tr>
-<tr class="memdesc:a9c8452b88bc79c3c88d47c455064c012"><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements.  <a href="#a9c8452b88bc79c3c88d47c455064c012">More...</a><br/></td></tr>
-<tr class="separator:a9c8452b88bc79c3c88d47c455064c012"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab89c2db5358048debdc282ff995caffb"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ab89c2db5358048debdc282ff995caffb">grow_by</a> (size_type delta)</td></tr>
-<tr class="separator:ab89c2db5358048debdc282ff995caffb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9dae5d9368fd852426552b21d67beb86"><td class="memItemLeft" align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9dae5d9368fd852426552b21d67beb86">grow_by</a> (size_type delta, const_reference t)</td></tr>
-<tr class="memdesc:a9dae5d9368fd852426552b21d67beb86"><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements using copying constructor.  <a href="#a9dae5d9368fd852426552b21d67beb86">More...</a><br/></td></tr>
-<tr class="separator:a9dae5d9368fd852426552b21d67beb86"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa11fc991cda82cf93789fce31b37a16c"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aa11fc991cda82cf93789fce31b37a16c">grow_by</a> (size_type delta, const_reference t)</td></tr>
-<tr class="separator:aa11fc991cda82cf93789fce31b37a16c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af52b603dd76a99dffe5760f0db4747f1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#af52b603dd76a99dffe5760f0db4747f1">grow_to_at_least</a> (size_type n)</td></tr>
-<tr class="memdesc:af52b603dd76a99dffe5760f0db4747f1"><td class="mdescLeft"> </td><td class="mdescRight">Append minimal sequence of elements such that <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>>=n.  <a href="#af52b603dd76a99dffe5760f0db4747f1">More...</a><br/></td></tr>
-<tr class="separator:af52b603dd76a99dffe5760f0db4747f1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9ef9895e88f9bf036b379035c18f035"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ae9ef9895e88f9bf036b379035c18f035">grow_to_at_least</a> (size_type n)</td></tr>
-<tr class="separator:ae9ef9895e88f9bf036b379035c18f035"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4a5c85a9e6ff82e15c18da47a95b518f"><td class="memItemLeft" align="right" valign="top">size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a4a5c85a9e6ff82e15c18da47a95b518f">push_back</a> (const_reference item) iterator push_back(const _reference item)</td></tr>
-<tr class="memdesc:a4a5c85a9e6ff82e15c18da47a95b518f"><td class="mdescLeft"> </td><td class="mdescRight">Push item.  <a href="#a4a5c85a9e6ff82e15c18da47a95b518f">More...</a><br/></td></tr>
-<tr class="separator:a4a5c85a9e6ff82e15c18da47a95b518f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3097cb46511504acfc9de7da5235f4a6"><td class="memItemLeft" align="right" valign="top">reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a3097cb46511504acfc9de7da5235f4a6">operator[]</a> (size_type index)</td></tr>
-<tr class="memdesc:a3097cb46511504acfc9de7da5235f4a6"><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index.  <a href="#a3097cb46511504acfc9de7da5235f4a6">More...</a><br/></td></tr>
-<tr class="separator:a3097cb46511504acfc9de7da5235f4a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abd6ca67f2f97fafca48395af2e693e73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd6ca67f2f97fafca48395af2e693e73"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#abd6ca67f2f97fafca48395af2e693e73">operator[]</a> (size_type index) const </td></tr>
-<tr class="memdesc:abd6ca67f2f97fafca48395af2e693e73"><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br/></td></tr>
-<tr class="separator:abd6ca67f2f97fafca48395af2e693e73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a629a29eb21e528414b9d5c9becfe05cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a629a29eb21e528414b9d5c9becfe05cd"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a629a29eb21e528414b9d5c9becfe05cd">at</a> (size_type index)</td></tr>
-<tr class="memdesc:a629a29eb21e528414b9d5c9becfe05cd"><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index. Throws exceptions on errors. <br/></td></tr>
-<tr class="separator:a629a29eb21e528414b9d5c9becfe05cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4dc6c1b55c0e0b73f0a8675ef2b60a4"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ae4dc6c1b55c0e0b73f0a8675ef2b60a4">at</a> (size_type index) const </td></tr>
-<tr class="memdesc:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. Throws exceptions on errors. <br/></td></tr>
-<tr class="separator:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8201f65735edcc28aeec95b6e73d75b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8201f65735edcc28aeec95b6e73d75b6"></a>
-range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a8201f65735edcc28aeec95b6e73d75b6">range</a> (size_t grainsize=1)</td></tr>
-<tr class="memdesc:a8201f65735edcc28aeec95b6e73d75b6"><td class="mdescLeft"> </td><td class="mdescRight">Get range for iterating with parallel algorithms. <br/></td></tr>
-<tr class="separator:a8201f65735edcc28aeec95b6e73d75b6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fcc32ec9ccb48c3327a88fe288c7538"></a>
-const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a8fcc32ec9ccb48c3327a88fe288c7538">range</a> (size_t grainsize=1) const </td></tr>
-<tr class="memdesc:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="mdescLeft"> </td><td class="mdescRight">Get const range for iterating with parallel algorithms. <br/></td></tr>
-<tr class="separator:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a803268c16e3688ff4681251947d257c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a803268c16e3688ff4681251947d257c7"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7">size</a> () const </td></tr>
-<tr class="memdesc:a803268c16e3688ff4681251947d257c7"><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. It may include elements under construction. <br/></td></tr>
-<tr class="separator:a803268c16e3688ff4681251947d257c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3f6774107e65642f73c0dcc9a962fe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3f6774107e65642f73c0dcc9a962fe7"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aa3f6774107e65642f73c0dcc9a962fe7">empty</a> () const </td></tr>
-<tr class="memdesc:aa3f6774107e65642f73c0dcc9a962fe7"><td class="mdescLeft"> </td><td class="mdescRight">Return false if vector is not empty or has elements under construction at least. <br/></td></tr>
-<tr class="separator:aa3f6774107e65642f73c0dcc9a962fe7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96c2ae9dfedc24d62554feb627df76c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96c2ae9dfedc24d62554feb627df76c3"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a96c2ae9dfedc24d62554feb627df76c3">capacity</a> () const </td></tr>
-<tr class="memdesc:a96c2ae9dfedc24d62554feb627df76c3"><td class="mdescLeft"> </td><td class="mdescRight">Maximum size to which array can grow without allocating more memory. Concurrent allocations are not included in the value. <br/></td></tr>
-<tr class="separator:a96c2ae9dfedc24d62554feb627df76c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b3284684328c58c0228c9a697ef3594"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a0b3284684328c58c0228c9a697ef3594">reserve</a> (size_type n)</td></tr>
-<tr class="memdesc:a0b3284684328c58c0228c9a697ef3594"><td class="mdescLeft"> </td><td class="mdescRight">Allocate enough space to grow to size n without having to allocate more memory later.  <a href="#a0b3284684328c58c0228c9a697ef3594">More...</a><br/></td></tr>
-<tr class="separator:a0b3284684328c58c0228c9a697ef3594"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65e53a98a1e1fdb515fdc2b84e2314e8"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a65e53a98a1e1fdb515fdc2b84e2314e8">resize</a> (size_type n)</td></tr>
-<tr class="memdesc:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="mdescLeft"> </td><td class="mdescRight">Resize the vector. Not thread-safe. <br/></td></tr>
-<tr class="separator:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a941917a8a840ff08ce8810ca9476ff46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a941917a8a840ff08ce8810ca9476ff46"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a941917a8a840ff08ce8810ca9476ff46">resize</a> (size_type n, const_reference t)</td></tr>
-<tr class="memdesc:a941917a8a840ff08ce8810ca9476ff46"><td class="mdescLeft"> </td><td class="mdescRight">Resize the vector, copy t for new elements. Not thread-safe. <br/></td></tr>
-<tr class="separator:a941917a8a840ff08ce8810ca9476ff46"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af2101247808fd0e81b992724e317a7f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2101247808fd0e81b992724e317a7f3"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3">compact</a> ()</td></tr>
-<tr class="memdesc:af2101247808fd0e81b992724e317a7f3"><td class="mdescLeft"> </td><td class="mdescRight">An alias for <a class="el" href="a00046.html#aba805b5225ad3399550f78ea15e51e93" title="Optimize memory usage and fragmentation. ">shrink_to_fit()</a> <br/></td></tr>
-<tr class="separator:af2101247808fd0e81b992724e317a7f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba805b5225ad3399550f78ea15e51e93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba805b5225ad3399550f78ea15e51e93"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aba805b5225ad3399550f78ea15e51e93">shrink_to_fit</a> ()</td></tr>
-<tr class="memdesc:aba805b5225ad3399550f78ea15e51e93"><td class="mdescLeft"> </td><td class="mdescRight">Optimize memory usage and fragmentation. <br/></td></tr>
-<tr class="separator:aba805b5225ad3399550f78ea15e51e93"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ec9c3ab3360e04bdaa5174956a3206d"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a0ec9c3ab3360e04bdaa5174956a3206d">max_size</a> () const </td></tr>
-<tr class="memdesc:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on argument to reserve. <br/></td></tr>
-<tr class="separator:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab55636c80368ad7d400f3200313fcf5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab55636c80368ad7d400f3200313fcf5f"></a>
-iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ab55636c80368ad7d400f3200313fcf5f">begin</a> ()</td></tr>
-<tr class="memdesc:ab55636c80368ad7d400f3200313fcf5f"><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br/></td></tr>
-<tr class="separator:ab55636c80368ad7d400f3200313fcf5f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aad2c07653375e4a5f89c33b375eda610"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad2c07653375e4a5f89c33b375eda610"></a>
-iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aad2c07653375e4a5f89c33b375eda610">end</a> ()</td></tr>
-<tr class="memdesc:aad2c07653375e4a5f89c33b375eda610"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
-<tr class="separator:aad2c07653375e4a5f89c33b375eda610"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3eb33d1b10a988a87cc708ceb08f3a9"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ad3eb33d1b10a988a87cc708ceb08f3a9">begin</a> () const </td></tr>
-<tr class="memdesc:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
-<tr class="separator:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a4ad0795a19d94df24595e748f0b193"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a4ad0795a19d94df24595e748f0b193"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a6a4ad0795a19d94df24595e748f0b193">end</a> () const </td></tr>
-<tr class="memdesc:a6a4ad0795a19d94df24595e748f0b193"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
-<tr class="separator:a6a4ad0795a19d94df24595e748f0b193"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7a1c5441fa480c07ef37d9206b6260cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a1c5441fa480c07ef37d9206b6260cc"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a7a1c5441fa480c07ef37d9206b6260cc">cbegin</a> () const </td></tr>
-<tr class="memdesc:a7a1c5441fa480c07ef37d9206b6260cc"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
-<tr class="separator:a7a1c5441fa480c07ef37d9206b6260cc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ea80faf139feb54d6576c036e4ba898"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ea80faf139feb54d6576c036e4ba898"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9ea80faf139feb54d6576c036e4ba898">cend</a> () const </td></tr>
-<tr class="memdesc:a9ea80faf139feb54d6576c036e4ba898"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
-<tr class="separator:a9ea80faf139feb54d6576c036e4ba898"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a2f8dce0adcbef8e29273c23723a78e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a2f8dce0adcbef8e29273c23723a78e"></a>
-reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9a2f8dce0adcbef8e29273c23723a78e">rbegin</a> ()</td></tr>
-<tr class="memdesc:a9a2f8dce0adcbef8e29273c23723a78e"><td class="mdescLeft"> </td><td class="mdescRight">reverse start iterator <br/></td></tr>
-<tr class="separator:a9a2f8dce0adcbef8e29273c23723a78e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a618f38279a370c18f73ea2c29ded9cb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a618f38279a370c18f73ea2c29ded9cb9"></a>
-reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a618f38279a370c18f73ea2c29ded9cb9">rend</a> ()</td></tr>
-<tr class="memdesc:a618f38279a370c18f73ea2c29ded9cb9"><td class="mdescLeft"> </td><td class="mdescRight">reverse end iterator <br/></td></tr>
-<tr class="separator:a618f38279a370c18f73ea2c29ded9cb9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a976b0bed19de9ab93f78c10184a4e38f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a976b0bed19de9ab93f78c10184a4e38f"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a976b0bed19de9ab93f78c10184a4e38f">rbegin</a> () const </td></tr>
-<tr class="memdesc:a976b0bed19de9ab93f78c10184a4e38f"><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br/></td></tr>
-<tr class="separator:a976b0bed19de9ab93f78c10184a4e38f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abdb98e17cb65d9c445d7fd1e662c2699"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdb98e17cb65d9c445d7fd1e662c2699"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#abdb98e17cb65d9c445d7fd1e662c2699">rend</a> () const </td></tr>
-<tr class="memdesc:abdb98e17cb65d9c445d7fd1e662c2699"><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br/></td></tr>
-<tr class="separator:abdb98e17cb65d9c445d7fd1e662c2699"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2627db4a7949522ea4727320b23a6348"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2627db4a7949522ea4727320b23a6348"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a2627db4a7949522ea4727320b23a6348">crbegin</a> () const </td></tr>
-<tr class="memdesc:a2627db4a7949522ea4727320b23a6348"><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br/></td></tr>
-<tr class="separator:a2627db4a7949522ea4727320b23a6348"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad097225c529dbb24cc0e13a444ab4752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad097225c529dbb24cc0e13a444ab4752"></a>
-const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ad097225c529dbb24cc0e13a444ab4752">crend</a> () const </td></tr>
-<tr class="memdesc:ad097225c529dbb24cc0e13a444ab4752"><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br/></td></tr>
-<tr class="separator:ad097225c529dbb24cc0e13a444ab4752"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9bfc6d733cf543280b691ed8d7b7908a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bfc6d733cf543280b691ed8d7b7908a"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9bfc6d733cf543280b691ed8d7b7908a">front</a> ()</td></tr>
-<tr class="memdesc:a9bfc6d733cf543280b691ed8d7b7908a"><td class="mdescLeft"> </td><td class="mdescRight">the first item <br/></td></tr>
-<tr class="separator:a9bfc6d733cf543280b691ed8d7b7908a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9067259572c2c41d014840d0f9d3cdce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9067259572c2c41d014840d0f9d3cdce"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9067259572c2c41d014840d0f9d3cdce">front</a> () const </td></tr>
-<tr class="memdesc:a9067259572c2c41d014840d0f9d3cdce"><td class="mdescLeft"> </td><td class="mdescRight">the first item const <br/></td></tr>
-<tr class="separator:a9067259572c2c41d014840d0f9d3cdce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaee3ddf1d05238a8a6887f6d824b76f8"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aaee3ddf1d05238a8a6887f6d824b76f8">back</a> ()</td></tr>
-<tr class="memdesc:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="mdescLeft"> </td><td class="mdescRight">the last item <br/></td></tr>
-<tr class="separator:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf66eb1e82dbcb430d9926a23711c720"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf66eb1e82dbcb430d9926a23711c720"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#acf66eb1e82dbcb430d9926a23711c720">back</a> () const </td></tr>
-<tr class="memdesc:acf66eb1e82dbcb430d9926a23711c720"><td class="mdescLeft"> </td><td class="mdescRight">the last item const <br/></td></tr>
-<tr class="separator:acf66eb1e82dbcb430d9926a23711c720"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b62a9614d3f2b59c9c7c1a2143fb1e"></a>
-allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">get_allocator</a> () const </td></tr>
-<tr class="memdesc:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
-<tr class="separator:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a87355dce93d0882aa73333a35c9b367c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87355dce93d0882aa73333a35c9b367c"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a87355dce93d0882aa73333a35c9b367c">assign</a> (size_type n, const_reference t)</td></tr>
-<tr class="memdesc:a87355dce93d0882aa73333a35c9b367c"><td class="mdescLeft"> </td><td class="mdescRight">assign n items by copying t item <br/></td></tr>
-<tr class="separator:a87355dce93d0882aa73333a35c9b367c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bb5399a8499f88cf859eab39f0ed9e0"></a>
-template<class I > </td></tr>
-<tr class="memitem:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00046.html#a7bb5399a8499f88cf859eab39f0ed9e0">assign</a> (I first, I last)</td></tr>
-<tr class="memdesc:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="mdescLeft"> </td><td class="mdescRight">assign range [first, last) <br/></td></tr>
-<tr class="separator:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a584d6cda5794441b19d4f02bde399dff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584d6cda5794441b19d4f02bde399dff"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a584d6cda5794441b19d4f02bde399dff">assign</a> (std::initializer_list< T > init_list)</td></tr>
-<tr class="memdesc:a584d6cda5794441b19d4f02bde399dff"><td class="mdescLeft"> </td><td class="mdescRight">assigns an initializer list <br/></td></tr>
-<tr class="separator:a584d6cda5794441b19d4f02bde399dff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8603bd57324fb6b60ba006884c95279d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8603bd57324fb6b60ba006884c95279d"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a8603bd57324fb6b60ba006884c95279d">swap</a> (<a class="el" href="a00046.html">concurrent_vector</a> &vector)</td></tr>
-<tr class="memdesc:a8603bd57324fb6b60ba006884c95279d"><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br/></td></tr>
-<tr class="separator:a8603bd57324fb6b60ba006884c95279d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a526ba408fb3064ef846940d633b8f365"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a526ba408fb3064ef846940d633b8f365">clear</a> ()</td></tr>
-<tr class="memdesc:a526ba408fb3064ef846940d633b8f365"><td class="mdescLeft"> </td><td class="mdescRight">Clear container while keeping memory allocated.  <a href="#a526ba408fb3064ef846940d633b8f365">More...</a><br/></td></tr>
-<tr class="separator:a526ba408fb3064ef846940d633b8f365"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5bcaededc9a00e7aaecd6c262fd0b38"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ab5bcaededc9a00e7aaecd6c262fd0b38">~concurrent_vector</a> ()</td></tr>
-<tr class="memdesc:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="mdescLeft"> </td><td class="mdescRight">Clear and destroy vector. <br/></td></tr>
-<tr class="separator:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a675f1b62a651d350eb0d778a271e31e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a675f1b62a651d350eb0d778a271e31e5"></a>
-const <br class="typebreak"/>
-internal::concurrent_vector_base_v3 & </td><td class="memItemRight" valign="bottom"><b>internal_vector_base</b> () const </td></tr>
-<tr class="separator:a675f1b62a651d350eb0d778a271e31e5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49b2e16902577cd3174355be0fa684e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b2e16902577cd3174355be0fa684e5"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a49b2e16902577cd3174355be0fa684e5">concurrent_queue</a> (const <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
+<tr class="memdesc:a49b2e16902577cd3174355be0fa684e5"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty queue. <br/></td></tr>
+<tr class="separator:a49b2e16902577cd3174355be0fa684e5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a43ac953152e60815c09fe4a4d4a623a9"><td class="memTemplParams" colspan="2"><a class="anchor" id="a43ac953152e60815c09fe4a4d4a623a9"></a>
+template<typename InputIterator > </td></tr>
+<tr class="memitem:a43ac953152e60815c09fe4a4d4a623a9"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00046.html#a43ac953152e60815c09fe4a4d4a623a9">concurrent_queue</a> (InputIterator begin, InputIterator end, const <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
+<tr class="memdesc:a43ac953152e60815c09fe4a4d4a623a9"><td class="mdescLeft"> </td><td class="mdescRight">[begin,end) constructor <br/></td></tr>
+<tr class="separator:a43ac953152e60815c09fe4a4d4a623a9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae918807d098d5d5b41cc6d606fa2e7a1"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ae918807d098d5d5b41cc6d606fa2e7a1">concurrent_queue</a> (const <a class="el" href="a00046.html">concurrent_queue</a> &src, const <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a=<a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a>())</td></tr>
+<tr class="memdesc:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:ae918807d098d5d5b41cc6d606fa2e7a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc04574f4d7d41fd5cad779508394740"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc04574f4d7d41fd5cad779508394740"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#acc04574f4d7d41fd5cad779508394740">concurrent_queue</a> (<a class="el" href="a00046.html">concurrent_queue</a> &&src)</td></tr>
+<tr class="memdesc:acc04574f4d7d41fd5cad779508394740"><td class="mdescLeft"> </td><td class="mdescRight">Move constructors. <br/></td></tr>
+<tr class="separator:acc04574f4d7d41fd5cad779508394740"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a22f35cb396178d494a3756d5700e2865"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22f35cb396178d494a3756d5700e2865"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_queue</b> (<a class="el" href="a00046.html">concurrent_queue</a> &&src, const <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> &a)</td></tr>
+<tr class="separator:a22f35cb396178d494a3756d5700e2865"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa0056b242f280f5e25332ce998f9f670"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0056b242f280f5e25332ce998f9f670"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aa0056b242f280f5e25332ce998f9f670">~concurrent_queue</a> ()</td></tr>
+<tr class="memdesc:aa0056b242f280f5e25332ce998f9f670"><td class="mdescLeft"> </td><td class="mdescRight">Destroy queue. <br/></td></tr>
+<tr class="separator:aa0056b242f280f5e25332ce998f9f670"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9330ca6590980d80ef7b1ea3613a699a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9330ca6590980d80ef7b1ea3613a699a"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a9330ca6590980d80ef7b1ea3613a699a">push</a> (const T &source)</td></tr>
+<tr class="memdesc:a9330ca6590980d80ef7b1ea3613a699a"><td class="mdescLeft"> </td><td class="mdescRight">Enqueue an item at tail of queue. <br/></td></tr>
+<tr class="separator:a9330ca6590980d80ef7b1ea3613a699a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a40f743f7eb92bb709cb7feb86d340885"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40f743f7eb92bb709cb7feb86d340885"></a>
+void </td><td class="memItemRight" valign="bottom"><b>push</b> (T &&source)</td></tr>
+<tr class="separator:a40f743f7eb92bb709cb7feb86d340885"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4647d9bf5fd03b0850ada381916e9728"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4647d9bf5fd03b0850ada381916e9728"></a>
+template<typename... Arguments> </td></tr>
+<tr class="memitem:a4647d9bf5fd03b0850ada381916e9728"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>emplace</b> (Arguments &&...args)</td></tr>
+<tr class="separator:a4647d9bf5fd03b0850ada381916e9728"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabb1acef18196fa11ed7db8e046c3943"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aabb1acef18196fa11ed7db8e046c3943">try_pop</a> (T &result)</td></tr>
+<tr class="memdesc:aabb1acef18196fa11ed7db8e046c3943"><td class="mdescLeft"> </td><td class="mdescRight">Attempt to dequeue an item from head of queue.  <a href="#aabb1acef18196fa11ed7db8e046c3943">More...</a><br/></td></tr>
+<tr class="separator:aabb1acef18196fa11ed7db8e046c3943"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad4b253ba595637b0b146eb6565556f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad4b253ba595637b0b146eb6565556f2"></a>
+<a class="el" href="a00046.html#a9f883e49afea16293ba92da779981bb8">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aad4b253ba595637b0b146eb6565556f2">unsafe_size</a> () const </td></tr>
+<tr class="memdesc:aad4b253ba595637b0b146eb6565556f2"><td class="mdescLeft"> </td><td class="mdescRight">Return the number of items in the queue; thread unsafe. <br/></td></tr>
+<tr class="separator:aad4b253ba595637b0b146eb6565556f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeda3156929d0c250faed7b807ca6ab0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda3156929d0c250faed7b807ca6ab0e"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#aeda3156929d0c250faed7b807ca6ab0e">empty</a> () const </td></tr>
+<tr class="memdesc:aeda3156929d0c250faed7b807ca6ab0e"><td class="mdescLeft"> </td><td class="mdescRight">Equivalent to size()==0. <br/></td></tr>
+<tr class="separator:aeda3156929d0c250faed7b807ca6ab0e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3384818fb6350a494d5ec62445e59ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3384818fb6350a494d5ec62445e59ee"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#ad3384818fb6350a494d5ec62445e59ee">clear</a> ()</td></tr>
+<tr class="memdesc:ad3384818fb6350a494d5ec62445e59ee"><td class="mdescLeft"> </td><td class="mdescRight">Clear the queue. not thread-safe. <br/></td></tr>
+<tr class="separator:ad3384818fb6350a494d5ec62445e59ee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f2b39f350281590b86db906eca6c480"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f2b39f350281590b86db906eca6c480"></a>
+<a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html#a7f2b39f350281590b86db906eca6c480">get_allocator</a> () const </td></tr>
+<tr class="memdesc:a7f2b39f350281590b86db906eca6c480"><td class="mdescLeft"> </td><td class="mdescRight">Return allocator object. <br/></td></tr>
+<tr class="separator:a7f2b39f350281590b86db906eca6c480"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6658faeae3c10135a553fedadddde239"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6658faeae3c10135a553fedadddde239"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> ()</td></tr>
+<tr class="separator:a6658faeae3c10135a553fedadddde239"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa7593de5e76006ed3adef4d060f0009c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7593de5e76006ed3adef4d060f0009c"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> ()</td></tr>
+<tr class="separator:aa7593de5e76006ed3adef4d060f0009c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0f84b37020f4267f17c7e91acfc0c446"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f84b37020f4267f17c7e91acfc0c446"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_begin</b> () const </td></tr>
+<tr class="separator:a0f84b37020f4267f17c7e91acfc0c446"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a118a79d7e20cdbd807fa7fccc2a5b848"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a118a79d7e20cdbd807fa7fccc2a5b848"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>unsafe_end</b> () const </td></tr>
+<tr class="separator:a118a79d7e20cdbd807fa7fccc2a5b848"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a134b00c8dd9200b9e45fe81919c66b11"><td class="memTemplParams" colspan="2"><a class="anchor" id="a134b00c8dd9200b9e45fe81919c66b11"></a>
-template<typename C , typename U > </td></tr>
-<tr class="memitem:a134b00c8dd9200b9e45fe81919c66b11"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::vector_iterator</b></td></tr>
-<tr class="separator:a134b00c8dd9200b9e45fe81919c66b11"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1f5eec0de2e660ea5372d19393f0920b"></a>
+template<typename Container , typename Value > </td></tr>
+<tr class="memitem:a1f5eec0de2e660ea5372d19393f0920b"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concurrent_queue_iterator</b></td></tr>
+<tr class="separator:a1f5eec0de2e660ea5372d19393f0920b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, class A = cache_aligned_allocator<T>><br/>
-class tbb::concurrent_vector< T, A ></h3>
+<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
+class tbb::strict_ppl::concurrent_queue< T, A ></h3>
 
-<p>Concurrent vector container. </p>
-<pre class="fragment">concurrent_vector is a container having the following main properties:
-- It provides random indexed access to its elements. The index of the first element is 0.
-- It ensures safe concurrent growing its size (different threads can safely append new elements).
-- Adding new elements does not invalidate existing iterators and does not change indices of existing items.
-</pre><dl class="section user"><dt>Compatibility</dt><dd>The class meets all Container Requirements and Reversible Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1). But it doesn't meet Sequence Requirements due to absence of insert() and erase() methods.</dd></dl>
-<dl class="section user"><dt>Exception Safety</dt><dd>Methods working with memory allocation and/or new elements construction can throw an exception if allocator fails to allocate memory or element's default constructor throws one. Concurrent vector's element of type T must conform to the following requirements:<ul>
-<li>Throwing an exception is forbidden for destructor of T.</li>
-<li>Default constructor of T must not throw an exception OR its non-virtual destructor must safely work when its object memory is zero-initialized.</li>
-</ul>
-Otherwise, the program's behavior is undefined. </dd></dl>
-<dl class="section user"><dt></dt><dd>If an exception happens inside growth or assignment operation, an instance of the vector becomes invalid unless it is stated otherwise in the method documentation. Invalid state means:<ul>
-<li>There are no guarantees that all items were initialized by a constructor. The rest of items is zero-filled, including item where exception happens.</li>
-<li>An invalid vector instance cannot be repaired; it is unable to grow anymore.</li>
-<li>Size and capacity reported by the vector are incorrect, and calculated as if the failed operation were successful.</li>
-<li>Attempt to access not allocated elements using operator[] or iterators results in access violation or segmentation fault exception, and in case of using <a class="el" href="a00046.html#a629a29eb21e528414b9d5c9becfe05cd" title="Get reference to element at given index. Throws exceptions on errors. ">at()</a> method a C++ exception is thrown.</li>
-</ul>
-If a concurrent grow operation successfully completes, all the elements it has added to the vector will remain valid and accessible even if one of subsequent grow operations fails.</dd></dl>
-<dl class="section user"><dt>Fragmentation</dt><dd>Unlike an STL vector, a <a class="el" href="a00046.html" title="Concurrent vector container. ">concurrent_vector</a> does not move existing elements if it needs to allocate more memory. The container is divided into a series of contiguous arrays of elements. The first reservation, growth, or assignment operation determines the size of the first array. Using small number of elements as initial size incurs fragmentation that may increase e [...]
-<dl class="section user"><dt>Changes since TBB 2.1</dt><dd><ul>
-<li>Fixed guarantees of <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">concurrent_vector::size()</a> and <a class="el" href="a00046.html#af52b603dd76a99dffe5760f0db4747f1" title="Append minimal sequence of elements such that size()>=n. ">grow_to_at_least()</a> methods to assure elements are allocated.</li>
-<li>Methods <a class="el" href="a00046.html#aad2c07653375e4a5f89c33b375eda610" title="end iterator ">end()</a>/rbegin()/back() are partly thread-safe since they use <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a> to get the end of vector</li>
-<li>Added <a class="el" href="a00046.html#a65e53a98a1e1fdb515fdc2b84e2314e8" title="Resize the vector. Not thread-safe. ">resize()</a> methods (not thread-safe)</li>
-<li>Added cbegin/cend/crbegin/crend methods</li>
-<li>Changed return type of methods grow* and push_back to iterator</li>
-</ul>
-</dd></dl>
-<dl class="section user"><dt>Changes since TBB 2.0</dt><dd><ul>
-<li>Implemented exception-safety guarantees</li>
-<li>Added template argument for allocator</li>
-<li>Added allocator argument in constructors</li>
-<li>Faster index calculation</li>
-<li>First growth call specifies a number of segments to be merged in the first allocation.</li>
-<li>Fixed memory blow up for swarm of vector's instances of small size</li>
-<li>Added <a class="el" href="a00046.html#a9dae5d9368fd852426552b21d67beb86" title="Grow by "delta" elements using copying constructor. ">grow_by(size_type n, const_reference t)</a> growth using copying constructor to init new items.</li>
-<li>Added STL-like constructors.</li>
-<li>Added operators ==, < and derivatives</li>
-<li>Added <a class="el" href="a00046.html#a629a29eb21e528414b9d5c9becfe05cd" title="Get reference to element at given index. Throws exceptions on errors. ">at()</a> method, approved for using after an exception was thrown inside the vector</li>
-<li>Added <a class="el" href="a00046.html#a88b62a9614d3f2b59c9c7c1a2143fb1e" title="return allocator object ">get_allocator()</a> method.</li>
-<li>Added <a class="el" href="a00046.html#a87355dce93d0882aa73333a35c9b367c" title="assign n items by copying t item ">assign()</a> methods</li>
-<li>Added <a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3" title="An alias for shrink_to_fit() ">compact()</a> method to defragment first segments</li>
-<li>Added <a class="el" href="a00046.html#a8603bd57324fb6b60ba006884c95279d" title="swap two instances ">swap()</a> method</li>
-<li><a class="el" href="a00046.html#a8201f65735edcc28aeec95b6e73d75b6" title="Get range for iterating with parallel algorithms. ">range()</a> defaults on grainsize = 1 supporting auto grainsize algorithms. </li>
-</ul>
-</dd></dl>
+<p>A high-performance thread-safe non-blocking concurrent queue. </p>
+<p>Multiple threads may each push and pop concurrently. Assignment construction is not allowed. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a526ba408fb3064ef846940d633b8f365"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::clear </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Clear container while keeping memory allocated. </p>
-<p>To free up the memory, use in conjunction with method <a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3" title="An alias for shrink_to_fit() ">compact()</a>. Not thread safe </p>
-
-</div>
-</div>
-<a class="anchor" id="a9c8452b88bc79c3c88d47c455064c012"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_type <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>delta</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Grow by "delta" elements. </p>
-<p>Returns old size. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab89c2db5358048debdc282ff995caffb"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">iterator <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>delta</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Returns iterator pointing to the first new element. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9dae5d9368fd852426552b21d67beb86"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_type <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>delta</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_reference </td>
-          <td class="paramname"><em>t</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Grow by "delta" elements using copying constructor. </p>
-<p>Returns old size. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa11fc991cda82cf93789fce31b37a16c"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">iterator <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>delta</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const_reference </td>
-          <td class="paramname"><em>t</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Returns iterator pointing to the first new element. </p>
-
-</div>
-</div>
-<a class="anchor" id="af52b603dd76a99dffe5760f0db4747f1"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_to_at_least </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>n</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Append minimal sequence of elements such that <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>>=n. </p>
-<p>The new elements are default constructed. Blocks until all elements in range [0..n) are allocated. May return while other elements are being constructed by other threads. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae9ef9895e88f9bf036b379035c18f035"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">iterator <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::grow_to_at_least </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>n</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>The new elements are default constructed. Blocks until all elements in range [0..n) are allocated. May return while other elements are being constructed by other threads. Returns iterator that points to beginning of appended sequence. If no elements were appended, returns iterator pointing to nth element. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3097cb46511504acfc9de7da5235f4a6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">reference <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::operator[] </td>
-          <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>index</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Get reference to element at given index. </p>
-<p>This method is thread-safe for concurrent reads, and also while growing the vector, as long as the calling thread has checked that index<<a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4a5c85a9e6ff82e15c18da47a95b518f"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_type <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::push_back </td>
-          <td>(</td>
-          <td class="paramtype">const_reference </td>
-          <td class="paramname"><em>item</em>)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Push item. </p>
-<p>Returns iterator pointing to the new element. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0b3284684328c58c0228c9a697ef3594"></a>
+<a class="anchor" id="aabb1acef18196fa11ed7db8e046c3943"></a>
 <div class="memitem">
 <div class="memproto">
 <div class="memtemplate">
-template<typename T, class A = cache_aligned_allocator<T>> </div>
+template<typename T , typename A  = cache_aligned_allocator<T>> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void <a class="el" href="a00046.html">tbb::concurrent_vector</a>< T, A >::reserve </td>
+          <td class="memname">bool <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue</a>< T, A >::try_pop </td>
           <td>(</td>
-          <td class="paramtype">size_type </td>
-          <td class="paramname"><em>n</em>)</td><td></td>
+          <td class="paramtype">T & </td>
+          <td class="paramname"><em>result</em>)</td><td></td>
           <td></td>
         </tr>
       </table>
@@ -699,18 +204,18 @@ template<typename T, class A = cache_aligned_allocator<T>> </div>
 </table>
 </div><div class="memdoc">
 
-<p>Allocate enough space to grow to size n without having to allocate more memory later. </p>
-<p>Like most of the methods provided for STL compatibility, this method is <em>not</em> thread safe. The capacity afterwards may be bigger than the requested reservation. </p>
+<p>Attempt to dequeue an item from head of queue. </p>
+<p>Does not wait for item to become available. Returns true if successful; false otherwise. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_vector.h</li>
+<li>concurrent_queue.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00046.png b/doc/html/a00046.png
index 4ffff4f..c7a9a4d 100644
Binary files a/doc/html/a00046.png and b/doc/html/a00046.png differ
diff --git a/doc/html/a00047.html b/doc/html/a00047.html
index 908e9af..1f61569 100644
--- a/doc/html/a00047.html
+++ b/doc/html/a00047.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</title>
+<title>tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,107 +33,132 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00047.html">const_accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00047.html">concurrent_unordered_map</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00337.html">List of all members</a>  </div>
+<a href="a00378.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Combines data access, locking, and garbage collection.  
- <a href="a00047.html#details">More...</a></p>
-
-<p><code>#include <concurrent_hash_map.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor:</div>
+Inheritance diagram for tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00047.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map" alt=""/>
-  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map">
-<area href="a00010.html" title="Allows write access to elements and combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor" shape="rect" coords="0,112,488,136"/>
+  <img src="a00047.png" usemap="#tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map" alt=""/>
+  <map id="tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
-typedef const <br class="typebreak"/>
-concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
-<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
-<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35d2ace709769b7059e8f8b2a144f8b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35d2ace709769b7059e8f8b2a144f8b9"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:a35d2ace709769b7059e8f8b2a144f8b9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9260034417dde6b3810347c5e347a9f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9260034417dde6b3810347c5e347a9f8"></a>
+typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a9260034417dde6b3810347c5e347a9f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ece8ff3de51bc415d8fc1338f793cbf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ece8ff3de51bc415d8fc1338f793cbf"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+<tr class="separator:a8ece8ff3de51bc415d8fc1338f793cbf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afeef87b046af352e20cd92e56c0fcf34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afeef87b046af352e20cd92e56c0fcf34"></a>
+typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
+<tr class="separator:afeef87b046af352e20cd92e56c0fcf34"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21f5f2fbf3b1f721051c6b4c5fa2a735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21f5f2fbf3b1f721051c6b4c5fa2a735"></a>
+typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
+<tr class="separator:a21f5f2fbf3b1f721051c6b4c5fa2a735"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa15c94df26d89ef38daa7516df5e0729"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa15c94df26d89ef38daa7516df5e0729"></a>
+typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
+<tr class="separator:aa15c94df26d89ef38daa7516df5e0729"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1acd4ab50584a9dc55712e0e113583e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1acd4ab50584a9dc55712e0e113583e2"></a>
+typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a1acd4ab50584a9dc55712e0e113583e2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7e29fb2f75cdec0746afdbed0b9c5451"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e29fb2f75cdec0746afdbed0b9c5451"></a>
+typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a7e29fb2f75cdec0746afdbed0b9c5451"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5d26f7002e7810e4c02890a1d7bdc41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5d26f7002e7810e4c02890a1d7bdc41"></a>
+typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:ab5d26f7002e7810e4c02890a1d7bdc41"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a01e118e1e0bfe57083d8f76f4f848d2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01e118e1e0bfe57083d8f76f4f848d2b"></a>
+typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a01e118e1e0bfe57083d8f76f4f848d2b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad1072935f6765abe3ec1b04f24f80deb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1072935f6765abe3ec1b04f24f80deb"></a>
+typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:ad1072935f6765abe3ec1b04f24f80deb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae31360122b604d6735b12fc027f10924"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae31360122b604d6735b12fc027f10924"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ae31360122b604d6735b12fc027f10924"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0f903f0ca898b0aa80e3a6b921b8f21a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f903f0ca898b0aa80e3a6b921b8f21a"></a>
+typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a0f903f0ca898b0aa80e3a6b921b8f21a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a267aff808d10aa0c437fd9261286467e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a267aff808d10aa0c437fd9261286467e"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a267aff808d10aa0c437fd9261286467e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c2d1a61d1e6ed09fb3df14270d61a01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c2d1a61d1e6ed09fb3df14270d61a01"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a5c2d1a61d1e6ed09fb3df14270d61a01"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a744c0cf93efb5a134d6ddfb3a5fb75d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a744c0cf93efb5a134d6ddfb3a5fb75d3"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
+<tr class="separator:a744c0cf93efb5a134d6ddfb3a5fb75d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5df36261f0e5a1aea64235702fdacb62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5df36261f0e5a1aea64235702fdacb62"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
+<tr class="separator:a5df36261f0e5a1aea64235702fdacb62"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
-<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
-<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a18390cb369369d72bdf7c867755b5190"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
-<tr class="memdesc:a18390cb369369d72bdf7c867755b5190"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
-<tr class="separator:a18390cb369369d72bdf7c867755b5190"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
-const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
-<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
-<tr class="separator:a8adf04e33e7c8c876ba849f26807713a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
-<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
-<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
-<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
-<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
-<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
-<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_writer</b> ()</td></tr>
-<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
-<a class="el" href="a00082.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
-<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5034084f595666b47734f99a6eaefa9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
-hashcode_t </td><td class="memItemRight" valign="bottom"><b>my_hash</b></td></tr>
-<tr class="separator:a5034084f595666b47734f99a6eaefa9f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a9a30829231c2a2f13cb12430992a0701"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a30829231c2a2f13cb12430992a0701"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map< Key, T, HashCompare, Allocator ></b></td></tr>
-<tr class="separator:a9a30829231c2a2f13cb12430992a0701"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab1dfccf6cc719ff15006a2b05cf70dd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1dfccf6cc719ff15006a2b05cf70dd7"></a>
-class </td><td class="memItemRight" valign="bottom"><b>accessor</b></td></tr>
-<tr class="separator:ab1dfccf6cc719ff15006a2b05cf70dd7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeeabd4bffe47ad7a300ae896c06dc46c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeabd4bffe47ad7a300ae896c06dc46c"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:aeeabd4bffe47ad7a300ae896c06dc46c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad0e15127e237c29c923db83fb509f624"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0e15127e237c29c923db83fb509f624"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const Allocator &a)</td></tr>
+<tr class="separator:ad0e15127e237c29c923db83fb509f624"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab494f2ac22495884f64985fba6ade501"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab494f2ac22495884f64985fba6ade501"></a>
+template<typename Iterator > </td></tr>
+<tr class="memitem:ab494f2ac22495884f64985fba6ade501"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_map</b> (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:ab494f2ac22495884f64985fba6ade501"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a788a7225915574c1a349abc0f1f653c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a788a7225915574c1a349abc0f1f653c7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00047.html#a788a7225915574c1a349abc0f1f653c7">concurrent_unordered_map</a> (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a788a7225915574c1a349abc0f1f653c7"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
+<tr class="separator:a788a7225915574c1a349abc0f1f653c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1593b0f93256736d163cfbcc23c7de26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1593b0f93256736d163cfbcc23c7de26"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const <a class="el" href="a00047.html">concurrent_unordered_map</a> &table)</td></tr>
+<tr class="separator:a1593b0f93256736d163cfbcc23c7de26"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47b4eec40fac7fb8b6a8023758c1a34c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47b4eec40fac7fb8b6a8023758c1a34c"></a>
+<a class="el" href="a00047.html">concurrent_unordered_map</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00047.html">concurrent_unordered_map</a> &table)</td></tr>
+<tr class="separator:a47b4eec40fac7fb8b6a8023758c1a34c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a53dcf022c4bd65f438b377a23a9c1bae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a53dcf022c4bd65f438b377a23a9c1bae"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (<a class="el" href="a00047.html">concurrent_unordered_map</a> &&table)</td></tr>
+<tr class="separator:a53dcf022c4bd65f438b377a23a9c1bae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73f8e707280b4e55a9ead393fbb012c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73f8e707280b4e55a9ead393fbb012c8"></a>
+<a class="el" href="a00047.html">concurrent_unordered_map</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00047.html">concurrent_unordered_map</a> &&table)</td></tr>
+<tr class="separator:a73f8e707280b4e55a9ead393fbb012c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2e1cce13f9fa458a616b424c84790c25"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e1cce13f9fa458a616b424c84790c25"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (const <a class="el" href="a00047.html">concurrent_unordered_map</a> &table, const Allocator &a)</td></tr>
+<tr class="separator:a2e1cce13f9fa458a616b424c84790c25"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab22288d418827a312aee4191bb6a7f11"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab22288d418827a312aee4191bb6a7f11"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map</b> (<a class="el" href="a00047.html">concurrent_unordered_map</a> &&table, const Allocator &a)</td></tr>
+<tr class="separator:ab22288d418827a312aee4191bb6a7f11"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae49177d89c80434a30aa346201abb986"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae49177d89c80434a30aa346201abb986"></a>
+mapped_type & </td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const key_type &key)</td></tr>
+<tr class="separator:ae49177d89c80434a30aa346201abb986"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af2e1ccbd986686ef2e93c880a965e861"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2e1ccbd986686ef2e93c880a965e861"></a>
+mapped_type & </td><td class="memItemRight" valign="bottom"><b>at</b> (const key_type &key)</td></tr>
+<tr class="separator:af2e1ccbd986686ef2e93c880a965e861"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a54173c11cd3bc91b491b3f83375868e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54173c11cd3bc91b491b3f83375868e4"></a>
+const mapped_type & </td><td class="memItemRight" valign="bottom"><b>at</b> (const key_type &key) const </td></tr>
+<tr class="separator:a54173c11cd3bc91b491b3f83375868e4"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
-class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</h3>
-
-<p>Combines data access, locking, and garbage collection. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_hash_map.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_unordered_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00047.png b/doc/html/a00047.png
index e861a11..0e3c404 100644
Binary files a/doc/html/a00047.png and b/doc/html/a00047.png differ
diff --git a/doc/html/a00048.html b/doc/html/a00048.html
index f5c860c..342c019 100644
--- a/doc/html/a00048.html
+++ b/doc/html/a00048.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::continue_msg Class Reference</title>
+<title>tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,28 +33,72 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00048.html">continue_msg</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00048.html">concurrent_unordered_map_traits</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-static-methods">Static Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="a00376.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::continue_msg Class Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>An empty class used for messages that mean "I'm done".  
- <a href="a00048.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>An empty class used for messages that mean "I'm done". </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00174.html">value_compare</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a3a4d3aae580451e86649ce3a3ae38894"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>allow_multimapping</b> = Allow_multimapping
+ }</td></tr>
+<tr class="separator:a3a4d3aae580451e86649ce3a3ae38894"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0c77b12f17473e24cda4b60b38e847fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c77b12f17473e24cda4b60b38e847fd"></a>
+typedef std::pair< const Key, T > </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a0c77b12f17473e24cda4b60b38e847fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a133cf0868239271387488f6067ce56ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133cf0868239271387488f6067ce56ee"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:a133cf0868239271387488f6067ce56ee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afdf65dc261abb44bd733ebab0f54f01b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdf65dc261abb44bd733ebab0f54f01b"></a>
+typedef Hash_compare </td><td class="memItemRight" valign="bottom"><b>hash_compare</b></td></tr>
+<tr class="separator:afdf65dc261abb44bd733ebab0f54f01b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f015ac2f9770d8cd69d0656447b66ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f015ac2f9770d8cd69d0656447b66ac"></a>
+typedef Allocator::template <br class="typebreak"/>
+rebind< value_type >::other </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a5f015ac2f9770d8cd69d0656447b66ac"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:ae9e1e3147bd444fb77c544ef7ecb5bef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9e1e3147bd444fb77c544ef7ecb5bef"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map_traits</b> (const hash_compare &hc)</td></tr>
+<tr class="separator:ae9e1e3147bd444fb77c544ef7ecb5bef"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
+Static Protected Member Functions</h2></td></tr>
+<tr class="memitem:a561f2cf05060387c8282ad57f5c816ca"><td class="memTemplParams" colspan="2"><a class="anchor" id="a561f2cf05060387c8282ad57f5c816ca"></a>
+template<class Type1 , class Type2 > </td></tr>
+<tr class="memitem:a561f2cf05060387c8282ad57f5c816ca"><td class="memTemplItemLeft" align="right" valign="top">static const Key & </td><td class="memTemplItemRight" valign="bottom"><b>get_key</b> (const std::pair< Type1, Type2 > &value)</td></tr>
+<tr class="separator:a561f2cf05060387c8282ad57f5c816ca"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ad8f108aa7fc21e9e38050a9d56e691b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8f108aa7fc21e9e38050a9d56e691b7"></a>
+hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
+<tr class="separator:ad8f108aa7fc21e9e38050a9d56e691b7"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_unordered_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00049.html b/doc/html/a00049.html
index 16d6a42..b0d6a5a 100644
--- a/doc/html/a00049.html
+++ b/doc/html/a00049.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::continue_node< Output > Class Template Reference</title>
+<title>tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,134 +33,123 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00049.html">continue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00049.html">concurrent_unordered_multimap</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00321.html">List of all members</a>  </div>
+<a href="a00379.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::continue_node< Output > Class Template Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Implements an executable node that supports <a class="el" href="a00048.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output.  
- <a href="a00049.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::continue_node< Output >:</div>
+Inheritance diagram for tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00049.png" usemap="#tbb::flow::interface7::continue_node< Output >_map" alt=""/>
-  <map id="tbb::flow::interface7::continue_node< Output >_map" name="tbb::flow::interface7::continue_node< Output >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,271,80"/>
+  <img src="a00049.png" usemap="#tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map" alt=""/>
+  <map id="tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ab991c2791fd727c253424c8ed32d5be5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab991c2791fd727c253424c8ed32d5be5"></a>
-typedef <a class="el" href="a00048.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:ab991c2791fd727c253424c8ed32d5be5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d48230ed7707c493a7fc6c63b9781d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d48230ed7707c493a7fc6c63b9781d0"></a>
-typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a8d48230ed7707c493a7fc6c63b9781d0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9754b0bba9834b11320f6779068c4523"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9754b0bba9834b11320f6779068c4523"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00048.html">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a9754b0bba9834b11320f6779068c4523"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bc6b0b8426167ce53ac3626fccb7389"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc6b0b8426167ce53ac3626fccb7389"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a0bc6b0b8426167ce53ac3626fccb7389"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af8ff6b8ea9aa5838f37d0c5c7e383178"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ff6b8ea9aa5838f37d0c5c7e383178"></a>
-typedef <br class="typebreak"/>
-internal::continue_input<br class="typebreak"/>
-< Output > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
-<tr class="separator:af8ff6b8ea9aa5838f37d0c5c7e383178"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a24302662809af4644758edc9a9461c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a24302662809af4644758edc9a9461c"></a>
-typedef <br class="typebreak"/>
-internal::function_output<br class="typebreak"/>
-< output_type > </td><td class="memItemRight" valign="bottom"><b>fOutput_type</b></td></tr>
-<tr class="separator:a9a24302662809af4644758edc9a9461c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13c740f45a112984c9a0c6d0d0a1a4d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13c740f45a112984c9a0c6d0d0a1a4d8"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:a13c740f45a112984c9a0c6d0d0a1a4d8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1b89d9eeca4d1c194433b40671da2bf2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b89d9eeca4d1c194433b40671da2bf2"></a>
+typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a1b89d9eeca4d1c194433b40671da2bf2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a627d86449ed7299d1baa4b09b6dd93f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a627d86449ed7299d1baa4b09b6dd93f6"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+<tr class="separator:a627d86449ed7299d1baa4b09b6dd93f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8485b8d61b666ac6ddd81e1d4b286d5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8485b8d61b666ac6ddd81e1d4b286d5e"></a>
+typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
+<tr class="separator:a8485b8d61b666ac6ddd81e1d4b286d5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a72a124e1c8c64499677e58171a7b9383"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72a124e1c8c64499677e58171a7b9383"></a>
+typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
+<tr class="separator:a72a124e1c8c64499677e58171a7b9383"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ecb30201df0bd885fbba309b2392bd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ecb30201df0bd885fbba309b2392bd4"></a>
+typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
+<tr class="separator:a6ecb30201df0bd885fbba309b2392bd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaeeee0c045e0003b85f60a6851d1d827"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeeee0c045e0003b85f60a6851d1d827"></a>
+typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:aaeeee0c045e0003b85f60a6851d1d827"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a029187ffe49ae876f41dfca39fe6f288"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a029187ffe49ae876f41dfca39fe6f288"></a>
+typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a029187ffe49ae876f41dfca39fe6f288"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55c029b4a58d1201e08ef5ba14fc0a66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55c029b4a58d1201e08ef5ba14fc0a66"></a>
+typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a55c029b4a58d1201e08ef5ba14fc0a66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac4613be39e17bc83cf85d3b90a13fa09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4613be39e17bc83cf85d3b90a13fa09"></a>
+typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:ac4613be39e17bc83cf85d3b90a13fa09"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b9ef2bc9a8574b16ef678e838ff4e96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b9ef2bc9a8574b16ef678e838ff4e96"></a>
+typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a0b9ef2bc9a8574b16ef678e838ff4e96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49038d8ed5f392bce440d7906b39ee53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49038d8ed5f392bce440d7906b39ee53"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a49038d8ed5f392bce440d7906b39ee53"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a517a0b94b44d429f7f23b6d9f5366b36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a517a0b94b44d429f7f23b6d9f5366b36"></a>
+typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a517a0b94b44d429f7f23b6d9f5366b36"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a494392b2f3400393ae2696a70e2411f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a494392b2f3400393ae2696a70e2411f4"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a494392b2f3400393ae2696a70e2411f4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2460242ba39d70a0473eac4ee62b898c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2460242ba39d70a0473eac4ee62b898c"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a2460242ba39d70a0473eac4ee62b898c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a75ad2607efde410d591002203deb65e6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75ad2607efde410d591002203deb65e6"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
+<tr class="separator:a75ad2607efde410d591002203deb65e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7647068dd628f35d3e3f7ed161b3fc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7647068dd628f35d3e3f7ed161b3fc0"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
+<tr class="separator:ab7647068dd628f35d3e3f7ed161b3fc0"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7b96b9eb41772ff1d7a52329ac56b8f0"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00049.html#a7b96b9eb41772ff1d7a52329ac56b8f0">continue_node</a> (<a class="el" href="a00061.html">graph</a> &g, Body body)</td></tr>
-<tr class="memdesc:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for executable node with <a class="el" href="a00048.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. <br/></td></tr>
-<tr class="separator:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05e8957de1cb5a940d2ed3f9fc7637ed"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00049.html#a05e8957de1cb5a940d2ed3f9fc7637ed">continue_node</a> (<a class="el" href="a00061.html">graph</a> &g, int number_of_predecessors, Body body)</td></tr>
-<tr class="memdesc:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for executable node with <a class="el" href="a00048.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. <br/></td></tr>
-<tr class="separator:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ab0750127a7ead08e14b8910a21cf50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ab0750127a7ead08e14b8910a21cf50"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a8ab0750127a7ead08e14b8910a21cf50">continue_node</a> (const <a class="el" href="a00049.html">continue_node</a> &src)</td></tr>
-<tr class="memdesc:a8ab0750127a7ead08e14b8910a21cf50"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a8ab0750127a7ead08e14b8910a21cf50"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9760c1d6e4a2861fa42521f5a669b542"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9760c1d6e4a2861fa42521f5a669b542"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a9760c1d6e4a2861fa42521f5a669b542"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:af371bbddb7a1240ec3f8a7f4878bcdb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af371bbddb7a1240ec3f8a7f4878bcdb9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:af371bbddb7a1240ec3f8a7f4878bcdb9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:add49002d89a2d32fa244b3d5100625c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add49002d89a2d32fa244b3d5100625c2"></a>
-<a class="el" href="a00024.html">internal::broadcast_cache</a><br class="typebreak"/>
-< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
-<tr class="separator:add49002d89a2d32fa244b3d5100625c2"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4ea5780bcc8664253e2180987bc775d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ea5780bcc8664253e2180987bc775d0"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:a4ea5780bcc8664253e2180987bc775d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2fe78524a0f0cd268194cf2461e3ab0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fe78524a0f0cd268194cf2461e3ab0"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const Allocator &a)</td></tr>
+<tr class="separator:ae2fe78524a0f0cd268194cf2461e3ab0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a174ad09d37e0f648e06ded3abfa65bed"><td class="memTemplParams" colspan="2"><a class="anchor" id="a174ad09d37e0f648e06ded3abfa65bed"></a>
+template<typename Iterator > </td></tr>
+<tr class="memitem:a174ad09d37e0f648e06ded3abfa65bed"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:a174ad09d37e0f648e06ded3abfa65bed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5957d29e5fa9f8c53538de3f7a41ebc9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5957d29e5fa9f8c53538de3f7a41ebc9"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html#a5957d29e5fa9f8c53538de3f7a41ebc9">concurrent_unordered_multimap</a> (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a5957d29e5fa9f8c53538de3f7a41ebc9"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
+<tr class="separator:a5957d29e5fa9f8c53538de3f7a41ebc9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aacf347cd41c61dd026e844fa9311130c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aacf347cd41c61dd026e844fa9311130c"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const <a class="el" href="a00049.html">concurrent_unordered_multimap</a> &table)</td></tr>
+<tr class="separator:aacf347cd41c61dd026e844fa9311130c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a58939ac30bfced4b6e2cf0377c1b7d71"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58939ac30bfced4b6e2cf0377c1b7d71"></a>
+<a class="el" href="a00049.html">concurrent_unordered_multimap</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00049.html">concurrent_unordered_multimap</a> &table)</td></tr>
+<tr class="separator:a58939ac30bfced4b6e2cf0377c1b7d71"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac339429f4f36730ff3614cb7fcb257cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac339429f4f36730ff3614cb7fcb257cb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (<a class="el" href="a00049.html">concurrent_unordered_multimap</a> &&table)</td></tr>
+<tr class="separator:ac339429f4f36730ff3614cb7fcb257cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e9a928751361cec49b26afa38018208"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e9a928751361cec49b26afa38018208"></a>
+<a class="el" href="a00049.html">concurrent_unordered_multimap</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00049.html">concurrent_unordered_multimap</a> &&table)</td></tr>
+<tr class="separator:a5e9a928751361cec49b26afa38018208"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a34148bd7279ce189a6c0c26380df0a2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34148bd7279ce189a6c0c26380df0a2a"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (const <a class="el" href="a00049.html">concurrent_unordered_multimap</a> &table, const Allocator &a)</td></tr>
+<tr class="separator:a34148bd7279ce189a6c0c26380df0a2a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a040b7c942e77cca30b0ab423ae7a2d87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a040b7c942e77cca30b0ab423ae7a2d87"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multimap</b> (<a class="el" href="a00049.html">concurrent_unordered_multimap</a> &&table, const Allocator &a)</td></tr>
+<tr class="separator:a040b7c942e77cca30b0ab423ae7a2d87"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Output><br/>
-class tbb::flow::interface7::continue_node< Output ></h3>
-
-<p>Implements an executable node that supports <a class="el" href="a00048.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_unordered_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00049.png b/doc/html/a00049.png
index b695c11..6fa3b58 100644
Binary files a/doc/html/a00049.png and b/doc/html/a00049.png differ
diff --git a/doc/html/a00050.html b/doc/html/a00050.html
index 329cac9..c738938 100644
--- a/doc/html/a00050.html
+++ b/doc/html/a00050.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::continue_receiver Class Reference</title>
+<title>tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,206 +33,123 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00050.html">continue_receiver</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00050.html">concurrent_unordered_multiset</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00311.html">List of all members</a>  </div>
+<a href="a00382.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::continue_receiver Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Base class for receivers of completion messages.  
- <a href="a00050.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::continue_receiver:</div>
+Inheritance diagram for tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00050.png" usemap="#tbb::flow::interface7::continue_receiver_map" alt=""/>
-  <map id="tbb::flow::interface7::continue_receiver_map" name="tbb::flow::interface7::continue_receiver_map">
-<area href="a00106.html" alt="tbb::flow::interface7::receiver< continue_msg >" shape="rect" coords="0,0,276,24"/>
+  <img src="a00050.png" usemap="#tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map" alt=""/>
+  <map id="tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7474ed0edad2bb26d9f86065ecf2c93d"></a>
-typedef <a class="el" href="a00048.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a></td></tr>
-<tr class="memdesc:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="mdescLeft"> </td><td class="mdescRight">The input type. <br/></td></tr>
-<tr class="separator:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a86d210b5614d47aaa43731b7e303751f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86d210b5614d47aaa43731b7e303751f"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00048.html">continue_msg</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a></td></tr>
-<tr class="memdesc:a86d210b5614d47aaa43731b7e303751f"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:a86d210b5614d47aaa43731b7e303751f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< continue_msg ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef <a class="el" href="a00048.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00048.html">continue_msg</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af1eb846a05a4e2d30a3ff7f66acad7c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1eb846a05a4e2d30a3ff7f66acad7c7"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:af1eb846a05a4e2d30a3ff7f66acad7c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a559df68fc84a16b494a9638085c7379b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559df68fc84a16b494a9638085c7379b"></a>
+typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a559df68fc84a16b494a9638085c7379b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada492d245619aac2683b57c9f52106c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada492d245619aac2683b57c9f52106c7"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+<tr class="separator:ada492d245619aac2683b57c9f52106c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6b0ed8e5a20690cc06644520d0e5ef3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6b0ed8e5a20690cc06644520d0e5ef3"></a>
+typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
+<tr class="separator:ab6b0ed8e5a20690cc06644520d0e5ef3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3d8b36c79741c229cf9a5c9d93516b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3d8b36c79741c229cf9a5c9d93516b7"></a>
+typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
+<tr class="separator:aa3d8b36c79741c229cf9a5c9d93516b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ec7f32ab51ebbfdb06d57ab8b17044b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ec7f32ab51ebbfdb06d57ab8b17044b"></a>
+typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
+<tr class="separator:a8ec7f32ab51ebbfdb06d57ab8b17044b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1f89a49912b58d42ddbb3f344b6304ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f89a49912b58d42ddbb3f344b6304ca"></a>
+typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a1f89a49912b58d42ddbb3f344b6304ca"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad4ff41efe0ead5030b011c999dd748de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4ff41efe0ead5030b011c999dd748de"></a>
+typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:ad4ff41efe0ead5030b011c999dd748de"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab4327ff04c8a5dc7653b47763263b9f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4327ff04c8a5dc7653b47763263b9f9"></a>
+typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:ab4327ff04c8a5dc7653b47763263b9f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aef5518b17cd9da59b9e6d9b9374f5245"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5518b17cd9da59b9e6d9b9374f5245"></a>
+typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:aef5518b17cd9da59b9e6d9b9374f5245"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7084b7dd3f9b1df0ffdd520529e87f3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7084b7dd3f9b1df0ffdd520529e87f3c"></a>
+typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a7084b7dd3f9b1df0ffdd520529e87f3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad04d6c35ee079e8a49d38744c8f305b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad04d6c35ee079e8a49d38744c8f305b3"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ad04d6c35ee079e8a49d38744c8f305b3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6e9babf06dc79948bb787793a7cb0d37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e9babf06dc79948bb787793a7cb0d37"></a>
+typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a6e9babf06dc79948bb787793a7cb0d37"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a229ae1c0786ea9509c66256fcf1c8f47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a229ae1c0786ea9509c66256fcf1c8f47"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a229ae1c0786ea9509c66256fcf1c8f47"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a69ed6ae85fe54e53b2804b61a6f30fa2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69ed6ae85fe54e53b2804b61a6f30fa2"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a69ed6ae85fe54e53b2804b61a6f30fa2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a532cdc67028e27231846b41bfd9a0e26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a532cdc67028e27231846b41bfd9a0e26"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
+<tr class="separator:a532cdc67028e27231846b41bfd9a0e26"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4f42202dd9f2bc114c9411928431217"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4f42202dd9f2bc114c9411928431217"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
+<tr class="separator:af4f42202dd9f2bc114c9411928431217"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a1ac173b0a739731b0b1db5a1e91d9326"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ac173b0a739731b0b1db5a1e91d9326"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a1ac173b0a739731b0b1db5a1e91d9326">continue_receiver</a> (int number_of_predecessors=0)</td></tr>
-<tr class="memdesc:a1ac173b0a739731b0b1db5a1e91d9326"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a1ac173b0a739731b0b1db5a1e91d9326"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3055f8a570f7558b6eb9e210feb91b90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3055f8a570f7558b6eb9e210feb91b90"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a3055f8a570f7558b6eb9e210feb91b90">continue_receiver</a> (const <a class="el" href="a00050.html">continue_receiver</a> &src)</td></tr>
-<tr class="memdesc:a3055f8a570f7558b6eb9e210feb91b90"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a3055f8a570f7558b6eb9e210feb91b90"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ca2de23e1e1eeb7071a838a457a50b2"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a2ca2de23e1e1eeb7071a838a457a50b2">~continue_receiver</a> ()</td></tr>
-<tr class="memdesc:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ff043995b7b4d39ab0ec41c9e3628bf"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a9ff043995b7b4d39ab0ec41c9e3628bf">register_predecessor</a> (<a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="mdescLeft"> </td><td class="mdescRight">Increments the trigger threshold. <br/></td></tr>
-<tr class="separator:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea58a2200f20acd9cda829ba6958b22a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#aea58a2200f20acd9cda829ba6958b22a">remove_predecessor</a> (<a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:aea58a2200f20acd9cda829ba6958b22a"><td class="mdescLeft"> </td><td class="mdescRight">Decrements the trigger threshold.  <a href="#aea58a2200f20acd9cda829ba6958b22a">More...</a><br/></td></tr>
-<tr class="separator:aea58a2200f20acd9cda829ba6958b22a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< continue_msg ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const <a class="el" href="a00048.html">continue_msg</a> &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a67b19ab95b89f43e6033d8d124cc84be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b19ab95b89f43e6033d8d124cc84be"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const <a class="el" href="a00050.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a> &)</td></tr>
-<tr class="separator:a67b19ab95b89f43e6033d8d124cc84be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a827c2dd2c9d7dd0edd4acc2c4979ef22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a827c2dd2c9d7dd0edd4acc2c4979ef22"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:a827c2dd2c9d7dd0edd4acc2c4979ef22"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf70ce80d67a565d04e029da461bbe72"><td class="memItemLeft" align="right" valign="top">virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#adf70ce80d67a565d04e029da461bbe72">execute</a> ()=0</td></tr>
-<tr class="memdesc:adf70ce80d67a565d04e029da461bbe72"><td class="mdescLeft"> </td><td class="mdescRight">Does whatever should happen when the threshold is reached.  <a href="#adf70ce80d67a565d04e029da461bbe72">More...</a><br/></td></tr>
-<tr class="separator:adf70ce80d67a565d04e029da461bbe72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0372ce2435ae0f97c2db34af185e6f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0372ce2435ae0f97c2db34af185e6f7"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:aa0372ce2435ae0f97c2db34af185e6f7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a507abe0cc02ae0663e0906a83a8a39da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a507abe0cc02ae0663e0906a83a8a39da"></a>
-<a class="el" href="a00127.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
-<tr class="separator:a507abe0cc02ae0663e0906a83a8a39da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa5e52e452426600619b4431a649a68a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa5e52e452426600619b4431a649a68a"></a>
-int </td><td class="memItemRight" valign="bottom"><b>my_predecessor_count</b></td></tr>
-<tr class="separator:afa5e52e452426600619b4431a649a68a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a71ae0a26f737efd7d38c9fc868d5ee41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71ae0a26f737efd7d38c9fc868d5ee41"></a>
-int </td><td class="memItemRight" valign="bottom"><b>my_current_count</b></td></tr>
-<tr class="separator:a71ae0a26f737efd7d38c9fc868d5ee41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b5668e21d779aefc8843347f9f78517"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b5668e21d779aefc8843347f9f78517"></a>
-int </td><td class="memItemRight" valign="bottom"><b>my_initial_predecessor_count</b></td></tr>
-<tr class="separator:a8b5668e21d779aefc8843347f9f78517"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05ec930a348f7eed564236d00edbda24"></a>
-template<typename U > </td></tr>
-<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>limiter_node</b></td></tr>
-<tr class="separator:a05ec930a348f7eed564236d00edbda24"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplParams" colspan="2"><a class="anchor" id="a73cd25db4e6e9497940262f70f3ffc54"></a>
-template<typename TT , typename M > </td></tr>
-<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::successor_cache</b></td></tr>
-<tr class="separator:a73cd25db4e6e9497940262f70f3ffc54"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa7c1f095ac1f56c7811811aabe6b77c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa7c1f095ac1f56c7811811aabe6b77c"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:afa7c1f095ac1f56c7811811aabe6b77c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf8c095a7be6913dd96e22a6ce9af187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf8c095a7be6913dd96e22a6ce9af187"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const Allocator &a)</td></tr>
+<tr class="separator:adf8c095a7be6913dd96e22a6ce9af187"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2eede1ccad9975aac7acbffbd991e26c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2eede1ccad9975aac7acbffbd991e26c"></a>
+template<typename Iterator > </td></tr>
+<tr class="memitem:a2eede1ccad9975aac7acbffbd991e26c"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:a2eede1ccad9975aac7acbffbd991e26c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15631f048043195863c66bad6533bccb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15631f048043195863c66bad6533bccb"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html#a15631f048043195863c66bad6533bccb">concurrent_unordered_multiset</a> (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a15631f048043195863c66bad6533bccb"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
+<tr class="separator:a15631f048043195863c66bad6533bccb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3110fb1a6f8e2a3071d2acbe4b7b154b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3110fb1a6f8e2a3071d2acbe4b7b154b"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const <a class="el" href="a00050.html">concurrent_unordered_multiset</a> &table)</td></tr>
+<tr class="separator:a3110fb1a6f8e2a3071d2acbe4b7b154b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1fb116ee3fdf6c6c810fe21eb01e209"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1fb116ee3fdf6c6c810fe21eb01e209"></a>
+<a class="el" href="a00050.html">concurrent_unordered_multiset</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00050.html">concurrent_unordered_multiset</a> &table)</td></tr>
+<tr class="separator:ac1fb116ee3fdf6c6c810fe21eb01e209"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb435d8d31e95357c2f59656ec96dbbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb435d8d31e95357c2f59656ec96dbbb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (<a class="el" href="a00050.html">concurrent_unordered_multiset</a> &&table)</td></tr>
+<tr class="separator:aeb435d8d31e95357c2f59656ec96dbbb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6c980c4bf29824a52610d94e6597b28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6c980c4bf29824a52610d94e6597b28"></a>
+<a class="el" href="a00050.html">concurrent_unordered_multiset</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00050.html">concurrent_unordered_multiset</a> &&table)</td></tr>
+<tr class="separator:ab6c980c4bf29824a52610d94e6597b28"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a229089da66522fd4f3d77e9f57e19fbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a229089da66522fd4f3d77e9f57e19fbb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (const <a class="el" href="a00050.html">concurrent_unordered_multiset</a> &table, const Allocator &a)</td></tr>
+<tr class="separator:a229089da66522fd4f3d77e9f57e19fbb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa0a295004627bb5473b4371c6e20c80"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa0a295004627bb5473b4371c6e20c80"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_multiset</b> (<a class="el" href="a00050.html">concurrent_unordered_multiset</a> &&table, const Allocator &a)</td></tr>
+<tr class="separator:aaa0a295004627bb5473b4371c6e20c80"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Base class for receivers of completion messages. </p>
-<p>These receivers automatically reset, but cannot be explicitly waited on </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="adf70ce80d67a565d04e029da461bbe72"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">virtual task* tbb::flow::interface7::continue_receiver::execute </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Does whatever should happen when the threshold is reached. </p>
-<p>This should be very fast or else spawn a task. This is called while the sender is blocked in the <a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a" title="Put an item to the receiver. ">try_put()</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="aea58a2200f20acd9cda829ba6958b22a"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::flow::interface7::continue_receiver::remove_predecessor </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> & </td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Decrements the trigger threshold. </p>
-<p>Does not check to see if the removal of the predecessor now makes the current count exceed the new threshold. So removing a predecessor while the graph is active can cause unexpected results. </p>
-
-<p>Reimplemented from <a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< continue_msg ></a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>concurrent_unordered_set.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00050.png b/doc/html/a00050.png
index a069fbb..3ef6d19 100644
Binary files a/doc/html/a00050.png and b/doc/html/a00050.png differ
diff --git a/doc/html/a00051.html b/doc/html/a00051.html
index f14be14..0ca5030 100644
--- a/doc/html/a00051.html
+++ b/doc/html/a00051.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::critical_section_v4 Class Reference</title>
+<title>tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,67 +33,123 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00051.html">critical_section_v4</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00051.html">concurrent_unordered_set</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00370.html">List of all members</a>  </div>
+<a href="a00381.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::critical_section_v4 Class Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::internal::critical_section_v4:</div>
+Inheritance diagram for tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00051.png" usemap="#tbb::internal::critical_section_v4_map" alt=""/>
-  <map id="tbb::internal::critical_section_v4_map" name="tbb::internal::critical_section_v4_map">
+  <img src="a00051.png" usemap="#tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map" alt=""/>
+  <map id="tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map" name="tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html">scoped_lock</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:afad91155e1803ee686e5f42637594e7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afad91155e1803ee686e5f42637594e7b"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:afad91155e1803ee686e5f42637594e7b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a461fe414bf3ae73e7cc57e851ff592e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a461fe414bf3ae73e7cc57e851ff592e4"></a>
+typedef base_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a461fe414bf3ae73e7cc57e851ff592e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3a64703b55d07509d5c88810c2342ba5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a64703b55d07509d5c88810c2342ba5"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>mapped_type</b></td></tr>
+<tr class="separator:a3a64703b55d07509d5c88810c2342ba5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6952de8a7ff93025c1065bb3e729da72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6952de8a7ff93025c1065bb3e729da72"></a>
+typedef Hasher </td><td class="memItemRight" valign="bottom"><b>hasher</b></td></tr>
+<tr class="separator:a6952de8a7ff93025c1065bb3e729da72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a376a7355aa091fff6a30689141407acd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a376a7355aa091fff6a30689141407acd"></a>
+typedef Key_equality </td><td class="memItemRight" valign="bottom"><b>key_equal</b></td></tr>
+<tr class="separator:a376a7355aa091fff6a30689141407acd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc450473249e39658c46596d8252eef0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc450473249e39658c46596d8252eef0"></a>
+typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>key_compare</b></td></tr>
+<tr class="separator:acc450473249e39658c46596d8252eef0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2010e490e8bfb13d9b969ec2fd5e4de4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2010e490e8bfb13d9b969ec2fd5e4de4"></a>
+typedef base_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a2010e490e8bfb13d9b969ec2fd5e4de4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5a8c52d4a2b57b9b4b5d889e96d88f44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a8c52d4a2b57b9b4b5d889e96d88f44"></a>
+typedef base_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a5a8c52d4a2b57b9b4b5d889e96d88f44"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a281276279a33ef1c5dfba5c196118ae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a281276279a33ef1c5dfba5c196118ae7"></a>
+typedef base_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a281276279a33ef1c5dfba5c196118ae7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aec3d473d0fa601d51f13efe605cd9862"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec3d473d0fa601d51f13efe605cd9862"></a>
+typedef base_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:aec3d473d0fa601d51f13efe605cd9862"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7da53912d0deffca91618b73ed4995f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7da53912d0deffca91618b73ed4995f"></a>
+typedef base_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:ab7da53912d0deffca91618b73ed4995f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5808a50995fc228f114c3c93aeddf331"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5808a50995fc228f114c3c93aeddf331"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a5808a50995fc228f114c3c93aeddf331"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7aaed1937820a90cb657a824e1391c1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7aaed1937820a90cb657a824e1391c1f"></a>
+typedef base_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a7aaed1937820a90cb657a824e1391c1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb76557f1755f96dc2e78728cb231e57"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb76557f1755f96dc2e78728cb231e57"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:abb76557f1755f96dc2e78728cb231e57"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a983d10264bc785a59b11dc94001e0042"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a983d10264bc785a59b11dc94001e0042"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a983d10264bc785a59b11dc94001e0042"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acb12b4b1df9a7108a5193b0d3bbfc677"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb12b4b1df9a7108a5193b0d3bbfc677"></a>
+typedef base_type::iterator </td><td class="memItemRight" valign="bottom"><b>local_iterator</b></td></tr>
+<tr class="separator:acb12b4b1df9a7108a5193b0d3bbfc677"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af111bc738ee2a1b4b1cf2967a1252322"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af111bc738ee2a1b4b1cf2967a1252322"></a>
+typedef base_type::const_iterator </td><td class="memItemRight" valign="bottom"><b>const_local_iterator</b></td></tr>
+<tr class="separator:af111bc738ee2a1b4b1cf2967a1252322"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab661617ca865c4af0f34e07276f73c9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab661617ca865c4af0f34e07276f73c9e"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-<tr class="separator:ab661617ca865c4af0f34e07276f73c9e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afb1ccdfc59fdd3f5a3a8db17c56102e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb1ccdfc59fdd3f5a3a8db17c56102e8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>lock</b> ()</td></tr>
-<tr class="separator:afb1ccdfc59fdd3f5a3a8db17c56102e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adbbd611ea04432e112b08e56251bc8b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbbd611ea04432e112b08e56251bc8b5"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>try_lock</b> ()</td></tr>
-<tr class="separator:adbbd611ea04432e112b08e56251bc8b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a081d4eae71879fd7dcf2c4ca9ea7fb67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a081d4eae71879fd7dcf2c4ca9ea7fb67"></a>
-void </td><td class="memItemRight" valign="bottom"><b>unlock</b> ()</td></tr>
-<tr class="separator:a081d4eae71879fd7dcf2c4ca9ea7fb67"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a7a62f98ad578ec8ac01d88de55bd271c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a62f98ad578ec8ac01d88de55bd271c"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a7a62f98ad578ec8ac01d88de55bd271c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47f75eb62f02cbdee0d602dff38075e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f75eb62f02cbdee0d602dff38075e9"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:a47f75eb62f02cbdee0d602dff38075e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a12f986c4c554db133c2ae657acf2a496"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12f986c4c554db133c2ae657acf2a496"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-<tr class="separator:a12f986c4c554db133c2ae657acf2a496"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad5e3bd7fa156e5d8aa81a8ff560d84e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad5e3bd7fa156e5d8aa81a8ff560d84e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:aad5e3bd7fa156e5d8aa81a8ff560d84e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2d307ae4ebb3e2d46b0a75713824d109"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d307ae4ebb3e2d46b0a75713824d109"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const Allocator &a)</td></tr>
+<tr class="separator:a2d307ae4ebb3e2d46b0a75713824d109"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afd4bc55194c4473e81398d8456a5c68a"><td class="memTemplParams" colspan="2"><a class="anchor" id="afd4bc55194c4473e81398d8456a5c68a"></a>
+template<typename Iterator > </td></tr>
+<tr class="memitem:afd4bc55194c4473e81398d8456a5c68a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>concurrent_unordered_set</b> (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="separator:afd4bc55194c4473e81398d8456a5c68a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6f6d5ecff239ff13000848e925904fe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f6d5ecff239ff13000848e925904fe7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00051.html#a6f6d5ecff239ff13000848e925904fe7">concurrent_unordered_set</a> (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a6f6d5ecff239ff13000848e925904fe7"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
+<tr class="separator:a6f6d5ecff239ff13000848e925904fe7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac3c68d5286d6ca29fba2b38c59bdbc66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3c68d5286d6ca29fba2b38c59bdbc66"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const <a class="el" href="a00051.html">concurrent_unordered_set</a> &table)</td></tr>
+<tr class="separator:ac3c68d5286d6ca29fba2b38c59bdbc66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39097dddf99fd057919197b8293bd807"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39097dddf99fd057919197b8293bd807"></a>
+<a class="el" href="a00051.html">concurrent_unordered_set</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00051.html">concurrent_unordered_set</a> &table)</td></tr>
+<tr class="separator:a39097dddf99fd057919197b8293bd807"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9dde7a48af7449fde97d4449691207c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dde7a48af7449fde97d4449691207c5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (<a class="el" href="a00051.html">concurrent_unordered_set</a> &&table)</td></tr>
+<tr class="separator:a9dde7a48af7449fde97d4449691207c5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49ad03a5e20f90beac704325aaa6567f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49ad03a5e20f90beac704325aaa6567f"></a>
+<a class="el" href="a00051.html">concurrent_unordered_set</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00051.html">concurrent_unordered_set</a> &&table)</td></tr>
+<tr class="separator:a49ad03a5e20f90beac704325aaa6567f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aecea62fe5c8beab0d7907dbc33ef583f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecea62fe5c8beab0d7907dbc33ef583f"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (const <a class="el" href="a00051.html">concurrent_unordered_set</a> &table, const Allocator &a)</td></tr>
+<tr class="separator:aecea62fe5c8beab0d7907dbc33ef583f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ef0de826333371f1e9cb33349b35baf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ef0de826333371f1e9cb33349b35baf"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set</b> (<a class="el" href="a00051.html">concurrent_unordered_set</a> &&table, const Allocator &a)</td></tr>
+<tr class="separator:a6ef0de826333371f1e9cb33349b35baf"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>critical_section.h</li>
+<li>concurrent_unordered_set.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00051.png b/doc/html/a00051.png
index 835e586..9f9a099 100644
Binary files a/doc/html/a00051.png and b/doc/html/a00051.png differ
diff --git a/doc/html/a00052.html b/doc/html/a00052.html
index 2450066..91b42aa 100644
--- a/doc/html/a00052.html
+++ b/doc/html/a00052.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference</title>
+<title>tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,204 +33,68 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00052.html">enumerable_thread_specific</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00052.html">concurrent_unordered_set_traits</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00354.html">List of all members</a>  </div>
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-static-methods">Static Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="a00380.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference<div class="ingroups"><a class="el" href="a00235.html">Containers</a></div></div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container.  
- <a href="a00052.html#details">More...</a></p>
-
-<p><code>#include <enumerable_thread_specific.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00052.png" usemap="#tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map" alt=""/>
-  <map id="tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map" name="tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:ad50ceae1b0e91d0fd31fe506e690692b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50ceae1b0e91d0fd31fe506e690692b"></a>
-typedef Allocator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#ad50ceae1b0e91d0fd31fe506e690692b">allocator_type</a></td></tr>
-<tr class="memdesc:ad50ceae1b0e91d0fd31fe506e690692b"><td class="mdescLeft"> </td><td class="mdescRight">Basic types. <br/></td></tr>
-<tr class="separator:ad50ceae1b0e91d0fd31fe506e690692b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a931b97e237cd2ed6eabe0d939bd141da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a931b97e237cd2ed6eabe0d939bd141da"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a931b97e237cd2ed6eabe0d939bd141da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a353a42e7bdda1720b7150cca99cf730b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a353a42e7bdda1720b7150cca99cf730b"></a>
-typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a353a42e7bdda1720b7150cca99cf730b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6c722a4b20fb6cae21316240b61d98d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c722a4b20fb6cae21316240b61d98d2"></a>
-typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a6c722a4b20fb6cae21316240b61d98d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad88abc185701214e53e81973235ab6de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad88abc185701214e53e81973235ab6de"></a>
-typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:ad88abc185701214e53e81973235ab6de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4aff438f46812452ab4a6f893df94fc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4aff438f46812452ab4a6f893df94fc3"></a>
-typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a4aff438f46812452ab4a6f893df94fc3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a65e9cdc58e19d96b31b467c70c79122d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65e9cdc58e19d96b31b467c70c79122d"></a>
-typedef <br class="typebreak"/>
-internal_collection_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a65e9cdc58e19d96b31b467c70c79122d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0b6f002367fa7ca2e3e245e76d91ea7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b6f002367fa7ca2e3e245e76d91ea7e"></a>
-typedef <br class="typebreak"/>
-internal_collection_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a0b6f002367fa7ca2e3e245e76d91ea7e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a713e97c954eef04e3fda62cf8c8bd63f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a713e97c954eef04e3fda62cf8c8bd63f"></a>
-typedef <br class="typebreak"/>
-internal::enumerable_thread_specific_iterator<br class="typebreak"/>
-< <a class="el" href="a00046.html">internal_collection_type</a>, <br class="typebreak"/>
-value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a713e97c954eef04e3fda62cf8c8bd63f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9dacd1e38e45ee787faafd3a71b23fc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dacd1e38e45ee787faafd3a71b23fc2"></a>
-typedef <br class="typebreak"/>
-internal::enumerable_thread_specific_iterator<br class="typebreak"/>
-< <a class="el" href="a00046.html">internal_collection_type</a>, <br class="typebreak"/>
-const value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a9dacd1e38e45ee787faafd3a71b23fc2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2200200e24eaf5ed6496ff3eaa6c4dcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2200200e24eaf5ed6496ff3eaa6c4dcc"></a>
-typedef generic_range_type<br class="typebreak"/>
-< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
-<tr class="separator:a2200200e24eaf5ed6496ff3eaa6c4dcc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9877dc4e09dc6c625a86a463f56f180d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9877dc4e09dc6c625a86a463f56f180d"></a>
-typedef generic_range_type<br class="typebreak"/>
-< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
-<tr class="separator:a9877dc4e09dc6c625a86a463f56f180d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a10fca95c59a7c0542d2d6bc1b8306e1c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>allow_multimapping</b> = Allow_multimapping
+ }</td></tr>
+<tr class="separator:a10fca95c59a7c0542d2d6bc1b8306e1c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a935ab6e249964c5a7e1caffd308bf008"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a935ab6e249964c5a7e1caffd308bf008"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a935ab6e249964c5a7e1caffd308bf008"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8b1d770b7db20b5d0d51af0b910aebb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b1d770b7db20b5d0d51af0b910aebb2"></a>
+typedef Key </td><td class="memItemRight" valign="bottom"><b>key_type</b></td></tr>
+<tr class="separator:a8b1d770b7db20b5d0d51af0b910aebb2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c1ef314e63eb78db91ce99cb8617b87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c1ef314e63eb78db91ce99cb8617b87"></a>
+typedef Hash_compare </td><td class="memItemRight" valign="bottom"><b>hash_compare</b></td></tr>
+<tr class="separator:a3c1ef314e63eb78db91ce99cb8617b87"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a453126bb05d3c798914cb91852e0b3a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a453126bb05d3c798914cb91852e0b3a5"></a>
+typedef Allocator::template <br class="typebreak"/>
+rebind< value_type >::other </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a453126bb05d3c798914cb91852e0b3a5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa846331955302afdcaa6ba10e47ff427"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa846331955302afdcaa6ba10e47ff427"></a>
+typedef hash_compare </td><td class="memItemRight" valign="bottom"><b>value_compare</b></td></tr>
+<tr class="separator:aa846331955302afdcaa6ba10e47ff427"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad95ccef01367c0b6d75f6f91f5bf5315"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#ad95ccef01367c0b6d75f6f91f5bf5315">enumerable_thread_specific</a> ()</td></tr>
-<tr class="memdesc:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. Each local instance of T is default constructed. <br/></td></tr>
-<tr class="separator:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6c4bec58ae7f0f2b6c77f0baf79623ee"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c4bec58ae7f0f2b6c77f0baf79623ee"></a>
-template<typename Finit > </td></tr>
-<tr class="memitem:a6c4bec58ae7f0f2b6c77f0baf79623ee"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00052.html#a6c4bec58ae7f0f2b6c77f0baf79623ee">enumerable_thread_specific</a> (Finit finit)</td></tr>
-<tr class="memdesc:a6c4bec58ae7f0f2b6c77f0baf79623ee"><td class="mdescLeft"> </td><td class="mdescRight">Constructor with initializer functor. Each local instance of T is constructed by T(finit()). <br/></td></tr>
-<tr class="separator:a6c4bec58ae7f0f2b6c77f0baf79623ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6f0249ee95fa56665da4b6984f3a685a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f0249ee95fa56665da4b6984f3a685a"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a6f0249ee95fa56665da4b6984f3a685a">enumerable_thread_specific</a> (const T &exemplar)</td></tr>
-<tr class="memdesc:a6f0249ee95fa56665da4b6984f3a685a"><td class="mdescLeft"> </td><td class="mdescRight">Constructor with exemplar. Each local instance of T is copied-constructed from the exemplar. <br/></td></tr>
-<tr class="separator:a6f0249ee95fa56665da4b6984f3a685a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6ea8d717f770acb63efc406df52d4585"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ea8d717f770acb63efc406df52d4585"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a6ea8d717f770acb63efc406df52d4585">~enumerable_thread_specific</a> ()</td></tr>
-<tr class="memdesc:a6ea8d717f770acb63efc406df52d4585"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a6ea8d717f770acb63efc406df52d4585"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea846c6cbafbe2ff6bde6e8c2a2ee97e"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">local</a> ()</td></tr>
-<tr class="memdesc:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="mdescLeft"> </td><td class="mdescRight">returns reference to local, discarding exists <br/></td></tr>
-<tr class="separator:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbbc24a5816dc163d5df057c5e7f379d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbbc24a5816dc163d5df057c5e7f379d"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#abbbc24a5816dc163d5df057c5e7f379d">local</a> (bool &exists)</td></tr>
-<tr class="memdesc:abbbc24a5816dc163d5df057c5e7f379d"><td class="mdescLeft"> </td><td class="mdescRight">Returns reference to calling thread's local copy, creating one if necessary. <br/></td></tr>
-<tr class="separator:abbbc24a5816dc163d5df057c5e7f379d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c33c5390783e17daf2b25d53ae919fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c33c5390783e17daf2b25d53ae919fb"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a4c33c5390783e17daf2b25d53ae919fb">size</a> () const </td></tr>
-<tr class="memdesc:a4c33c5390783e17daf2b25d53ae919fb"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of local copies. <br/></td></tr>
-<tr class="separator:a4c33c5390783e17daf2b25d53ae919fb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfa4b2e13e47ab825dc40c4f195d2bc5"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#adfa4b2e13e47ab825dc40c4f195d2bc5">empty</a> () const </td></tr>
-<tr class="memdesc:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="mdescLeft"> </td><td class="mdescRight">true if there have been no local copies created <br/></td></tr>
-<tr class="separator:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a070d26debf1f65c83de13f64f91aefdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a070d26debf1f65c83de13f64f91aefdc"></a>
-iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a070d26debf1f65c83de13f64f91aefdc">begin</a> ()</td></tr>
-<tr class="memdesc:a070d26debf1f65c83de13f64f91aefdc"><td class="mdescLeft"> </td><td class="mdescRight">begin iterator <br/></td></tr>
-<tr class="separator:a070d26debf1f65c83de13f64f91aefdc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad225e2e8a968b131bf05d72f5686b924"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad225e2e8a968b131bf05d72f5686b924"></a>
-iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#ad225e2e8a968b131bf05d72f5686b924">end</a> ()</td></tr>
-<tr class="memdesc:ad225e2e8a968b131bf05d72f5686b924"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
-<tr class="separator:ad225e2e8a968b131bf05d72f5686b924"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa097383eb6f90e4a551830fc00b60b3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa097383eb6f90e4a551830fc00b60b3a"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#aa097383eb6f90e4a551830fc00b60b3a">begin</a> () const </td></tr>
-<tr class="memdesc:aa097383eb6f90e4a551830fc00b60b3a"><td class="mdescLeft"> </td><td class="mdescRight">begin const iterator <br/></td></tr>
-<tr class="separator:aa097383eb6f90e4a551830fc00b60b3a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5ed0248f10a7aa5045d2cda77dad9588"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ed0248f10a7aa5045d2cda77dad9588"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a5ed0248f10a7aa5045d2cda77dad9588">end</a> () const </td></tr>
-<tr class="memdesc:a5ed0248f10a7aa5045d2cda77dad9588"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
-<tr class="separator:a5ed0248f10a7aa5045d2cda77dad9588"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac94dd896ed78df240da4a450defbca6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac94dd896ed78df240da4a450defbca6c"></a>
-range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#ac94dd896ed78df240da4a450defbca6c">range</a> (size_t grainsize=1)</td></tr>
-<tr class="memdesc:ac94dd896ed78df240da4a450defbca6c"><td class="mdescLeft"> </td><td class="mdescRight">Get range for parallel algorithms. <br/></td></tr>
-<tr class="separator:ac94dd896ed78df240da4a450defbca6c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a25b9153dfe994c8122a7f0227cffe793"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25b9153dfe994c8122a7f0227cffe793"></a>
-const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a25b9153dfe994c8122a7f0227cffe793">range</a> (size_t grainsize=1) const </td></tr>
-<tr class="memdesc:a25b9153dfe994c8122a7f0227cffe793"><td class="mdescLeft"> </td><td class="mdescRight">Get const range for parallel algorithms. <br/></td></tr>
-<tr class="separator:a25b9153dfe994c8122a7f0227cffe793"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85a0d8f088ef1ee07aeb2c0e944a4a5e"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">clear</a> ()</td></tr>
-<tr class="memdesc:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="mdescLeft"> </td><td class="mdescRight">Destroys local copies. <br/></td></tr>
-<tr class="separator:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c2e2949e1b12c91c700b6394a637ac2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4c2e2949e1b12c91c700b6394a637ac2"></a>
-template<typename U , typename Alloc , ets_key_usage_type Cachetype> </td></tr>
-<tr class="memitem:a4c2e2949e1b12c91c700b6394a637ac2"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>enumerable_thread_specific</b> (const <a class="el" href="a00052.html">enumerable_thread_specific</a>< U, Alloc, Cachetype > &other)</td></tr>
-<tr class="separator:a4c2e2949e1b12c91c700b6394a637ac2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b614f913497b8dc168a8e6ea03eac48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b614f913497b8dc168a8e6ea03eac48"></a>
- </td><td class="memItemRight" valign="bottom"><b>enumerable_thread_specific</b> (const <a class="el" href="a00052.html">enumerable_thread_specific</a> &other)</td></tr>
-<tr class="separator:a6b614f913497b8dc168a8e6ea03eac48"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7af8784cd0d0f04b3f9f50988b8f0885"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7af8784cd0d0f04b3f9f50988b8f0885"></a>
-<a class="el" href="a00052.html">enumerable_thread_specific</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00052.html">enumerable_thread_specific</a> &other)</td></tr>
-<tr class="separator:a7af8784cd0d0f04b3f9f50988b8f0885"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8f5a6b7f44d0d367c7ede8dc52a0aec4"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8f5a6b7f44d0d367c7ede8dc52a0aec4"></a>
-template<typename U , typename Alloc , ets_key_usage_type Cachetype> </td></tr>
-<tr class="memitem:a8f5a6b7f44d0d367c7ede8dc52a0aec4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00052.html">enumerable_thread_specific</a> & </td><td class="memTemplItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00052.html">enumerable_thread_specific</a>< U, Alloc, Cachetype > &other)</td></tr>
-<tr class="separator:a8f5a6b7f44d0d367c7ede8dc52a0aec4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ab62b7fd2aeeb12e1a3b93c9ce99f27"></a>
-template<typename combine_func_t > </td></tr>
-<tr class="memitem:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>combine</b> (combine_func_t f_combine)</td></tr>
-<tr class="separator:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae644ea36b776fdc698d87a60ef4a3179"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae644ea36b776fdc698d87a60ef4a3179"></a>
-template<typename combine_func_t > </td></tr>
-<tr class="memitem:ae644ea36b776fdc698d87a60ef4a3179"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>combine_each</b> (combine_func_t f_combine)</td></tr>
-<tr class="separator:ae644ea36b776fdc698d87a60ef4a3179"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a958c02e4dbd967575a9f03290bb0cad3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a958c02e4dbd967575a9f03290bb0cad3"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set_traits</b> (const hash_compare &hc)</td></tr>
+<tr class="separator:a958c02e4dbd967575a9f03290bb0cad3"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a408a399f5d1ceaf6d0adc9451932a96a"></a>
-template<typename U , typename A , ets_key_usage_type C> </td></tr>
-<tr class="memitem:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>enumerable_thread_specific</b></td></tr>
-<tr class="separator:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
+Static Protected Member Functions</h2></td></tr>
+<tr class="memitem:a3f4bfe96ddb3db04d4701e06611fc73d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f4bfe96ddb3db04d4701e06611fc73d"></a>
+static const Key & </td><td class="memItemRight" valign="bottom"><b>get_key</b> (const value_type &value)</td></tr>
+<tr class="separator:a3f4bfe96ddb3db04d4701e06611fc73d"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ae134f56adf668d7bd31f7ee8fb36ead5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae134f56adf668d7bd31f7ee8fb36ead5"></a>
+hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
+<tr class="separator:ae134f56adf668d7bd31f7ee8fb36ead5"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename Allocator = cache_aligned_allocator<T>, ets_key_usage_type ETS_key_type = ets_no_key><br/>
-class tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></h3>
-
-<p>The <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container. </p>
-<pre class="fragment">enumerable_thread_specific has the following properties:
-- thread-local copies are lazily created, with default, exemplar or function initialization.
-- thread-local copies do not move (during lifetime, and excepting clear()) so the address of a copy is invariant.
-- the contained objects need not have operator=() defined if combine is not used.
-- enumerable_thread_specific containers may be copy-constructed or assigned.
-- thread-local copies can be managed by hash-table, or can be accessed via TLS storage for speed.
-- outside of parallel contexts, the contents of all thread-local copies are accessible by iterator or using combine or combine_each methods
-</pre><dl class="section user"><dt>Segmented iterator</dt><dd>When the thread-local objects are containers with input_iterators defined, a segmented iterator may be used to iterate over all the elements of all thread-local copies.</dd></dl>
-<dl class="section user"><dt>combine and combine_each</dt><dd><ul>
-<li>Both methods are defined for <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a>.</li>
-<li>combine() requires the the type T have operator=() defined.</li>
-<li>neither method modifies the contents of the object (though there is no guarantee that the applied methods do not modify the object.)</li>
-<li>Both are evaluated in serial context (the methods are assumed to be non-benign.) </li>
-</ul>
-</dd></dl>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>enumerable_thread_specific.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_unordered_set.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00052.png b/doc/html/a00052.png
deleted file mode 100644
index fba36b8..0000000
Binary files a/doc/html/a00052.png and /dev/null differ
diff --git a/doc/html/a00053.html b/doc/html/a00053.html
index 060cc5e..f05970b 100644
--- a/doc/html/a00053.html
+++ b/doc/html/a00053.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::filter Class Reference</title>
+<title>tbb::concurrent_vector< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,111 +33,775 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">filter</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">concurrent_vector</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pro-static-attribs">Static Protected Attributes</a> |
-<a href="a00268.html">List of all members</a>  </div>
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00277.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::filter Class Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::concurrent_vector< T, A > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>A stage in a pipeline.  
+<p>Concurrent vector container.  
  <a href="a00053.html#details">More...</a></p>
 
-<p><code>#include <pipeline.h></code></p>
+<p><code>#include <concurrent_vector.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::filter:</div>
+Inheritance diagram for tbb::concurrent_vector< T, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00053.png" usemap="#tbb::filter_map" alt=""/>
-  <map id="tbb::filter_map" name="tbb::filter_map">
-<area href="a00150.html" title="A stage in a pipeline served by a user thread. " alt="tbb::thread_bound_filter" shape="rect" coords="0,112,145,136"/>
+  <img src="a00053.png" usemap="#tbb::concurrent_vector< T, A >_map" alt=""/>
+  <map id="tbb::concurrent_vector< T, A >_map" name="tbb::concurrent_vector< T, A >_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
-Static Protected Attributes</h2></td></tr>
-<tr class="memitem:ae9dab2e01b0963b341ab04b59eec1475"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9dab2e01b0963b341ab04b59eec1475"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a> = 0x1</td></tr>
-<tr class="memdesc:ae9dab2e01b0963b341ab04b59eec1475"><td class="mdescLeft"> </td><td class="mdescRight">The lowest bit 0 is for parallel vs. serial. <br/></td></tr>
-<tr class="separator:ae9dab2e01b0963b341ab04b59eec1475"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a091fcf6abc79edfa5c8bf01f742e2392"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a> = 0x1<<4</td></tr>
-<tr class="memdesc:a091fcf6abc79edfa5c8bf01f742e2392"><td class="mdescLeft"> </td><td class="mdescRight">4th bit distinguishes ordered vs unordered filters.  <a href="#a091fcf6abc79edfa5c8bf01f742e2392">More...</a><br/></td></tr>
-<tr class="separator:a091fcf6abc79edfa5c8bf01f742e2392"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1382f216bd094064a18eb48ecc43c86b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1382f216bd094064a18eb48ecc43c86b"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a> = 0x1<<5</td></tr>
-<tr class="memdesc:a1382f216bd094064a18eb48ecc43c86b"><td class="mdescLeft"> </td><td class="mdescRight">5th bit distinguishes thread-bound and regular filters. <br/></td></tr>
-<tr class="separator:a1382f216bd094064a18eb48ecc43c86b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6645ec56872b6ba2056dcaa467e292f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6645ec56872b6ba2056dcaa467e292f7"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a> = 0x1<<6</td></tr>
-<tr class="memdesc:a6645ec56872b6ba2056dcaa467e292f7"><td class="mdescLeft"> </td><td class="mdescRight">6th bit marks input filters emitting small objects <br/></td></tr>
-<tr class="separator:a6645ec56872b6ba2056dcaa467e292f7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td></tr>
-<tr class="memdesc:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="mdescLeft"> </td><td class="mdescRight">7th bit defines exception propagation mode expected by the application.  <a href="#aab9689e23a96c6c9bf1c8caae74d92ee">More...</a><br/></td></tr>
-<tr class="separator:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ada098ff121699bfed7ae37e759eff93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada098ff121699bfed7ae37e759eff93d"></a>
+typedef <br class="typebreak"/>
+internal::concurrent_vector_base_v3::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ada098ff121699bfed7ae37e759eff93d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7560567b5735c57159e55b12d20b6710"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7560567b5735c57159e55b12d20b6710"></a>
+typedef <br class="typebreak"/>
+internal::allocator_base< T, A ><br class="typebreak"/>
+::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a7560567b5735c57159e55b12d20b6710"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5cf801a503d4e5fe739f53d7321dd2ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cf801a503d4e5fe739f53d7321dd2ef"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a5cf801a503d4e5fe739f53d7321dd2ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1bb52adb877d3b680dac5f0bd289700b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bb52adb877d3b680dac5f0bd289700b"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a1bb52adb877d3b680dac5f0bd289700b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a412441e93ad8656f96b14c5ecb9d817f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a412441e93ad8656f96b14c5ecb9d817f"></a>
+typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a412441e93ad8656f96b14c5ecb9d817f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5ecbb1eb2c7264df9d58255ce211207c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ecbb1eb2c7264df9d58255ce211207c"></a>
+typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a5ecbb1eb2c7264df9d58255ce211207c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa2c4f00678df69d2d11497e8dd6ed9cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2c4f00678df69d2d11497e8dd6ed9cf"></a>
+typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:aa2c4f00678df69d2d11497e8dd6ed9cf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa0d28eb686589cbaf4733ca0eabc071"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa0d28eb686589cbaf4733ca0eabc071"></a>
+typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:afa0d28eb686589cbaf4733ca0eabc071"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4cee8eaee236867c0b6e87309380cb0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cee8eaee236867c0b6e87309380cb0f"></a>
+typedef <br class="typebreak"/>
+internal::vector_iterator<br class="typebreak"/>
+< <a class="el" href="a00053.html">concurrent_vector</a>, T > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a4cee8eaee236867c0b6e87309380cb0f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa9a55035528c055ae985db2a61c8b0b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9a55035528c055ae985db2a61c8b0b2"></a>
+typedef <br class="typebreak"/>
+internal::vector_iterator<br class="typebreak"/>
+< <a class="el" href="a00053.html">concurrent_vector</a>, const T > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:aa9a55035528c055ae985db2a61c8b0b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1623110816f9ef8f08e7bf6768aed273"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1623110816f9ef8f08e7bf6768aed273"></a>
+typedef std::reverse_iterator<br class="typebreak"/>
+< iterator > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
+<tr class="separator:a1623110816f9ef8f08e7bf6768aed273"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada43b048144c3814036da624d3bb8c58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada43b048144c3814036da624d3bb8c58"></a>
+typedef std::reverse_iterator<br class="typebreak"/>
+< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
+<tr class="separator:ada43b048144c3814036da624d3bb8c58"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbeeef740ea402fa136ca3962fc0c307"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbeeef740ea402fa136ca3962fc0c307"></a>
+typedef std::reverse_iterator<br class="typebreak"/>
+< iterator, T, T &, T * > </td><td class="memItemRight" valign="bottom"><b>reverse_iterator</b></td></tr>
+<tr class="separator:adbeeef740ea402fa136ca3962fc0c307"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a705a54ffc90b914fc9c30d4177e8228a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a705a54ffc90b914fc9c30d4177e8228a"></a>
+typedef std::reverse_iterator<br class="typebreak"/>
+< const_iterator, T, const T <br class="typebreak"/>
+&, const T * > </td><td class="memItemRight" valign="bottom"><b>const_reverse_iterator</b></td></tr>
+<tr class="separator:a705a54ffc90b914fc9c30d4177e8228a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a443492ee9918c9e3372b5daca82314ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a443492ee9918c9e3372b5daca82314ca"></a>
+typedef generic_range_type<br class="typebreak"/>
+< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
+<tr class="separator:a443492ee9918c9e3372b5daca82314ca"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1312eb29abf7ca07aa365c727b7844e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1312eb29abf7ca07aa365c727b7844e3"></a>
+typedef generic_range_type<br class="typebreak"/>
+< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
+<tr class="separator:a1312eb29abf7ca07aa365c727b7844e3"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a5bd95c2241653c760704a92b2c887a48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bd95c2241653c760704a92b2c887a48"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a5bd95c2241653c760704a92b2c887a48">concurrent_vector</a> (const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a5bd95c2241653c760704a92b2c887a48"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty vector. <br/></td></tr>
+<tr class="separator:a5bd95c2241653c760704a92b2c887a48"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa25dccd2f65fbfa148e92d01a11c20ff"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aa25dccd2f65fbfa148e92d01a11c20ff">concurrent_vector</a> (std::initializer_list< T > init_list, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="mdescLeft"> </td><td class="mdescRight">Constructor from initializer_list. <br/></td></tr>
+<tr class="separator:aa25dccd2f65fbfa148e92d01a11c20ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03b5a0e9069b30dc4e2e5fc2f191ccb6"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">concurrent_vector</a> (const <a class="el" href="a00053.html">concurrent_vector</a> &vector, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor. <br/></td></tr>
+<tr class="separator:a03b5a0e9069b30dc4e2e5fc2f191ccb6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aafb048cfda83d0e7803888ead76c06a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafb048cfda83d0e7803888ead76c06a9"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aafb048cfda83d0e7803888ead76c06a9">concurrent_vector</a> (<a class="el" href="a00053.html">concurrent_vector</a> &&source)</td></tr>
+<tr class="memdesc:aafb048cfda83d0e7803888ead76c06a9"><td class="mdescLeft"> </td><td class="mdescRight">Move constructor. <br/></td></tr>
+<tr class="separator:aafb048cfda83d0e7803888ead76c06a9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aef020f41f3017fecc43e70a22d3e0fc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef020f41f3017fecc43e70a22d3e0fc0"></a>
+ </td><td class="memItemRight" valign="bottom"><b>concurrent_vector</b> (<a class="el" href="a00053.html">concurrent_vector</a> &&source, const allocator_type &a)</td></tr>
+<tr class="separator:aef020f41f3017fecc43e70a22d3e0fc0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb0e376a31c3fdb91beaaa98441735f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="abb0e376a31c3fdb91beaaa98441735f5"></a>
+template<class M > </td></tr>
+<tr class="memitem:abb0e376a31c3fdb91beaaa98441735f5"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#abb0e376a31c3fdb91beaaa98441735f5">concurrent_vector</a> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, M > &vector, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:abb0e376a31c3fdb91beaaa98441735f5"><td class="mdescLeft"> </td><td class="mdescRight">Copying constructor for vector with different allocator type. <br/></td></tr>
+<tr class="separator:abb0e376a31c3fdb91beaaa98441735f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa898a39aad73711ceca70cd465dc0b4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa898a39aad73711ceca70cd465dc0b4f"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aa898a39aad73711ceca70cd465dc0b4f">concurrent_vector</a> (size_type n)</td></tr>
+<tr class="memdesc:aa898a39aad73711ceca70cd465dc0b4f"><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n. <br/></td></tr>
+<tr class="separator:aa898a39aad73711ceca70cd465dc0b4f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a736c6e35f1df11625636968ea546e21f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a736c6e35f1df11625636968ea546e21f"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a736c6e35f1df11625636968ea546e21f">concurrent_vector</a> (size_type n, const_reference t, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:a736c6e35f1df11625636968ea546e21f"><td class="mdescLeft"> </td><td class="mdescRight">Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance. <br/></td></tr>
+<tr class="separator:a736c6e35f1df11625636968ea546e21f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae0d384ec56032d18f63e26960029d3ce"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae0d384ec56032d18f63e26960029d3ce"></a>
+template<class I > </td></tr>
+<tr class="memitem:ae0d384ec56032d18f63e26960029d3ce"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#ae0d384ec56032d18f63e26960029d3ce">concurrent_vector</a> (I first, I last, const allocator_type &a=allocator_type())</td></tr>
+<tr class="memdesc:ae0d384ec56032d18f63e26960029d3ce"><td class="mdescLeft"> </td><td class="mdescRight">Construction with copying iteration range and given allocator instance. <br/></td></tr>
+<tr class="separator:ae0d384ec56032d18f63e26960029d3ce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a920384aece0eb8beea3049956320ec91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a920384aece0eb8beea3049956320ec91"></a>
+<a class="el" href="a00053.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a920384aece0eb8beea3049956320ec91">operator=</a> (const <a class="el" href="a00053.html">concurrent_vector</a> &vector)</td></tr>
+<tr class="memdesc:a920384aece0eb8beea3049956320ec91"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
+<tr class="separator:a920384aece0eb8beea3049956320ec91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d26889a94203cdb5f5460fade7497c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d26889a94203cdb5f5460fade7497c7"></a>
+<a class="el" href="a00053.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a0d26889a94203cdb5f5460fade7497c7">operator=</a> (<a class="el" href="a00053.html">concurrent_vector</a> &&other)</td></tr>
+<tr class="memdesc:a0d26889a94203cdb5f5460fade7497c7"><td class="mdescLeft"> </td><td class="mdescRight">Move assignment. <br/></td></tr>
+<tr class="separator:a0d26889a94203cdb5f5460fade7497c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1fe7f0b60bbf304890a9293a35e6819d"></a>
+template<class M > </td></tr>
+<tr class="memitem:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00053.html">concurrent_vector</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#a1fe7f0b60bbf304890a9293a35e6819d">operator=</a> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, M > &vector)</td></tr>
+<tr class="memdesc:a1fe7f0b60bbf304890a9293a35e6819d"><td class="mdescLeft"> </td><td class="mdescRight">Assignment for vector with different allocator type. <br/></td></tr>
+<tr class="separator:a1fe7f0b60bbf304890a9293a35e6819d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8498a1335a3bbac2f4925a4e8d70cdb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8498a1335a3bbac2f4925a4e8d70cdb8"></a>
+<a class="el" href="a00053.html">concurrent_vector</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a8498a1335a3bbac2f4925a4e8d70cdb8">operator=</a> (std::initializer_list< T > init_list)</td></tr>
+<tr class="memdesc:a8498a1335a3bbac2f4925a4e8d70cdb8"><td class="mdescLeft"> </td><td class="mdescRight">Assignment for initializer_list. <br/></td></tr>
+<tr class="separator:a8498a1335a3bbac2f4925a4e8d70cdb8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab89c2db5358048debdc282ff995caffb"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ab89c2db5358048debdc282ff995caffb">grow_by</a> (size_type delta)</td></tr>
+<tr class="memdesc:ab89c2db5358048debdc282ff995caffb"><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements.  <a href="#ab89c2db5358048debdc282ff995caffb">More...</a><br/></td></tr>
+<tr class="separator:ab89c2db5358048debdc282ff995caffb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa11fc991cda82cf93789fce31b37a16c"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aa11fc991cda82cf93789fce31b37a16c">grow_by</a> (size_type delta, const_reference t)</td></tr>
+<tr class="memdesc:aa11fc991cda82cf93789fce31b37a16c"><td class="mdescLeft"> </td><td class="mdescRight">Grow by "delta" elements using copying constructor.  <a href="#aa11fc991cda82cf93789fce31b37a16c">More...</a><br/></td></tr>
+<tr class="separator:aa11fc991cda82cf93789fce31b37a16c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acfd74483ff523213b78f44fb914c8eb4"><td class="memTemplParams" colspan="2">template<typename I > </td></tr>
+<tr class="memitem:acfd74483ff523213b78f44fb914c8eb4"><td class="memTemplItemLeft" align="right" valign="top">iterator </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#acfd74483ff523213b78f44fb914c8eb4">grow_by</a> (I first, I last)</td></tr>
+<tr class="separator:acfd74483ff523213b78f44fb914c8eb4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95f57f1529e0ebd1ca6bd2d60003fcab"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a95f57f1529e0ebd1ca6bd2d60003fcab">grow_by</a> (std::initializer_list< T > init_list)</td></tr>
+<tr class="separator:a95f57f1529e0ebd1ca6bd2d60003fcab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae9ef9895e88f9bf036b379035c18f035"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ae9ef9895e88f9bf036b379035c18f035">grow_to_at_least</a> (size_type n)</td></tr>
+<tr class="memdesc:ae9ef9895e88f9bf036b379035c18f035"><td class="mdescLeft"> </td><td class="mdescRight">Append minimal sequence of elements such that <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>>=n.  <a href="#ae9ef9895e88f9bf036b379035c18f035">More...</a><br/></td></tr>
+<tr class="separator:ae9ef9895e88f9bf036b379035c18f035"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a422d9689ed72a5ef2b6b72f28e4143a2"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a422d9689ed72a5ef2b6b72f28e4143a2">grow_to_at_least</a> (size_type n, const_reference t)</td></tr>
+<tr class="separator:a422d9689ed72a5ef2b6b72f28e4143a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad68d1675fedef232bfae35f200ba007d"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ad68d1675fedef232bfae35f200ba007d">push_back</a> (const_reference item)</td></tr>
+<tr class="memdesc:ad68d1675fedef232bfae35f200ba007d"><td class="mdescLeft"> </td><td class="mdescRight">Push item.  <a href="#ad68d1675fedef232bfae35f200ba007d">More...</a><br/></td></tr>
+<tr class="separator:ad68d1675fedef232bfae35f200ba007d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac29a9f08c0fac7c20786c7b8f4f0321a"><td class="memItemLeft" align="right" valign="top">iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ac29a9f08c0fac7c20786c7b8f4f0321a">push_back</a> (T &&item)</td></tr>
+<tr class="memdesc:ac29a9f08c0fac7c20786c7b8f4f0321a"><td class="mdescLeft"> </td><td class="mdescRight">Push item, move-aware.  <a href="#ac29a9f08c0fac7c20786c7b8f4f0321a">More...</a><br/></td></tr>
+<tr class="separator:ac29a9f08c0fac7c20786c7b8f4f0321a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afae4c378515b89cc2b0a11c8cf1bcc50"><td class="memTemplParams" colspan="2">template<typename... Args> </td></tr>
+<tr class="memitem:afae4c378515b89cc2b0a11c8cf1bcc50"><td class="memTemplItemLeft" align="right" valign="top">iterator </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#afae4c378515b89cc2b0a11c8cf1bcc50">emplace_back</a> (Args &&...args)</td></tr>
+<tr class="memdesc:afae4c378515b89cc2b0a11c8cf1bcc50"><td class="mdescLeft"> </td><td class="mdescRight">Push item, create item "in place" with provided arguments.  <a href="#afae4c378515b89cc2b0a11c8cf1bcc50">More...</a><br/></td></tr>
+<tr class="separator:afae4c378515b89cc2b0a11c8cf1bcc50"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3097cb46511504acfc9de7da5235f4a6"><td class="memItemLeft" align="right" valign="top">reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a3097cb46511504acfc9de7da5235f4a6">operator[]</a> (size_type index)</td></tr>
+<tr class="memdesc:a3097cb46511504acfc9de7da5235f4a6"><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index.  <a href="#a3097cb46511504acfc9de7da5235f4a6">More...</a><br/></td></tr>
+<tr class="separator:a3097cb46511504acfc9de7da5235f4a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abd6ca67f2f97fafca48395af2e693e73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd6ca67f2f97fafca48395af2e693e73"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#abd6ca67f2f97fafca48395af2e693e73">operator[]</a> (size_type index) const </td></tr>
+<tr class="memdesc:abd6ca67f2f97fafca48395af2e693e73"><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. <br/></td></tr>
+<tr class="separator:abd6ca67f2f97fafca48395af2e693e73"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a629a29eb21e528414b9d5c9becfe05cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a629a29eb21e528414b9d5c9becfe05cd"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd">at</a> (size_type index)</td></tr>
+<tr class="memdesc:a629a29eb21e528414b9d5c9becfe05cd"><td class="mdescLeft"> </td><td class="mdescRight">Get reference to element at given index. Throws exceptions on errors. <br/></td></tr>
+<tr class="separator:a629a29eb21e528414b9d5c9becfe05cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4dc6c1b55c0e0b73f0a8675ef2b60a4"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ae4dc6c1b55c0e0b73f0a8675ef2b60a4">at</a> (size_type index) const </td></tr>
+<tr class="memdesc:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="mdescLeft"> </td><td class="mdescRight">Get const reference to element at given index. Throws exceptions on errors. <br/></td></tr>
+<tr class="separator:ae4dc6c1b55c0e0b73f0a8675ef2b60a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8201f65735edcc28aeec95b6e73d75b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8201f65735edcc28aeec95b6e73d75b6"></a>
+range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a8201f65735edcc28aeec95b6e73d75b6">range</a> (size_t grainsize=1)</td></tr>
+<tr class="memdesc:a8201f65735edcc28aeec95b6e73d75b6"><td class="mdescLeft"> </td><td class="mdescRight">Get range for iterating with parallel algorithms. <br/></td></tr>
+<tr class="separator:a8201f65735edcc28aeec95b6e73d75b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fcc32ec9ccb48c3327a88fe288c7538"></a>
+const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a8fcc32ec9ccb48c3327a88fe288c7538">range</a> (size_t grainsize=1) const </td></tr>
+<tr class="memdesc:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="mdescLeft"> </td><td class="mdescRight">Get const range for iterating with parallel algorithms. <br/></td></tr>
+<tr class="separator:a8fcc32ec9ccb48c3327a88fe288c7538"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a803268c16e3688ff4681251947d257c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a803268c16e3688ff4681251947d257c7"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7">size</a> () const </td></tr>
+<tr class="memdesc:a803268c16e3688ff4681251947d257c7"><td class="mdescLeft"> </td><td class="mdescRight">Return size of vector. It may include elements under construction. <br/></td></tr>
+<tr class="separator:a803268c16e3688ff4681251947d257c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3f6774107e65642f73c0dcc9a962fe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3f6774107e65642f73c0dcc9a962fe7"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aa3f6774107e65642f73c0dcc9a962fe7">empty</a> () const </td></tr>
+<tr class="memdesc:aa3f6774107e65642f73c0dcc9a962fe7"><td class="mdescLeft"> </td><td class="mdescRight">Return false if vector is not empty or has elements under construction at least. <br/></td></tr>
+<tr class="separator:aa3f6774107e65642f73c0dcc9a962fe7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a96c2ae9dfedc24d62554feb627df76c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96c2ae9dfedc24d62554feb627df76c3"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a96c2ae9dfedc24d62554feb627df76c3">capacity</a> () const </td></tr>
+<tr class="memdesc:a96c2ae9dfedc24d62554feb627df76c3"><td class="mdescLeft"> </td><td class="mdescRight">Maximum size to which array can grow without allocating more memory. Concurrent allocations are not included in the value. <br/></td></tr>
+<tr class="separator:a96c2ae9dfedc24d62554feb627df76c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b3284684328c58c0228c9a697ef3594"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a0b3284684328c58c0228c9a697ef3594">reserve</a> (size_type n)</td></tr>
+<tr class="memdesc:a0b3284684328c58c0228c9a697ef3594"><td class="mdescLeft"> </td><td class="mdescRight">Allocate enough space to grow to size n without having to allocate more memory later.  <a href="#a0b3284684328c58c0228c9a697ef3594">More...</a><br/></td></tr>
+<tr class="separator:a0b3284684328c58c0228c9a697ef3594"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65e53a98a1e1fdb515fdc2b84e2314e8"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a65e53a98a1e1fdb515fdc2b84e2314e8">resize</a> (size_type n)</td></tr>
+<tr class="memdesc:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="mdescLeft"> </td><td class="mdescRight">Resize the vector. Not thread-safe. <br/></td></tr>
+<tr class="separator:a65e53a98a1e1fdb515fdc2b84e2314e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a941917a8a840ff08ce8810ca9476ff46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a941917a8a840ff08ce8810ca9476ff46"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a941917a8a840ff08ce8810ca9476ff46">resize</a> (size_type n, const_reference t)</td></tr>
+<tr class="memdesc:a941917a8a840ff08ce8810ca9476ff46"><td class="mdescLeft"> </td><td class="mdescRight">Resize the vector, copy t for new elements. Not thread-safe. <br/></td></tr>
+<tr class="separator:a941917a8a840ff08ce8810ca9476ff46"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aba805b5225ad3399550f78ea15e51e93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba805b5225ad3399550f78ea15e51e93"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aba805b5225ad3399550f78ea15e51e93">shrink_to_fit</a> ()</td></tr>
+<tr class="memdesc:aba805b5225ad3399550f78ea15e51e93"><td class="mdescLeft"> </td><td class="mdescRight">Optimize memory usage and fragmentation. <br/></td></tr>
+<tr class="separator:aba805b5225ad3399550f78ea15e51e93"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ec9c3ab3360e04bdaa5174956a3206d"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a0ec9c3ab3360e04bdaa5174956a3206d">max_size</a> () const </td></tr>
+<tr class="memdesc:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="mdescLeft"> </td><td class="mdescRight">Upper bound on argument to reserve. <br/></td></tr>
+<tr class="separator:a0ec9c3ab3360e04bdaa5174956a3206d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab55636c80368ad7d400f3200313fcf5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab55636c80368ad7d400f3200313fcf5f"></a>
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ab55636c80368ad7d400f3200313fcf5f">begin</a> ()</td></tr>
+<tr class="memdesc:ab55636c80368ad7d400f3200313fcf5f"><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br/></td></tr>
+<tr class="separator:ab55636c80368ad7d400f3200313fcf5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aad2c07653375e4a5f89c33b375eda610"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad2c07653375e4a5f89c33b375eda610"></a>
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aad2c07653375e4a5f89c33b375eda610">end</a> ()</td></tr>
+<tr class="memdesc:aad2c07653375e4a5f89c33b375eda610"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
+<tr class="separator:aad2c07653375e4a5f89c33b375eda610"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3eb33d1b10a988a87cc708ceb08f3a9"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ad3eb33d1b10a988a87cc708ceb08f3a9">begin</a> () const </td></tr>
+<tr class="memdesc:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
+<tr class="separator:ad3eb33d1b10a988a87cc708ceb08f3a9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6a4ad0795a19d94df24595e748f0b193"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a4ad0795a19d94df24595e748f0b193"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a6a4ad0795a19d94df24595e748f0b193">end</a> () const </td></tr>
+<tr class="memdesc:a6a4ad0795a19d94df24595e748f0b193"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
+<tr class="separator:a6a4ad0795a19d94df24595e748f0b193"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7a1c5441fa480c07ef37d9206b6260cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a1c5441fa480c07ef37d9206b6260cc"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a7a1c5441fa480c07ef37d9206b6260cc">cbegin</a> () const </td></tr>
+<tr class="memdesc:a7a1c5441fa480c07ef37d9206b6260cc"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
+<tr class="separator:a7a1c5441fa480c07ef37d9206b6260cc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ea80faf139feb54d6576c036e4ba898"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ea80faf139feb54d6576c036e4ba898"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a9ea80faf139feb54d6576c036e4ba898">cend</a> () const </td></tr>
+<tr class="memdesc:a9ea80faf139feb54d6576c036e4ba898"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
+<tr class="separator:a9ea80faf139feb54d6576c036e4ba898"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a2f8dce0adcbef8e29273c23723a78e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a2f8dce0adcbef8e29273c23723a78e"></a>
+reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a9a2f8dce0adcbef8e29273c23723a78e">rbegin</a> ()</td></tr>
+<tr class="memdesc:a9a2f8dce0adcbef8e29273c23723a78e"><td class="mdescLeft"> </td><td class="mdescRight">reverse start iterator <br/></td></tr>
+<tr class="separator:a9a2f8dce0adcbef8e29273c23723a78e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a618f38279a370c18f73ea2c29ded9cb9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a618f38279a370c18f73ea2c29ded9cb9"></a>
+reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a618f38279a370c18f73ea2c29ded9cb9">rend</a> ()</td></tr>
+<tr class="memdesc:a618f38279a370c18f73ea2c29ded9cb9"><td class="mdescLeft"> </td><td class="mdescRight">reverse end iterator <br/></td></tr>
+<tr class="separator:a618f38279a370c18f73ea2c29ded9cb9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a976b0bed19de9ab93f78c10184a4e38f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a976b0bed19de9ab93f78c10184a4e38f"></a>
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a976b0bed19de9ab93f78c10184a4e38f">rbegin</a> () const </td></tr>
+<tr class="memdesc:a976b0bed19de9ab93f78c10184a4e38f"><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br/></td></tr>
+<tr class="separator:a976b0bed19de9ab93f78c10184a4e38f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abdb98e17cb65d9c445d7fd1e662c2699"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdb98e17cb65d9c445d7fd1e662c2699"></a>
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#abdb98e17cb65d9c445d7fd1e662c2699">rend</a> () const </td></tr>
+<tr class="memdesc:abdb98e17cb65d9c445d7fd1e662c2699"><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br/></td></tr>
+<tr class="separator:abdb98e17cb65d9c445d7fd1e662c2699"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2627db4a7949522ea4727320b23a6348"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2627db4a7949522ea4727320b23a6348"></a>
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a2627db4a7949522ea4727320b23a6348">crbegin</a> () const </td></tr>
+<tr class="memdesc:a2627db4a7949522ea4727320b23a6348"><td class="mdescLeft"> </td><td class="mdescRight">reverse start const iterator <br/></td></tr>
+<tr class="separator:a2627db4a7949522ea4727320b23a6348"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad097225c529dbb24cc0e13a444ab4752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad097225c529dbb24cc0e13a444ab4752"></a>
+const_reverse_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ad097225c529dbb24cc0e13a444ab4752">crend</a> () const </td></tr>
+<tr class="memdesc:ad097225c529dbb24cc0e13a444ab4752"><td class="mdescLeft"> </td><td class="mdescRight">reverse end const iterator <br/></td></tr>
+<tr class="separator:ad097225c529dbb24cc0e13a444ab4752"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9bfc6d733cf543280b691ed8d7b7908a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bfc6d733cf543280b691ed8d7b7908a"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a9bfc6d733cf543280b691ed8d7b7908a">front</a> ()</td></tr>
+<tr class="memdesc:a9bfc6d733cf543280b691ed8d7b7908a"><td class="mdescLeft"> </td><td class="mdescRight">the first item <br/></td></tr>
+<tr class="separator:a9bfc6d733cf543280b691ed8d7b7908a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9067259572c2c41d014840d0f9d3cdce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9067259572c2c41d014840d0f9d3cdce"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a9067259572c2c41d014840d0f9d3cdce">front</a> () const </td></tr>
+<tr class="memdesc:a9067259572c2c41d014840d0f9d3cdce"><td class="mdescLeft"> </td><td class="mdescRight">the first item const <br/></td></tr>
+<tr class="separator:a9067259572c2c41d014840d0f9d3cdce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaee3ddf1d05238a8a6887f6d824b76f8"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aaee3ddf1d05238a8a6887f6d824b76f8">back</a> ()</td></tr>
+<tr class="memdesc:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="mdescLeft"> </td><td class="mdescRight">the last item <br/></td></tr>
+<tr class="separator:aaee3ddf1d05238a8a6887f6d824b76f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf66eb1e82dbcb430d9926a23711c720"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf66eb1e82dbcb430d9926a23711c720"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#acf66eb1e82dbcb430d9926a23711c720">back</a> () const </td></tr>
+<tr class="memdesc:acf66eb1e82dbcb430d9926a23711c720"><td class="mdescLeft"> </td><td class="mdescRight">the last item const <br/></td></tr>
+<tr class="separator:acf66eb1e82dbcb430d9926a23711c720"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b62a9614d3f2b59c9c7c1a2143fb1e"></a>
+allocator_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">get_allocator</a> () const </td></tr>
+<tr class="memdesc:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="mdescLeft"> </td><td class="mdescRight">return allocator object <br/></td></tr>
+<tr class="separator:a88b62a9614d3f2b59c9c7c1a2143fb1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a87355dce93d0882aa73333a35c9b367c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87355dce93d0882aa73333a35c9b367c"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a87355dce93d0882aa73333a35c9b367c">assign</a> (size_type n, const_reference t)</td></tr>
+<tr class="memdesc:a87355dce93d0882aa73333a35c9b367c"><td class="mdescLeft"> </td><td class="mdescRight">assign n items by copying t item <br/></td></tr>
+<tr class="separator:a87355dce93d0882aa73333a35c9b367c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bb5399a8499f88cf859eab39f0ed9e0"></a>
+template<class I > </td></tr>
+<tr class="memitem:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00053.html#a7bb5399a8499f88cf859eab39f0ed9e0">assign</a> (I first, I last)</td></tr>
+<tr class="memdesc:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="mdescLeft"> </td><td class="mdescRight">assign range [first, last) <br/></td></tr>
+<tr class="separator:a7bb5399a8499f88cf859eab39f0ed9e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a584d6cda5794441b19d4f02bde399dff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584d6cda5794441b19d4f02bde399dff"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a584d6cda5794441b19d4f02bde399dff">assign</a> (std::initializer_list< T > init_list)</td></tr>
+<tr class="memdesc:a584d6cda5794441b19d4f02bde399dff"><td class="mdescLeft"> </td><td class="mdescRight">assigns an initializer list <br/></td></tr>
+<tr class="separator:a584d6cda5794441b19d4f02bde399dff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8603bd57324fb6b60ba006884c95279d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8603bd57324fb6b60ba006884c95279d"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a8603bd57324fb6b60ba006884c95279d">swap</a> (<a class="el" href="a00053.html">concurrent_vector</a> &vector)</td></tr>
+<tr class="memdesc:a8603bd57324fb6b60ba006884c95279d"><td class="mdescLeft"> </td><td class="mdescRight">swap two instances <br/></td></tr>
+<tr class="separator:a8603bd57324fb6b60ba006884c95279d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a526ba408fb3064ef846940d633b8f365"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a526ba408fb3064ef846940d633b8f365">clear</a> ()</td></tr>
+<tr class="memdesc:a526ba408fb3064ef846940d633b8f365"><td class="mdescLeft"> </td><td class="mdescRight">Clear container while keeping memory allocated.  <a href="#a526ba408fb3064ef846940d633b8f365">More...</a><br/></td></tr>
+<tr class="separator:a526ba408fb3064ef846940d633b8f365"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5bcaededc9a00e7aaecd6c262fd0b38"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ab5bcaededc9a00e7aaecd6c262fd0b38">~concurrent_vector</a> ()</td></tr>
+<tr class="memdesc:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="mdescLeft"> </td><td class="mdescRight">Clear and destroy vector. <br/></td></tr>
+<tr class="separator:ab5bcaededc9a00e7aaecd6c262fd0b38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a675f1b62a651d350eb0d778a271e31e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a675f1b62a651d350eb0d778a271e31e5"></a>
+const <br class="typebreak"/>
+internal::concurrent_vector_base_v3 & </td><td class="memItemRight" valign="bottom"><b>internal_vector_base</b> () const </td></tr>
+<tr class="separator:a675f1b62a651d350eb0d778a271e31e5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a96e2626d160361d8c6f4193ca0c7a4dd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a96e2626d160361d8c6f4193ca0c7a4dd"></a>
+template<typename I > </td></tr>
+<tr class="memitem:a96e2626d160361d8c6f4193ca0c7a4dd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>copy_range</b> (void *dst, const void *p_type_erased_iterator, size_type n)</td></tr>
+<tr class="separator:a96e2626d160361d8c6f4193ca0c7a4dd"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a134b00c8dd9200b9e45fe81919c66b11"><td class="memTemplParams" colspan="2"><a class="anchor" id="a134b00c8dd9200b9e45fe81919c66b11"></a>
+template<typename C , typename U > </td></tr>
+<tr class="memitem:a134b00c8dd9200b9e45fe81919c66b11"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::vector_iterator</b></td></tr>
+<tr class="separator:a134b00c8dd9200b9e45fe81919c66b11"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A stage in a pipeline. </p>
-</div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="aab9689e23a96c6c9bf1c8caae74d92ee"></a>
+<div class="textblock"><h3>template<typename T, class A = cache_aligned_allocator<T>><br/>
+class tbb::concurrent_vector< T, A ></h3>
+
+<p>Concurrent vector container. </p>
+<pre class="fragment">concurrent_vector is a container having the following main properties:
+- It provides random indexed access to its elements. The index of the first element is 0.
+- It ensures safe concurrent growing its size (different threads can safely append new elements).
+- Adding new elements does not invalidate existing iterators and does not change indices of existing items.
+</pre><dl class="section user"><dt>Compatibility</dt><dd>The class meets all Container Requirements and Reversible Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1). But it doesn't meet Sequence Requirements due to absence of insert() and erase() methods.</dd></dl>
+<dl class="section user"><dt>Exception Safety</dt><dd>Methods working with memory allocation and/or new elements construction can throw an exception if allocator fails to allocate memory or element's default constructor throws one. Concurrent vector's element of type T must conform to the following requirements:<ul>
+<li>Throwing an exception is forbidden for destructor of T.</li>
+<li>Default constructor of T must not throw an exception OR its non-virtual destructor must safely work when its object memory is zero-initialized.</li>
+</ul>
+Otherwise, the program's behavior is undefined. </dd></dl>
+<dl class="section user"><dt></dt><dd>If an exception happens inside growth or assignment operation, an instance of the vector becomes invalid unless it is stated otherwise in the method documentation. Invalid state means:<ul>
+<li>There are no guarantees that all items were initialized by a constructor. The rest of items is zero-filled, including item where exception happens.</li>
+<li>An invalid vector instance cannot be repaired; it is unable to grow anymore.</li>
+<li>Size and capacity reported by the vector are incorrect, and calculated as if the failed operation were successful.</li>
+<li>Attempt to access not allocated elements using operator[] or iterators results in access violation or segmentation fault exception, and in case of using <a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd" title="Get reference to element at given index. Throws exceptions on errors. ">at()</a> method a C++ exception is thrown.</li>
+</ul>
+If a concurrent grow operation successfully completes, all the elements it has added to the vector will remain valid and accessible even if one of subsequent grow operations fails.</dd></dl>
+<dl class="section user"><dt>Fragmentation</dt><dd>Unlike an STL vector, a <a class="el" href="a00053.html" title="Concurrent vector container. ">concurrent_vector</a> does not move existing elements if it needs to allocate more memory. The container is divided into a series of contiguous arrays of elements. The first reservation, growth, or assignment operation determines the size of the first array. Using small number of elements as initial size incurs fragmentation that may increase e [...]
+<dl class="section user"><dt>Changes since TBB 2.1</dt><dd><ul>
+<li>Fixed guarantees of <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">concurrent_vector::size()</a> and <a class="el" href="a00053.html#ae9ef9895e88f9bf036b379035c18f035" title="Append minimal sequence of elements such that size()>=n. ">grow_to_at_least()</a> methods to assure elements are allocated.</li>
+<li>Methods <a class="el" href="a00053.html#aad2c07653375e4a5f89c33b375eda610" title="end iterator ">end()</a>/rbegin()/back() are partly thread-safe since they use <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a> to get the end of vector</li>
+<li>Added <a class="el" href="a00053.html#a65e53a98a1e1fdb515fdc2b84e2314e8" title="Resize the vector. Not thread-safe. ">resize()</a> methods (not thread-safe)</li>
+<li>Added cbegin/cend/crbegin/crend methods</li>
+<li>Changed return type of methods grow* and push_back to iterator</li>
+</ul>
+</dd></dl>
+<dl class="section user"><dt>Changes since TBB 2.0</dt><dd><ul>
+<li>Implemented exception-safety guarantees</li>
+<li>Added template argument for allocator</li>
+<li>Added allocator argument in constructors</li>
+<li>Faster index calculation</li>
+<li>First growth call specifies a number of segments to be merged in the first allocation.</li>
+<li>Fixed memory blow up for swarm of vector's instances of small size</li>
+<li>Added <a class="el" href="a00053.html#aa11fc991cda82cf93789fce31b37a16c" title="Grow by "delta" elements using copying constructor. ">grow_by(size_type n, const_reference t)</a> growth using copying constructor to init new items.</li>
+<li>Added STL-like constructors.</li>
+<li>Added operators ==, < and derivatives</li>
+<li>Added <a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd" title="Get reference to element at given index. Throws exceptions on errors. ">at()</a> method, approved for using after an exception was thrown inside the vector</li>
+<li>Added <a class="el" href="a00053.html#a88b62a9614d3f2b59c9c7c1a2143fb1e" title="return allocator object ">get_allocator()</a> method.</li>
+<li>Added <a class="el" href="a00053.html#a87355dce93d0882aa73333a35c9b367c" title="assign n items by copying t item ">assign()</a> methods</li>
+<li>Added compact() method to defragment first segments</li>
+<li>Added <a class="el" href="a00053.html#a8603bd57324fb6b60ba006884c95279d" title="swap two instances ">swap()</a> method</li>
+<li><a class="el" href="a00053.html#a8201f65735edcc28aeec95b6e73d75b6" title="Get range for iterating with parallel algorithms. ">range()</a> defaults on grainsize = 1 supporting auto grainsize algorithms. </li>
+</ul>
+</dd></dl>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a526ba408fb3064ef846940d633b8f365"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::clear </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Clear container while keeping memory allocated. </p>
+<p>To free up the memory, use in conjunction with method compact(). Not thread safe </p>
+
+</div>
+</div>
+<a class="anchor" id="afae4c378515b89cc2b0a11c8cf1bcc50"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<div class="memtemplate">
+template<typename... Args> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::emplace_back </td>
+          <td>(</td>
+          <td class="paramtype">Args &&... </td>
+          <td class="paramname"><em>args</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Push item, create item "in place" with provided arguments. </p>
+<p>Returns iterator pointing to the new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab89c2db5358048debdc282ff995caffb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>delta</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Grow by "delta" elements. </p>
+<p>Returns iterator pointing to the first new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa11fc991cda82cf93789fce31b37a16c"></a>
 <div class="memitem">
 <div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">const unsigned char tbb::filter::exact_exception_propagation</td>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>delta</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const_reference </td>
+          <td class="paramname"><em>t</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">=</div>
-<div class="line"><span class="preprocessor">#if TBB_USE_CAPTURED_EXCEPTION</span></div>
-<div class="line"><span class="preprocessor">            0x0</span></div>
-</div><!-- fragment -->
-<p>7th bit defines exception propagation mode expected by the application. </p>
+
+<p>Grow by "delta" elements using copying constructor. </p>
+<p>Returns iterator pointing to the first new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="acfd74483ff523213b78f44fb914c8eb4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<div class="memtemplate">
+template<typename I > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
+          <td>(</td>
+          <td class="paramtype">I </td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">I </td>
+          <td class="paramname"><em>last</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns iterator pointing to the first new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="a95f57f1529e0ebd1ca6bd2d60003fcab"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_by </td>
+          <td>(</td>
+          <td class="paramtype">std::initializer_list< T > </td>
+          <td class="paramname"><em>init_list</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns iterator pointing to the first new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae9ef9895e88f9bf036b379035c18f035"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_to_at_least </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>n</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Append minimal sequence of elements such that <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>>=n. </p>
+<p>The new elements are default constructed. Blocks until all elements in range [0..n) are allocated. May return while other elements are being constructed by other threads. Returns iterator that points to beginning of appended sequence. If no elements were appended, returns iterator pointing to nth element. </p>
+
+</div>
+</div>
+<a class="anchor" id="a422d9689ed72a5ef2b6b72f28e4143a2"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::grow_to_at_least </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>n</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const_reference </td>
+          <td class="paramname"><em>t</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Analogous to <a class="el" href="a00053.html#ae9ef9895e88f9bf036b379035c18f035" title="Append minimal sequence of elements such that size()>=n. ">grow_to_at_least( size_type n )</a> with exception that the new elements are initialized by copying of t instead of default construction. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3097cb46511504acfc9de7da5235f4a6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">reference <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::operator[] </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>index</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get reference to element at given index. </p>
+<p>This method is thread-safe for concurrent reads, and also while growing the vector, as long as the calling thread has checked that index < <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7" title="Return size of vector. It may include elements under construction. ">size()</a>. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad68d1675fedef232bfae35f200ba007d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::push_back </td>
+          <td>(</td>
+          <td class="paramtype">const_reference </td>
+          <td class="paramname"><em>item</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Push item. </p>
+<p>Returns iterator pointing to the new element. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac29a9f08c0fac7c20786c7b8f4f0321a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">iterator <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::push_back </td>
+          <td>(</td>
+          <td class="paramtype">T && </td>
+          <td class="paramname"><em>item</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Push item, move-aware. </p>
+<p>Returns iterator pointing to the new element. </p>
 
 </div>
 </div>
-<a class="anchor" id="a091fcf6abc79edfa5c8bf01f742e2392"></a>
+<a class="anchor" id="a0b3284684328c58c0228c9a697ef3594"></a>
 <div class="memitem">
 <div class="memproto">
+<div class="memtemplate">
+template<typename T, class A = cache_aligned_allocator<T>> </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">const unsigned char tbb::filter::filter_is_out_of_order = 0x1<<4</td>
+          <td class="memname">void <a class="el" href="a00053.html">tbb::concurrent_vector</a>< T, A >::reserve </td>
+          <td>(</td>
+          <td class="paramtype">size_type </td>
+          <td class="paramname"><em>n</em>)</td><td></td>
+          <td></td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>4th bit distinguishes ordered vs unordered filters. </p>
-<p>The bit was not set for parallel filters in TBB 2.1 and earlier, but is_ordered() function always treats parallel filters as out of order. </p>
+<p>Allocate enough space to grow to size n without having to allocate more memory later. </p>
+<p>Like most of the methods provided for STL compatibility, this method is <em>not</em> thread safe. The capacity afterwards may be bigger than the requested reservation. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+<li>concurrent_vector.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00053.png b/doc/html/a00053.png
index a4923e5..4ffff4f 100644
Binary files a/doc/html/a00053.png and b/doc/html/a00053.png differ
diff --git a/doc/html/a00054.html b/doc/html/a00054.html
index e8c343e..93d18b1 100644
--- a/doc/html/a00054.html
+++ b/doc/html/a00054.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::filter_t< T, U > Class Template Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,67 +33,107 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00054.html">filter_t</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00054.html">const_accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00363.html">List of all members</a>  </div>
+<a href="a00373.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::filter_t< T, U > Class Template Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Class representing a chain of type-safe pipeline filters.  
+<p>Combines data access, locking, and garbage collection.  
  <a href="a00054.html#details">More...</a></p>
 
-<p><code>#include <pipeline.h></code></p>
+<p><code>#include <concurrent_hash_map.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00054.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map" alt=""/>
+  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor_map">
+<area href="a00010.html" title="Allows write access to elements and combines data access, locking, and garbage collection. " alt="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor" shape="rect" coords="0,112,488,136"/>
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ca5aef4ee14b7eddb64767b8cd5fda"></a>
+typedef const <br class="typebreak"/>
+concurrent_hash_map::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a></td></tr>
+<tr class="memdesc:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="mdescLeft"> </td><td class="mdescRight">Type of value. <br/></td></tr>
+<tr class="separator:aa8ca5aef4ee14b7eddb64767b8cd5fda"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a291e76dc7ae92a66109a102904836b62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a291e76dc7ae92a66109a102904836b62"></a>
- </td><td class="memItemRight" valign="bottom"><b>filter_t</b> (const <a class="el" href="a00054.html">filter_t</a>< T, U > &rhs)</td></tr>
-<tr class="separator:a291e76dc7ae92a66109a102904836b62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a86c29832da3f4941254b8dce9e1ff6f0"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>filter_t</b> (tbb::filter::mode mode, const Body &body)</td></tr>
-<tr class="separator:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae765b59c54ca11f9cdb9f7f2c6c3bd68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae765b59c54ca11f9cdb9f7f2c6c3bd68"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00054.html">filter_t</a>< T, U > &rhs)</td></tr>
-<tr class="separator:ae765b59c54ca11f9cdb9f7f2c6c3bd68"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a445602c2d364b5bbcd8cc9e0b7f37376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a445602c2d364b5bbcd8cc9e0b7f37376"></a>
-void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
-<tr class="separator:a445602c2d364b5bbcd8cc9e0b7f37376"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6299b523d2ae8e2613f1bc160ca99b85"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6299b523d2ae8e2613f1bc160ca99b85"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a> () const </td></tr>
+<tr class="memdesc:a6299b523d2ae8e2613f1bc160ca99b85"><td class="mdescLeft"> </td><td class="mdescRight">True if result is empty. <br/></td></tr>
+<tr class="separator:a6299b523d2ae8e2613f1bc160ca99b85"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a18390cb369369d72bdf7c867755b5190"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18390cb369369d72bdf7c867755b5190"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">release</a> ()</td></tr>
+<tr class="memdesc:a18390cb369369d72bdf7c867755b5190"><td class="mdescLeft"> </td><td class="mdescRight">Set to null. <br/></td></tr>
+<tr class="separator:a18390cb369369d72bdf7c867755b5190"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8adf04e33e7c8c876ba849f26807713a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8adf04e33e7c8c876ba849f26807713a"></a>
+const_reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a> () const </td></tr>
+<tr class="memdesc:a8adf04e33e7c8c876ba849f26807713a"><td class="mdescLeft"> </td><td class="mdescRight">Return reference to associated value in hash table. <br/></td></tr>
+<tr class="separator:a8adf04e33e7c8c876ba849f26807713a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28fa9b9e6c35d7e80217e69a7afe1ee5"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a> () const </td></tr>
+<tr class="memdesc:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="mdescLeft"> </td><td class="mdescRight">Return pointer to associated value in hash table. <br/></td></tr>
+<tr class="separator:a28fa9b9e6c35d7e80217e69a7afe1ee5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b26d22d228cf0d8678c9b346c63752c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b26d22d228cf0d8678c9b346c63752c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a> ()</td></tr>
+<tr class="memdesc:a7b26d22d228cf0d8678c9b346c63752c"><td class="mdescLeft"> </td><td class="mdescRight">Create empty result. <br/></td></tr>
+<tr class="separator:a7b26d22d228cf0d8678c9b346c63752c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbc0c85a146c912b9a0f94a7695957c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbc0c85a146c912b9a0f94a7695957c7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a> ()</td></tr>
+<tr class="memdesc:afbc0c85a146c912b9a0f94a7695957c7"><td class="mdescLeft"> </td><td class="mdescRight">Destroy result after releasing the underlying reference. <br/></td></tr>
+<tr class="separator:afbc0c85a146c912b9a0f94a7695957c7"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a05b74d408d8cd7773f7b5edfef97da1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05b74d408d8cd7773f7b5edfef97da1b"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_writer</b> ()</td></tr>
+<tr class="separator:a05b74d408d8cd7773f7b5edfef97da1b"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ac9b96f45483ddbff95a95e8e666a8f28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9b96f45483ddbff95a95e8e666a8f28"></a>
+<a class="el" href="a00100.html">node</a> * </td><td class="memItemRight" valign="bottom"><b>my_node</b></td></tr>
+<tr class="separator:ac9b96f45483ddbff95a95e8e666a8f28"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5034084f595666b47734f99a6eaefa9f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5034084f595666b47734f99a6eaefa9f"></a>
+hashcode_t </td><td class="memItemRight" valign="bottom"><b>my_hash</b></td></tr>
+<tr class="separator:a5034084f595666b47734f99a6eaefa9f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a49b422a3c97d5dc848d177246de4c149"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b422a3c97d5dc848d177246de4c149"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_proxy</b></td></tr>
-<tr class="separator:a49b422a3c97d5dc848d177246de4c149"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21460fde704da22caa222778f5abb140"><td class="memTemplParams" colspan="2"><a class="anchor" id="a21460fde704da22caa222778f5abb140"></a>
-template<typename T_ , typename U_ , typename Body > </td></tr>
-<tr class="memitem:a21460fde704da22caa222778f5abb140"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00054.html">filter_t</a>< T_, U_ > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00054.html#a21460fde704da22caa222778f5abb140">make_filter</a> (tbb::filter::mode, const Body &)</td></tr>
-<tr class="memdesc:a21460fde704da22caa222778f5abb140"><td class="mdescLeft"> </td><td class="mdescRight">Create a filter to participate in parallel_pipeline. <br/></td></tr>
-<tr class="separator:a21460fde704da22caa222778f5abb140"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa80730e1b71fa4266ca0d1dc12da6caa"></a>
-template<typename T_ , typename V_ , typename U_ > </td></tr>
-<tr class="memitem:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00054.html">filter_t</a>< T_, U_ > </td><td class="memTemplItemRight" valign="bottom"><b>operator&</b> (const <a class="el" href="a00054.html">filter_t</a>< T_, V_ > &, const <a class="el" href="a00054.html">filter_t</a>< V_, U_ > &)</td></tr>
-<tr class="separator:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a30829231c2a2f13cb12430992a0701"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a30829231c2a2f13cb12430992a0701"></a>
+class </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map< Key, T, HashCompare, Allocator ></b></td></tr>
+<tr class="separator:a9a30829231c2a2f13cb12430992a0701"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1dfccf6cc719ff15006a2b05cf70dd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1dfccf6cc719ff15006a2b05cf70dd7"></a>
+class </td><td class="memItemRight" valign="bottom"><b>accessor</b></td></tr>
+<tr class="separator:ab1dfccf6cc719ff15006a2b05cf70dd7"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename U><br/>
-class tbb::interface6::filter_t< T, U ></h3>
+<div class="textblock"><h3>template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >><br/>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</h3>
 
-<p>Class representing a chain of type-safe pipeline filters. </p>
+<p>Combines data access, locking, and garbage collection. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00047.png b/doc/html/a00054.png
similarity index 100%
copy from doc/html/a00047.png
copy to doc/html/a00054.png
diff --git a/doc/html/a00055.html b/doc/html/a00055.html
index a18a6aa..53d79f6 100644
--- a/doc/html/a00055.html
+++ b/doc/html/a00055.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::final_scan_tag Struct Reference</title>
+<title>tbb::flow::interface7::continue_msg Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,38 +33,28 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00055.html">final_scan_tag</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00055.html">continue_msg</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="a00266.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::final_scan_tag Struct Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::continue_msg Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Used to indicate that the final scan is being performed.  
+<p>An empty class used for messages that mean "I'm done".  
  <a href="a00055.html#details">More...</a></p>
 
-<p><code>#include <parallel_scan.h></code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:add2b3159a444aad51e3cf7ffe4d1d636"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add2b3159a444aad51e3cf7ffe4d1d636"></a>
-static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
-<tr class="separator:add2b3159a444aad51e3cf7ffe4d1d636"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
+<p><code>#include <flow_graph.h></code></p>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Used to indicate that the final scan is being performed. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>parallel_scan.h</li>
+<div class="textblock"><p>An empty class used for messages that mean "I'm done". </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00056.html b/doc/html/a00056.html
index bda5059..4809251 100644
--- a/doc/html/a00056.html
+++ b/doc/html/a00056.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::fixed_pool Class Reference</title>
+<title>tbb::flow::interface7::continue_node< Output > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,44 +33,141 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00056.html">fixed_pool</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00056.html">continue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00361.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00339.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::fixed_pool Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::continue_node< Output > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Implements an executable node that supports <a class="el" href="a00055.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output.  
+ <a href="a00056.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::fixed_pool:</div>
+Inheritance diagram for tbb::flow::interface7::continue_node< Output >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00056.png" usemap="#tbb::interface6::fixed_pool_map" alt=""/>
-  <map id="tbb::interface6::fixed_pool_map" name="tbb::interface6::fixed_pool_map">
+  <img src="a00056.png" usemap="#tbb::flow::interface7::continue_node< Output >_map" alt=""/>
+  <map id="tbb::flow::interface7::continue_node< Output >_map" name="tbb::flow::interface7::continue_node< Output >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,271,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ab991c2791fd727c253424c8ed32d5be5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab991c2791fd727c253424c8ed32d5be5"></a>
+typedef <a class="el" href="a00055.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:ab991c2791fd727c253424c8ed32d5be5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d48230ed7707c493a7fc6c63b9781d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d48230ed7707c493a7fc6c63b9781d0"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a8d48230ed7707c493a7fc6c63b9781d0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9754b0bba9834b11320f6779068c4523"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9754b0bba9834b11320f6779068c4523"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00055.html">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a9754b0bba9834b11320f6779068c4523"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0bc6b0b8426167ce53ac3626fccb7389"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc6b0b8426167ce53ac3626fccb7389"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a0bc6b0b8426167ce53ac3626fccb7389"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af8ff6b8ea9aa5838f37d0c5c7e383178"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8ff6b8ea9aa5838f37d0c5c7e383178"></a>
+typedef <br class="typebreak"/>
+internal::continue_input<br class="typebreak"/>
+< Output > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
+<tr class="separator:af8ff6b8ea9aa5838f37d0c5c7e383178"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a24302662809af4644758edc9a9461c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a24302662809af4644758edc9a9461c"></a>
+typedef <br class="typebreak"/>
+internal::function_output<br class="typebreak"/>
+< output_type > </td><td class="memItemRight" valign="bottom"><b>fOutput_type</b></td></tr>
+<tr class="separator:a9a24302662809af4644758edc9a9461c"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aa3811fe3d437ba2eefa926d52732491a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3811fe3d437ba2eefa926d52732491a"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html#aa3811fe3d437ba2eefa926d52732491a">fixed_pool</a> (void *buf, size_t size)</td></tr>
-<tr class="memdesc:aa3811fe3d437ba2eefa926d52732491a"><td class="mdescLeft"> </td><td class="mdescRight">construct pool with underlying allocator <br/></td></tr>
-<tr class="separator:aa3811fe3d437ba2eefa926d52732491a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab854a85575e5c1e9c9f4d3eafcc28044"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html#ab854a85575e5c1e9c9f4d3eafcc28044">~fixed_pool</a> ()</td></tr>
-<tr class="memdesc:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="mdescLeft"> </td><td class="mdescRight">destroy pool <br/></td></tr>
-<tr class="separator:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7b96b9eb41772ff1d7a52329ac56b8f0"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00056.html#a7b96b9eb41772ff1d7a52329ac56b8f0">continue_node</a> (<a class="el" href="a00070.html">graph</a> &g, Body body)</td></tr>
+<tr class="memdesc:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for executable node with <a class="el" href="a00055.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. <br/></td></tr>
+<tr class="separator:a7b96b9eb41772ff1d7a52329ac56b8f0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05e8957de1cb5a940d2ed3f9fc7637ed"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00056.html#a05e8957de1cb5a940d2ed3f9fc7637ed">continue_node</a> (<a class="el" href="a00070.html">graph</a> &g, int number_of_predecessors, Body body)</td></tr>
+<tr class="memdesc:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for executable node with <a class="el" href="a00055.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. <br/></td></tr>
+<tr class="separator:a05e8957de1cb5a940d2ed3f9fc7637ed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ab0750127a7ead08e14b8910a21cf50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ab0750127a7ead08e14b8910a21cf50"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html#a8ab0750127a7ead08e14b8910a21cf50">continue_node</a> (const <a class="el" href="a00056.html">continue_node</a> &src)</td></tr>
+<tr class="memdesc:a8ab0750127a7ead08e14b8910a21cf50"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a8ab0750127a7ead08e14b8910a21cf50"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9760c1d6e4a2861fa42521f5a669b542"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9760c1d6e4a2861fa42521f5a669b542"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a9760c1d6e4a2861fa42521f5a669b542"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1974bde02e343fd028995cf632479d96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1974bde02e343fd028995cf632479d96"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a1974bde02e343fd028995cf632479d96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:add49002d89a2d32fa244b3d5100625c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add49002d89a2d32fa244b3d5100625c2"></a>
+<a class="el" href="a00027.html">internal::broadcast_cache</a><br class="typebreak"/>
+< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
+<tr class="separator:add49002d89a2d32fa244b3d5100625c2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abce39516e3b0bdcee87c10594b516637"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abce39516e3b0bdcee87c10594b516637"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:abce39516e3b0bdcee87c10594b516637"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Output><br/>
+class tbb::flow::interface7::continue_node< Output ></h3>
+
+<p>Implements an executable node that supports <a class="el" href="a00055.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00056.png b/doc/html/a00056.png
index 8cf0f93..b695c11 100644
Binary files a/doc/html/a00056.png and b/doc/html/a00056.png differ
diff --git a/doc/html/a00057.html b/doc/html/a00057.html
index c249418..875b2a2 100644
--- a/doc/html/a00057.html
+++ b/doc/html/a00057.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::flattened2d< Container > Class Template Reference</title>
+<title>tbb::flow::interface7::continue_receiver Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,90 +33,246 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00057.html">flattened2d</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00057.html">continue_receiver</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00355.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00331.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::flattened2d< Container > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::continue_receiver Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Base class for receivers of completion messages.  
+ <a href="a00057.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::continue_receiver:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00057.png" usemap="#tbb::flow::interface7::continue_receiver_map" alt=""/>
+  <map id="tbb::flow::interface7::continue_receiver_map" name="tbb::flow::interface7::continue_receiver_map">
+<area href="a00124.html" alt="tbb::flow::interface7::receiver< continue_msg >" shape="rect" coords="0,0,276,24"/>
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b84f8f2cc4499f49d17141eaedc99c0"></a>
-typedef conval_type::size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a></td></tr>
-<tr class="memdesc:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="mdescLeft"> </td><td class="mdescRight">Basic types. <br/></td></tr>
-<tr class="separator:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab0352636ee7434478866739224852d32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0352636ee7434478866739224852d32"></a>
+<tr class="memitem:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7474ed0edad2bb26d9f86065ecf2c93d"></a>
+typedef <a class="el" href="a00055.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a></td></tr>
+<tr class="memdesc:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="mdescLeft"> </td><td class="mdescRight">The input type. <br/></td></tr>
+<tr class="separator:a7474ed0edad2bb26d9f86065ecf2c93d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a86d210b5614d47aaa43731b7e303751f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86d210b5614d47aaa43731b7e303751f"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00055.html">continue_msg</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a></td></tr>
+<tr class="memdesc:a86d210b5614d47aaa43731b7e303751f"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:a86d210b5614d47aaa43731b7e303751f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5e10cb698cde6f18425b0ce8eff3108"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5e10cb698cde6f18425b0ce8eff3108"></a>
 typedef <br class="typebreak"/>
-conval_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:ab0352636ee7434478866739224852d32"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a426e0eab82833206df0dc36648419647"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a426e0eab82833206df0dc36648419647"></a>
-typedef conval_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:a426e0eab82833206df0dc36648419647"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7070453b83df5930615d4307eb2f38b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7070453b83df5930615d4307eb2f38b5"></a>
-typedef conval_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a7070453b83df5930615d4307eb2f38b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a92b8ef6b07970e3f973b3ece9d2a6201"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92b8ef6b07970e3f973b3ece9d2a6201"></a>
-typedef conval_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a92b8ef6b07970e3f973b3ece9d2a6201"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9715dae5bf107ca3530a8c5bea12739c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9715dae5bf107ca3530a8c5bea12739c"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:ab5e10cb698cde6f18425b0ce8eff3108"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abc4774db0bda7ecc6221008f834fcb70"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc4774db0bda7ecc6221008f834fcb70"></a>
 typedef <br class="typebreak"/>
-conval_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a9715dae5bf107ca3530a8c5bea12739c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a14285cc70108c2f0bc417bb034484a0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14285cc70108c2f0bc417bb034484a0b"></a>
-typedef conval_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a14285cc70108c2f0bc417bb034484a0b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4f67e5e005e394746b4c6d54a5c2748c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f67e5e005e394746b4c6d54a5c2748c"></a>
-typedef conval_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a4f67e5e005e394746b4c6d54a5c2748c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a14b3602cf1c408c89015d7bf6bf59072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14b3602cf1c408c89015d7bf6bf59072"></a>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:abc4774db0bda7ecc6221008f834fcb70"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef <a class="el" href="a00055.html">continue_msg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00055.html">continue_msg</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
 typedef <br class="typebreak"/>
-internal::segmented_iterator<br class="typebreak"/>
-< Container, value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:a14b3602cf1c408c89015d7bf6bf59072"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a295c0b8755120359595a1b1f7447bbc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a295c0b8755120359595a1b1f7447bbc8"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
 typedef <br class="typebreak"/>
-internal::segmented_iterator<br class="typebreak"/>
-< Container, const value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a295c0b8755120359595a1b1f7447bbc8"><td class="memSeparator" colspan="2"> </td></tr>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a96d4bef4d78e9e04f43a4ce0855f2ec7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96d4bef4d78e9e04f43a4ce0855f2ec7"></a>
- </td><td class="memItemRight" valign="bottom"><b>flattened2d</b> (const Container &c, typename Container::const_iterator b, typename Container::const_iterator e)</td></tr>
-<tr class="separator:a96d4bef4d78e9e04f43a4ce0855f2ec7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abcc3a2e4b1eae8ef6ee1dfba8b030680"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcc3a2e4b1eae8ef6ee1dfba8b030680"></a>
- </td><td class="memItemRight" valign="bottom"><b>flattened2d</b> (const Container &c)</td></tr>
-<tr class="separator:abcc3a2e4b1eae8ef6ee1dfba8b030680"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a783ca9408f58ca7f5df00bc1035ff6b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a783ca9408f58ca7f5df00bc1035ff6b2"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
-<tr class="separator:a783ca9408f58ca7f5df00bc1035ff6b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab722e1c2b58641d516cb98b0360b9734"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab722e1c2b58641d516cb98b0360b9734"></a>
-iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
-<tr class="separator:ab722e1c2b58641d516cb98b0360b9734"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf0c0dff2b7b8530f06e6aa22b9a79ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf0c0dff2b7b8530f06e6aa22b9a79ea"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
-<tr class="separator:acf0c0dff2b7b8530f06e6aa22b9a79ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b79fe79b6939327ab74628283974226"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b79fe79b6939327ab74628283974226"></a>
-const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
-<tr class="separator:a5b79fe79b6939327ab74628283974226"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade48bc8ab723d06790e5d98365e8a4f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade48bc8ab723d06790e5d98365e8a4f5"></a>
-<a class="el" href="a00057.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a> </td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
-<tr class="separator:ade48bc8ab723d06790e5d98365e8a4f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ac173b0a739731b0b1db5a1e91d9326"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ac173b0a739731b0b1db5a1e91d9326"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a1ac173b0a739731b0b1db5a1e91d9326">continue_receiver</a> (int number_of_predecessors=0)</td></tr>
+<tr class="memdesc:a1ac173b0a739731b0b1db5a1e91d9326"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a1ac173b0a739731b0b1db5a1e91d9326"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3055f8a570f7558b6eb9e210feb91b90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3055f8a570f7558b6eb9e210feb91b90"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a3055f8a570f7558b6eb9e210feb91b90">continue_receiver</a> (const <a class="el" href="a00057.html">continue_receiver</a> &src)</td></tr>
+<tr class="memdesc:a3055f8a570f7558b6eb9e210feb91b90"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a3055f8a570f7558b6eb9e210feb91b90"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ca2de23e1e1eeb7071a838a457a50b2"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a2ca2de23e1e1eeb7071a838a457a50b2">~continue_receiver</a> ()</td></tr>
+<tr class="memdesc:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a2ca2de23e1e1eeb7071a838a457a50b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ff043995b7b4d39ab0ec41c9e3628bf"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#a9ff043995b7b4d39ab0ec41c9e3628bf">register_predecessor</a> (<a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="mdescLeft"> </td><td class="mdescRight">Increments the trigger threshold. <br/></td></tr>
+<tr class="separator:a9ff043995b7b4d39ab0ec41c9e3628bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea58a2200f20acd9cda829ba6958b22a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#aea58a2200f20acd9cda829ba6958b22a">remove_predecessor</a> (<a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:aea58a2200f20acd9cda829ba6958b22a"><td class="mdescLeft"> </td><td class="mdescRight">Decrements the trigger threshold.  <a href="#aea58a2200f20acd9cda829ba6958b22a">More...</a><br/></td></tr>
+<tr class="separator:aea58a2200f20acd9cda829ba6958b22a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6427bfdcc692e76b86a52bc86869d17d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6427bfdcc692e76b86a52bc86869d17d"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a6427bfdcc692e76b86a52bc86869d17d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a70bf1963304bb90d92075d412e890863"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70bf1963304bb90d92075d412e890863"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &s)</td></tr>
+<tr class="separator:a70bf1963304bb90d92075d412e890863"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae4f3b17d7a3df79bd0ff09745b1218ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4f3b17d7a3df79bd0ff09745b1218ac"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> &s)</td></tr>
+<tr class="separator:ae4f3b17d7a3df79bd0ff09745b1218ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a94141a7210a22dd46746518c9878cf9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a94141a7210a22dd46746518c9878cf9e"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:a94141a7210a22dd46746518c9878cf9e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe8eb9ac6a687dd4dbcfd98e48efa990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe8eb9ac6a687dd4dbcfd98e48efa990"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:abe8eb9ac6a687dd4dbcfd98e48efa990"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const <a class="el" href="a00055.html">continue_msg</a> &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a67b19ab95b89f43e6033d8d124cc84be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67b19ab95b89f43e6033d8d124cc84be"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const <a class="el" href="a00057.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a> &)</td></tr>
+<tr class="separator:a67b19ab95b89f43e6033d8d124cc84be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af777c0ca7aff9c98aa2c8179a485613d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af777c0ca7aff9c98aa2c8179a485613d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:af777c0ca7aff9c98aa2c8179a485613d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf70ce80d67a565d04e029da461bbe72"><td class="memItemLeft" align="right" valign="top">virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html#adf70ce80d67a565d04e029da461bbe72">execute</a> ()=0</td></tr>
+<tr class="memdesc:adf70ce80d67a565d04e029da461bbe72"><td class="mdescLeft"> </td><td class="mdescRight">Does whatever should happen when the threshold is reached.  <a href="#adf70ce80d67a565d04e029da461bbe72">More...</a><br/></td></tr>
+<tr class="separator:adf70ce80d67a565d04e029da461bbe72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa0372ce2435ae0f97c2db34af185e6f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0372ce2435ae0f97c2db34af185e6f7"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:aa0372ce2435ae0f97c2db34af185e6f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a6b8534e4346e437a059a4e40c46768e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b8534e4346e437a059a4e40c46768e8"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:a6b8534e4346e437a059a4e40c46768e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a507abe0cc02ae0663e0906a83a8a39da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a507abe0cc02ae0663e0906a83a8a39da"></a>
+<a class="el" href="a00145.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
+<tr class="separator:a507abe0cc02ae0663e0906a83a8a39da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa5e52e452426600619b4431a649a68a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa5e52e452426600619b4431a649a68a"></a>
+int </td><td class="memItemRight" valign="bottom"><b>my_predecessor_count</b></td></tr>
+<tr class="separator:afa5e52e452426600619b4431a649a68a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a71ae0a26f737efd7d38c9fc868d5ee41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71ae0a26f737efd7d38c9fc868d5ee41"></a>
+int </td><td class="memItemRight" valign="bottom"><b>my_current_count</b></td></tr>
+<tr class="separator:a71ae0a26f737efd7d38c9fc868d5ee41"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8b5668e21d779aefc8843347f9f78517"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b5668e21d779aefc8843347f9f78517"></a>
+int </td><td class="memItemRight" valign="bottom"><b>my_initial_predecessor_count</b></td></tr>
+<tr class="separator:a8b5668e21d779aefc8843347f9f78517"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05ec930a348f7eed564236d00edbda24"></a>
+template<typename U > </td></tr>
+<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>limiter_node</b></td></tr>
+<tr class="separator:a05ec930a348f7eed564236d00edbda24"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplParams" colspan="2"><a class="anchor" id="a73cd25db4e6e9497940262f70f3ffc54"></a>
+template<typename TT , typename M > </td></tr>
+<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::successor_cache</b></td></tr>
+<tr class="separator:a73cd25db4e6e9497940262f70f3ffc54"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Base class for receivers of completion messages. </p>
+<p>These receivers automatically reset, but cannot be explicitly waited on </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="adf70ce80d67a565d04e029da461bbe72"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual task* tbb::flow::interface7::continue_receiver::execute </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Does whatever should happen when the threshold is reached. </p>
+<p>This should be very fast or else spawn a task. This is called while the sender is blocked in the <a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a" title="Put an item to the receiver. ">try_put()</a>. </p>
+
+</div>
+</div>
+<a class="anchor" id="aea58a2200f20acd9cda829ba6958b22a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::flow::interface7::continue_receiver::remove_predecessor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> & </td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Decrements the trigger threshold. </p>
+<p>Does not check to see if the removal of the predecessor now makes the current count exceed the new threshold. So removing a predecessor while the graph is active can cause unexpected results. </p>
+
+<p>Reimplemented from <a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< continue_msg ></a>.</p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>enumerable_thread_specific.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00050.png b/doc/html/a00057.png
similarity index 100%
copy from doc/html/a00050.png
copy to doc/html/a00057.png
diff --git a/doc/html/a00058.html b/doc/html/a00058.html
index 9d1020e..922bc26 100644
--- a/doc/html/a00058.html
+++ b/doc/html/a00058.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::flow_control Class Reference</title>
+<title>tbb::internal::critical_section_v4 Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,67 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00058.html">flow_control</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00058.html">critical_section_v4</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00362.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00409.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::flow_control Class Reference</div>  </div>
+<div class="title">tbb::internal::critical_section_v4 Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>input_filter control to signal end-of-input for parallel_pipeline  
- <a href="a00058.html#details">More...</a></p>
-
-<p><code>#include <pipeline.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::internal::critical_section_v4:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00058.png" usemap="#tbb::internal::critical_section_v4_map" alt=""/>
+  <map id="tbb::internal::critical_section_v4_map" name="tbb::internal::critical_section_v4_map">
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html">scoped_lock</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a21a61b812ca97a6eb5549dab4b4ae490"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21a61b812ca97a6eb5549dab4b4ae490"></a>
-void </td><td class="memItemRight" valign="bottom"><b>stop</b> ()</td></tr>
-<tr class="separator:a21a61b812ca97a6eb5549dab4b4ae490"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab661617ca865c4af0f34e07276f73c9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab661617ca865c4af0f34e07276f73c9e"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+<tr class="separator:ab661617ca865c4af0f34e07276f73c9e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb1ccdfc59fdd3f5a3a8db17c56102e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb1ccdfc59fdd3f5a3a8db17c56102e8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>lock</b> ()</td></tr>
+<tr class="separator:afb1ccdfc59fdd3f5a3a8db17c56102e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbbd611ea04432e112b08e56251bc8b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbbd611ea04432e112b08e56251bc8b5"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>try_lock</b> ()</td></tr>
+<tr class="separator:adbbd611ea04432e112b08e56251bc8b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a081d4eae71879fd7dcf2c4ca9ea7fb67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a081d4eae71879fd7dcf2c4ca9ea7fb67"></a>
+void </td><td class="memItemRight" valign="bottom"><b>unlock</b> ()</td></tr>
+<tr class="separator:a081d4eae71879fd7dcf2c4ca9ea7fb67"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ae4743f434cefacb6650e3e736daf9392"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae4743f434cefacb6650e3e736daf9392"></a>
-template<typename T , typename U , typename Body > </td></tr>
-<tr class="memitem:ae4743f434cefacb6650e3e736daf9392"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concrete_filter</b></td></tr>
-<tr class="separator:ae4743f434cefacb6650e3e736daf9392"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a7a62f98ad578ec8ac01d88de55bd271c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a62f98ad578ec8ac01d88de55bd271c"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a7a62f98ad578ec8ac01d88de55bd271c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47f75eb62f02cbdee0d602dff38075e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f75eb62f02cbdee0d602dff38075e9"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:a47f75eb62f02cbdee0d602dff38075e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a12f986c4c554db133c2ae657acf2a496"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12f986c4c554db133c2ae657acf2a496"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+<tr class="separator:a12f986c4c554db133c2ae657acf2a496"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>input_filter control to signal end-of-input for parallel_pipeline </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>critical_section.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00051.png b/doc/html/a00058.png
similarity index 100%
copy from doc/html/a00051.png
copy to doc/html/a00058.png
diff --git a/doc/html/a00059.html b/doc/html/a00059.html
index 89c7547..13031b4 100644
--- a/doc/html/a00059.html
+++ b/doc/html/a00059.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator > Class Template Reference</title>
+<title>tbb::flow::interface7::internal::edge_container< C > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,130 +33,59 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00059.html">function_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00059.html">edge_container</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00316.html">List of all members</a>  </div>
+<a href="a00366.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::internal::edge_container< C > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Implements a function node that supports Input -> Output.  
- <a href="a00059.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00059.png" usemap="#tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator >_map" alt=""/>
-  <map id="tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator >_map" name="tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,488,80"/>
-</map>
- </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a80a44be5965211637cf82c15a6b18261"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80a44be5965211637cf82c15a6b18261"></a>
-typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a80a44be5965211637cf82c15a6b18261"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a456ce2835b002fe4cf43b36e45056026"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a456ce2835b002fe4cf43b36e45056026"></a>
-typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a456ce2835b002fe4cf43b36e45056026"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a14d4ca431da0a193f2de72fb96fbcf90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14d4ca431da0a193f2de72fb96fbcf90"></a>
-typedef <a class="el" href="a00124.html">sender</a>< input_type > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a14d4ca431da0a193f2de72fb96fbcf90"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0c8984b2796d66a6b481b5202b2cbc5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c8984b2796d66a6b481b5202b2cbc5c"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a0c8984b2796d66a6b481b5202b2cbc5c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad2af7ca720b0ef772e94ffb4b1eea2e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2af7ca720b0ef772e94ffb4b1eea2e3"></a>
-typedef <br class="typebreak"/>
-internal::function_input<br class="typebreak"/>
-< input_type, output_type, <br class="typebreak"/>
-Allocator > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
-<tr class="separator:ad2af7ca720b0ef772e94ffb4b1eea2e3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a04aa2570e3c20a032670b9c47bdaca1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04aa2570e3c20a032670b9c47bdaca1b"></a>
-typedef <br class="typebreak"/>
-internal::function_output<br class="typebreak"/>
-< output_type > </td><td class="memItemRight" valign="bottom"><b>fOutput_type</b></td></tr>
-<tr class="separator:a04aa2570e3c20a032670b9c47bdaca1b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2d06967c2c2f22bf68ab5f0d06239724"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d06967c2c2f22bf68ab5f0d06239724"></a>
+typedef std::list< C <br class="typebreak"/>
+*, <a class="el" href="a00159.html">tbb::tbb_allocator</a>< C * > > </td><td class="memItemRight" valign="bottom"><b>edge_list_type</b></td></tr>
+<tr class="separator:a2d06967c2c2f22bf68ab5f0d06239724"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:aea86b14a72337b597c80d706ca257402"><td class="memTemplParams" colspan="2"><a class="anchor" id="aea86b14a72337b597c80d706ca257402"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:aea86b14a72337b597c80d706ca257402"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00059.html#aea86b14a72337b597c80d706ca257402">function_node</a> (<a class="el" href="a00061.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
-<tr class="memdesc:aea86b14a72337b597c80d706ca257402"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:aea86b14a72337b597c80d706ca257402"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aecf13ece7b2106f4630e46d6c5327997"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecf13ece7b2106f4630e46d6c5327997"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00059.html#aecf13ece7b2106f4630e46d6c5327997">function_node</a> (const <a class="el" href="a00059.html">function_node</a> &src)</td></tr>
-<tr class="memdesc:aecf13ece7b2106f4630e46d6c5327997"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aecf13ece7b2106f4630e46d6c5327997"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a039f66594d16f9f7dd8bb6879068aafe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a039f66594d16f9f7dd8bb6879068aafe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a039f66594d16f9f7dd8bb6879068aafe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a8c651f8cf4e7a91ec55bd03ec2587e46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c651f8cf4e7a91ec55bd03ec2587e46"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a8c651f8cf4e7a91ec55bd03ec2587e46"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aea5d18bc2ae6c8169cc4b47a67c9eb8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea5d18bc2ae6c8169cc4b47a67c9eb8c"></a>
-<a class="el" href="a00024.html">internal::broadcast_cache</a><br class="typebreak"/>
-< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
-<tr class="separator:aea5d18bc2ae6c8169cc4b47a67c9eb8c"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3f2166f764e6763f2e7555c3221d4a18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f2166f764e6763f2e7555c3221d4a18"></a>
+void </td><td class="memItemRight" valign="bottom"><b>add_edge</b> (C &s)</td></tr>
+<tr class="separator:a3f2166f764e6763f2e7555c3221d4a18"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9e82eb2f7c88f70c32dbbc07d611817"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9e82eb2f7c88f70c32dbbc07d611817"></a>
+void </td><td class="memItemRight" valign="bottom"><b>delete_edge</b> (C &s)</td></tr>
+<tr class="separator:ac9e82eb2f7c88f70c32dbbc07d611817"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad6cdc986955e0093dc6265a317e06078"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6cdc986955e0093dc6265a317e06078"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_edges</b> (edge_list_type &v)</td></tr>
+<tr class="separator:ad6cdc986955e0093dc6265a317e06078"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5116952e2f84db3930ef67dfb33eae2f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5116952e2f84db3930ef67dfb33eae2f"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>edge_count</b> ()</td></tr>
+<tr class="separator:a5116952e2f84db3930ef67dfb33eae2f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa493403da8fd306842468240cd6ae261"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa493403da8fd306842468240cd6ae261"></a>
+void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:aa493403da8fd306842468240cd6ae261"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95b528677dff16e4675ac0ace3bb9a14"><td class="memTemplParams" colspan="2"><a class="anchor" id="a95b528677dff16e4675ac0ace3bb9a14"></a>
+template<typename S > </td></tr>
+<tr class="memitem:a95b528677dff16e4675ac0ace3bb9a14"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>sender_extract</b> (S &s)</td></tr>
+<tr class="separator:a95b528677dff16e4675ac0ace3bb9a14"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a64f6139acdf1bd52f2c6e6fdb208dd33"><td class="memTemplParams" colspan="2"><a class="anchor" id="a64f6139acdf1bd52f2c6e6fdb208dd33"></a>
+template<typename R > </td></tr>
+<tr class="memitem:a64f6139acdf1bd52f2c6e6fdb208dd33"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>receiver_extract</b> (R &r)</td></tr>
+<tr class="separator:a64f6139acdf1bd52f2c6e6fdb208dd33"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Input, typename Output = continue_msg, graph_buffer_policy = queueing, typename Allocator = cache_aligned_allocator<Input>><br/>
-class tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></h3>
-
-<p>Implements a function node that supports Input -> Output. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00059.png b/doc/html/a00059.png
deleted file mode 100644
index 3696c73..0000000
Binary files a/doc/html/a00059.png and /dev/null differ
diff --git a/doc/html/a00060.html b/doc/html/a00060.html
index cc9b5b0..de251d7 100644
--- a/doc/html/a00060.html
+++ b/doc/html/a00060.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::function_node< Input, Output, queueing, Allocator > Class Template Reference</title>
+<title>tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,135 +33,49 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00060.html">function_node< Input, Output, queueing, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">concurrent_vector</a></li><li class="navelem"><b>push_back_helper</b></li><li class="navelem"><a class="el" href="a00060.html">element_construction_guard</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00317.html">List of all members</a>  </div>
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00278.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Implements a function node that supports Input -> Output.  
- <a href="a00060.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::function_node< Input, Output, queueing, Allocator >:</div>
+Inheritance diagram for tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00060.png" usemap="#tbb::flow::interface7::function_node< Input, Output, queueing, Allocator >_map" alt=""/>
-  <map id="tbb::flow::interface7::function_node< Input, Output, queueing, Allocator >_map" name="tbb::flow::interface7::function_node< Input, Output, queueing, Allocator >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,424,80"/>
+  <img src="a00060.png" usemap="#tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard_map" alt=""/>
+  <map id="tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard_map" name="tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:acdcddca4c1ec05894f64e7d8d2c17f9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdcddca4c1ec05894f64e7d8d2c17f9a"></a>
-typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:acdcddca4c1ec05894f64e7d8d2c17f9a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4242bb1c87980cb82a2f7f5e3ac74bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4242bb1c87980cb82a2f7f5e3ac74bb"></a>
-typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:aa4242bb1c87980cb82a2f7f5e3ac74bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae23adda079c986676f6fc0f00f8e04e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae23adda079c986676f6fc0f00f8e04e7"></a>
-typedef <a class="el" href="a00124.html">sender</a>< input_type > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:ae23adda079c986676f6fc0f00f8e04e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3808ea4c85d7d70487c8d7174e3acf4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3808ea4c85d7d70487c8d7174e3acf4"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:af3808ea4c85d7d70487c8d7174e3acf4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21eeb62c7634bd8f63f6ae230f04e8e3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21eeb62c7634bd8f63f6ae230f04e8e3"></a>
-typedef <br class="typebreak"/>
-internal::function_input<br class="typebreak"/>
-< input_type, output_type, <br class="typebreak"/>
-Allocator > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
-<tr class="separator:a21eeb62c7634bd8f63f6ae230f04e8e3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa22b20ae640ffd8cf698ac0a0b64443b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa22b20ae640ffd8cf698ac0a0b64443b"></a>
-typedef <br class="typebreak"/>
-internal::function_input_queue<br class="typebreak"/>
-< input_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>queue_type</b></td></tr>
-<tr class="separator:aa22b20ae640ffd8cf698ac0a0b64443b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa786e1923ed0e5568299e06b7f1c420a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa786e1923ed0e5568299e06b7f1c420a"></a>
-typedef <br class="typebreak"/>
-internal::function_output<br class="typebreak"/>
-< output_type > </td><td class="memItemRight" valign="bottom"><b>fOutput_type</b></td></tr>
-<tr class="separator:aa786e1923ed0e5568299e06b7f1c420a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a1b0413b2ec13a9d2ee22dfeb6555a616"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1b0413b2ec13a9d2ee22dfeb6555a616"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a1b0413b2ec13a9d2ee22dfeb6555a616"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00060.html#a1b0413b2ec13a9d2ee22dfeb6555a616">function_node</a> (<a class="el" href="a00061.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
-<tr class="memdesc:a1b0413b2ec13a9d2ee22dfeb6555a616"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a1b0413b2ec13a9d2ee22dfeb6555a616"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad1cb832fe1edee0b0d75e569b62c9c1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1cb832fe1edee0b0d75e569b62c9c1c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html#ad1cb832fe1edee0b0d75e569b62c9c1c">function_node</a> (const <a class="el" href="a00059.html">function_node</a> &src)</td></tr>
-<tr class="memdesc:ad1cb832fe1edee0b0d75e569b62c9c1c"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:ad1cb832fe1edee0b0d75e569b62c9c1c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47c62a22a5cad55624af0cdd4f011385"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47c62a22a5cad55624af0cdd4f011385"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a47c62a22a5cad55624af0cdd4f011385"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a8158a42110904fc696385fe1862a23dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8158a42110904fc696385fe1862a23dd"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a8158a42110904fc696385fe1862a23dd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae92927bb4825111e7295f1f54d806b26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae92927bb4825111e7295f1f54d806b26"></a>
-<a class="el" href="a00024.html">internal::broadcast_cache</a><br class="typebreak"/>
-< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
-<tr class="separator:ae92927bb4825111e7295f1f54d806b26"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab4eaaf8394013e2af109f6228ab1bebe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4eaaf8394013e2af109f6228ab1bebe"></a>
+ </td><td class="memItemRight" valign="bottom"><b>element_construction_guard</b> (pointer an_element)</td></tr>
+<tr class="separator:ab4eaaf8394013e2af109f6228ab1bebe"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adcc00c3764106ca035731a44b92238a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcc00c3764106ca035731a44b92238a8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>dismiss</b> ()</td></tr>
+<tr class="separator:adcc00c3764106ca035731a44b92238a8"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:abdb5e90a894c8d1f19a1a0c53f8779e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdb5e90a894c8d1f19a1a0c53f8779e8"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>element</b></td></tr>
+<tr class="separator:abdb5e90a894c8d1f19a1a0c53f8779e8"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Input, typename Output, typename Allocator><br/>
-class tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></h3>
-
-<p>Implements a function node that supports Input -> Output. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_vector.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00060.png b/doc/html/a00060.png
index c067567..0b05314 100644
Binary files a/doc/html/a00060.png and b/doc/html/a00060.png differ
diff --git a/doc/html/a00061.html b/doc/html/a00061.html
index d6f9476..ab0d500 100644
--- a/doc/html/a00061.html
+++ b/doc/html/a00061.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::graph Class Reference</title>
+<title>tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,7 +33,7 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00061.html">graph</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00061.html">enumerable_thread_specific</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
@@ -42,302 +42,203 @@
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
 <a href="#friends">Friends</a> |
-<a href="a00313.html">List of all members</a>  </div>
+<a href="a00392.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph Class Reference</div>  </div>
+<div class="title">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference<div class="ingroups"><a class="el" href="a00256.html">Containers</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>The graph class.  
+<p>The <a class="el" href="a00061.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container.  
  <a href="a00061.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
+<p><code>#include <enumerable_thread_specific.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::graph:</div>
+Inheritance diagram for tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00061.png" usemap="#tbb::flow::interface7::graph_map" alt=""/>
-  <map id="tbb::flow::interface7::graph_map" name="tbb::flow::interface7::graph_map">
+  <img src="a00061.png" usemap="#tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map" alt=""/>
+  <map id="tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map" name="tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:aadf8d25297819e6b7c01e271ba504906"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadf8d25297819e6b7c01e271ba504906"></a>
-typedef <a class="el" href="a00062.html">graph_iterator</a>< <a class="el" href="a00061.html">graph</a>, <br class="typebreak"/>
-<a class="el" href="a00063.html">graph_node</a> > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
-<tr class="separator:aadf8d25297819e6b7c01e271ba504906"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a278ce7d4ece4894554b6706d915e16a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a278ce7d4ece4894554b6706d915e16a4"></a>
-typedef <a class="el" href="a00062.html">graph_iterator</a>< const <br class="typebreak"/>
-<a class="el" href="a00061.html">graph</a>, const <a class="el" href="a00063.html">graph_node</a> > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
-<tr class="separator:a278ce7d4ece4894554b6706d915e16a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad50ceae1b0e91d0fd31fe506e690692b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50ceae1b0e91d0fd31fe506e690692b"></a>
+typedef Allocator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ad50ceae1b0e91d0fd31fe506e690692b">allocator_type</a></td></tr>
+<tr class="memdesc:ad50ceae1b0e91d0fd31fe506e690692b"><td class="mdescLeft"> </td><td class="mdescRight">Basic types. <br/></td></tr>
+<tr class="separator:ad50ceae1b0e91d0fd31fe506e690692b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a931b97e237cd2ed6eabe0d939bd141da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a931b97e237cd2ed6eabe0d939bd141da"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a931b97e237cd2ed6eabe0d939bd141da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a353a42e7bdda1720b7150cca99cf730b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a353a42e7bdda1720b7150cca99cf730b"></a>
+typedef T & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a353a42e7bdda1720b7150cca99cf730b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6c722a4b20fb6cae21316240b61d98d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c722a4b20fb6cae21316240b61d98d2"></a>
+typedef const T & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a6c722a4b20fb6cae21316240b61d98d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad88abc185701214e53e81973235ab6de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad88abc185701214e53e81973235ab6de"></a>
+typedef T * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:ad88abc185701214e53e81973235ab6de"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4aff438f46812452ab4a6f893df94fc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4aff438f46812452ab4a6f893df94fc3"></a>
+typedef const T * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a4aff438f46812452ab4a6f893df94fc3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a65e9cdc58e19d96b31b467c70c79122d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65e9cdc58e19d96b31b467c70c79122d"></a>
+typedef <br class="typebreak"/>
+internal_collection_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a65e9cdc58e19d96b31b467c70c79122d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0b6f002367fa7ca2e3e245e76d91ea7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b6f002367fa7ca2e3e245e76d91ea7e"></a>
+typedef <br class="typebreak"/>
+internal_collection_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a0b6f002367fa7ca2e3e245e76d91ea7e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a713e97c954eef04e3fda62cf8c8bd63f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a713e97c954eef04e3fda62cf8c8bd63f"></a>
+typedef <br class="typebreak"/>
+internal::enumerable_thread_specific_iterator<br class="typebreak"/>
+< <a class="el" href="a00053.html">internal_collection_type</a>, <br class="typebreak"/>
+value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a713e97c954eef04e3fda62cf8c8bd63f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9dacd1e38e45ee787faafd3a71b23fc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dacd1e38e45ee787faafd3a71b23fc2"></a>
+typedef <br class="typebreak"/>
+internal::enumerable_thread_specific_iterator<br class="typebreak"/>
+< <a class="el" href="a00053.html">internal_collection_type</a>, <br class="typebreak"/>
+const value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a9dacd1e38e45ee787faafd3a71b23fc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2200200e24eaf5ed6496ff3eaa6c4dcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2200200e24eaf5ed6496ff3eaa6c4dcc"></a>
+typedef generic_range_type<br class="typebreak"/>
+< iterator > </td><td class="memItemRight" valign="bottom"><b>range_type</b></td></tr>
+<tr class="separator:a2200200e24eaf5ed6496ff3eaa6c4dcc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9877dc4e09dc6c625a86a463f56f180d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9877dc4e09dc6c625a86a463f56f180d"></a>
+typedef generic_range_type<br class="typebreak"/>
+< const_iterator > </td><td class="memItemRight" valign="bottom"><b>const_range_type</b></td></tr>
+<tr class="separator:a9877dc4e09dc6c625a86a463f56f180d"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ac274a9006e66ecc75bcd59f784fe1867"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac274a9006e66ecc75bcd59f784fe1867"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ac274a9006e66ecc75bcd59f784fe1867">graph</a> ()</td></tr>
-<tr class="memdesc:ac274a9006e66ecc75bcd59f784fe1867"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a graph with isolated <a class="el" href="a00138.html">task_group_context</a>. <br/></td></tr>
-<tr class="separator:ac274a9006e66ecc75bcd59f784fe1867"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a656cee3d0240a3f142a450800e6b17c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a656cee3d0240a3f142a450800e6b17c7"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a656cee3d0240a3f142a450800e6b17c7">graph</a> (<a class="el" href="a00138.html">task_group_context</a> &use_this_context)</td></tr>
-<tr class="memdesc:a656cee3d0240a3f142a450800e6b17c7"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a graph with use_this_context as context. <br/></td></tr>
-<tr class="separator:a656cee3d0240a3f142a450800e6b17c7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3412df4d4bf0113aed93c958bbb49ec4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a3412df4d4bf0113aed93c958bbb49ec4">~graph</a> ()</td></tr>
-<tr class="memdesc:a3412df4d4bf0113aed93c958bbb49ec4"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the graph.  <a href="#a3412df4d4bf0113aed93c958bbb49ec4">More...</a><br/></td></tr>
-<tr class="separator:a3412df4d4bf0113aed93c958bbb49ec4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d13293f3c2d0f2e79e9a93afb0e8fd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d13293f3c2d0f2e79e9a93afb0e8fd4"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a0d13293f3c2d0f2e79e9a93afb0e8fd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad96c910ae45e6c5d2433bb1d9e910891"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ad96c910ae45e6c5d2433bb1d9e910891">increment_wait_count</a> ()</td></tr>
-<tr class="memdesc:ad96c910ae45e6c5d2433bb1d9e910891"><td class="mdescLeft"> </td><td class="mdescRight">Used to register that an external entity may still interact with the graph.  <a href="#ad96c910ae45e6c5d2433bb1d9e910891">More...</a><br/></td></tr>
-<tr class="separator:ad96c910ae45e6c5d2433bb1d9e910891"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af16d14eaed1355ae376bb78dde7762c3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#af16d14eaed1355ae376bb78dde7762c3">decrement_wait_count</a> ()</td></tr>
-<tr class="memdesc:af16d14eaed1355ae376bb78dde7762c3"><td class="mdescLeft"> </td><td class="mdescRight">Deregisters an external entity that may have interacted with the graph.  <a href="#af16d14eaed1355ae376bb78dde7762c3">More...</a><br/></td></tr>
-<tr class="separator:af16d14eaed1355ae376bb78dde7762c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memTemplParams" colspan="2">template<typename Receiver , typename Body > </td></tr>
-<tr class="memitem:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00061.html#ac0a03f1d59dc2ccb9526995599c2c83c">run</a> (Receiver &r, Body body)</td></tr>
-<tr class="memdesc:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="mdescLeft"> </td><td class="mdescRight">Spawns a task that runs a body and puts its output to a specific receiver.  <a href="#ac0a03f1d59dc2ccb9526995599c2c83c">More...</a><br/></td></tr>
-<tr class="separator:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
-<tr class="memitem:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00061.html#a6e428c2d7c8780f3c2587a71c4d92466">run</a> (Body body)</td></tr>
-<tr class="memdesc:a6e428c2d7c8780f3c2587a71c4d92466"><td class="mdescLeft"> </td><td class="mdescRight">Spawns a task that runs a function object.  <a href="#a6e428c2d7c8780f3c2587a71c4d92466">More...</a><br/></td></tr>
-<tr class="separator:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a397208ce3b432c83cd24f416b082e8db"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db">wait_for_all</a> ()</td></tr>
-<tr class="memdesc:a397208ce3b432c83cd24f416b082e8db"><td class="mdescLeft"> </td><td class="mdescRight">Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.  <a href="#a397208ce3b432c83cd24f416b082e8db">More...</a><br/></td></tr>
-<tr class="separator:a397208ce3b432c83cd24f416b082e8db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae5f59627a7d130cf289f105a849ad3f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5f59627a7d130cf289f105a849ad3f0"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ae5f59627a7d130cf289f105a849ad3f0">root_task</a> ()</td></tr>
-<tr class="memdesc:ae5f59627a7d130cf289f105a849ad3f0"><td class="mdescLeft"> </td><td class="mdescRight">Returns the root task of the graph. <br/></td></tr>
-<tr class="separator:ae5f59627a7d130cf289f105a849ad3f0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a91d2f9921342a504668b2cdc3064a846"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91d2f9921342a504668b2cdc3064a846"></a>
-<a class="el" href="a00062.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a91d2f9921342a504668b2cdc3064a846">begin</a> ()</td></tr>
-<tr class="memdesc:a91d2f9921342a504668b2cdc3064a846"><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br/></td></tr>
-<tr class="separator:a91d2f9921342a504668b2cdc3064a846"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a221a7ee0a1f0e69a01add5c1dda43be7"></a>
-<a class="el" href="a00062.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a221a7ee0a1f0e69a01add5c1dda43be7">end</a> ()</td></tr>
-<tr class="memdesc:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
-<tr class="separator:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac404d2e08620aca079532124551a646a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac404d2e08620aca079532124551a646a"></a>
-<a class="el" href="a00062.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ac404d2e08620aca079532124551a646a">begin</a> () const </td></tr>
-<tr class="memdesc:ac404d2e08620aca079532124551a646a"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
-<tr class="separator:ac404d2e08620aca079532124551a646a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a599e6a885a76db84928b039063c299e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a599e6a885a76db84928b039063c299e4"></a>
-<a class="el" href="a00062.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a599e6a885a76db84928b039063c299e4">end</a> () const </td></tr>
-<tr class="memdesc:a599e6a885a76db84928b039063c299e4"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
-<tr class="separator:a599e6a885a76db84928b039063c299e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2af8f195917817ce2b77ff7b6463c344"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2af8f195917817ce2b77ff7b6463c344"></a>
-<a class="el" href="a00062.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a2af8f195917817ce2b77ff7b6463c344">cbegin</a> () const </td></tr>
-<tr class="memdesc:a2af8f195917817ce2b77ff7b6463c344"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
-<tr class="separator:a2af8f195917817ce2b77ff7b6463c344"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf6d3f610c2675eaf8bf2a40853081aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf6d3f610c2675eaf8bf2a40853081aa"></a>
-<a class="el" href="a00062.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#acf6d3f610c2675eaf8bf2a40853081aa">cend</a> () const </td></tr>
-<tr class="memdesc:acf6d3f610c2675eaf8bf2a40853081aa"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
-<tr class="separator:acf6d3f610c2675eaf8bf2a40853081aa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e26f4f5d608e39c8adc9dc6d06a7a01"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">is_cancelled</a> ()</td></tr>
-<tr class="memdesc:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="mdescLeft"> </td><td class="mdescRight">return status of graph execution <br/></td></tr>
-<tr class="separator:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8183d2d71ce8c8b35d314bbb7d66bda3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8183d2d71ce8c8b35d314bbb7d66bda3"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>exception_thrown</b> ()</td></tr>
-<tr class="separator:a8183d2d71ce8c8b35d314bbb7d66bda3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6652373643b94fa7436874e0c617474e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6652373643b94fa7436874e0c617474e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a6652373643b94fa7436874e0c617474e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad95ccef01367c0b6d75f6f91f5bf5315"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ad95ccef01367c0b6d75f6f91f5bf5315">enumerable_thread_specific</a> ()</td></tr>
+<tr class="memdesc:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. Each local instance of T is default constructed. <br/></td></tr>
+<tr class="separator:ad95ccef01367c0b6d75f6f91f5bf5315"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aafd6049aa255826c712aaba778524a7c"><td class="memTemplParams" colspan="2"><a class="anchor" id="aafd6049aa255826c712aaba778524a7c"></a>
+template<typename Finit#if __TBB_ETS_USE_CPP11, typename  = typename internal::enable_if<internal::is_callable_no_args<typename internal::strip<Finit>::type>::value>::type #endif> </td></tr>
+<tr class="memitem:aafd6049aa255826c712aaba778524a7c"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00061.html#aafd6049aa255826c712aaba778524a7c">enumerable_thread_specific</a> (Finit finit)</td></tr>
+<tr class="memdesc:aafd6049aa255826c712aaba778524a7c"><td class="mdescLeft"> </td><td class="mdescRight">Constructor with initializer functor. Each local instance of T is constructed by T(finit()). <br/></td></tr>
+<tr class="separator:aafd6049aa255826c712aaba778524a7c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6f0249ee95fa56665da4b6984f3a685a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f0249ee95fa56665da4b6984f3a685a"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a6f0249ee95fa56665da4b6984f3a685a">enumerable_thread_specific</a> (const T &exemplar)</td></tr>
+<tr class="memdesc:a6f0249ee95fa56665da4b6984f3a685a"><td class="mdescLeft"> </td><td class="mdescRight">Constructor with exemplar. Each local instance of T is copy-constructed from the exemplar. <br/></td></tr>
+<tr class="separator:a6f0249ee95fa56665da4b6984f3a685a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0db9450c25a0d0bc94bf8d77e51653d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0db9450c25a0d0bc94bf8d77e51653d5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>enumerable_thread_specific</b> (T &&exemplar)</td></tr>
+<tr class="separator:a0db9450c25a0d0bc94bf8d77e51653d5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa636348d57b1fc5127c7d642af51f6da"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa636348d57b1fc5127c7d642af51f6da"></a>
+template<typename P1 , typename... P, typename  = typename internal::enable_if<!internal::is_callable_no_args<typename internal::strip<P1>::type>::value                                                          && !internal::is_compatible_ets<T, typename internal::strip<P1>::type>::value                                                          && !internal::is_same_type<T, typename internal::strip<P1>::type>::value                  [...]
+<tr class="memitem:aa636348d57b1fc5127c7d642af51f6da"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00061.html#aa636348d57b1fc5127c7d642af51f6da">enumerable_thread_specific</a> (P1 &&arg1, P &&...args)</td></tr>
+<tr class="memdesc:aa636348d57b1fc5127c7d642af51f6da"><td class="mdescLeft"> </td><td class="mdescRight">Variadic constructor with initializer arguments. Each local instance of T is constructed by T(args...) <br/></td></tr>
+<tr class="separator:aa636348d57b1fc5127c7d642af51f6da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ea8d717f770acb63efc406df52d4585"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ea8d717f770acb63efc406df52d4585"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a6ea8d717f770acb63efc406df52d4585">~enumerable_thread_specific</a> ()</td></tr>
+<tr class="memdesc:a6ea8d717f770acb63efc406df52d4585"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a6ea8d717f770acb63efc406df52d4585"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea846c6cbafbe2ff6bde6e8c2a2ee97e"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">local</a> ()</td></tr>
+<tr class="memdesc:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="mdescLeft"> </td><td class="mdescRight">returns reference to local, discarding exists <br/></td></tr>
+<tr class="separator:aea846c6cbafbe2ff6bde6e8c2a2ee97e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abbbc24a5816dc163d5df057c5e7f379d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbbc24a5816dc163d5df057c5e7f379d"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#abbbc24a5816dc163d5df057c5e7f379d">local</a> (bool &exists)</td></tr>
+<tr class="memdesc:abbbc24a5816dc163d5df057c5e7f379d"><td class="mdescLeft"> </td><td class="mdescRight">Returns reference to calling thread's local copy, creating one if necessary. <br/></td></tr>
+<tr class="separator:abbbc24a5816dc163d5df057c5e7f379d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c33c5390783e17daf2b25d53ae919fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c33c5390783e17daf2b25d53ae919fb"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a4c33c5390783e17daf2b25d53ae919fb">size</a> () const </td></tr>
+<tr class="memdesc:a4c33c5390783e17daf2b25d53ae919fb"><td class="mdescLeft"> </td><td class="mdescRight">Get the number of local copies. <br/></td></tr>
+<tr class="separator:a4c33c5390783e17daf2b25d53ae919fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfa4b2e13e47ab825dc40c4f195d2bc5"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#adfa4b2e13e47ab825dc40c4f195d2bc5">empty</a> () const </td></tr>
+<tr class="memdesc:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="mdescLeft"> </td><td class="mdescRight">true if there have been no local copies created <br/></td></tr>
+<tr class="separator:adfa4b2e13e47ab825dc40c4f195d2bc5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a070d26debf1f65c83de13f64f91aefdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a070d26debf1f65c83de13f64f91aefdc"></a>
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a070d26debf1f65c83de13f64f91aefdc">begin</a> ()</td></tr>
+<tr class="memdesc:a070d26debf1f65c83de13f64f91aefdc"><td class="mdescLeft"> </td><td class="mdescRight">begin iterator <br/></td></tr>
+<tr class="separator:a070d26debf1f65c83de13f64f91aefdc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad225e2e8a968b131bf05d72f5686b924"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad225e2e8a968b131bf05d72f5686b924"></a>
+iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ad225e2e8a968b131bf05d72f5686b924">end</a> ()</td></tr>
+<tr class="memdesc:ad225e2e8a968b131bf05d72f5686b924"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
+<tr class="separator:ad225e2e8a968b131bf05d72f5686b924"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa097383eb6f90e4a551830fc00b60b3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa097383eb6f90e4a551830fc00b60b3a"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#aa097383eb6f90e4a551830fc00b60b3a">begin</a> () const </td></tr>
+<tr class="memdesc:aa097383eb6f90e4a551830fc00b60b3a"><td class="mdescLeft"> </td><td class="mdescRight">begin const iterator <br/></td></tr>
+<tr class="separator:aa097383eb6f90e4a551830fc00b60b3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5ed0248f10a7aa5045d2cda77dad9588"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ed0248f10a7aa5045d2cda77dad9588"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a5ed0248f10a7aa5045d2cda77dad9588">end</a> () const </td></tr>
+<tr class="memdesc:a5ed0248f10a7aa5045d2cda77dad9588"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
+<tr class="separator:a5ed0248f10a7aa5045d2cda77dad9588"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac94dd896ed78df240da4a450defbca6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac94dd896ed78df240da4a450defbca6c"></a>
+range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ac94dd896ed78df240da4a450defbca6c">range</a> (size_t grainsize=1)</td></tr>
+<tr class="memdesc:ac94dd896ed78df240da4a450defbca6c"><td class="mdescLeft"> </td><td class="mdescRight">Get range for parallel algorithms. <br/></td></tr>
+<tr class="separator:ac94dd896ed78df240da4a450defbca6c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a25b9153dfe994c8122a7f0227cffe793"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25b9153dfe994c8122a7f0227cffe793"></a>
+const_range_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a25b9153dfe994c8122a7f0227cffe793">range</a> (size_t grainsize=1) const </td></tr>
+<tr class="memdesc:a25b9153dfe994c8122a7f0227cffe793"><td class="mdescLeft"> </td><td class="mdescRight">Get const range for parallel algorithms. <br/></td></tr>
+<tr class="separator:a25b9153dfe994c8122a7f0227cffe793"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85a0d8f088ef1ee07aeb2c0e944a4a5e"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">clear</a> ()</td></tr>
+<tr class="memdesc:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="mdescLeft"> </td><td class="mdescRight">Destroys local copies. <br/></td></tr>
+<tr class="separator:a85a0d8f088ef1ee07aeb2c0e944a4a5e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15960d5f730ea183a581730e912700c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a15960d5f730ea183a581730e912700c8"></a>
+template<typename Alloc , ets_key_usage_type Cachetype> </td></tr>
+<tr class="memitem:a15960d5f730ea183a581730e912700c8"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>enumerable_thread_specific</b> (const <a class="el" href="a00061.html">enumerable_thread_specific</a>< T, Alloc, Cachetype > &other)</td></tr>
+<tr class="separator:a15960d5f730ea183a581730e912700c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6b614f913497b8dc168a8e6ea03eac48"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b614f913497b8dc168a8e6ea03eac48"></a>
+ </td><td class="memItemRight" valign="bottom"><b>enumerable_thread_specific</b> (const <a class="el" href="a00061.html">enumerable_thread_specific</a> &other)</td></tr>
+<tr class="separator:a6b614f913497b8dc168a8e6ea03eac48"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7af8784cd0d0f04b3f9f50988b8f0885"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7af8784cd0d0f04b3f9f50988b8f0885"></a>
+<a class="el" href="a00061.html">enumerable_thread_specific</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00061.html">enumerable_thread_specific</a> &other)</td></tr>
+<tr class="separator:a7af8784cd0d0f04b3f9f50988b8f0885"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e2cfddffa47dd0eb042cf6cbcea815f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5e2cfddffa47dd0eb042cf6cbcea815f"></a>
+template<typename Alloc , ets_key_usage_type Cachetype> </td></tr>
+<tr class="memitem:a5e2cfddffa47dd0eb042cf6cbcea815f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00061.html">enumerable_thread_specific</a> & </td><td class="memTemplItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00061.html">enumerable_thread_specific</a>< T, Alloc, Cachetype > &other)</td></tr>
+<tr class="separator:a5e2cfddffa47dd0eb042cf6cbcea815f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ab62b7fd2aeeb12e1a3b93c9ce99f27"></a>
+template<typename combine_func_t > </td></tr>
+<tr class="memitem:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>combine</b> (combine_func_t f_combine)</td></tr>
+<tr class="separator:a7ab62b7fd2aeeb12e1a3b93c9ce99f27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae644ea36b776fdc698d87a60ef4a3179"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae644ea36b776fdc698d87a60ef4a3179"></a>
+template<typename combine_func_t > </td></tr>
+<tr class="memitem:ae644ea36b776fdc698d87a60ef4a3179"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>combine_each</b> (combine_func_t f_combine)</td></tr>
+<tr class="separator:ae644ea36b776fdc698d87a60ef4a3179"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a8bb549de1ad8539cd820379b4a9bc568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bb549de1ad8539cd820379b4a9bc568"></a>
-class </td><td class="memItemRight" valign="bottom"><b>graph_node</b></td></tr>
-<tr class="separator:a8bb549de1ad8539cd820379b4a9bc568"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa1d1a46765052516277dce8e9bdf63e"></a>
-template<typename C , typename N > </td></tr>
-<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>graph_iterator</b></td></tr>
-<tr class="separator:aaa1d1a46765052516277dce8e9bdf63e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a408a399f5d1ceaf6d0adc9451932a96a"></a>
+template<typename U , typename A , ets_key_usage_type C> </td></tr>
+<tr class="memitem:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>enumerable_thread_specific</b></td></tr>
+<tr class="separator:a408a399f5d1ceaf6d0adc9451932a96a"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The graph class. </p>
-<p>This class serves as a handle to the graph </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a3412df4d4bf0113aed93c958bbb49ec4"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::flow::interface7::graph::~graph </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Destroys the graph. </p>
-<p>Calls wait_for_all, then destroys the root task and context. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="af16d14eaed1355ae376bb78dde7762c3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::flow::interface7::graph::decrement_wait_count </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Deregisters an external entity that may have interacted with the graph. </p>
-<p>The graph will not return from wait_for_all until all the number of decrement_wait_count calls matches the number of increment_wait_count calls. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad96c910ae45e6c5d2433bb1d9e910891"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::flow::interface7::graph::increment_wait_count </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Used to register that an external entity may still interact with the graph. </p>
-<p>The graph will not return from wait_for_all until a matching number of decrement_wait_count calls is made. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac0a03f1d59dc2ccb9526995599c2c83c"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Receiver , typename Body > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::flow::interface7::graph::run </td>
-          <td>(</td>
-          <td class="paramtype">Receiver & </td>
-          <td class="paramname"><em>r</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Spawns a task that runs a body and puts its output to a specific receiver. </p>
-<p>The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db" title="Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls...">wait_for_all()</a> on the graph. For example a one-off source. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6e428c2d7c8780f3c2587a71c4d92466"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Body > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::flow::interface7::graph::run </td>
-          <td>(</td>
-          <td class="paramtype">Body </td>
-          <td class="paramname"><em>body</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
+<div class="textblock"><h3>template<typename T, typename Allocator, ets_key_usage_type ETS_key_type><br/>
+class tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></h3>
 
-<p>Spawns a task that runs a function object. </p>
-<p>The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db" title="Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls...">wait_for_all()</a> on the graph. For example a one-off source. </p>
-
-</div>
-</div>
-<a class="anchor" id="a397208ce3b432c83cd24f416b082e8db"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::flow::interface7::graph::wait_for_all </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls. </p>
-<p>The waiting thread will go off and steal work while it is block in the wait_for_all. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<p>The <a class="el" href="a00061.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container. </p>
+<pre class="fragment">enumerable_thread_specific has the following properties:
+- thread-local copies are lazily created, with default, exemplar or function initialization.
+- thread-local copies do not move (during lifetime, and excepting clear()) so the address of a copy is invariant.
+- the contained objects need not have operator=() defined if combine is not used.
+- enumerable_thread_specific containers may be copy-constructed or assigned.
+- thread-local copies can be managed by hash-table, or can be accessed via TLS storage for speed.
+- outside of parallel contexts, the contents of all thread-local copies are accessible by iterator or using combine or combine_each methods
+</pre><dl class="section user"><dt>Segmented iterator</dt><dd>When the thread-local objects are containers with input_iterators defined, a segmented iterator may be used to iterate over all the elements of all thread-local copies.</dd></dl>
+<dl class="section user"><dt>combine and combine_each</dt><dd><ul>
+<li>Both methods are defined for <a class="el" href="a00061.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a>.</li>
+<li>combine() requires the type T have operator=() defined.</li>
+<li>neither method modifies the contents of the object (though there is no guarantee that the applied methods do not modify the object.)</li>
+<li>Both are evaluated in serial context (the methods are assumed to be non-benign.) </li>
+</ul>
+</dd></dl>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>enumerable_thread_specific.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00061.png b/doc/html/a00061.png
index 9ec4ddf..fba36b8 100644
Binary files a/doc/html/a00061.png and b/doc/html/a00061.png differ
diff --git a/doc/html/a00062.html b/doc/html/a00062.html
index 15a03f5..679c993 100644
--- a/doc/html/a00062.html
+++ b/doc/html/a00062.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference</title>
+<title>tbb::filter Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,96 +33,111 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00062.html">graph_iterator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00062.html">filter</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00312.html">List of all members</a>  </div>
+<a href="#pro-static-attribs">Static Protected Attributes</a> |
+<a href="a00289.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference</div>  </div>
+<div class="title">tbb::filter Class Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>A stage in a pipeline.  
+ <a href="a00062.html#details">More...</a></p>
+
+<p><code>#include <pipeline.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::filter:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00062.png" usemap="#tbb::filter_map" alt=""/>
+  <map id="tbb::filter_map" name="tbb::filter_map">
+<area href="a00165.html" title="A stage in a pipeline served by a user thread. " alt="tbb::thread_bound_filter" shape="rect" coords="0,112,145,136"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:abdd4f54a62d4b1e34661795501ab96a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdd4f54a62d4b1e34661795501ab96a4"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:abdd4f54a62d4b1e34661795501ab96a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9cc8bbd5e318ac345e2948f957aba1c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cc8bbd5e318ac345e2948f957aba1c2"></a>
-typedef GraphNodeType </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a9cc8bbd5e318ac345e2948f957aba1c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4376f2192af42eb189c7fe4769b51ea8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4376f2192af42eb189c7fe4769b51ea8"></a>
-typedef GraphNodeType * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a4376f2192af42eb189c7fe4769b51ea8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1628ccc82db8c7ae48042e75629df9c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1628ccc82db8c7ae48042e75629df9c3"></a>
-typedef GraphNodeType & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a1628ccc82db8c7ae48042e75629df9c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a279af8fa5e64a54f31d6bb0d42708697"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a279af8fa5e64a54f31d6bb0d42708697"></a>
-typedef const GraphNodeType & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a279af8fa5e64a54f31d6bb0d42708697"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6ef18324f0aab60b4e9b3a5a242224ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ef18324f0aab60b4e9b3a5a242224ce"></a>
-typedef std::forward_iterator_tag </td><td class="memItemRight" valign="bottom"><b>iterator_category</b></td></tr>
-<tr class="separator:a6ef18324f0aab60b4e9b3a5a242224ce"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a5082b1f425ffbd4a93533230d6ff99c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5082b1f425ffbd4a93533230d6ff99c0"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a5082b1f425ffbd4a93533230d6ff99c0">graph_iterator</a> ()</td></tr>
-<tr class="memdesc:a5082b1f425ffbd4a93533230d6ff99c0"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br/></td></tr>
-<tr class="separator:a5082b1f425ffbd4a93533230d6ff99c0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a72937fa822ca1e285a4cb22e544bafbf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72937fa822ca1e285a4cb22e544bafbf"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a72937fa822ca1e285a4cb22e544bafbf">graph_iterator</a> (const <a class="el" href="a00062.html">graph_iterator</a> &other)</td></tr>
-<tr class="memdesc:a72937fa822ca1e285a4cb22e544bafbf"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a72937fa822ca1e285a4cb22e544bafbf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ada73cea77a417f0df629eeaf4c1e2002"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada73cea77a417f0df629eeaf4c1e2002"></a>
-<a class="el" href="a00062.html">graph_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#ada73cea77a417f0df629eeaf4c1e2002">operator=</a> (const <a class="el" href="a00062.html">graph_iterator</a> &other)</td></tr>
-<tr class="memdesc:ada73cea77a417f0df629eeaf4c1e2002"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
-<tr class="separator:ada73cea77a417f0df629eeaf4c1e2002"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1daffd203bebae367ed0f32917048f22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1daffd203bebae367ed0f32917048f22"></a>
-reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a1daffd203bebae367ed0f32917048f22">operator*</a> () const </td></tr>
-<tr class="memdesc:a1daffd203bebae367ed0f32917048f22"><td class="mdescLeft"> </td><td class="mdescRight">Dereference. <br/></td></tr>
-<tr class="separator:a1daffd203bebae367ed0f32917048f22"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abfb28c989f76822e26b47211febe3d72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfb28c989f76822e26b47211febe3d72"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#abfb28c989f76822e26b47211febe3d72">operator-></a> () const </td></tr>
-<tr class="memdesc:abfb28c989f76822e26b47211febe3d72"><td class="mdescLeft"> </td><td class="mdescRight">Dereference. <br/></td></tr>
-<tr class="separator:abfb28c989f76822e26b47211febe3d72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b0d834dffd2a99a596e9541b7a96d2a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a3b0d834dffd2a99a596e9541b7a96d2a">operator==</a> (const <a class="el" href="a00062.html">graph_iterator</a> &other) const </td></tr>
-<tr class="memdesc:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="mdescLeft"> </td><td class="mdescRight">Equality. <br/></td></tr>
-<tr class="separator:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3f6d2cc6cbec2dc1194f7d5f4091a73"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">operator!=</a> (const <a class="el" href="a00062.html">graph_iterator</a> &other) const </td></tr>
-<tr class="memdesc:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="mdescLeft"> </td><td class="mdescRight">Inequality. <br/></td></tr>
-<tr class="separator:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84587ed134f01886f6a0d64d5a6ccef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84587ed134f01886f6a0d64d5a6ccef"></a>
-<a class="el" href="a00062.html">graph_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#ab84587ed134f01886f6a0d64d5a6ccef">operator++</a> ()</td></tr>
-<tr class="memdesc:ab84587ed134f01886f6a0d64d5a6ccef"><td class="mdescLeft"> </td><td class="mdescRight">Pre-increment. <br/></td></tr>
-<tr class="separator:ab84587ed134f01886f6a0d64d5a6ccef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abc9d079735fe9c1b07d136284556e15a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc9d079735fe9c1b07d136284556e15a"></a>
-<a class="el" href="a00062.html">graph_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#abc9d079735fe9c1b07d136284556e15a">operator++</a> (int)</td></tr>
-<tr class="memdesc:abc9d079735fe9c1b07d136284556e15a"><td class="mdescLeft"> </td><td class="mdescRight">Post-increment. <br/></td></tr>
-<tr class="separator:abc9d079735fe9c1b07d136284556e15a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8b0dbc1b36724e5e4635ac651c218cb"></a>
-class </td><td class="memItemRight" valign="bottom"><b>graph</b></td></tr>
-<tr class="separator:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8bb549de1ad8539cd820379b4a9bc568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bb549de1ad8539cd820379b4a9bc568"></a>
-class </td><td class="memItemRight" valign="bottom"><b>graph_node</b></td></tr>
-<tr class="separator:a8bb549de1ad8539cd820379b4a9bc568"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
+Static Protected Attributes</h2></td></tr>
+<tr class="memitem:ae9dab2e01b0963b341ab04b59eec1475"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9dab2e01b0963b341ab04b59eec1475"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a> = 0x1</td></tr>
+<tr class="memdesc:ae9dab2e01b0963b341ab04b59eec1475"><td class="mdescLeft"> </td><td class="mdescRight">The lowest bit 0 is for parallel vs. serial. <br/></td></tr>
+<tr class="separator:ae9dab2e01b0963b341ab04b59eec1475"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a091fcf6abc79edfa5c8bf01f742e2392"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a> = 0x1<<4</td></tr>
+<tr class="memdesc:a091fcf6abc79edfa5c8bf01f742e2392"><td class="mdescLeft"> </td><td class="mdescRight">4th bit distinguishes ordered vs unordered filters.  <a href="#a091fcf6abc79edfa5c8bf01f742e2392">More...</a><br/></td></tr>
+<tr class="separator:a091fcf6abc79edfa5c8bf01f742e2392"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1382f216bd094064a18eb48ecc43c86b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1382f216bd094064a18eb48ecc43c86b"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a> = 0x1<<5</td></tr>
+<tr class="memdesc:a1382f216bd094064a18eb48ecc43c86b"><td class="mdescLeft"> </td><td class="mdescRight">5th bit distinguishes thread-bound and regular filters. <br/></td></tr>
+<tr class="separator:a1382f216bd094064a18eb48ecc43c86b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6645ec56872b6ba2056dcaa467e292f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6645ec56872b6ba2056dcaa467e292f7"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a> = 0x1<<6</td></tr>
+<tr class="memdesc:a6645ec56872b6ba2056dcaa467e292f7"><td class="mdescLeft"> </td><td class="mdescRight">6th bit marks input filters emitting small objects <br/></td></tr>
+<tr class="separator:a6645ec56872b6ba2056dcaa467e292f7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td></tr>
+<tr class="memdesc:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="mdescLeft"> </td><td class="mdescRight">7th bit defines exception propagation mode expected by the application.  <a href="#aab9689e23a96c6c9bf1c8caae74d92ee">More...</a><br/></td></tr>
+<tr class="separator:aab9689e23a96c6c9bf1c8caae74d92ee"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A stage in a pipeline. </p>
+</div><h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="aab9689e23a96c6c9bf1c8caae74d92ee"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const unsigned char tbb::filter::exact_exception_propagation</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">=</div>
+<div class="line"><span class="preprocessor">#if TBB_USE_CAPTURED_EXCEPTION</span></div>
+<div class="line"><span class="preprocessor">            0x0</span></div>
+</div><!-- fragment -->
+<p>7th bit defines exception propagation mode expected by the application. </p>
+
+</div>
+</div>
+<a class="anchor" id="a091fcf6abc79edfa5c8bf01f742e2392"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const unsigned char tbb::filter::filter_is_out_of_order = 0x1<<4</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>4th bit distinguishes ordered vs unordered filters. </p>
+<p>The bit was not set for parallel filters in TBB 2.1 and earlier, but is_ordered() function always treats parallel filters as out of order. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>pipeline.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00053.png b/doc/html/a00062.png
similarity index 100%
copy from doc/html/a00053.png
copy to doc/html/a00062.png
diff --git a/doc/html/a00063.html b/doc/html/a00063.html
index c53f3ad..768fe74 100644
--- a/doc/html/a00063.html
+++ b/doc/html/a00063.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::graph_node Class Reference</title>
+<title>tbb::interface6::filter_t< T, U > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,91 +33,67 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00063.html">graph_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00063.html">filter_t</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00314.html">List of all members</a>  </div>
+<a href="a00401.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph_node Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::interface6::filter_t< T, U > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>The base of all graph nodes.  
+<p>Class representing a chain of type-safe pipeline filters.  
  <a href="a00063.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::graph_node:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00063.png" usemap="#tbb::flow::interface7::graph_node_map" alt=""/>
-  <map id="tbb::flow::interface7::graph_node_map" name="tbb::flow::interface7::graph_node_map">
-<area href="a00079.html" alt="tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator >" shape="rect" coords="523,112,1036,136"/>
-<area href="a00025.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="523,168,1036,192"/>
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="523,224,1036,248"/>
-<area href="a00049.html" title="Implements an executable node that supports continue_msg -> Output. " alt="tbb::flow::interface7::continue_node< Output >" shape="rect" coords="523,280,1036,304"/>
-<area href="a00059.html" title="Implements a function node that supports Input -> Output. " alt="tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator >" shape="rect" coords="523,336,1036,360"/>
-<area href="a00060.html" title="Implements a function node that supports Input -> Output. " alt="tbb::flow::interface7::function_node< Input, Output, queueing, Allocator >" shape="rect" coords="523,392,1036,416"/>
-<area href="a00072.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="523,448,1036,472"/>
-<area href="a00079.html" title="implements a function node that supports Input -> (set of outputs) " alt="tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator >" shape="rect" coords="523,504,1036,528"/>
-<area href="a00080.html" alt="tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator >" shape="rect" coords="523,560,1036,584"/>
-<area href="a00086.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="523,616,1036,640"/>
-<area href="a00126.html" title="An executable node that acts as a source, i.e. it has no predecessors. " alt="tbb::flow::interface7::source_node< Output >" shape="rect" coords="523,672,1036,696"/>
-</map>
- </div></div>
+<p><code>#include <pipeline.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2eaba3736a405fc5c2267d9e7eb95c27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2eaba3736a405fc5c2267d9e7eb95c27"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)=0</td></tr>
-<tr class="separator:a2eaba3736a405fc5c2267d9e7eb95c27"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:ab6b274b7cc6a1d405947f7512f1c0623"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6b274b7cc6a1d405947f7512f1c0623"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()=0</td></tr>
-<tr class="separator:ab6b274b7cc6a1d405947f7512f1c0623"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a291e76dc7ae92a66109a102904836b62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a291e76dc7ae92a66109a102904836b62"></a>
+ </td><td class="memItemRight" valign="bottom"><b>filter_t</b> (const <a class="el" href="a00063.html">filter_t</a>< T, U > &rhs)</td></tr>
+<tr class="separator:a291e76dc7ae92a66109a102904836b62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a86c29832da3f4941254b8dce9e1ff6f0"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>filter_t</b> (tbb::filter::mode mode, const Body &body)</td></tr>
+<tr class="separator:a86c29832da3f4941254b8dce9e1ff6f0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae765b59c54ca11f9cdb9f7f2c6c3bd68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae765b59c54ca11f9cdb9f7f2c6c3bd68"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00063.html">filter_t</a>< T, U > &rhs)</td></tr>
+<tr class="separator:ae765b59c54ca11f9cdb9f7f2c6c3bd68"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a445602c2d364b5bbcd8cc9e0b7f37376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a445602c2d364b5bbcd8cc9e0b7f37376"></a>
+void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:a445602c2d364b5bbcd8cc9e0b7f37376"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8b0dbc1b36724e5e4635ac651c218cb"></a>
-class </td><td class="memItemRight" valign="bottom"><b>graph</b></td></tr>
-<tr class="separator:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa1d1a46765052516277dce8e9bdf63e"></a>
-template<typename C , typename N > </td></tr>
-<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>graph_iterator</b></td></tr>
-<tr class="separator:aaa1d1a46765052516277dce8e9bdf63e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49b422a3c97d5dc848d177246de4c149"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49b422a3c97d5dc848d177246de4c149"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_proxy</b></td></tr>
+<tr class="separator:a49b422a3c97d5dc848d177246de4c149"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21460fde704da22caa222778f5abb140"><td class="memTemplParams" colspan="2"><a class="anchor" id="a21460fde704da22caa222778f5abb140"></a>
+template<typename T_ , typename U_ , typename Body > </td></tr>
+<tr class="memitem:a21460fde704da22caa222778f5abb140"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00063.html">filter_t</a>< T_, U_ > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00063.html#a21460fde704da22caa222778f5abb140">make_filter</a> (tbb::filter::mode, const Body &)</td></tr>
+<tr class="memdesc:a21460fde704da22caa222778f5abb140"><td class="mdescLeft"> </td><td class="mdescRight">Create a filter to participate in parallel_pipeline. <br/></td></tr>
+<tr class="separator:a21460fde704da22caa222778f5abb140"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa80730e1b71fa4266ca0d1dc12da6caa"></a>
+template<typename T_ , typename V_ , typename U_ > </td></tr>
+<tr class="memitem:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00063.html">filter_t</a>< T_, U_ > </td><td class="memTemplItemRight" valign="bottom"><b>operator&</b> (const <a class="el" href="a00063.html">filter_t</a>< T_, V_ > &, const <a class="el" href="a00063.html">filter_t</a>< V_, U_ > &)</td></tr>
+<tr class="separator:aa80730e1b71fa4266ca0d1dc12da6caa"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The base of all graph nodes. </p>
+<div class="textblock"><h3>template<typename T, typename U><br/>
+class tbb::interface6::filter_t< T, U ></h3>
+
+<p>Class representing a chain of type-safe pipeline filters. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>pipeline.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00063.png b/doc/html/a00063.png
deleted file mode 100644
index 6a2f58c..0000000
Binary files a/doc/html/a00063.png and /dev/null differ
diff --git a/doc/html/a00064.html b/doc/html/a00064.html
index d447d88..772d407 100644
--- a/doc/html/a00064.html
+++ b/doc/html/a00064.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::tbb_thread_v3::id Class Reference</title>
+<title>tbb::final_scan_tag Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,58 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00149.html">tbb_thread_v3</a></li><li class="navelem"><a class="el" href="a00064.html">id</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00064.html">final_scan_tag</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#friends">Friends</a> |
-<a href="a00382.html">List of all members</a>  </div>
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00287.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_thread_v3::id Class Reference</div>  </div>
+<div class="title">tbb::final_scan_tag Struct Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Used to indicate that the final scan is being performed.  
+ <a href="a00064.html#details">More...</a></p>
+
+<p><code>#include <parallel_scan.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:aa08381fcad9d2adc0bf8fb009ad38366"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa08381fcad9d2adc0bf8fb009ad38366"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb_thread_v3</b></td></tr>
-<tr class="separator:aa08381fcad9d2adc0bf8fb009ad38366"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa289cec6985a042e90b041a1ce225bee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa289cec6985a042e90b041a1ce225bee"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:aa289cec6985a042e90b041a1ce225bee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96dda8547314c50318bf74fbabcb2a13"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96dda8547314c50318bf74fbabcb2a13"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:a96dda8547314c50318bf74fbabcb2a13"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa079db2ec91cde90ba2d39665eb4dcb6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa079db2ec91cde90ba2d39665eb4dcb6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator<</b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:aa079db2ec91cde90ba2d39665eb4dcb6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0035b2e97f417231d6aabb24f425f9d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0035b2e97f417231d6aabb24f425f9d6"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator<=</b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:a0035b2e97f417231d6aabb24f425f9d6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf161eec2a0e000f58a2f44e5f540834"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf161eec2a0e000f58a2f44e5f540834"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator></b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:aaf161eec2a0e000f58a2f44e5f540834"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e5408af6bfda47faa583eee2fafd52b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e5408af6bfda47faa583eee2fafd52b"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator>=</b> (<a class="el" href="a00064.html">tbb_thread_v3::id</a> x, <a class="el" href="a00064.html">tbb_thread_v3::id</a> y)</td></tr>
-<tr class="separator:a4e5408af6bfda47faa583eee2fafd52b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8dcf9ef009469428dc3752f54240eb69"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8dcf9ef009469428dc3752f54240eb69"></a>
-template<class charT , class traits > </td></tr>
-<tr class="memitem:a8dcf9ef009469428dc3752f54240eb69"><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
-traits > & </td><td class="memTemplItemRight" valign="bottom"><b>operator<<</b> (std::basic_ostream< charT, traits > &out, <a class="el" href="a00064.html">tbb_thread_v3::id</a> <a class="el" href="a00064.html">id</a>)</td></tr>
-<tr class="separator:a8dcf9ef009469428dc3752f54240eb69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0a77bf86c87119e219bb508d787d97da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a77bf86c87119e219bb508d787d97da"></a>
-<a class="el" href="a00064.html">tbb_thread_v3::id</a> <br class="typebreak"/>
-__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>thread_get_id_v3</b> ()</td></tr>
-<tr class="separator:a0a77bf86c87119e219bb508d787d97da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:add2b3159a444aad51e3cf7ffe4d1d636"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add2b3159a444aad51e3cf7ffe4d1d636"></a>
+static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
+<tr class="separator:add2b3159a444aad51e3cf7ffe4d1d636"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Used to indicate that the final scan is being performed. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>parallel_scan.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00065.html b/doc/html/a00065.html
index 7fd657f..252a6ed 100644
--- a/doc/html/a00065.html
+++ b/doc/html/a00065.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::improper_lock Class Reference</title>
+<title>tbb::interface6::fixed_pool Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,44 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00065.html">improper_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00065.html">fixed_pool</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00298.html">List of all members</a>  </div>
+<a href="a00399.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::improper_lock Class Reference</div>  </div>
+<div class="title">tbb::interface6::fixed_pool Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Exception for PPL locks.  
- <a href="a00065.html#details">More...</a></p>
-
-<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::improper_lock:</div>
+Inheritance diagram for tbb::interface6::fixed_pool:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00065.png" usemap="#tbb::improper_lock_map" alt=""/>
-  <map id="tbb::improper_lock_map" name="tbb::improper_lock_map">
+  <img src="a00065.png" usemap="#tbb::interface6::fixed_pool_map" alt=""/>
+  <map id="tbb::interface6::fixed_pool_map" name="tbb::interface6::fixed_pool_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a71847061d0e5bef413e28a9031e1f07e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71847061d0e5bef413e28a9031e1f07e"></a>
-const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-<tr class="separator:a71847061d0e5bef413e28a9031e1f07e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3811fe3d437ba2eefa926d52732491a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3811fe3d437ba2eefa926d52732491a"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00065.html#aa3811fe3d437ba2eefa926d52732491a">fixed_pool</a> (void *buf, size_t size)</td></tr>
+<tr class="memdesc:aa3811fe3d437ba2eefa926d52732491a"><td class="mdescLeft"> </td><td class="mdescRight">construct pool with underlying allocator <br/></td></tr>
+<tr class="separator:aa3811fe3d437ba2eefa926d52732491a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab854a85575e5c1e9c9f4d3eafcc28044"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00065.html#ab854a85575e5c1e9c9f4d3eafcc28044">~fixed_pool</a> ()</td></tr>
+<tr class="memdesc:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="mdescLeft"> </td><td class="mdescRight">destroy pool <br/></td></tr>
+<tr class="separator:ab854a85575e5c1e9c9f4d3eafcc28044"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception for PPL locks. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00065.png b/doc/html/a00065.png
index 7f4f557..8cf0f93 100644
Binary files a/doc/html/a00065.png and b/doc/html/a00065.png differ
diff --git a/doc/html/a00066.html b/doc/html/a00066.html
index 76391ef..0f3cccf 100644
--- a/doc/html/a00066.html
+++ b/doc/html/a00066.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tick_count::interval_t Class Reference</title>
+<title>tbb::interface6::flattened2d< Container > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,74 +33,90 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00155.html">tick_count</a></li><li class="navelem"><a class="el" href="a00066.html">interval_t</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00066.html">flattened2d</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00306.html">List of all members</a>  </div>
+<a href="a00393.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tick_count::interval_t Class Reference</div>  </div>
+<div class="title">tbb::interface6::flattened2d< Container > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Relative time interval.  
- <a href="a00066.html#details">More...</a></p>
-
-<p><code>#include <tick_count.h></code></p>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b84f8f2cc4499f49d17141eaedc99c0"></a>
+typedef conval_type::size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a></td></tr>
+<tr class="memdesc:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="mdescLeft"> </td><td class="mdescRight">Basic types. <br/></td></tr>
+<tr class="separator:a8b84f8f2cc4499f49d17141eaedc99c0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab0352636ee7434478866739224852d32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0352636ee7434478866739224852d32"></a>
+typedef <br class="typebreak"/>
+conval_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:ab0352636ee7434478866739224852d32"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a426e0eab82833206df0dc36648419647"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a426e0eab82833206df0dc36648419647"></a>
+typedef conval_type::allocator_type </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:a426e0eab82833206df0dc36648419647"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7070453b83df5930615d4307eb2f38b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7070453b83df5930615d4307eb2f38b5"></a>
+typedef conval_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a7070453b83df5930615d4307eb2f38b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a92b8ef6b07970e3f973b3ece9d2a6201"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92b8ef6b07970e3f973b3ece9d2a6201"></a>
+typedef conval_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a92b8ef6b07970e3f973b3ece9d2a6201"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9715dae5bf107ca3530a8c5bea12739c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9715dae5bf107ca3530a8c5bea12739c"></a>
+typedef <br class="typebreak"/>
+conval_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a9715dae5bf107ca3530a8c5bea12739c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14285cc70108c2f0bc417bb034484a0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14285cc70108c2f0bc417bb034484a0b"></a>
+typedef conval_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a14285cc70108c2f0bc417bb034484a0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4f67e5e005e394746b4c6d54a5c2748c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f67e5e005e394746b4c6d54a5c2748c"></a>
+typedef conval_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a4f67e5e005e394746b4c6d54a5c2748c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14b3602cf1c408c89015d7bf6bf59072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14b3602cf1c408c89015d7bf6bf59072"></a>
+typedef <br class="typebreak"/>
+internal::segmented_iterator<br class="typebreak"/>
+< Container, value_type > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:a14b3602cf1c408c89015d7bf6bf59072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a295c0b8755120359595a1b1f7447bbc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a295c0b8755120359595a1b1f7447bbc8"></a>
+typedef <br class="typebreak"/>
+internal::segmented_iterator<br class="typebreak"/>
+< Container, const value_type > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a295c0b8755120359595a1b1f7447bbc8"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a95e3e14750bebafe719856176e2737db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95e3e14750bebafe719856176e2737db"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a95e3e14750bebafe719856176e2737db">interval_t</a> ()</td></tr>
-<tr class="memdesc:a95e3e14750bebafe719856176e2737db"><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing zero time duration. <br/></td></tr>
-<tr class="separator:a95e3e14750bebafe719856176e2737db"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73b462297173f6bffa15bc5a86c30ef4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73b462297173f6bffa15bc5a86c30ef4"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a73b462297173f6bffa15bc5a86c30ef4">interval_t</a> (double sec)</td></tr>
-<tr class="memdesc:a73b462297173f6bffa15bc5a86c30ef4"><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing sec seconds time duration. <br/></td></tr>
-<tr class="separator:a73b462297173f6bffa15bc5a86c30ef4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abe81446bbbb6b6e98d854b91acf47809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe81446bbbb6b6e98d854b91acf47809"></a>
-double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#abe81446bbbb6b6e98d854b91acf47809">seconds</a> () const </td></tr>
-<tr class="memdesc:abe81446bbbb6b6e98d854b91acf47809"><td class="mdescLeft"> </td><td class="mdescRight">Return the length of a time interval in seconds. <br/></td></tr>
-<tr class="separator:abe81446bbbb6b6e98d854b91acf47809"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19bf32f4541252daaa6b09fd33fa9177"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19bf32f4541252daaa6b09fd33fa9177"></a>
-<a class="el" href="a00066.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a19bf32f4541252daaa6b09fd33fa9177">operator+=</a> (const <a class="el" href="a00066.html">interval_t</a> &i)</td></tr>
-<tr class="memdesc:a19bf32f4541252daaa6b09fd33fa9177"><td class="mdescLeft"> </td><td class="mdescRight">Accumulation operator. <br/></td></tr>
-<tr class="separator:a19bf32f4541252daaa6b09fd33fa9177"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3394d9f3678e6a4c3d6e1be840fe2ff2"></a>
-<a class="el" href="a00066.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">operator-=</a> (const <a class="el" href="a00066.html">interval_t</a> &i)</td></tr>
-<tr class="memdesc:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="mdescLeft"> </td><td class="mdescRight">Subtraction operator. <br/></td></tr>
-<tr class="separator:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a68e741a8f6e2384027e93d1f654ad100"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68e741a8f6e2384027e93d1f654ad100"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::tick_count</b></td></tr>
-<tr class="separator:a68e741a8f6e2384027e93d1f654ad100"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ceaed3ebf5a0d41088a5bc7c8dc653"></a>
-<a class="el" href="a00066.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a> (const <a class="el" href="a00155.html">tick_count</a> &t1, const <a class="el" href="a00155.html">tick_count</a> &t0)</td></tr>
-<tr class="memdesc:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="mdescLeft"> </td><td class="mdescRight">Extract the intervals from the tick_counts and subtract them. <br/></td></tr>
-<tr class="separator:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8910ee3b69f68eb905af787c273e9a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8910ee3b69f68eb905af787c273e9a8"></a>
-<a class="el" href="a00066.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#ac8910ee3b69f68eb905af787c273e9a8">operator+</a> (const <a class="el" href="a00066.html">interval_t</a> &i, const <a class="el" href="a00066.html">interval_t</a> &j)</td></tr>
-<tr class="memdesc:ac8910ee3b69f68eb905af787c273e9a8"><td class="mdescLeft"> </td><td class="mdescRight">Add two intervals. <br/></td></tr>
-<tr class="separator:ac8910ee3b69f68eb905af787c273e9a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d11133daa9a7d3c903d070293278f8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d11133daa9a7d3c903d070293278f8f"></a>
-<a class="el" href="a00066.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html#a3d11133daa9a7d3c903d070293278f8f">operator-</a> (const <a class="el" href="a00066.html">interval_t</a> &i, const <a class="el" href="a00066.html">interval_t</a> &j)</td></tr>
-<tr class="memdesc:a3d11133daa9a7d3c903d070293278f8f"><td class="mdescLeft"> </td><td class="mdescRight">Subtract two intervals. <br/></td></tr>
-<tr class="separator:a3d11133daa9a7d3c903d070293278f8f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a96d4bef4d78e9e04f43a4ce0855f2ec7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96d4bef4d78e9e04f43a4ce0855f2ec7"></a>
+ </td><td class="memItemRight" valign="bottom"><b>flattened2d</b> (const Container &c, typename Container::const_iterator b, typename Container::const_iterator e)</td></tr>
+<tr class="separator:a96d4bef4d78e9e04f43a4ce0855f2ec7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abcc3a2e4b1eae8ef6ee1dfba8b030680"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcc3a2e4b1eae8ef6ee1dfba8b030680"></a>
+ </td><td class="memItemRight" valign="bottom"><b>flattened2d</b> (const Container &c)</td></tr>
+<tr class="separator:abcc3a2e4b1eae8ef6ee1dfba8b030680"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a783ca9408f58ca7f5df00bc1035ff6b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a783ca9408f58ca7f5df00bc1035ff6b2"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> ()</td></tr>
+<tr class="separator:a783ca9408f58ca7f5df00bc1035ff6b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab722e1c2b58641d516cb98b0360b9734"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab722e1c2b58641d516cb98b0360b9734"></a>
+iterator </td><td class="memItemRight" valign="bottom"><b>end</b> ()</td></tr>
+<tr class="separator:ab722e1c2b58641d516cb98b0360b9734"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf0c0dff2b7b8530f06e6aa22b9a79ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf0c0dff2b7b8530f06e6aa22b9a79ea"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>begin</b> () const </td></tr>
+<tr class="separator:acf0c0dff2b7b8530f06e6aa22b9a79ea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b79fe79b6939327ab74628283974226"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b79fe79b6939327ab74628283974226"></a>
+const_iterator </td><td class="memItemRight" valign="bottom"><b>end</b> () const </td></tr>
+<tr class="separator:a5b79fe79b6939327ab74628283974226"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ade48bc8ab723d06790e5d98365e8a4f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade48bc8ab723d06790e5d98365e8a4f5"></a>
+<a class="el" href="a00066.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a> </td><td class="memItemRight" valign="bottom"><b>size</b> () const </td></tr>
+<tr class="separator:ade48bc8ab723d06790e5d98365e8a4f5"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Relative time interval. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tick_count.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>enumerable_thread_specific.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00067.html b/doc/html/a00067.html
index d957dca..e2d9d0a 100644
--- a/doc/html/a00067.html
+++ b/doc/html/a00067.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::invalid_multiple_scheduling Class Reference</title>
+<title>tbb::interface6::flow_control Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00067.html">invalid_multiple_scheduling</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00067.html">flow_control</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00301.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00400.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::invalid_multiple_scheduling Class Reference</div>  </div>
+<div class="title">tbb::interface6::flow_control Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Exception for repeated scheduling of the same <a class="el" href="a00139.html">task_handle</a>.  
+<p>input_filter control to signal end-of-input for parallel_pipeline  
  <a href="a00067.html#details">More...</a></p>
 
-<p><code>#include <tbb_exception.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::invalid_multiple_scheduling:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00067.png" usemap="#tbb::invalid_multiple_scheduling_map" alt=""/>
-  <map id="tbb::invalid_multiple_scheduling_map" name="tbb::invalid_multiple_scheduling_map">
-</map>
- </div></div>
+<p><code>#include <pipeline.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:abe0d56d15bd59f7b128a86ae5b6b8933"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe0d56d15bd59f7b128a86ae5b6b8933"></a>
-const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-<tr class="separator:abe0d56d15bd59f7b128a86ae5b6b8933"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21a61b812ca97a6eb5549dab4b4ae490"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21a61b812ca97a6eb5549dab4b4ae490"></a>
+void </td><td class="memItemRight" valign="bottom"><b>stop</b> ()</td></tr>
+<tr class="separator:a21a61b812ca97a6eb5549dab4b4ae490"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ae4743f434cefacb6650e3e736daf9392"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae4743f434cefacb6650e3e736daf9392"></a>
+template<typename T , typename U , typename Body > </td></tr>
+<tr class="memitem:ae4743f434cefacb6650e3e736daf9392"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::concrete_filter</b></td></tr>
+<tr class="separator:ae4743f434cefacb6650e3e736daf9392"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception for repeated scheduling of the same <a class="el" href="a00139.html">task_handle</a>. </p>
+<div class="textblock"><p>input_filter control to signal end-of-input for parallel_pipeline </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<li>pipeline.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00067.png b/doc/html/a00067.png
deleted file mode 100644
index ba8483c..0000000
Binary files a/doc/html/a00067.png and /dev/null differ
diff --git a/doc/html/a00068.html b/doc/html/a00068.html
index 386ef79..7edb1e8 100644
--- a/doc/html/a00068.html
+++ b/doc/html/a00068.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::join_node< OutputTuple, JP > Class Template Reference</title>
+<title>tbb::flow::interface7::function_node< Input, Output, G, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,142 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00068.html">join_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00068.html">function_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00336.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, JP > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::function_node< Input, Output, G, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+
+<p>Implements a function node that supports Input -> Output.  
+ <a href="a00068.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::function_node< Input, Output, G, Allocator >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00068.png" usemap="#tbb::flow::interface7::function_node< Input, Output, G, Allocator >_map" alt=""/>
+  <map id="tbb::flow::interface7::function_node< Input, Output, G, Allocator >_map" name="tbb::flow::interface7::function_node< Input, Output, G, Allocator >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,382,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a87000eb73b8e27c836e3684fb8f4f71f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87000eb73b8e27c836e3684fb8f4f71f"></a>
+typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a87000eb73b8e27c836e3684fb8f4f71f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a14ca11984d1d1b3b63628349f6619fba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14ca11984d1d1b3b63628349f6619fba"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a14ca11984d1d1b3b63628349f6619fba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5a28361967c5a1e6dbd9d4eaa5bd592e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a28361967c5a1e6dbd9d4eaa5bd592e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< input_type > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a5a28361967c5a1e6dbd9d4eaa5bd592e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aca53d4cfd9837142fb09ed952e78eda1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca53d4cfd9837142fb09ed952e78eda1"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< output_type > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:aca53d4cfd9837142fb09ed952e78eda1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aebdfcaea471c2f221cc538f051e2981d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebdfcaea471c2f221cc538f051e2981d"></a>
+typedef <br class="typebreak"/>
+internal::function_input<br class="typebreak"/>
+< input_type, output_type, <br class="typebreak"/>
+Allocator > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
+<tr class="separator:aebdfcaea471c2f221cc538f051e2981d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a057a4fff65c9d265399d6a7bc952dade"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a057a4fff65c9d265399d6a7bc952dade"></a>
+typedef <br class="typebreak"/>
+internal::function_input_queue<br class="typebreak"/>
+< input_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>input_queue_type</b></td></tr>
+<tr class="separator:a057a4fff65c9d265399d6a7bc952dade"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a072953a37814d5f9d32bfdc6e4ae14c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a072953a37814d5f9d32bfdc6e4ae14c6"></a>
+typedef <br class="typebreak"/>
+internal::function_output<br class="typebreak"/>
+< output_type > </td><td class="memItemRight" valign="bottom"><b>fOutput_type</b></td></tr>
+<tr class="separator:a072953a37814d5f9d32bfdc6e4ae14c6"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a00e4607cc585926677f3d10458ff4f6d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a00e4607cc585926677f3d10458ff4f6d"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a00e4607cc585926677f3d10458ff4f6d"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00068.html#a00e4607cc585926677f3d10458ff4f6d">function_node</a> (<a class="el" href="a00070.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
+<tr class="memdesc:a00e4607cc585926677f3d10458ff4f6d"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a00e4607cc585926677f3d10458ff4f6d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1bb4915f2b6d6fbfbe6bfacece5639c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bb4915f2b6d6fbfbe6bfacece5639c6"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00068.html#a1bb4915f2b6d6fbfbe6bfacece5639c6">function_node</a> (const <a class="el" href="a00068.html">function_node</a> &src)</td></tr>
+<tr class="memdesc:a1bb4915f2b6d6fbfbe6bfacece5639c6"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a1bb4915f2b6d6fbfbe6bfacece5639c6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aa6a9f38f975784c88c0722dca261dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aa6a9f38f975784c88c0722dca261dd"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a8aa6a9f38f975784c88c0722dca261dd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ac8dceeb96897eabdfa3adbec659c9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ac8dceeb96897eabdfa3adbec659c9a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a6ac8dceeb96897eabdfa3adbec659c9a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aa7f21909422d66d7a5a6376ec85acf60"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7f21909422d66d7a5a6376ec85acf60"></a>
+<a class="el" href="a00027.html">internal::broadcast_cache</a><br class="typebreak"/>
+< output_type > & </td><td class="memItemRight" valign="bottom"><b>successors</b> ()</td></tr>
+<tr class="separator:aa7f21909422d66d7a5a6376ec85acf60"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a596fc6ee9f4bcccf96195e8220fe6307"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a596fc6ee9f4bcccf96195e8220fe6307"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a596fc6ee9f4bcccf96195e8220fe6307"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Input, typename Output = continue_msg, graph_buffer_policy G = queueing, typename Allocator = cache_aligned_allocator<Input>><br/>
+class tbb::flow::interface7::function_node< Input, Output, G, Allocator ></h3>
+
+<p>Implements a function node that supports Input -> Output. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00068.png b/doc/html/a00068.png
new file mode 100644
index 0000000..251abe7
Binary files /dev/null and b/doc/html/a00068.png differ
diff --git a/doc/html/a00069.html b/doc/html/a00069.html
index 1974104..f078cb6 100644
--- a/doc/html/a00069.html
+++ b/doc/html/a00069.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::join_node< OutputTuple, queueing > Class Template Reference</title>
+<title>tbb::interface9::global_control Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,56 +33,47 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00069.html">join_node< OutputTuple, queueing ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface9</b></li><li class="navelem"><a class="el" href="a00069.html">global_control</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00331.html">List of all members</a>  </div>
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00408.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, queueing > Class Template Reference</div>  </div>
+<div class="title">tbb::interface9::global_control Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, queueing >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00069.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, queueing >_map" alt=""/>
-  <map id="tbb::flow::interface7::join_node< OutputTuple, queueing >_map" name="tbb::flow::interface7::join_node< OutputTuple, queueing >_map">
-</map>
- </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a68f4d59b0d31a9f13e53f75fe3ded700"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68f4d59b0d31a9f13e53f75fe3ded700"></a>
-typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a68f4d59b0d31a9f13e53f75fe3ded700"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ac9b6f2600b75143ff1dea1e3786b04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ac9b6f2600b75143ff1dea1e3786b04"></a>
-typedef <br class="typebreak"/>
-unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
-<tr class="separator:a7ac9b6f2600b75143ff1dea1e3786b04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a04221b8e619bef332234db90d31f3e5e"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>parameter</b> { <b>max_allowed_parallelism</b>, 
+<b>thread_stack_size</b>, 
+<b>parameter_max</b>
+ }</td></tr>
+<tr class="separator:a04221b8e619bef332234db90d31f3e5e"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab1c49eff4420fd53b80b4425117ddb36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1c49eff4420fd53b80b4425117ddb36"></a>
- </td><td class="memItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:ab1c49eff4420fd53b80b4425117ddb36"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a33ff02c356a0f2f590323177e9314ccd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33ff02c356a0f2f590323177e9314ccd"></a>
- </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00068.html">join_node</a> &other)</td></tr>
-<tr class="separator:a33ff02c356a0f2f590323177e9314ccd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7615ce374a3ec504ed196b7babbf1e04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7615ce374a3ec504ed196b7babbf1e04"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a7615ce374a3ec504ed196b7babbf1e04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5375ee43ca415f20f3c1f47db5220302"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5375ee43ca415f20f3c1f47db5220302"></a>
+ </td><td class="memItemRight" valign="bottom"><b>global_control</b> (parameter p, size_t value)</td></tr>
+<tr class="separator:a5375ee43ca415f20f3c1f47db5220302"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a8451d931cfc205d896ca2da26fe123ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8451d931cfc205d896ca2da26fe123ff"></a>
+static size_t </td><td class="memItemRight" valign="bottom"><b>active_value</b> (parameter p)</td></tr>
+<tr class="separator:a8451d931cfc205d896ca2da26fe123ff"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>global_control.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00069.png b/doc/html/a00069.png
deleted file mode 100644
index 4c63cb9..0000000
Binary files a/doc/html/a00069.png and /dev/null differ
diff --git a/doc/html/a00070.html b/doc/html/a00070.html
index aa45d97..17a8430 100644
--- a/doc/html/a00070.html
+++ b/doc/html/a00070.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::join_node< OutputTuple, reserving > Class Template Reference</title>
+<title>tbb::flow::interface7::graph Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,56 +33,317 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00070.html">join_node< OutputTuple, reserving ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00070.html">graph</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00330.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00333.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, reserving > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::graph Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The graph class.  
+ <a href="a00070.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, reserving >:</div>
+Inheritance diagram for tbb::flow::interface7::graph:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00070.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, reserving >_map" alt=""/>
-  <map id="tbb::flow::interface7::join_node< OutputTuple, reserving >_map" name="tbb::flow::interface7::join_node< OutputTuple, reserving >_map">
+  <img src="a00070.png" usemap="#tbb::flow::interface7::graph_map" alt=""/>
+  <map id="tbb::flow::interface7::graph_map" name="tbb::flow::interface7::graph_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ae799a20de47e2fd168a23b63c56410ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae799a20de47e2fd168a23b63c56410ad"></a>
-typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:ae799a20de47e2fd168a23b63c56410ad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a211d1d12c7073ac9d6e7189113537952"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a211d1d12c7073ac9d6e7189113537952"></a>
-typedef <br class="typebreak"/>
-unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
-<tr class="separator:a211d1d12c7073ac9d6e7189113537952"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aadf8d25297819e6b7c01e271ba504906"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadf8d25297819e6b7c01e271ba504906"></a>
+typedef <a class="el" href="a00071.html">graph_iterator</a>< <a class="el" href="a00070.html">graph</a>, <br class="typebreak"/>
+<a class="el" href="a00072.html">graph_node</a> > </td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
+<tr class="separator:aadf8d25297819e6b7c01e271ba504906"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a278ce7d4ece4894554b6706d915e16a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a278ce7d4ece4894554b6706d915e16a4"></a>
+typedef <a class="el" href="a00071.html">graph_iterator</a>< const <br class="typebreak"/>
+<a class="el" href="a00070.html">graph</a>, const <a class="el" href="a00072.html">graph_node</a> > </td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
+<tr class="separator:a278ce7d4ece4894554b6706d915e16a4"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a14b7e309c267e35b6db79cd24dfae724"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14b7e309c267e35b6db79cd24dfae724"></a>
- </td><td class="memItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a14b7e309c267e35b6db79cd24dfae724"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a86bf13b42f0d09369b5062fe7a1d97e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86bf13b42f0d09369b5062fe7a1d97e8"></a>
- </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00068.html">join_node</a> &other)</td></tr>
-<tr class="separator:a86bf13b42f0d09369b5062fe7a1d97e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5275b0f1db78ca08f968d4c905752ea5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5275b0f1db78ca08f968d4c905752ea5"></a>
+<tr class="memitem:ac274a9006e66ecc75bcd59f784fe1867"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac274a9006e66ecc75bcd59f784fe1867"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ac274a9006e66ecc75bcd59f784fe1867">graph</a> ()</td></tr>
+<tr class="memdesc:ac274a9006e66ecc75bcd59f784fe1867"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a graph with isolated <a class="el" href="a00153.html">task_group_context</a>. <br/></td></tr>
+<tr class="separator:ac274a9006e66ecc75bcd59f784fe1867"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a656cee3d0240a3f142a450800e6b17c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a656cee3d0240a3f142a450800e6b17c7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a656cee3d0240a3f142a450800e6b17c7">graph</a> (<a class="el" href="a00153.html">task_group_context</a> &use_this_context)</td></tr>
+<tr class="memdesc:a656cee3d0240a3f142a450800e6b17c7"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a graph with use_this_context as context. <br/></td></tr>
+<tr class="separator:a656cee3d0240a3f142a450800e6b17c7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3412df4d4bf0113aed93c958bbb49ec4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a3412df4d4bf0113aed93c958bbb49ec4">~graph</a> ()</td></tr>
+<tr class="memdesc:a3412df4d4bf0113aed93c958bbb49ec4"><td class="mdescLeft"> </td><td class="mdescRight">Destroys the graph.  <a href="#a3412df4d4bf0113aed93c958bbb49ec4">More...</a><br/></td></tr>
+<tr class="separator:a3412df4d4bf0113aed93c958bbb49ec4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d13293f3c2d0f2e79e9a93afb0e8fd4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d13293f3c2d0f2e79e9a93afb0e8fd4"></a>
 void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a5275b0f1db78ca08f968d4c905752ea5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a0d13293f3c2d0f2e79e9a93afb0e8fd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad96c910ae45e6c5d2433bb1d9e910891"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ad96c910ae45e6c5d2433bb1d9e910891">increment_wait_count</a> ()</td></tr>
+<tr class="memdesc:ad96c910ae45e6c5d2433bb1d9e910891"><td class="mdescLeft"> </td><td class="mdescRight">Used to register that an external entity may still interact with the graph.  <a href="#ad96c910ae45e6c5d2433bb1d9e910891">More...</a><br/></td></tr>
+<tr class="separator:ad96c910ae45e6c5d2433bb1d9e910891"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af16d14eaed1355ae376bb78dde7762c3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#af16d14eaed1355ae376bb78dde7762c3">decrement_wait_count</a> ()</td></tr>
+<tr class="memdesc:af16d14eaed1355ae376bb78dde7762c3"><td class="mdescLeft"> </td><td class="mdescRight">Deregisters an external entity that may have interacted with the graph.  <a href="#af16d14eaed1355ae376bb78dde7762c3">More...</a><br/></td></tr>
+<tr class="separator:af16d14eaed1355ae376bb78dde7762c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memTemplParams" colspan="2">template<typename Receiver , typename Body > </td></tr>
+<tr class="memitem:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00070.html#ac0a03f1d59dc2ccb9526995599c2c83c">run</a> (Receiver &r, Body body)</td></tr>
+<tr class="memdesc:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="mdescLeft"> </td><td class="mdescRight">Spawns a task that runs a body and puts its output to a specific receiver.  <a href="#ac0a03f1d59dc2ccb9526995599c2c83c">More...</a><br/></td></tr>
+<tr class="separator:ac0a03f1d59dc2ccb9526995599c2c83c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memTemplParams" colspan="2">template<typename Body > </td></tr>
+<tr class="memitem:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00070.html#a6e428c2d7c8780f3c2587a71c4d92466">run</a> (Body body)</td></tr>
+<tr class="memdesc:a6e428c2d7c8780f3c2587a71c4d92466"><td class="mdescLeft"> </td><td class="mdescRight">Spawns a task that runs a function object.  <a href="#a6e428c2d7c8780f3c2587a71c4d92466">More...</a><br/></td></tr>
+<tr class="separator:a6e428c2d7c8780f3c2587a71c4d92466"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a397208ce3b432c83cd24f416b082e8db"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db">wait_for_all</a> ()</td></tr>
+<tr class="memdesc:a397208ce3b432c83cd24f416b082e8db"><td class="mdescLeft"> </td><td class="mdescRight">Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.  <a href="#a397208ce3b432c83cd24f416b082e8db">More...</a><br/></td></tr>
+<tr class="separator:a397208ce3b432c83cd24f416b082e8db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5f59627a7d130cf289f105a849ad3f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5f59627a7d130cf289f105a849ad3f0"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ae5f59627a7d130cf289f105a849ad3f0">root_task</a> ()</td></tr>
+<tr class="memdesc:ae5f59627a7d130cf289f105a849ad3f0"><td class="mdescLeft"> </td><td class="mdescRight">Returns the root task of the graph. <br/></td></tr>
+<tr class="separator:ae5f59627a7d130cf289f105a849ad3f0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1995f97d775a0f601568bba9182fa7c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1995f97d775a0f601568bba9182fa7c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_active</b> (bool a=true)</td></tr>
+<tr class="separator:ab1995f97d775a0f601568bba9182fa7c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5d4dc18ca659159cc4454dd4cac48213"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d4dc18ca659159cc4454dd4cac48213"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_active</b> ()</td></tr>
+<tr class="separator:a5d4dc18ca659159cc4454dd4cac48213"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a91d2f9921342a504668b2cdc3064a846"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91d2f9921342a504668b2cdc3064a846"></a>
+<a class="el" href="a00071.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a91d2f9921342a504668b2cdc3064a846">begin</a> ()</td></tr>
+<tr class="memdesc:a91d2f9921342a504668b2cdc3064a846"><td class="mdescLeft"> </td><td class="mdescRight">start iterator <br/></td></tr>
+<tr class="separator:a91d2f9921342a504668b2cdc3064a846"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a221a7ee0a1f0e69a01add5c1dda43be7"></a>
+<a class="el" href="a00071.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a221a7ee0a1f0e69a01add5c1dda43be7">end</a> ()</td></tr>
+<tr class="memdesc:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="mdescLeft"> </td><td class="mdescRight">end iterator <br/></td></tr>
+<tr class="separator:a221a7ee0a1f0e69a01add5c1dda43be7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac404d2e08620aca079532124551a646a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac404d2e08620aca079532124551a646a"></a>
+<a class="el" href="a00071.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ac404d2e08620aca079532124551a646a">begin</a> () const </td></tr>
+<tr class="memdesc:ac404d2e08620aca079532124551a646a"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
+<tr class="separator:ac404d2e08620aca079532124551a646a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a599e6a885a76db84928b039063c299e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a599e6a885a76db84928b039063c299e4"></a>
+<a class="el" href="a00071.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a599e6a885a76db84928b039063c299e4">end</a> () const </td></tr>
+<tr class="memdesc:a599e6a885a76db84928b039063c299e4"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
+<tr class="separator:a599e6a885a76db84928b039063c299e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2af8f195917817ce2b77ff7b6463c344"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2af8f195917817ce2b77ff7b6463c344"></a>
+<a class="el" href="a00071.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a2af8f195917817ce2b77ff7b6463c344">cbegin</a> () const </td></tr>
+<tr class="memdesc:a2af8f195917817ce2b77ff7b6463c344"><td class="mdescLeft"> </td><td class="mdescRight">start const iterator <br/></td></tr>
+<tr class="separator:a2af8f195917817ce2b77ff7b6463c344"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf6d3f610c2675eaf8bf2a40853081aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf6d3f610c2675eaf8bf2a40853081aa"></a>
+<a class="el" href="a00071.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#acf6d3f610c2675eaf8bf2a40853081aa">cend</a> () const </td></tr>
+<tr class="memdesc:acf6d3f610c2675eaf8bf2a40853081aa"><td class="mdescLeft"> </td><td class="mdescRight">end const iterator <br/></td></tr>
+<tr class="separator:acf6d3f610c2675eaf8bf2a40853081aa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e26f4f5d608e39c8adc9dc6d06a7a01"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">is_cancelled</a> ()</td></tr>
+<tr class="memdesc:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="mdescLeft"> </td><td class="mdescRight">return status of graph execution <br/></td></tr>
+<tr class="separator:a9e26f4f5d608e39c8adc9dc6d06a7a01"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8183d2d71ce8c8b35d314bbb7d66bda3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8183d2d71ce8c8b35d314bbb7d66bda3"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>exception_thrown</b> ()</td></tr>
+<tr class="separator:a8183d2d71ce8c8b35d314bbb7d66bda3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0018db4ee4e5792c0e7e1a2065fbf5c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0018db4ee4e5792c0e7e1a2065fbf5c4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))</td></tr>
+<tr class="separator:a0018db4ee4e5792c0e7e1a2065fbf5c4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a8bb549de1ad8539cd820379b4a9bc568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bb549de1ad8539cd820379b4a9bc568"></a>
+class </td><td class="memItemRight" valign="bottom"><b>graph_node</b></td></tr>
+<tr class="separator:a8bb549de1ad8539cd820379b4a9bc568"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa1d1a46765052516277dce8e9bdf63e"></a>
+template<typename C , typename N > </td></tr>
+<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>graph_iterator</b></td></tr>
+<tr class="separator:aaa1d1a46765052516277dce8e9bdf63e"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The graph class. </p>
+<p>This class serves as a handle to the graph </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a3412df4d4bf0113aed93c958bbb49ec4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::flow::interface7::graph::~graph </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Destroys the graph. </p>
+<p>Calls wait_for_all, then destroys the root task and context. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="af16d14eaed1355ae376bb78dde7762c3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::flow::interface7::graph::decrement_wait_count </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
 </table>
+</div><div class="memdoc">
+
+<p>Deregisters an external entity that may have interacted with the graph. </p>
+<p>The graph will not return from wait_for_all until all the number of decrement_wait_count calls matches the number of increment_wait_count calls. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad96c910ae45e6c5d2433bb1d9e910891"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::flow::interface7::graph::increment_wait_count </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Used to register that an external entity may still interact with the graph. </p>
+<p>The graph will not return from wait_for_all until a matching number of decrement_wait_count calls is made. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac0a03f1d59dc2ccb9526995599c2c83c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Receiver , typename Body > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::flow::interface7::graph::run </td>
+          <td>(</td>
+          <td class="paramtype">Receiver & </td>
+          <td class="paramname"><em>r</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Spawns a task that runs a body and puts its output to a specific receiver. </p>
+<p>The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db" title="Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls...">wait_for_all()</a> on the graph. For example a one-off source. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6e428c2d7c8780f3c2587a71c4d92466"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Body > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::flow::interface7::graph::run </td>
+          <td>(</td>
+          <td class="paramtype">Body </td>
+          <td class="paramname"><em>body</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Spawns a task that runs a function object. </p>
+<p>The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db" title="Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls...">wait_for_all()</a> on the graph. For example a one-off source. </p>
+
+</div>
+</div>
+<a class="anchor" id="a397208ce3b432c83cd24f416b082e8db"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::flow::interface7::graph::wait_for_all </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls. </p>
+<p>The waiting thread will go off and steal work while it is block in the wait_for_all. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00070.png b/doc/html/a00070.png
index 2e87a79..9ec4ddf 100644
Binary files a/doc/html/a00070.png and b/doc/html/a00070.png differ
diff --git a/doc/html/a00071.html b/doc/html/a00071.html
index f2a0626..c5c2b73 100644
--- a/doc/html/a00071.html
+++ b/doc/html/a00071.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::join_node< OutputTuple, tag_matching > Class Template Reference</title>
+<title>tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,89 +33,96 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00071.html">join_node< OutputTuple, tag_matching ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00071.html">graph_iterator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
+<a href="#friends">Friends</a> |
 <a href="a00332.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, tag_matching > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, tag_matching >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00071.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map" alt=""/>
-  <map id="tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map" name="tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map">
-</map>
- </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a781bbb3b7d716e8228ded9837c990d2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a781bbb3b7d716e8228ded9837c990d2e"></a>
-typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a781bbb3b7d716e8228ded9837c990d2e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4a071f54524c83c4767b101cde5a3c98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a071f54524c83c4767b101cde5a3c98"></a>
-typedef <br class="typebreak"/>
-unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
-<tr class="separator:a4a071f54524c83c4767b101cde5a3c98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abdd4f54a62d4b1e34661795501ab96a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdd4f54a62d4b1e34661795501ab96a4"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:abdd4f54a62d4b1e34661795501ab96a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9cc8bbd5e318ac345e2948f957aba1c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cc8bbd5e318ac345e2948f957aba1c2"></a>
+typedef GraphNodeType </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a9cc8bbd5e318ac345e2948f957aba1c2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4376f2192af42eb189c7fe4769b51ea8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4376f2192af42eb189c7fe4769b51ea8"></a>
+typedef GraphNodeType * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a4376f2192af42eb189c7fe4769b51ea8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1628ccc82db8c7ae48042e75629df9c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1628ccc82db8c7ae48042e75629df9c3"></a>
+typedef GraphNodeType & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a1628ccc82db8c7ae48042e75629df9c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a279af8fa5e64a54f31d6bb0d42708697"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a279af8fa5e64a54f31d6bb0d42708697"></a>
+typedef const GraphNodeType & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a279af8fa5e64a54f31d6bb0d42708697"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ef18324f0aab60b4e9b3a5a242224ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ef18324f0aab60b4e9b3a5a242224ce"></a>
+typedef std::forward_iterator_tag </td><td class="memItemRight" valign="bottom"><b>iterator_category</b></td></tr>
+<tr class="separator:a6ef18324f0aab60b4e9b3a5a242224ce"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ae85fc11cda08b814533a9257d6adf994"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae85fc11cda08b814533a9257d6adf994"></a>
-template<typename __TBB_B0 , typename __TBB_B1 > </td></tr>
-<tr class="memitem:ae85fc11cda08b814533a9257d6adf994"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1)</td></tr>
-<tr class="separator:ae85fc11cda08b814533a9257d6adf994"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03ed108eab68b8e592ab96edde3aee8b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a03ed108eab68b8e592ab96edde3aee8b"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 > </td></tr>
-<tr class="memitem:a03ed108eab68b8e592ab96edde3aee8b"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2)</td></tr>
-<tr class="separator:a03ed108eab68b8e592ab96edde3aee8b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab24daee1d70ca07d16dd7ccdad5069f2"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 > </td></tr>
-<tr class="memitem:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3)</td></tr>
-<tr class="separator:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca64e8e0b0b032b4246d57575d73aacd"><td class="memTemplParams" colspan="2"><a class="anchor" id="aca64e8e0b0b032b4246d57575d73aacd"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 > </td></tr>
-<tr class="memitem:aca64e8e0b0b032b4246d57575d73aacd"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4)</td></tr>
-<tr class="separator:aca64e8e0b0b032b4246d57575d73aacd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a93e5f0dbdcc57290f522a89520dbce76"><td class="memTemplParams" colspan="2"><a class="anchor" id="a93e5f0dbdcc57290f522a89520dbce76"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 > </td></tr>
-<tr class="memitem:a93e5f0dbdcc57290f522a89520dbce76"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5)</td></tr>
-<tr class="separator:a93e5f0dbdcc57290f522a89520dbce76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a90567e1dddddbde9de43fa4cd6b7447f"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 > </td></tr>
-<tr class="memitem:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6)</td></tr>
-<tr class="separator:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a58b25ceef8a28e344077999f8d0554b0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a58b25ceef8a28e344077999f8d0554b0"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 > </td></tr>
-<tr class="memitem:a58b25ceef8a28e344077999f8d0554b0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7)</td></tr>
-<tr class="separator:a58b25ceef8a28e344077999f8d0554b0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a75c58249ea5875548a995bae56186ceb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a75c58249ea5875548a995bae56186ceb"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 > </td></tr>
-<tr class="memitem:a75c58249ea5875548a995bae56186ceb"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8)</td></tr>
-<tr class="separator:a75c58249ea5875548a995bae56186ceb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a03a7669da77b8e28460be89709071e21"><td class="memTemplParams" colspan="2"><a class="anchor" id="a03a7669da77b8e28460be89709071e21"></a>
-template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 , typename __TBB_B9 > </td></tr>
-<tr class="memitem:a03a7669da77b8e28460be89709071e21"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00061.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9)</td></tr>
-<tr class="separator:a03a7669da77b8e28460be89709071e21"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab84d8ca452b751406a4968143063eb5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84d8ca452b751406a4968143063eb5d"></a>
- </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00068.html">join_node</a> &other)</td></tr>
-<tr class="separator:ab84d8ca452b751406a4968143063eb5d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeaa120514905a9e5c1c5d712d4633892"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeaa120514905a9e5c1c5d712d4633892"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:aeaa120514905a9e5c1c5d712d4633892"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5082b1f425ffbd4a93533230d6ff99c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5082b1f425ffbd4a93533230d6ff99c0"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#a5082b1f425ffbd4a93533230d6ff99c0">graph_iterator</a> ()</td></tr>
+<tr class="memdesc:a5082b1f425ffbd4a93533230d6ff99c0"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br/></td></tr>
+<tr class="separator:a5082b1f425ffbd4a93533230d6ff99c0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a72937fa822ca1e285a4cb22e544bafbf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a72937fa822ca1e285a4cb22e544bafbf"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#a72937fa822ca1e285a4cb22e544bafbf">graph_iterator</a> (const <a class="el" href="a00071.html">graph_iterator</a> &other)</td></tr>
+<tr class="memdesc:a72937fa822ca1e285a4cb22e544bafbf"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a72937fa822ca1e285a4cb22e544bafbf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ada73cea77a417f0df629eeaf4c1e2002"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada73cea77a417f0df629eeaf4c1e2002"></a>
+<a class="el" href="a00071.html">graph_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#ada73cea77a417f0df629eeaf4c1e2002">operator=</a> (const <a class="el" href="a00071.html">graph_iterator</a> &other)</td></tr>
+<tr class="memdesc:ada73cea77a417f0df629eeaf4c1e2002"><td class="mdescLeft"> </td><td class="mdescRight">Assignment. <br/></td></tr>
+<tr class="separator:ada73cea77a417f0df629eeaf4c1e2002"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1daffd203bebae367ed0f32917048f22"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1daffd203bebae367ed0f32917048f22"></a>
+reference </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#a1daffd203bebae367ed0f32917048f22">operator*</a> () const </td></tr>
+<tr class="memdesc:a1daffd203bebae367ed0f32917048f22"><td class="mdescLeft"> </td><td class="mdescRight">Dereference. <br/></td></tr>
+<tr class="separator:a1daffd203bebae367ed0f32917048f22"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abfb28c989f76822e26b47211febe3d72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfb28c989f76822e26b47211febe3d72"></a>
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#abfb28c989f76822e26b47211febe3d72">operator-></a> () const </td></tr>
+<tr class="memdesc:abfb28c989f76822e26b47211febe3d72"><td class="mdescLeft"> </td><td class="mdescRight">Dereference. <br/></td></tr>
+<tr class="separator:abfb28c989f76822e26b47211febe3d72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b0d834dffd2a99a596e9541b7a96d2a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#a3b0d834dffd2a99a596e9541b7a96d2a">operator==</a> (const <a class="el" href="a00071.html">graph_iterator</a> &other) const </td></tr>
+<tr class="memdesc:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="mdescLeft"> </td><td class="mdescRight">Equality. <br/></td></tr>
+<tr class="separator:a3b0d834dffd2a99a596e9541b7a96d2a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3f6d2cc6cbec2dc1194f7d5f4091a73"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">operator!=</a> (const <a class="el" href="a00071.html">graph_iterator</a> &other) const </td></tr>
+<tr class="memdesc:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="mdescLeft"> </td><td class="mdescRight">Inequality. <br/></td></tr>
+<tr class="separator:af3f6d2cc6cbec2dc1194f7d5f4091a73"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab84587ed134f01886f6a0d64d5a6ccef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84587ed134f01886f6a0d64d5a6ccef"></a>
+<a class="el" href="a00071.html">graph_iterator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#ab84587ed134f01886f6a0d64d5a6ccef">operator++</a> ()</td></tr>
+<tr class="memdesc:ab84587ed134f01886f6a0d64d5a6ccef"><td class="mdescLeft"> </td><td class="mdescRight">Pre-increment. <br/></td></tr>
+<tr class="separator:ab84587ed134f01886f6a0d64d5a6ccef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abc9d079735fe9c1b07d136284556e15a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc9d079735fe9c1b07d136284556e15a"></a>
+<a class="el" href="a00071.html">graph_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html#abc9d079735fe9c1b07d136284556e15a">operator++</a> (int)</td></tr>
+<tr class="memdesc:abc9d079735fe9c1b07d136284556e15a"><td class="mdescLeft"> </td><td class="mdescRight">Post-increment. <br/></td></tr>
+<tr class="separator:abc9d079735fe9c1b07d136284556e15a"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8b0dbc1b36724e5e4635ac651c218cb"></a>
+class </td><td class="memItemRight" valign="bottom"><b>graph</b></td></tr>
+<tr class="separator:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8bb549de1ad8539cd820379b4a9bc568"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bb549de1ad8539cd820379b4a9bc568"></a>
+class </td><td class="memItemRight" valign="bottom"><b>graph_node</b></td></tr>
+<tr class="separator:a8bb549de1ad8539cd820379b4a9bc568"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00072.html b/doc/html/a00072.html
index 72aad5b..647a4f0 100644
--- a/doc/html/a00072.html
+++ b/doc/html/a00072.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::limiter_node< T > Class Template Reference</title>
+<title>tbb::flow::interface7::graph_node Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,234 +33,96 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00072.html">limiter_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00072.html">graph_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
 <a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00310.html">List of all members</a>  </div>
+<a href="a00334.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::limiter_node< T > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::graph_node Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Forwards messages only if the threshold has not been reached.  
+<p>The base of all graph nodes.  
  <a href="a00072.html#details">More...</a></p>
 
 <p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::limiter_node< T >:</div>
+Inheritance diagram for tbb::flow::interface7::graph_node:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00072.png" usemap="#tbb::flow::interface7::limiter_node< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::limiter_node< T >_map" name="tbb::flow::interface7::limiter_node< T >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,226,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="236,56,462,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="472,56,698,80"/>
+  <img src="a00072.png" usemap="#tbb::flow::interface7::graph_node_map" alt=""/>
+  <map id="tbb::flow::interface7::graph_node_map" name="tbb::flow::interface7::graph_node_map">
+<area href="a00098.html" alt="tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator >" shape="rect" coords="613,112,1216,136"/>
+<area href="a00017.html" title="Implements a async node. " alt="tbb::flow::interface7::async_node< Input, Output, Allocator >" shape="rect" coords="613,168,1216,192"/>
+<area href="a00028.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="613,224,1216,248"/>
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="613,280,1216,304"/>
+<area href="a00038.html" alt="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >" shape="rect" coords="613,336,1216,360"/>
+<area href="a00039.html" alt="tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >" shape="rect" coords="613,392,1216,416"/>
+<area href="a00040.html" alt="tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >" shape="rect" coords="613,448,1216,472"/>
+<area href="a00056.html" title="Implements an executable node that supports continue_msg -> Output. " alt="tbb::flow::interface7::continue_node< Output >" shape="rect" coords="613,504,1216,528"/>
+<area href="a00068.html" title="Implements a function node that supports Input -> Output. " alt="tbb::flow::interface7::function_node< Input, Output, G, Allocator >" shape="rect" coords="613,560,1216,584"/>
+<area href="a00091.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="613,616,1216,640"/>
+<area href="a00098.html" title="implements a function node that supports Input -> (set of outputs) " alt="tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator >" shape="rect" coords="613,672,1216,696"/>
+<area href="a00104.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="613,728,1216,752"/>
+<area href="a00144.html" title="An executable node that acts as a source, i.e. it has no predecessors. " alt="tbb::flow::interface7::source_node< Output >" shape="rect" coords="613,784,1216,808"/>
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a69eff22a9947c69979454b3e3e02de4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69eff22a9947c69979454b3e3e02de4a"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a69eff22a9947c69979454b3e3e02de4a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99fc5a0478d535dbde40afbb9104b235"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99fc5a0478d535dbde40afbb9104b235"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a99fc5a0478d535dbde40afbb9104b235"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad8a2c4701d026ddbdda2bb2bc7b3e0fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8a2c4701d026ddbdda2bb2bc7b3e0fd"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:ad8a2c4701d026ddbdda2bb2bc7b3e0fd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7ec4d2a468d636c36774840a2f18bc4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec4d2a468d636c36774840a2f18bc4d"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a7ec4d2a468d636c36774840a2f18bc4d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1c8daee8d1fd31e63f78dbb8d0ec87d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">limiter_node</a> (<a class="el" href="a00061.html">graph</a> &g, size_t threshold, int num_decrement_predecessors=0)</td></tr>
-<tr class="memdesc:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99b359e7a83de8dc72dcad01798acab8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99b359e7a83de8dc72dcad01798acab8"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#a99b359e7a83de8dc72dcad01798acab8">limiter_node</a> (const <a class="el" href="a00072.html">limiter_node</a> &src)</td></tr>
-<tr class="memdesc:a99b359e7a83de8dc72dcad01798acab8"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a99b359e7a83de8dc72dcad01798acab8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7b4e663007df5428bdb376a887a6c580"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b4e663007df5428bdb376a887a6c580"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a7b4e663007df5428bdb376a887a6c580"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2cfd954eb06732f7bae8f2c8fe28735"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#ad2cfd954eb06732f7bae8f2c8fe28735">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="mdescLeft"> </td><td class="mdescRight">Replace the current successor with this new successor. <br/></td></tr>
-<tr class="separator:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7b092dcc2808abf02816d4ac9c86e66"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#ac7b092dcc2808abf02816d4ac9c86e66">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ac7b092dcc2808abf02816d4ac9c86e66"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node.  <a href="#ac7b092dcc2808abf02816d4ac9c86e66">More...</a><br/></td></tr>
-<tr class="separator:ac7b092dcc2808abf02816d4ac9c86e66"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aca5ef5cec3b26227d71686d99ee04f7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca5ef5cec3b26227d71686d99ee04f7e"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#aca5ef5cec3b26227d71686d99ee04f7e">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &src)</td></tr>
-<tr class="memdesc:aca5ef5cec3b26227d71686d99ee04f7e"><td class="mdescLeft"> </td><td class="mdescRight">Adds src to the list of cached predecessors. <br/></td></tr>
-<tr class="separator:aca5ef5cec3b26227d71686d99ee04f7e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8aca7b4bd4ee13faf713021eb0d86735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aca7b4bd4ee13faf713021eb0d86735"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#a8aca7b4bd4ee13faf713021eb0d86735">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &src)</td></tr>
-<tr class="memdesc:a8aca7b4bd4ee13faf713021eb0d86735"><td class="mdescLeft"> </td><td class="mdescRight">Removes src from the list of cached predecessors. <br/></td></tr>
-<tr class="separator:a8aca7b4bd4ee13faf713021eb0d86735"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
-<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
-<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
-<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
-<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
-<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
-<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
-<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:ac313b6586bf183a33c3196037964547d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac313b6586bf183a33c3196037964547d"></a>
-internal::decrementer<br class="typebreak"/>
-< <a class="el" href="a00072.html">limiter_node</a>< T > > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#ac313b6586bf183a33c3196037964547d">decrement</a></td></tr>
-<tr class="memdesc:ac313b6586bf183a33c3196037964547d"><td class="mdescLeft"> </td><td class="mdescRight">The internal <a class="el" href="a00106.html">receiver< continue_msg ></a> that decrements the count. <br/></td></tr>
-<tr class="separator:ac313b6586bf183a33c3196037964547d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2eaba3736a405fc5c2267d9e7eb95c27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2eaba3736a405fc5c2267d9e7eb95c27"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)=0</td></tr>
+<tr class="separator:a2eaba3736a405fc5c2267d9e7eb95c27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a919d1ec7f0ce43511a03dde7445dcd00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a919d1ec7f0ce43511a03dde7445dcd00"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()=0</td></tr>
+<tr class="separator:a919d1ec7f0ce43511a03dde7445dcd00"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
 Protected Member Functions</h2></td></tr>
-<tr class="memitem:a0551cf104b35669b5f5153c1d03d5d2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0551cf104b35669b5f5153c1d03d5d2d"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html#a0551cf104b35669b5f5153c1d03d5d2d">try_put_task</a> (const T &t)</td></tr>
-<tr class="memdesc:a0551cf104b35669b5f5153c1d03d5d2d"><td class="mdescLeft"> </td><td class="mdescRight">Puts an item to this receiver. <br/></td></tr>
-<tr class="separator:a0551cf104b35669b5f5153c1d03d5d2d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab3c1631293b605d0341495a24c93212b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3c1631293b605d0341495a24c93212b"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:ab3c1631293b605d0341495a24c93212b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19426306eaf174d85432cd0d0f0888a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19426306eaf174d85432cd0d0f0888a3"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:a19426306eaf174d85432cd0d0f0888a3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:affe7799181c01bdd203c2ca2117dae7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affe7799181c01bdd203c2ca2117dae7d"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass< limiter_node< T > ></b></td></tr>
-<tr class="separator:affe7799181c01bdd203c2ca2117dae7d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a80d4e1a1fa28ce76b1b08e12f93983f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80d4e1a1fa28ce76b1b08e12f93983f2"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::decrementer< limiter_node< T > ></b></td></tr>
-<tr class="separator:a80d4e1a1fa28ce76b1b08e12f93983f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8b0dbc1b36724e5e4635ac651c218cb"></a>
+class </td><td class="memItemRight" valign="bottom"><b>graph</b></td></tr>
+<tr class="separator:ab8b0dbc1b36724e5e4635ac651c218cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa1d1a46765052516277dce8e9bdf63e"></a>
+template<typename C , typename N > </td></tr>
+<tr class="memitem:aaa1d1a46765052516277dce8e9bdf63e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>graph_iterator</b></td></tr>
+<tr class="separator:aaa1d1a46765052516277dce8e9bdf63e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::flow::interface7::limiter_node< T ></h3>
-
-<p>Forwards messages only if the threshold has not been reached. </p>
-<p>This node forwards items until its threshold is reached. It contains no buffering. If the downstream node rejects, the message is dropped. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ac7b092dcc2808abf02816d4ac9c86e66"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node</a>< T >::remove_successor </td>
-          <td>(</td>
-          <td class="paramtype"><a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > & </td>
-          <td class="paramname"><em>r</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Removes a successor from this node. </p>
-<p>r.remove_predecessor(*this) is also called. </p>
-
-<p>Implements <a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<div class="textblock"><p>The base of all graph nodes. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00072.png b/doc/html/a00072.png
index e821303..2f5ee7a 100644
Binary files a/doc/html/a00072.png and b/doc/html/a00072.png differ
diff --git a/doc/html/a00073.html b/doc/html/a00073.html
index ea85725..36a12f4 100644
--- a/doc/html/a00073.html
+++ b/doc/html/a00073.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::memory_pool< Alloc > Class Template Reference</title>
+<title>tbb::internal::tbb_thread_v3::id Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,54 +33,58 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00073.html">memory_pool</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00164.html">tbb_thread_v3</a></li><li class="navelem"><a class="el" href="a00073.html">id</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00360.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00420.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool< Alloc > Class Template Reference</div>  </div>
+<div class="title">tbb::internal::tbb_thread_v3::id Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Thread-safe growable pool allocator for variable-size requests.  
- <a href="a00073.html#details">More...</a></p>
-
-<p><code>#include <memory_pool.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface6::memory_pool< Alloc >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00073.png" usemap="#tbb::interface6::memory_pool< Alloc >_map" alt=""/>
-  <map id="tbb::interface6::memory_pool< Alloc >_map" name="tbb::interface6::memory_pool< Alloc >_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:af4c36829a159eac04d630ac5a99b9354"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4c36829a159eac04d630ac5a99b9354"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00073.html#af4c36829a159eac04d630ac5a99b9354">memory_pool</a> (const Alloc &src=Alloc())</td></tr>
-<tr class="memdesc:af4c36829a159eac04d630ac5a99b9354"><td class="mdescLeft"> </td><td class="mdescRight">construct pool with underlying allocator <br/></td></tr>
-<tr class="separator:af4c36829a159eac04d630ac5a99b9354"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2c7645b39b7280b1b3cf393d05fbaf7"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00073.html#ad2c7645b39b7280b1b3cf393d05fbaf7">~memory_pool</a> ()</td></tr>
-<tr class="memdesc:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="mdescLeft"> </td><td class="mdescRight">destroy pool <br/></td></tr>
-<tr class="separator:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:aa08381fcad9d2adc0bf8fb009ad38366"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa08381fcad9d2adc0bf8fb009ad38366"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb_thread_v3</b></td></tr>
+<tr class="separator:aa08381fcad9d2adc0bf8fb009ad38366"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1ffa9d9b2f7e18d73535b2879ba64ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ffa9d9b2f7e18d73535b2879ba64ae0"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a1ffa9d9b2f7e18d73535b2879ba64ae0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3be52bbc6138f2d2180d89d588b5c404"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3be52bbc6138f2d2180d89d588b5c404"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a3be52bbc6138f2d2180d89d588b5c404"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5cd4a67d579d3ea07557ce6a632bdff0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cd4a67d579d3ea07557ce6a632bdff0"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator<</b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a5cd4a67d579d3ea07557ce6a632bdff0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaf358e695ce2c3bc64029bb69b6b7841"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf358e695ce2c3bc64029bb69b6b7841"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator<=</b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:aaf358e695ce2c3bc64029bb69b6b7841"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad9277ffe4c9b7cdd4687d0cab4bf8cd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9277ffe4c9b7cdd4687d0cab4bf8cd8"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator></b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:ad9277ffe4c9b7cdd4687d0cab4bf8cd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9f559c30c06931effca0ee4a351d8fff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f559c30c06931effca0ee4a351d8fff"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator>=</b> (<a class="el" href="a00073.html">tbb_thread_v3::id</a> x, <a class="el" href="a00073.html">tbb_thread_v3::id</a> y) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a9f559c30c06931effca0ee4a351d8fff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8dcf9ef009469428dc3752f54240eb69"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8dcf9ef009469428dc3752f54240eb69"></a>
+template<class charT , class traits > </td></tr>
+<tr class="memitem:a8dcf9ef009469428dc3752f54240eb69"><td class="memTemplItemLeft" align="right" valign="top">std::basic_ostream< charT, <br class="typebreak"/>
+traits > & </td><td class="memTemplItemRight" valign="bottom"><b>operator<<</b> (std::basic_ostream< charT, traits > &out, <a class="el" href="a00073.html">tbb_thread_v3::id</a> <a class="el" href="a00073.html">id</a>)</td></tr>
+<tr class="separator:a8dcf9ef009469428dc3752f54240eb69"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a77bf86c87119e219bb508d787d97da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a77bf86c87119e219bb508d787d97da"></a>
+<a class="el" href="a00073.html">tbb_thread_v3::id</a> <br class="typebreak"/>
+__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>thread_get_id_v3</b> ()</td></tr>
+<tr class="separator:a0a77bf86c87119e219bb508d787d97da"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Alloc><br/>
-class tbb::interface6::memory_pool< Alloc ></h3>
-
-<p>Thread-safe growable pool allocator for variable-size requests. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_thread.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00073.png b/doc/html/a00073.png
deleted file mode 100644
index 040c525..0000000
Binary files a/doc/html/a00073.png and /dev/null differ
diff --git a/doc/html/a00074.html b/doc/html/a00074.html
index 087577e..58d72bf 100644
--- a/doc/html/a00074.html
+++ b/doc/html/a00074.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::memory_pool_allocator< T, P > Class Template Reference</title>
+<title>tbb::improper_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,141 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00074.html">memory_pool_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00074.html">improper_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00356.html">List of all members</a>  </div>
+<a href="a00319.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< T, P > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::improper_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<p>Exception for PPL locks.  
  <a href="a00074.html#details">More...</a></p>
 
-<p><code>#include <memory_pool.h></code></p>
+<p><code>#include <tbb_exception.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::improper_lock:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00074.png" usemap="#tbb::improper_lock_map" alt=""/>
+  <map id="tbb::improper_lock_map" name="tbb::improper_lock_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">rebind</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a6202050e0edbded0b0534ea4be9547e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6202050e0edbded0b0534ea4be9547e0"></a>
-typedef <br class="typebreak"/>
-tbb::internal::allocator_type<br class="typebreak"/>
-< T >::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a6202050e0edbded0b0534ea4be9547e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07450f397df1af8096f31bfa8f2e1722"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07450f397df1af8096f31bfa8f2e1722"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a07450f397df1af8096f31bfa8f2e1722"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a972521ed466cc8140d386331a25e895a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a972521ed466cc8140d386331a25e895a"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a972521ed466cc8140d386331a25e895a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83b91759effc3a452fc565ac3bb45613"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83b91759effc3a452fc565ac3bb45613"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a83b91759effc3a452fc565ac3bb45613"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15abe537e2dad4132c956c08d9d0a27e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15abe537e2dad4132c956c08d9d0a27e"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a15abe537e2dad4132c956c08d9d0a27e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac20767f3b7a8fcdc1aff0b0874245d3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac20767f3b7a8fcdc1aff0b0874245d3a"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac20767f3b7a8fcdc1aff0b0874245d3a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a23267e855e2427b401b99ce4b547f83e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23267e855e2427b401b99ce4b547f83e"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a23267e855e2427b401b99ce4b547f83e"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a384be31e682a3b86b5b11e635232c9c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a384be31e682a3b86b5b11e635232c9c5"></a>
- </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (pool_type &pool)  throw ()</td></tr>
-<tr class="separator:a384be31e682a3b86b5b11e635232c9c5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa2b4cf16b566e40ddb196c371e5ae96e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b4cf16b566e40ddb196c371e5ae96e"></a>
- </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a> &src)  throw ()</td></tr>
-<tr class="separator:aa2b4cf16b566e40ddb196c371e5ae96e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad32ad8245399fbdb38a0a41e912d86d9"></a>
-template<typename U > </td></tr>
-<tr class="memitem:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, P > &src)  throw ()</td></tr>
-<tr class="separator:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55653a8c539901be6ca24a120a5d7b72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55653a8c539901be6ca24a120a5d7b72"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-<tr class="separator:a55653a8c539901be6ca24a120a5d7b72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8a3e4236f6e1266f126dac557906ce2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a3e4236f6e1266f126dac557906ce2c"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-<tr class="separator:a8a3e4236f6e1266f126dac557906ce2c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a10b9888883a3dbd66e87c4a7f874ef28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10b9888883a3dbd66e87c4a7f874ef28"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a10b9888883a3dbd66e87c4a7f874ef28">allocate</a> (size_type n, const void *=0)</td></tr>
-<tr class="memdesc:a10b9888883a3dbd66e87c4a7f874ef28"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
-<tr class="separator:a10b9888883a3dbd66e87c4a7f874ef28"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9fcf288f2d653972d1bdc0c65abebed4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fcf288f2d653972d1bdc0c65abebed4"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a9fcf288f2d653972d1bdc0c65abebed4">deallocate</a> (pointer p, size_type)</td></tr>
-<tr class="memdesc:a9fcf288f2d653972d1bdc0c65abebed4"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
-<tr class="separator:a9fcf288f2d653972d1bdc0c65abebed4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bded8e3fb2cec32b48771e7a1bbb838"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a2bded8e3fb2cec32b48771e7a1bbb838">max_size</a> () const   throw ()</td></tr>
-<tr class="memdesc:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
-<tr class="separator:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac51b34ef90ecabdd2e0483e25603a15b"></a>
-template<typename U , typename... Args> </td></tr>
-<tr class="memitem:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00074.html#ac51b34ef90ecabdd2e0483e25603a15b">construct</a> (U *p, Args &&...args)</td></tr>
-<tr class="memdesc:ac51b34ef90ecabdd2e0483e25603a15b"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
-<tr class="separator:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:affac76f7742c4d8ea6345e0aad82792a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affac76f7742c4d8ea6345e0aad82792a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
-<tr class="separator:affac76f7742c4d8ea6345e0aad82792a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2223b6469f88aadc432a4b3f88728d0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2223b6469f88aadc432a4b3f88728d0f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html#a2223b6469f88aadc432a4b3f88728d0f">destroy</a> (pointer p)</td></tr>
-<tr class="memdesc:a2223b6469f88aadc432a4b3f88728d0f"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
-<tr class="separator:a2223b6469f88aadc432a4b3f88728d0f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:aecd858782faee0fb5fa707671cfc49aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecd858782faee0fb5fa707671cfc49aa"></a>
-typedef P </td><td class="memItemRight" valign="bottom"><b>pool_type</b></td></tr>
-<tr class="separator:aecd858782faee0fb5fa707671cfc49aa"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a0fbd737811d556f1d2898d3722e85f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fbd737811d556f1d2898d3722e85f32"></a>
-pool_type * </td><td class="memItemRight" valign="bottom"><b>my_pool</b></td></tr>
-<tr class="separator:a0fbd737811d556f1d2898d3722e85f32"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c34ee2e5a57845f050b507cc516a005"></a>
-template<typename U , typename R > </td></tr>
-<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b></td></tr>
-<tr class="separator:a6c34ee2e5a57845f050b507cc516a005"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac8c26a64f4e012f2a9cf6035cf029905"></a>
-template<typename V , typename U , typename R > </td></tr>
-<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
-<tr class="separator:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2f7230e5bc817e7512e18b5311b3371b"></a>
-template<typename V , typename U , typename R > </td></tr>
-<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
-<tr class="separator:a2f7230e5bc817e7512e18b5311b3371b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a71847061d0e5bef413e28a9031e1f07e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71847061d0e5bef413e28a9031e1f07e"></a>
+const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+<tr class="separator:a71847061d0e5bef413e28a9031e1f07e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename P = internal::pool_base><br/>
-class tbb::interface6::memory_pool_allocator< T, P ></h3>
-
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
+<div class="textblock"><p>Exception for PPL locks. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00065.png b/doc/html/a00074.png
similarity index 100%
copy from doc/html/a00065.png
copy to doc/html/a00074.png
diff --git a/doc/html/a00075.html b/doc/html/a00075.html
index d361e26..b7993c3 100644
--- a/doc/html/a00075.html
+++ b/doc/html/a00075.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::memory_pool_allocator< void, P > Class Template Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,93 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00075.html">memory_pool_allocator< void, P ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00075.html">indexer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00358.html">List of all members</a>  </div>
+<a href="a00352.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< void, P > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
- <a href="a00075.html#details">More...</a></p>
-
-<p><code>#include <memory_pool.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00075.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">rebind</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:aa4a3be261ace6f19c3c40ef2503c4984"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4a3be261ace6f19c3c40ef2503c4984"></a>
-typedef P </td><td class="memItemRight" valign="bottom"><b>pool_type</b></td></tr>
-<tr class="separator:aa4a3be261ace6f19c3c40ef2503c4984"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afb58c3e8f2e0a8f9152eae641ee420fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb58c3e8f2e0a8f9152eae641ee420fa"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:afb58c3e8f2e0a8f9152eae641ee420fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e53158493ed0d617460e8dd6534a525"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e53158493ed0d617460e8dd6534a525"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a5e53158493ed0d617460e8dd6534a525"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a676a2c2649d6ffc45466d94555d71df2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a676a2c2649d6ffc45466d94555d71df2"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a676a2c2649d6ffc45466d94555d71df2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa03aeff58b09fa3c2a13558681ea21fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa03aeff58b09fa3c2a13558681ea21fa"></a>
+typedef tuple< T0, T1, T2, T3, <br class="typebreak"/>
+T4, T5, T6, T7, T8, T9 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:aa03aeff58b09fa3c2a13558681ea21fa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a501735482a834c96f2bfd0eb4f25f098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a501735482a834c96f2bfd0eb4f25f098"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4, <br class="typebreak"/>
+T5, T6, T7, T8, T9 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a501735482a834c96f2bfd0eb4f25f098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a52e8f318e1e746e442789d697f43c2d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52e8f318e1e746e442789d697f43c2d5"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a52e8f318e1e746e442789d697f43c2d5"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8e697e2d03e8f69de1728409bec4f7b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e697e2d03e8f69de1728409bec4f7b5"></a>
- </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (pool_type &pool)  throw ()</td></tr>
-<tr class="separator:a8e697e2d03e8f69de1728409bec4f7b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a001103c81ba25e645305f19a82db2e4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a001103c81ba25e645305f19a82db2e4a"></a>
- </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a> &src)  throw ()</td></tr>
-<tr class="separator:a001103c81ba25e645305f19a82db2e4a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d3db3082c1fa40ccb3997626f61e61e"></a>
-template<typename U > </td></tr>
-<tr class="memitem:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, P > &src)  throw ()</td></tr>
-<tr class="separator:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a1e497d3d88dcb063ab6594eb4ad3dc35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e497d3d88dcb063ab6594eb4ad3dc35"></a>
-pool_type * </td><td class="memItemRight" valign="bottom"><b>my_pool</b></td></tr>
-<tr class="separator:a1e497d3d88dcb063ab6594eb4ad3dc35"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c34ee2e5a57845f050b507cc516a005"></a>
-template<typename U , typename R > </td></tr>
-<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b></td></tr>
-<tr class="separator:a6c34ee2e5a57845f050b507cc516a005"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac8c26a64f4e012f2a9cf6035cf029905"></a>
-template<typename V , typename U , typename R > </td></tr>
-<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
-<tr class="separator:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2f7230e5bc817e7512e18b5311b3371b"></a>
-template<typename V , typename U , typename R > </td></tr>
-<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00074.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00074.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
-<tr class="separator:a2f7230e5bc817e7512e18b5311b3371b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adb3dca9548b0cc44d39ad49a98580be8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb3dca9548b0cc44d39ad49a98580be8"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:adb3dca9548b0cc44d39ad49a98580be8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5a30f9c453e390e68a0d5388218dda7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a30f9c453e390e68a0d5388218dda7e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:a5a30f9c453e390e68a0d5388218dda7e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3fbf113cf2affa15858afc2bbc36cd01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fbf113cf2affa15858afc2bbc36cd01"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a3fbf113cf2affa15858afc2bbc36cd01"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename P><br/>
-class tbb::interface6::memory_pool_allocator< void, P ></h3>
-
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00075.png b/doc/html/a00075.png
new file mode 100644
index 0000000..51e8de2
Binary files /dev/null and b/doc/html/a00075.png differ
diff --git a/doc/html/a00076.html b/doc/html/a00076.html
index 8db3e96..4ec17d9 100644
--- a/doc/html/a00076.html
+++ b/doc/html/a00076.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>rml::MemPoolPolicy Struct Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,63 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00219.html">rml</a></li><li class="navelem"><a class="el" href="a00076.html">MemPoolPolicy</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00076.html">indexer_node< T0 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00243.html">List of all members</a>  </div>
+<a href="a00353.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">rml::MemPoolPolicy Struct Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0 >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00076.png" usemap="#tbb::flow::interface7::indexer_node< T0 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0 >_map" name="tbb::flow::interface7::indexer_node< T0 >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ad72f0465769495e0b48bbf8ef9c983b1"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>TBBMALLOC_POOL_VERSION</b> = 1
- }</td></tr>
-<tr class="separator:ad72f0465769495e0b48bbf8ef9c983b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa370ac336b849cad62ee587b615176dd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa370ac336b849cad62ee587b615176dd"></a>
+typedef tuple< T0 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:aa370ac336b849cad62ee587b615176dd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae5188977d7e9ea063d72fd9076655e89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5188977d7e9ea063d72fd9076655e89"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ae5188977d7e9ea063d72fd9076655e89"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19ea083d7b75d24ea588663b6d930592"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19ea083d7b75d24ea588663b6d930592"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a19ea083d7b75d24ea588663b6d930592"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a73e485e36709acc04a9448eaa95bb666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73e485e36709acc04a9448eaa95bb666"></a>
- </td><td class="memItemRight" valign="bottom"><b>MemPoolPolicy</b> (rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false)</td></tr>
-<tr class="separator:a73e485e36709acc04a9448eaa95bb666"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a0935ae38d632881a6d6cccb675cb6f27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0935ae38d632881a6d6cccb675cb6f27"></a>
-rawAllocType </td><td class="memItemRight" valign="bottom"><b>pAlloc</b></td></tr>
-<tr class="separator:a0935ae38d632881a6d6cccb675cb6f27"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a221c0a53496a391c60d2f452fc9d76ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a221c0a53496a391c60d2f452fc9d76ae"></a>
-rawFreeType </td><td class="memItemRight" valign="bottom"><b>pFree</b></td></tr>
-<tr class="separator:a221c0a53496a391c60d2f452fc9d76ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac91fffeccd1f4255bbb5719f25785bce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac91fffeccd1f4255bbb5719f25785bce"></a>
-size_t </td><td class="memItemRight" valign="bottom"><b>granularity</b></td></tr>
-<tr class="separator:ac91fffeccd1f4255bbb5719f25785bce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaea7ca6973332913c839073822352046"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaea7ca6973332913c839073822352046"></a>
-int </td><td class="memItemRight" valign="bottom"><b>version</b></td></tr>
-<tr class="separator:aaea7ca6973332913c839073822352046"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab00be5199577e8dd87f25c867a488aaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab00be5199577e8dd87f25c867a488aaf"></a>
-unsigned </td><td class="memItemRight" valign="bottom"><b>fixedPool</b>: 1</td></tr>
-<tr class="separator:ab00be5199577e8dd87f25c867a488aaf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afc2ea43e020580853224fa430736d38a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc2ea43e020580853224fa430736d38a"></a>
-unsigned </td><td class="memItemRight" valign="bottom"><b>keepAllMemory</b>: 1</td></tr>
-<tr class="separator:afc2ea43e020580853224fa430736d38a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe8bde7ec5c0f347f5c8e648c92c612"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe8bde7ec5c0f347f5c8e648c92c612"></a>
-unsigned </td><td class="memItemRight" valign="bottom"><b>reserved</b>: 30</td></tr>
-<tr class="separator:a2fe8bde7ec5c0f347f5c8e648c92c612"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a76587038b89e9483e486c5a3b1fa4dd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76587038b89e9483e486c5a3b1fa4dd8"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a76587038b89e9483e486c5a3b1fa4dd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa2b3a2580e67582250cf1ef9f32f92d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b3a2580e67582250cf1ef9f32f92d4"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:aa2b3a2580e67582250cf1ef9f32f92d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e8206427ce9adf2f6b88991e20fcca3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e8206427ce9adf2f6b88991e20fcca3"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a1e8206427ce9adf2f6b88991e20fcca3"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00199.html">scalable_allocator.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00076.png b/doc/html/a00076.png
new file mode 100644
index 0000000..1cddb63
Binary files /dev/null and b/doc/html/a00076.png differ
diff --git a/doc/html/a00077.html b/doc/html/a00077.html
index 29faa10..ffc57c4 100644
--- a/doc/html/a00077.html
+++ b/doc/html/a00077.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::missing_wait Class Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00077.html">missing_wait</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00077.html">indexer_node< T0, T1 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00300.html">List of all members</a>  </div>
+<a href="a00354.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::missing_wait Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Exception for missing wait on <a class="el" href="a00133.html">structured_task_group</a>.  
- <a href="a00077.html#details">More...</a></p>
-
-<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::missing_wait:</div>
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1 >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00077.png" usemap="#tbb::missing_wait_map" alt=""/>
-  <map id="tbb::missing_wait_map" name="tbb::missing_wait_map">
+  <img src="a00077.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1 >_map" name="tbb::flow::interface7::indexer_node< T0, T1 >_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a4a65bc98b3484d66d07de7689af675e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a65bc98b3484d66d07de7689af675e8"></a>
+typedef tuple< T0, T1 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:a4a65bc98b3484d66d07de7689af675e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a29b2f415ee274f7ce5289d0c9d03da96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29b2f415ee274f7ce5289d0c9d03da96"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a29b2f415ee274f7ce5289d0c9d03da96"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:add3df69d677bd66a17dafec4e842725a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add3df69d677bd66a17dafec4e842725a"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:add3df69d677bd66a17dafec4e842725a"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:abfa0b14450e89cab85092b188ac86fd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfa0b14450e89cab85092b188ac86fd6"></a>
-const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-<tr class="separator:abfa0b14450e89cab85092b188ac86fd6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a20fa956b588bbf778633bdc5b16ea2f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20fa956b588bbf778633bdc5b16ea2f2"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a20fa956b588bbf778633bdc5b16ea2f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3ab0a8aec4a116ad31b8f809ee55080"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3ab0a8aec4a116ad31b8f809ee55080"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:ad3ab0a8aec4a116ad31b8f809ee55080"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a360bff898006bd5a72e3f70babc26c77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a360bff898006bd5a72e3f70babc26c77"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a360bff898006bd5a72e3f70babc26c77"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception for missing wait on <a class="el" href="a00133.html">structured_task_group</a>. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00077.png b/doc/html/a00077.png
index 7f9c4b3..f41752a 100644
Binary files a/doc/html/a00077.png and b/doc/html/a00077.png differ
diff --git a/doc/html/a00078.html b/doc/html/a00078.html
index 0fee0f6..c63d2f8 100644
--- a/doc/html/a00078.html
+++ b/doc/html/a00078.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::movable_exception< ExceptionData > Class Template Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,195 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00078.html">movable_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00078.html">indexer_node< T0, T1, T2 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="a00304.html">List of all members</a>  </div>
+<a href="a00355.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::movable_exception< ExceptionData > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  
- <a href="a00078.html#details">More...</a></p>
-
-<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::movable_exception< ExceptionData >:</div>
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2 >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00078.png" usemap="#tbb::movable_exception< ExceptionData >_map" alt=""/>
-  <map id="tbb::movable_exception< ExceptionData >_map" name="tbb::movable_exception< ExceptionData >_map">
-<area href="a00146.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads..." alt="tbb::tbb_exception" shape="rect" coords="0,56,248,80"/>
+  <img src="a00078.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2 >_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aa576ca04a627dbd1ea3ae9042e454b81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa576ca04a627dbd1ea3ae9042e454b81"></a>
+typedef tuple< T0, T1, T2 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:aa576ca04a627dbd1ea3ae9042e454b81"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f36c30b2fb71fb62985b7d21aca53a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f36c30b2fb71fb62985b7d21aca53a2"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a7f36c30b2fb71fb62985b7d21aca53a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4b2b08bfc3d99eef385aaae3a4e9200"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4b2b08bfc3d99eef385aaae3a4e9200"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:af4b2b08bfc3d99eef385aaae3a4e9200"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a785b749022a1e6a7486d315b84bd37e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a785b749022a1e6a7486d315b84bd37e5"></a>
- </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const ExceptionData &data_)</td></tr>
-<tr class="separator:a785b749022a1e6a7486d315b84bd37e5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7be7103edd861653baebbca5aeed5205"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7be7103edd861653baebbca5aeed5205"></a>
- </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const <a class="el" href="a00078.html">movable_exception</a> &src)  throw ()</td></tr>
-<tr class="separator:a7be7103edd861653baebbca5aeed5205"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a35a4bf997b56ea221ae1bd9bb17cd33b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35a4bf997b56ea221ae1bd9bb17cd33b"></a>
-const <a class="el" href="a00078.html">movable_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00078.html">movable_exception</a> &src)</td></tr>
-<tr class="separator:a35a4bf997b56ea221ae1bd9bb17cd33b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4eac52bc2a10d4bfcd74ad85c2853740"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eac52bc2a10d4bfcd74ad85c2853740"></a>
-ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> ()  throw ()</td></tr>
-<tr class="separator:a4eac52bc2a10d4bfcd74ad85c2853740"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a394c11a07cfcd4977327f58362aa1439"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a394c11a07cfcd4977327f58362aa1439"></a>
-const ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> () const   throw ()</td></tr>
-<tr class="separator:a394c11a07cfcd4977327f58362aa1439"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a65dd805ed2424f1d2d0998f5567a9690"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65dd805ed2424f1d2d0998f5567a9690"></a>
-const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#a65dd805ed2424f1d2d0998f5567a9690">name</a> () const   throw ()</td></tr>
-<tr class="memdesc:a65dd805ed2424f1d2d0998f5567a9690"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
-<tr class="separator:a65dd805ed2424f1d2d0998f5567a9690"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41a2a7b61537ecd684bae760366f611c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41a2a7b61537ecd684bae760366f611c"></a>
-const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#a41a2a7b61537ecd684bae760366f611c">what</a> () const   throw ()</td></tr>
-<tr class="memdesc:a41a2a7b61537ecd684bae760366f611c"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00078.html#a41a2a7b61537ecd684bae760366f611c" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
-<tr class="separator:a41a2a7b61537ecd684bae760366f611c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00078.html">movable_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d">move</a> ()  throw ()</td></tr>
-<tr class="memdesc:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#aeb47d3ac90a1f01fe642b572f6ac519d">More...</a><br/></td></tr>
-<tr class="separator:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a02f0401b465690de797face2432d9421"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#a02f0401b465690de797face2432d9421">destroy</a> ()  throw ()</td></tr>
-<tr class="memdesc:a02f0401b465690de797face2432d9421"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#a02f0401b465690de797face2432d9421">More...</a><br/></td></tr>
-<tr class="separator:a02f0401b465690de797face2432d9421"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3d1570b53220fbcb45eb81552b57827a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#a3d1570b53220fbcb45eb81552b57827a">throw_self</a> ()</td></tr>
-<tr class="memdesc:a3d1570b53220fbcb45eb81552b57827a"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#a3d1570b53220fbcb45eb81552b57827a">More...</a><br/></td></tr>
-<tr class="separator:a3d1570b53220fbcb45eb81552b57827a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00146"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00146')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00146.html">tbb::tbb_exception</a></td></tr>
-<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00146"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
-<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00146"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:adba063da80054afe64d5268711084d9b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adba063da80054afe64d5268711084d9b"></a>
-ExceptionData </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html#adba063da80054afe64d5268711084d9b">my_exception_data</a></td></tr>
-<tr class="memdesc:adba063da80054afe64d5268711084d9b"><td class="mdescLeft"> </td><td class="mdescRight">User data. <br/></td></tr>
-<tr class="separator:adba063da80054afe64d5268711084d9b"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename ExceptionData><br/>
-class tbb::movable_exception< ExceptionData ></h3>
-
-<p>Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. </p>
-<p>Code using TBB can instantiate this template with an arbitrary ExceptionData type and throw this exception object. Such exceptions are intercepted by the TBB scheduler and delivered to the root thread (). </p>
-<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00146.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> </dd></dl>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a02f0401b465690de797face2432d9421"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename ExceptionData > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00078.html">tbb::movable_exception</a>< ExceptionData >::destroy </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Destroys objects created by the <a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
-<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
-
-<p>Implements <a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aeb47d3ac90a1f01fe642b572f6ac519d"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename ExceptionData > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00078.html">movable_exception</a>* <a class="el" href="a00078.html">tbb::movable_exception</a>< ExceptionData >::move </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
+<tr class="memitem:aed64c24dd1fe31e6786426992f3c40d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed64c24dd1fe31e6786426992f3c40d1"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:aed64c24dd1fe31e6786426992f3c40d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d807664352eb615a22a1337b9ae54f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d807664352eb615a22a1337b9ae54f6"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:a3d807664352eb615a22a1337b9ae54f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a41e9d8b9c9246662b51250f70f36b3d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41e9d8b9c9246662b51250f70f36b3d2"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a41e9d8b9c9246662b51250f70f36b3d2"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>Creates and returns pointer to the deep copy of this exception object. </p>
-<p>Move semantics is allowed. </p>
-
-<p>Implements <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3d1570b53220fbcb45eb81552b57827a"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename ExceptionData > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00078.html">tbb::movable_exception</a>< ExceptionData >::throw_self </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Throws this exception object. </p>
-<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
-
-<p>Implements <a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00078.png b/doc/html/a00078.png
index 2c2e3fe..effe6ee 100644
Binary files a/doc/html/a00078.png and b/doc/html/a00078.png differ
diff --git a/doc/html/a00079.html b/doc/html/a00079.html
index f433e8c..7f9ca2d 100644
--- a/doc/html/a00079.html
+++ b/doc/html/a00079.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator > Class Template Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,95 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00079.html">multifunction_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00079.html">indexer_node< T0, T1, T2, T3 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="a00318.html">List of all members</a>  </div>
+<a href="a00356.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>implements a function node that supports Input -> (set of outputs)  
- <a href="a00079.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator >:</div>
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3 >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00079.png" usemap="#tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator >_map" alt=""/>
-  <map id="tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator >_map" name="tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,914,80"/>
+  <img src="a00079.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3 >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a3b656d3448ae8bf5acc58b07c072b3ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b656d3448ae8bf5acc58b07c072b3ab"></a>
-typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a3b656d3448ae8bf5acc58b07c072b3ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a644a4f1eb5056ebae1f0032318b3e99d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a644a4f1eb5056ebae1f0032318b3e99d"></a>
+<tr class="memitem:a527994fe939c7fab095ed4052d609862"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a527994fe939c7fab095ed4052d609862"></a>
+typedef tuple< T0, T1, T2, T3 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:a527994fe939c7fab095ed4052d609862"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad0aed249bd4a9579bf4f4b2d8824b682"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad0aed249bd4a9579bf4f4b2d8824b682"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ad0aed249bd4a9579bf4f4b2d8824b682"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ff8d78ad7e310ed8b566ac9d9f7257a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ff8d78ad7e310ed8b566ac9d9f7257a"></a>
 typedef <br class="typebreak"/>
-internal::wrap_tuple_elements<br class="typebreak"/>
-< N, <br class="typebreak"/>
-internal::multifunction_output, <br class="typebreak"/>
-Output >::type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
-<tr class="separator:a644a4f1eb5056ebae1f0032318b3e99d"><td class="memSeparator" colspan="2"> </td></tr>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a6ff8d78ad7e310ed8b566ac9d9f7257a"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a7be5663f3c71c628215860fb97302a5a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7be5663f3c71c628215860fb97302a5a"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a7be5663f3c71c628215860fb97302a5a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>multifunction_node</b> (<a class="el" href="a00061.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
-<tr class="separator:a7be5663f3c71c628215860fb97302a5a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a09d3b9e53a7e2fa3c07a0b7a794556ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09d3b9e53a7e2fa3c07a0b7a794556ea"></a>
- </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (const <a class="el" href="a00079.html">multifunction_node</a> &other)</td></tr>
-<tr class="separator:a09d3b9e53a7e2fa3c07a0b7a794556ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcc4529e5533d36b6341c83a09502ee9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcc4529e5533d36b6341c83a09502ee9"></a>
+<tr class="memitem:a57797ab933fa0143373d49c236cc5a5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57797ab933fa0143373d49c236cc5a5a"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a57797ab933fa0143373d49c236cc5a5a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeca6e34af6d0daffa6b5af075f9de6da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeca6e34af6d0daffa6b5af075f9de6da"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:aeca6e34af6d0daffa6b5af075f9de6da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8a24420d4825a39b38198d811275a615"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a24420d4825a39b38198d811275a615"></a>
 void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:afcc4529e5533d36b6341c83a09502ee9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a69010000b837315a6b6f4c9fece42cca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69010000b837315a6b6f4c9fece42cca"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a69010000b837315a6b6f4c9fece42cca"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a8a24420d4825a39b38198d811275a615"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Input, typename Output, graph_buffer_policy = queueing, typename Allocator = cache_aligned_allocator<Input>><br/>
-class tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></h3>
-
-<p>implements a function node that supports Input -> (set of outputs) </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00079.png b/doc/html/a00079.png
index f16eb14..81b31c5 100644
Binary files a/doc/html/a00079.png and b/doc/html/a00079.png differ
diff --git a/doc/html/a00080.html b/doc/html/a00080.html
index c030c22..31f83f2 100644
--- a/doc/html/a00080.html
+++ b/doc/html/a00080.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator > Class Template Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,92 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00080.html">multifunction_node< Input, Output, queueing, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00080.html">indexer_node< T0, T1, T2, T3, T4 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-static-attribs">Static Protected Attributes</a> |
-<a href="a00319.html">List of all members</a>  </div>
+<a href="a00357.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator >:</div>
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00080.png" usemap="#tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator >_map" alt=""/>
-  <map id="tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator >_map" name="tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,924,80"/>
+  <img src="a00080.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a3ba06cb25b27e0a818f197e8f24da1d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ba06cb25b27e0a818f197e8f24da1d5"></a>
-typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a3ba06cb25b27e0a818f197e8f24da1d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5727a047ab42213f88c3d2e6d2939aba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5727a047ab42213f88c3d2e6d2939aba"></a>
+<tr class="memitem:ae9798eaf903fa100e31a12dea412d573"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9798eaf903fa100e31a12dea412d573"></a>
+typedef tuple< T0, T1, T2, T3, T4 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:ae9798eaf903fa100e31a12dea412d573"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af96acdaef97af6acca15e1f930cf8a97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af96acdaef97af6acca15e1f930cf8a97"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:af96acdaef97af6acca15e1f930cf8a97"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5ad5dede53da29f7643c24e5d47fd8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ad5dede53da29f7643c24e5d47fd8c"></a>
 typedef <br class="typebreak"/>
-internal::wrap_tuple_elements<br class="typebreak"/>
-< N, <br class="typebreak"/>
-internal::multifunction_output, <br class="typebreak"/>
-Output >::type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
-<tr class="separator:a5727a047ab42213f88c3d2e6d2939aba"><td class="memSeparator" colspan="2"> </td></tr>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:ab5ad5dede53da29f7643c24e5d47fd8c"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a5c7aca52ec421142f4ab8a20026e7832"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5c7aca52ec421142f4ab8a20026e7832"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a5c7aca52ec421142f4ab8a20026e7832"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>multifunction_node</b> (<a class="el" href="a00061.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
-<tr class="separator:a5c7aca52ec421142f4ab8a20026e7832"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad27702d05f0e572e767ebda96bcc76f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad27702d05f0e572e767ebda96bcc76f6"></a>
- </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (const <a class="el" href="a00079.html">multifunction_node</a> &other)</td></tr>
-<tr class="separator:ad27702d05f0e572e767ebda96bcc76f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acb5cf6fedb110906dd4811ab6f223741"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb5cf6fedb110906dd4811ab6f223741"></a>
+<tr class="memitem:ab5395c9d6896408234ec97c030bb014b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5395c9d6896408234ec97c030bb014b"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:ab5395c9d6896408234ec97c030bb014b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee0ef34819a584da59a913ade2c6c30f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee0ef34819a584da59a913ade2c6c30f"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:aee0ef34819a584da59a913ade2c6c30f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1f6d3cdb2ae66b44f11abf28deb74b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1f6d3cdb2ae66b44f11abf28deb74b1"></a>
 void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:acb5cf6fedb110906dd4811ab6f223741"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:aa45ef86b0eeb9c94c62207b8737969cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa45ef86b0eeb9c94c62207b8737969cf"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:aa45ef86b0eeb9c94c62207b8737969cf"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
-Static Protected Attributes</h2></td></tr>
-<tr class="memitem:abfe0d66c5fc2d700443c025a6baab799"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfe0d66c5fc2d700443c025a6baab799"></a>
-static const int </td><td class="memItemRight" valign="bottom"><b>N</b> = tbb::flow::tuple_size<Output>::value</td></tr>
-<tr class="separator:abfe0d66c5fc2d700443c025a6baab799"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:aa1f6d3cdb2ae66b44f11abf28deb74b1"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00080.png b/doc/html/a00080.png
index 542e235..e8307e7 100644
Binary files a/doc/html/a00080.png and b/doc/html/a00080.png differ
diff --git a/doc/html/a00081.html b/doc/html/a00081.html
index 859319a..00f7818 100644
--- a/doc/html/a00081.html
+++ b/doc/html/a00081.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::mutex Class Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,132 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00081.html">mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00081.html">indexer_node< T0, T1, T2, T3, T4, T5 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00258.html">List of all members</a>  </div>
+<a href="a00358.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Wrapper around the platform's native reader-writer lock.  
- <a href="a00081.html#details">More...</a></p>
-
-<p><code>#include <mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00081.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00116.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ad35737cbe356d6814f59abba680ab067"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>state_t</b> { <b>INITIALIZED</b> =0x1234, 
-<b>DESTROYED</b> =0x789A, 
-<b>HELD</b> =0x56CD
- }</td></tr>
-<tr class="separator:ad35737cbe356d6814f59abba680ab067"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abbe0cd12246121753ace00a5a12a90b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbe0cd12246121753ace00a5a12a90b0"></a>
-typedef LPCRITICAL_SECTION </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a></td></tr>
-<tr class="memdesc:abbe0cd12246121753ace00a5a12a90b0"><td class="mdescLeft"> </td><td class="mdescRight">Return native_handle. <br/></td></tr>
-<tr class="separator:abbe0cd12246121753ace00a5a12a90b0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0d992511dfc6f47295b10eb7fc0813d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d992511dfc6f47295b10eb7fc0813d4"></a>
-typedef pthread_mutex_t * </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-<tr class="separator:a0d992511dfc6f47295b10eb7fc0813d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49f30d4f32d5920caf9478fc0c6d3d66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49f30d4f32d5920caf9478fc0c6d3d66"></a>
+typedef tuple< T0, T1, T2, T3, <br class="typebreak"/>
+T4, T5 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:a49f30d4f32d5920caf9478fc0c6d3d66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae83c4ee86b74731091679be1f6844b90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae83c4ee86b74731091679be1f6844b90"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4, <br class="typebreak"/>
+T5 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ae83c4ee86b74731091679be1f6844b90"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a854b9ed6872f86f9540ce23e71b2940e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a854b9ed6872f86f9540ce23e71b2940e"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a854b9ed6872f86f9540ce23e71b2940e"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1b280c954ffc8b8b3e63e4ee4144035"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#ad1b280c954ffc8b8b3e63e4ee4144035">mutex</a> ()</td></tr>
-<tr class="memdesc:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
-<tr class="separator:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a95ff02ee699b34696001db4003c11a3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95ff02ee699b34696001db4003c11a3a"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#a95ff02ee699b34696001db4003c11a3a">lock</a> ()</td></tr>
-<tr class="memdesc:a95ff02ee699b34696001db4003c11a3a"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
-<tr class="separator:a95ff02ee699b34696001db4003c11a3a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a480283933106941125717499f9c5ad42"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#a480283933106941125717499f9c5ad42">try_lock</a> ()</td></tr>
-<tr class="memdesc:a480283933106941125717499f9c5ad42"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a480283933106941125717499f9c5ad42">More...</a><br/></td></tr>
-<tr class="separator:a480283933106941125717499f9c5ad42"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a721eeae7ba16f8b92535f4534b583874"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a721eeae7ba16f8b92535f4534b583874"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#a721eeae7ba16f8b92535f4534b583874">unlock</a> ()</td></tr>
-<tr class="memdesc:a721eeae7ba16f8b92535f4534b583874"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a721eeae7ba16f8b92535f4534b583874"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af69874d93822c905bdea0ab9e5ca5b89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af69874d93822c905bdea0ab9e5ca5b89"></a>
-<a class="el" href="a00081.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a> </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
-<tr class="separator:af69874d93822c905bdea0ab9e5ca5b89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0857c4596d7d5de09fe402ccd41d3e42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0857c4596d7d5de09fe402ccd41d3e42"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html#a0857c4596d7d5de09fe402ccd41d3e42">set_state</a> (state_t to)</td></tr>
-<tr class="memdesc:a0857c4596d7d5de09fe402ccd41d3e42"><td class="mdescLeft"> </td><td class="mdescRight">Set the internal state. <br/></td></tr>
-<tr class="separator:a0857c4596d7d5de09fe402ccd41d3e42"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a2677d672446faa842de9de38b3aff80a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2677d672446faa842de9de38b3aff80a"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a2677d672446faa842de9de38b3aff80a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adf7e9e11c47cc869d219298232d6c0a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf7e9e11c47cc869d219298232d6c0a1"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:adf7e9e11c47cc869d219298232d6c0a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab729ebd784af412184653c4fa90468d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab729ebd784af412184653c4fa90468d0"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-<tr class="separator:ab729ebd784af412184653c4fa90468d0"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a902f3a82ff3dd079f554a3b3ff292a9d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a902f3a82ff3dd079f554a3b3ff292a9d"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a902f3a82ff3dd079f554a3b3ff292a9d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4ec48d729f44a5bfaf6a1c7f867f2367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ec48d729f44a5bfaf6a1c7f867f2367"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:a4ec48d729f44a5bfaf6a1c7f867f2367"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad2f30b4e96b4951ceb360ba7d34e3906"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2f30b4e96b4951ceb360ba7d34e3906"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:ad2f30b4e96b4951ceb360ba7d34e3906"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Wrapper around the platform's native reader-writer lock. </p>
-<p>For testing purposes only. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a480283933106941125717499f9c5ad42"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::mutex::try_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Try acquiring lock (non-blocking) </p>
-<p>Return true if lock acquired; false otherwise. </p>
-
-<p>References <a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
-
-<p>Referenced by <a class="el" href="a00116.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock::try_acquire()</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>mutex.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00081.png b/doc/html/a00081.png
new file mode 100644
index 0000000..325f49e
Binary files /dev/null and b/doc/html/a00081.png differ
diff --git a/doc/html/a00082.html b/doc/html/a00082.html
index 197409e..b72c8a3 100644
--- a/doc/html/a00082.html
+++ b/doc/html/a00082.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,55 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00082.html">node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00082.html">indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00338.html">List of all members</a>  </div>
+<a href="a00359.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node:</div>
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00082.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map" alt=""/>
-  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map">
+  <img src="a00082.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 >_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a6717dabc0a9a8bedfb1d0551ddc5183f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6717dabc0a9a8bedfb1d0551ddc5183f"></a>
+typedef tuple< T0, T1, T2, T3, <br class="typebreak"/>
+T4, T5, T6 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:a6717dabc0a9a8bedfb1d0551ddc5183f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adfbc762fcc73ad94b5f29a41ecd13495"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfbc762fcc73ad94b5f29a41ecd13495"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4, <br class="typebreak"/>
+T5, T6 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:adfbc762fcc73ad94b5f29a41ecd13495"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a07b620aeaffb110d455d9ebea62c2cc4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07b620aeaffb110d455d9ebea62c2cc4"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a07b620aeaffb110d455d9ebea62c2cc4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ace61f7bd9d097375f6e33fea4758fbf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace61f7bd9d097375f6e33fea4758fbf9"></a>
- </td><td class="memItemRight" valign="bottom"><b>node</b> (const Key &key)</td></tr>
-<tr class="separator:ace61f7bd9d097375f6e33fea4758fbf9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6755d387982f27a06d859811699e40b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6755d387982f27a06d859811699e40b7"></a>
- </td><td class="memItemRight" valign="bottom"><b>node</b> (const Key &key, const T &t)</td></tr>
-<tr class="separator:a6755d387982f27a06d859811699e40b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15b3c8955eb1b104db439e9caf3737c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15b3c8955eb1b104db439e9caf3737c3"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t, node_allocator_type &a)</td></tr>
-<tr class="separator:a15b3c8955eb1b104db439e9caf3737c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3115742612b79db574914741f2fff45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3115742612b79db574914741f2fff45"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr, node_allocator_type &a)</td></tr>
-<tr class="separator:aa3115742612b79db574914741f2fff45"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a6977520eaa2f1dee220f726c8a884b46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6977520eaa2f1dee220f726c8a884b46"></a>
-value_type </td><td class="memItemRight" valign="bottom"><b>item</b></td></tr>
-<tr class="separator:a6977520eaa2f1dee220f726c8a884b46"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac68eb8662d96109cfaa031bc05c9dfef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac68eb8662d96109cfaa031bc05c9dfef"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:ac68eb8662d96109cfaa031bc05c9dfef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4ee0f50fb34524876c2ea08abf2708d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ee0f50fb34524876c2ea08abf2708d7"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:a4ee0f50fb34524876c2ea08abf2708d7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4bd559ee734716b72f8694af06b72caf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bd559ee734716b72f8694af06b72caf"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a4bd559ee734716b72f8694af06b72caf"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>concurrent_hash_map.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00082.png b/doc/html/a00082.png
index b914379..31c57db 100644
Binary files a/doc/html/a00082.png and b/doc/html/a00082.png differ
diff --git a/doc/html/a00083.html b/doc/html/a00083.html
index 2eadc07..8280a70 100644
--- a/doc/html/a00083.html
+++ b/doc/html/a00083.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::null_mutex Class Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,52 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00083.html">null_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00083.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00260.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00360.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::null_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A mutex which does nothing.  
- <a href="a00083.html#details">More...</a></p>
-
-<p><code>#include <null_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00083.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00115.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ab79f324307da7250ae179a55884b2c64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab79f324307da7250ae179a55884b2c64"></a>
+typedef tuple< T0, T1, T2, T3, <br class="typebreak"/>
+T4, T5, T6, T7 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:ab79f324307da7250ae179a55884b2c64"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a98e6510c1d7136d0eecc0e5b353853e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98e6510c1d7136d0eecc0e5b353853e4"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4, <br class="typebreak"/>
+T5, T6, T7 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a98e6510c1d7136d0eecc0e5b353853e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac7486f784b6328c6ebdd4bc6ce2a469a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7486f784b6328c6ebdd4bc6ce2a469a"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:ac7486f784b6328c6ebdd4bc6ce2a469a"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a20ed8301299d9ec166588401269d1788"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20ed8301299d9ec166588401269d1788"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a20ed8301299d9ec166588401269d1788"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49bd7f5da83382e39f898d06cbf0e23e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49bd7f5da83382e39f898d06cbf0e23e"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
-<tr class="separator:a49bd7f5da83382e39f898d06cbf0e23e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae4684b268ff379a69cd1fe93718ee7fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4684b268ff379a69cd1fe93718ee7fc"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-<tr class="separator:ae4684b268ff379a69cd1fe93718ee7fc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2b19b5e55cffcddc41fc35a07f6a7b7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b19b5e55cffcddc41fc35a07f6a7b7a"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a2b19b5e55cffcddc41fc35a07f6a7b7a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab533c458469cd5a0d2fbd7338f47110f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab533c458469cd5a0d2fbd7338f47110f"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:ab533c458469cd5a0d2fbd7338f47110f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4a3d1c85066c8e97036c0b4ff157cae2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a3d1c85066c8e97036c0b4ff157cae2"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a4a3d1c85066c8e97036c0b4ff157cae2"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A mutex which does nothing. </p>
-<p>A <a class="el" href="a00083.html" title="A mutex which does nothing. ">null_mutex</a> does no operation and simulates success. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>null_mutex.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00083.png b/doc/html/a00083.png
new file mode 100644
index 0000000..ba7599f
Binary files /dev/null and b/doc/html/a00083.png differ
diff --git a/doc/html/a00084.html b/doc/html/a00084.html
index f920503..393ada2 100644
--- a/doc/html/a00084.html
+++ b/doc/html/a00084.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::null_rw_mutex Class Reference</title>
+<title>tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,52 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00084.html">null_rw_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00084.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00262.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00361.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::null_rw_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A rw mutex which does nothing.  
- <a href="a00084.html#details">More...</a></p>
-
-<p><code>#include <null_rw_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00084.png" usemap="#tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >_map" alt=""/>
+  <map id="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >_map" name="tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00117.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00117.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a0e99bef85326475f953035c693cf200c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e99bef85326475f953035c693cf200c"></a>
+typedef tuple< T0, T1, T2, T3, <br class="typebreak"/>
+T4, T5, T6, T7, T8 > </td><td class="memItemRight" valign="bottom"><b>InputTuple</b></td></tr>
+<tr class="separator:a0e99bef85326475f953035c693cf200c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad235b050ecd15ffb0c0f1c974d39f0af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad235b050ecd15ffb0c0f1c974d39f0af"></a>
+typedef internal::tagged_msg<br class="typebreak"/>
+< size_t, T0, T1, T2, T3, T4, <br class="typebreak"/>
+T5, T6, T7, T8 > </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ad235b050ecd15ffb0c0f1c974d39f0af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0254ed072edda582ac805d2d56c2ee44"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0254ed072edda582ac805d2d56c2ee44"></a>
+typedef <br class="typebreak"/>
+internal::unfolded_indexer_node<br class="typebreak"/>
+< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
+<tr class="separator:a0254ed072edda582ac805d2d56c2ee44"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a2a676977ac67532f5f35f849ec7eac8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a676977ac67532f5f35f849ec7eac8c"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
-<tr class="separator:a2a676977ac67532f5f35f849ec7eac8c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab153992db6e44aee96ce8c1b2d495c94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab153992db6e44aee96ce8c1b2d495c94"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
-<tr class="separator:ab153992db6e44aee96ce8c1b2d495c94"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8500b8a645b1c03221fd1fb4156fa78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8500b8a645b1c03221fd1fb4156fa78"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-<tr class="separator:ab8500b8a645b1c03221fd1fb4156fa78"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:af4e7148e9ad9c6f90f29f72059835dfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4e7148e9ad9c6f90f29f72059835dfb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:af4e7148e9ad9c6f90f29f72059835dfb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a237af46a79d1008dd7db4fdeda63c0fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a237af46a79d1008dd7db4fdeda63c0fd"></a>
+ </td><td class="memItemRight" valign="bottom"><b>indexer_node</b> (const <a class="el" href="a00075.html">indexer_node</a> &other)</td></tr>
+<tr class="separator:a237af46a79d1008dd7db4fdeda63c0fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a208e395ca3b6317d46dc2cfa28534935"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208e395ca3b6317d46dc2cfa28534935"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a208e395ca3b6317d46dc2cfa28534935"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A rw mutex which does nothing. </p>
-<p>A <a class="el" href="a00084.html" title="A rw mutex which does nothing. ">null_rw_mutex</a> is a rw mutex that does nothing and simulates successful operation. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>null_rw_mutex.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00084.png b/doc/html/a00084.png
new file mode 100644
index 0000000..fe1e7f2
Binary files /dev/null and b/doc/html/a00084.png differ
diff --git a/doc/html/a00085.html b/doc/html/a00085.html
index 0bec958..8c0b46e 100644
--- a/doc/html/a00085.html
+++ b/doc/html/a00085.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::or_node< InputTuple > Class Template Reference</title>
+<title>tbb::tick_count::interval_t Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,59 +33,74 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00085.html">or_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00170.html">tick_count</a></li><li class="navelem"><a class="el" href="a00085.html">interval_t</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00333.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00327.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::or_node< InputTuple > Class Template Reference</div>  </div>
+<div class="title">tbb::tick_count::interval_t Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::or_node< InputTuple >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00085.png" usemap="#tbb::flow::interface7::or_node< InputTuple >_map" alt=""/>
-  <map id="tbb::flow::interface7::or_node< InputTuple >_map" name="tbb::flow::interface7::or_node< InputTuple >_map">
-</map>
- </div></div>
+
+<p>Relative time interval.  
+ <a href="a00085.html#details">More...</a></p>
+
+<p><code>#include <tick_count.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:aec79143ef25b72dfedaa6e1a92c78ffb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec79143ef25b72dfedaa6e1a92c78ffb"></a>
-typedef <br class="typebreak"/>
-internal::or_output_type<br class="typebreak"/>
-< InputTuple >::type </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:aec79143ef25b72dfedaa6e1a92c78ffb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a45cc4429c83e39c3cba8b74199cac3a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45cc4429c83e39c3cba8b74199cac3a7"></a>
-typedef <br class="typebreak"/>
-internal::unfolded_or_node<br class="typebreak"/>
-< InputTuple > </td><td class="memItemRight" valign="bottom"><b>unfolded_type</b></td></tr>
-<tr class="separator:a45cc4429c83e39c3cba8b74199cac3a7"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a6ee438b034f5617a192d2f2820323fa5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ee438b034f5617a192d2f2820323fa5"></a>
- </td><td class="memItemRight" valign="bottom"><b>or_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a6ee438b034f5617a192d2f2820323fa5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a20bbd3dd16102cdcf2507600a6cd0e8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20bbd3dd16102cdcf2507600a6cd0e8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>or_node</b> (const <a class="el" href="a00085.html">or_node</a> &other)</td></tr>
-<tr class="separator:a20bbd3dd16102cdcf2507600a6cd0e8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6b0cbf50f926b0b293c4faeaab55c26d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b0cbf50f926b0b293c4faeaab55c26d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a6b0cbf50f926b0b293c4faeaab55c26d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95e3e14750bebafe719856176e2737db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95e3e14750bebafe719856176e2737db"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#a95e3e14750bebafe719856176e2737db">interval_t</a> ()</td></tr>
+<tr class="memdesc:a95e3e14750bebafe719856176e2737db"><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing zero time duration. <br/></td></tr>
+<tr class="separator:a95e3e14750bebafe719856176e2737db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73b462297173f6bffa15bc5a86c30ef4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73b462297173f6bffa15bc5a86c30ef4"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#a73b462297173f6bffa15bc5a86c30ef4">interval_t</a> (double sec)</td></tr>
+<tr class="memdesc:a73b462297173f6bffa15bc5a86c30ef4"><td class="mdescLeft"> </td><td class="mdescRight">Construct a time interval representing sec seconds time duration. <br/></td></tr>
+<tr class="separator:a73b462297173f6bffa15bc5a86c30ef4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe81446bbbb6b6e98d854b91acf47809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe81446bbbb6b6e98d854b91acf47809"></a>
+double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#abe81446bbbb6b6e98d854b91acf47809">seconds</a> () const </td></tr>
+<tr class="memdesc:abe81446bbbb6b6e98d854b91acf47809"><td class="mdescLeft"> </td><td class="mdescRight">Return the length of a time interval in seconds. <br/></td></tr>
+<tr class="separator:abe81446bbbb6b6e98d854b91acf47809"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19bf32f4541252daaa6b09fd33fa9177"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19bf32f4541252daaa6b09fd33fa9177"></a>
+<a class="el" href="a00085.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#a19bf32f4541252daaa6b09fd33fa9177">operator+=</a> (const <a class="el" href="a00085.html">interval_t</a> &i)</td></tr>
+<tr class="memdesc:a19bf32f4541252daaa6b09fd33fa9177"><td class="mdescLeft"> </td><td class="mdescRight">Accumulation operator. <br/></td></tr>
+<tr class="separator:a19bf32f4541252daaa6b09fd33fa9177"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3394d9f3678e6a4c3d6e1be840fe2ff2"></a>
+<a class="el" href="a00085.html">interval_t</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">operator-=</a> (const <a class="el" href="a00085.html">interval_t</a> &i)</td></tr>
+<tr class="memdesc:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="mdescLeft"> </td><td class="mdescRight">Subtraction operator. <br/></td></tr>
+<tr class="separator:a3394d9f3678e6a4c3d6e1be840fe2ff2"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a68e741a8f6e2384027e93d1f654ad100"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68e741a8f6e2384027e93d1f654ad100"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb::tick_count</b></td></tr>
+<tr class="separator:a68e741a8f6e2384027e93d1f654ad100"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ceaed3ebf5a0d41088a5bc7c8dc653"></a>
+<a class="el" href="a00085.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a> (const <a class="el" href="a00170.html">tick_count</a> &t1, const <a class="el" href="a00170.html">tick_count</a> &t0)</td></tr>
+<tr class="memdesc:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="mdescLeft"> </td><td class="mdescRight">Extract the intervals from the tick_counts and subtract them. <br/></td></tr>
+<tr class="separator:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac8910ee3b69f68eb905af787c273e9a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8910ee3b69f68eb905af787c273e9a8"></a>
+<a class="el" href="a00085.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#ac8910ee3b69f68eb905af787c273e9a8">operator+</a> (const <a class="el" href="a00085.html">interval_t</a> &i, const <a class="el" href="a00085.html">interval_t</a> &j)</td></tr>
+<tr class="memdesc:ac8910ee3b69f68eb905af787c273e9a8"><td class="mdescLeft"> </td><td class="mdescRight">Add two intervals. <br/></td></tr>
+<tr class="separator:ac8910ee3b69f68eb905af787c273e9a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d11133daa9a7d3c903d070293278f8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d11133daa9a7d3c903d070293278f8f"></a>
+<a class="el" href="a00085.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html#a3d11133daa9a7d3c903d070293278f8f">operator-</a> (const <a class="el" href="a00085.html">interval_t</a> &i, const <a class="el" href="a00085.html">interval_t</a> &j)</td></tr>
+<tr class="memdesc:a3d11133daa9a7d3c903d070293278f8f"><td class="mdescLeft"> </td><td class="mdescRight">Subtract two intervals. <br/></td></tr>
+<tr class="separator:a3d11133daa9a7d3c903d070293278f8f"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Relative time interval. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tick_count.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00085.png b/doc/html/a00085.png
deleted file mode 100644
index c79e0af..0000000
Binary files a/doc/html/a00085.png and /dev/null differ
diff --git a/doc/html/a00086.html b/doc/html/a00086.html
index e13e69b..b71c353 100644
--- a/doc/html/a00086.html
+++ b/doc/html/a00086.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::overwrite_node< T > Class Template Reference</title>
+<title>tbb::invalid_multiple_scheduling Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,195 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00086.html">overwrite_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00086.html">invalid_multiple_scheduling</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#friends">Friends</a> |
 <a href="a00322.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::overwrite_node< T > Class Template Reference</div>  </div>
+<div class="title">tbb::invalid_multiple_scheduling Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Exception for repeated scheduling of the same <a class="el" href="a00154.html">task_handle</a>.  
+ <a href="a00086.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::overwrite_node< T >:</div>
+Inheritance diagram for tbb::invalid_multiple_scheduling:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00086.png" usemap="#tbb::flow::interface7::overwrite_node< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::overwrite_node< T >_map" name="tbb::flow::interface7::overwrite_node< T >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,255,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="265,56,520,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="530,56,785,80"/>
-<area href="a00159.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="265,168,520,192"/>
+  <img src="a00086.png" usemap="#tbb::invalid_multiple_scheduling_map" alt=""/>
+  <map id="tbb::invalid_multiple_scheduling_map" name="tbb::invalid_multiple_scheduling_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a0a8edb9abd1842cb9a1f00574a85c5c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a8edb9abd1842cb9a1f00574a85c5c3"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a0a8edb9abd1842cb9a1f00574a85c5c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acaa2a72c0275a503c72c59b7b1b107a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaa2a72c0275a503c72c59b7b1b107a7"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:acaa2a72c0275a503c72c59b7b1b107a7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3c9152237c0355406644f8bdd423db9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3c9152237c0355406644f8bdd423db9"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:ae3c9152237c0355406644f8bdd423db9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3840465efc064f51b88f55bf12cd8526"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3840465efc064f51b88f55bf12cd8526"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a3840465efc064f51b88f55bf12cd8526"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8e0fdb38848772d2e8f93f55e062d148"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e0fdb38848772d2e8f93f55e062d148"></a>
- </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a8e0fdb38848772d2e8f93f55e062d148"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2605cf9efc94c3cba2c59cb5c59e8f19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2605cf9efc94c3cba2c59cb5c59e8f19"></a>
- </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (const <a class="el" href="a00086.html">overwrite_node</a> &src)</td></tr>
-<tr class="separator:a2605cf9efc94c3cba2c59cb5c59e8f19"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a584b012e5f6a786799b23df4cbd5dba5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584b012e5f6a786799b23df4cbd5dba5"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a584b012e5f6a786799b23df4cbd5dba5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed811ce5f59a555396c7bcd56316b4da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed811ce5f59a555396c7bcd56316b4da"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
-<tr class="memdesc:aed811ce5f59a555396c7bcd56316b4da"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
-<tr class="separator:aed811ce5f59a555396c7bcd56316b4da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ff89d56e2e3c3848d84a09c88b1d52"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
-<tr class="memdesc:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
-<tr class="separator:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a575642eb611ca4e2012df5604634d341"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575642eb611ca4e2012df5604634d341"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a575642eb611ca4e2012df5604634d341"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
-<tr class="separator:a575642eb611ca4e2012df5604634d341"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3bf01d9c754667474fdb47e47df470a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bf01d9c754667474fdb47e47df470a9"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_valid</b> ()</td></tr>
-<tr class="separator:a3bf01d9c754667474fdb47e47df470a9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d950320406a8c819882ea50d918678a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d950320406a8c819882ea50d918678a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
-<tr class="separator:a4d950320406a8c819882ea50d918678a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
-<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
-<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
-<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
-<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
-<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a883f71d87767df7f0a7ae9393a2632f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a883f71d87767df7f0a7ae9393a2632f6"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const T &v)</td></tr>
-<tr class="separator:a883f71d87767df7f0a7ae9393a2632f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a465ce685bc8c468389442a9aaef3f7d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a465ce685bc8c468389442a9aaef3f7d0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a465ce685bc8c468389442a9aaef3f7d0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a953be19f0623ad2e5a4e52707cba00da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a953be19f0623ad2e5a4e52707cba00da"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:a953be19f0623ad2e5a4e52707cba00da"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ad8d534d5d059f91b82c4aef9235aa9f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8d534d5d059f91b82c4aef9235aa9f6"></a>
-<a class="el" href="a00127.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
-<tr class="separator:ad8d534d5d059f91b82c4aef9235aa9f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a024db18a1019452d3d715e9913fb2deb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a024db18a1019452d3d715e9913fb2deb"></a>
-<a class="el" href="a00024.html">internal::broadcast_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:a024db18a1019452d3d715e9913fb2deb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01a061a8c4938ce031017a57935db54b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01a061a8c4938ce031017a57935db54b"></a>
-T </td><td class="memItemRight" valign="bottom"><b>my_buffer</b></td></tr>
-<tr class="separator:a01a061a8c4938ce031017a57935db54b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbf79aaedd9459ed382823d8d85d0bfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbf79aaedd9459ed382823d8d85d0bfc"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>my_buffer_is_valid</b></td></tr>
-<tr class="separator:afbf79aaedd9459ed382823d8d85d0bfc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe0d56d15bd59f7b128a86ae5b6b8933"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe0d56d15bd59f7b128a86ae5b6b8933"></a>
+const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+<tr class="separator:abe0d56d15bd59f7b128a86ae5b6b8933"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception for repeated scheduling of the same <a class="el" href="a00154.html">task_handle</a>. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00086.png b/doc/html/a00086.png
index f2d7752..ba8483c 100644
Binary files a/doc/html/a00086.png and b/doc/html/a00086.png differ
diff --git a/doc/html/a00087.html b/doc/html/a00087.html
index a6f59e1..c95f5ad 100644
--- a/doc/html/a00087.html
+++ b/doc/html/a00087.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::parallel_do_feeder< Item > Class Template Reference</title>
+<title>tbb::flow::interface7::join_node< OutputTuple, JP > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,64 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00087.html">parallel_do_feeder</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00087.html">join_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00264.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::parallel_do_feeder< Item > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, JP > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Class the user supplied algorithm body uses to add new tasks.  
- <a href="a00087.html#details">More...</a></p>
-
-<p><code>#include <parallel_do.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::parallel_do_feeder< Item >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00087.png" usemap="#tbb::parallel_do_feeder< Item >_map" alt=""/>
-  <map id="tbb::parallel_do_feeder< Item >_map" name="tbb::parallel_do_feeder< Item >_map">
-</map>
- </div></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:ac095c6b1a32e9c0be010aa32875d7a63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac095c6b1a32e9c0be010aa32875d7a63"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00087.html#ac095c6b1a32e9c0be010aa32875d7a63">add</a> (const Item &item)</td></tr>
-<tr class="memdesc:ac095c6b1a32e9c0be010aa32875d7a63"><td class="mdescLeft"> </td><td class="mdescRight">Add a work item to a running parallel_do. <br/></td></tr>
-<tr class="separator:ac095c6b1a32e9c0be010aa32875d7a63"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ae5c8cc31bc27b79377687e3de76f480e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae5c8cc31bc27b79377687e3de76f480e"></a>
-template<typename Body_ , typename Item_ > </td></tr>
-<tr class="memitem:ae5c8cc31bc27b79377687e3de76f480e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::parallel_do_feeder_impl</b></td></tr>
-<tr class="separator:ae5c8cc31bc27b79377687e3de76f480e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Item><br/>
-class tbb::parallel_do_feeder< Item ></h3>
-
-<p>Class the user supplied algorithm body uses to add new tasks. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">Item</td><td>Work item type </td></tr>
-  </table>
-  </dd>
-</dl>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>parallel_do.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00088.html b/doc/html/a00088.html
index cc0e7ae..f157b37 100644
--- a/doc/html/a00088.html
+++ b/doc/html/a00088.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::parallel_while< Body > Class Template Reference</title>
+<title>tbb::flow::interface7::join_node< OutputTuple, queueing > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,130 +33,56 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00088.html">parallel_while</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00088.html">join_node< OutputTuple, queueing ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00267.html">List of all members</a>  </div>
+<a href="a00350.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::parallel_while< Body > Class Template Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, queueing > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Parallel iteration over a stream, with optional addition of more work.  
- <a href="a00088.html#details">More...</a></p>
-
-<p><code>#include <parallel_while.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::parallel_while< Body >:</div>
+Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, queueing >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00088.png" usemap="#tbb::parallel_while< Body >_map" alt=""/>
-  <map id="tbb::parallel_while< Body >_map" name="tbb::parallel_while< Body >_map">
+  <img src="a00088.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, queueing >_map" alt=""/>
+  <map id="tbb::flow::interface7::join_node< OutputTuple, queueing >_map" name="tbb::flow::interface7::join_node< OutputTuple, queueing >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a2442f019427e608d46801376267e44a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2442f019427e608d46801376267e44a8"></a>
-typedef Body::argument_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">value_type</a></td></tr>
-<tr class="memdesc:a2442f019427e608d46801376267e44a8"><td class="mdescLeft"> </td><td class="mdescRight">Type of items. <br/></td></tr>
-<tr class="separator:a2442f019427e608d46801376267e44a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a68f4d59b0d31a9f13e53f75fe3ded700"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68f4d59b0d31a9f13e53f75fe3ded700"></a>
+typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a68f4d59b0d31a9f13e53f75fe3ded700"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ac9b6f2600b75143ff1dea1e3786b04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ac9b6f2600b75143ff1dea1e3786b04"></a>
+typedef <br class="typebreak"/>
+unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
+<tr class="separator:a7ac9b6f2600b75143ff1dea1e3786b04"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a220a7307358aa36802c8754ea45ca385"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a220a7307358aa36802c8754ea45ca385"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html#a220a7307358aa36802c8754ea45ca385">parallel_while</a> ()</td></tr>
-<tr class="memdesc:a220a7307358aa36802c8754ea45ca385"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty non-running parallel while. <br/></td></tr>
-<tr class="separator:a220a7307358aa36802c8754ea45ca385"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2fd559c8a38639fa1ba97a0d5639ca8"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html#ac2fd559c8a38639fa1ba97a0d5639ca8">~parallel_while</a> ()</td></tr>
-<tr class="memdesc:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="mdescLeft"> </td><td class="mdescRight">Destructor cleans up data members before returning. <br/></td></tr>
-<tr class="separator:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a20607ba5faa958144787d980aa850c16"><td class="memTemplParams" colspan="2">template<typename Stream > </td></tr>
-<tr class="memitem:a20607ba5faa958144787d980aa850c16"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00088.html#a20607ba5faa958144787d980aa850c16">run</a> (Stream &stream, const Body &body)</td></tr>
-<tr class="memdesc:a20607ba5faa958144787d980aa850c16"><td class="mdescLeft"> </td><td class="mdescRight">Apply body.apply to each item in the stream.  <a href="#a20607ba5faa958144787d980aa850c16">More...</a><br/></td></tr>
-<tr class="separator:a20607ba5faa958144787d980aa850c16"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4861989d7f5e3111d264d4d6013e8fe1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html#a4861989d7f5e3111d264d4d6013e8fe1">add</a> (const <a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">value_type</a> &item)</td></tr>
-<tr class="memdesc:a4861989d7f5e3111d264d4d6013e8fe1"><td class="mdescLeft"> </td><td class="mdescRight">Add a work item while running.  <a href="#a4861989d7f5e3111d264d4d6013e8fe1">More...</a><br/></td></tr>
-<tr class="separator:a4861989d7f5e3111d264d4d6013e8fe1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab1c49eff4420fd53b80b4425117ddb36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1c49eff4420fd53b80b4425117ddb36"></a>
+ </td><td class="memItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:ab1c49eff4420fd53b80b4425117ddb36"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a33ff02c356a0f2f590323177e9314ccd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33ff02c356a0f2f590323177e9314ccd"></a>
+ </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00087.html">join_node</a> &other)</td></tr>
+<tr class="separator:a33ff02c356a0f2f590323177e9314ccd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7615ce374a3ec504ed196b7babbf1e04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7615ce374a3ec504ed196b7babbf1e04"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a7615ce374a3ec504ed196b7babbf1e04"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Body><br/>
-class tbb::parallel_while< Body ></h3>
-
-<p>Parallel iteration over a stream, with optional addition of more work. </p>
-<p>The Body b has the requirement: <br/>
- "b(v)" <br/>
- "b.argument_type" <br/>
- where v is an argument_type </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a4861989d7f5e3111d264d4d6013e8fe1"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00088.html">tbb::parallel_while</a>< Body >::add </td>
-          <td>(</td>
-          <td class="paramtype">const <a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">value_type</a> & </td>
-          <td class="paramname"><em>item</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Add a work item while running. </p>
-<p>Should be executed only by body.apply or a thread spawned therefrom. </p>
-
-</div>
-</div>
-<a class="anchor" id="a20607ba5faa958144787d980aa850c16"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Body > </div>
-<div class="memtemplate">
-template<typename Stream > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void <a class="el" href="a00088.html">tbb::parallel_while</a>< Body >::run </td>
-          <td>(</td>
-          <td class="paramtype">Stream & </td>
-          <td class="paramname"><em>stream</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Apply body.apply to each item in the stream. </p>
-<p>A Stream s has the requirements <br/>
- "S::value_type" <br/>
- "s.pop_if_present(value) is convertible to bool </p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>parallel_while.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00088.png b/doc/html/a00088.png
index fc86480..4c63cb9 100644
Binary files a/doc/html/a00088.png and b/doc/html/a00088.png differ
diff --git a/doc/html/a00089.html b/doc/html/a00089.html
index 114276d..787e47f 100644
--- a/doc/html/a00089.html
+++ b/doc/html/a00089.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::pipeline Class Reference</title>
+<title>tbb::flow::interface7::join_node< OutputTuple, reserving > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,104 +33,56 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00089.html">pipeline</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00089.html">join_node< OutputTuple, reserving ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00270.html">List of all members</a>  </div>
+<a href="a00349.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::pipeline Class Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, reserving > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A processing pipeline that applies filters to items.  
- <a href="a00089.html#details">More...</a></p>
-
-<p><code>#include <pipeline.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, reserving >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00089.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, reserving >_map" alt=""/>
+  <map id="tbb::flow::interface7::join_node< OutputTuple, reserving >_map" name="tbb::flow::interface7::join_node< OutputTuple, reserving >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ae799a20de47e2fd168a23b63c56410ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae799a20de47e2fd168a23b63c56410ad"></a>
+typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ae799a20de47e2fd168a23b63c56410ad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a211d1d12c7073ac9d6e7189113537952"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a211d1d12c7073ac9d6e7189113537952"></a>
+typedef <br class="typebreak"/>
+unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
+<tr class="separator:a211d1d12c7073ac9d6e7189113537952"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:afe7b7bd9b2617c2b69170675a478b2bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe7b7bd9b2617c2b69170675a478b2bd"></a>
-__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#afe7b7bd9b2617c2b69170675a478b2bd">pipeline</a> ()</td></tr>
-<tr class="memdesc:afe7b7bd9b2617c2b69170675a478b2bd"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty pipeline. <br/></td></tr>
-<tr class="separator:afe7b7bd9b2617c2b69170675a478b2bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac3a7b33217b3f3bb0682ec3a40fd2c39"><td class="memItemLeft" align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">~pipeline</a> ()</td></tr>
-<tr class="separator:ac3a7b33217b3f3bb0682ec3a40fd2c39"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8eb83014bd53b184e0ed50f120ca310b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8eb83014bd53b184e0ed50f120ca310b"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#a8eb83014bd53b184e0ed50f120ca310b">add_filter</a> (<a class="el" href="a00053.html">filter</a> &filter_)</td></tr>
-<tr class="memdesc:a8eb83014bd53b184e0ed50f120ca310b"><td class="mdescLeft"> </td><td class="mdescRight">Add filter to end of pipeline. <br/></td></tr>
-<tr class="separator:a8eb83014bd53b184e0ed50f120ca310b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9ee9080cfc080c40a7ee7cb03a62637"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#ac9ee9080cfc080c40a7ee7cb03a62637">run</a> (size_t max_number_of_live_tokens)</td></tr>
-<tr class="memdesc:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion. <br/></td></tr>
-<tr class="separator:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a270dba81f7dd9935be7f3d69db907ff4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a270dba81f7dd9935be7f3d69db907ff4"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#a270dba81f7dd9935be7f3d69db907ff4">run</a> (size_t max_number_of_live_tokens, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="memdesc:a270dba81f7dd9935be7f3d69db907ff4"><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion with user-supplied context. <br/></td></tr>
-<tr class="separator:a270dba81f7dd9935be7f3d69db907ff4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae53edbda1771eeaa254d78ae6100a762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae53edbda1771eeaa254d78ae6100a762"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html#ae53edbda1771eeaa254d78ae6100a762">clear</a> ()</td></tr>
-<tr class="memdesc:ae53edbda1771eeaa254d78ae6100a762"><td class="mdescLeft"> </td><td class="mdescRight">Remove all filters from the pipeline. <br/></td></tr>
-<tr class="separator:ae53edbda1771eeaa254d78ae6100a762"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a88bd11ed4d74f6de43a7d3b0bc05f2c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88bd11ed4d74f6de43a7d3b0bc05f2c3"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
-<tr class="separator:a88bd11ed4d74f6de43a7d3b0bc05f2c3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa6f9dcf41617866d7bf0e72d8efc11e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6f9dcf41617866d7bf0e72d8efc11e7"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_root_task</b></td></tr>
-<tr class="separator:aa6f9dcf41617866d7bf0e72d8efc11e7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adcddbbe2df37193795a145ef8aac7954"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcddbbe2df37193795a145ef8aac7954"></a>
-class </td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
-<tr class="separator:adcddbbe2df37193795a145ef8aac7954"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4463cf8612c362ee109224e45fad104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4463cf8612c362ee109224e45fad104"></a>
-class </td><td class="memItemRight" valign="bottom"><b>thread_bound_filter</b></td></tr>
-<tr class="separator:ab4463cf8612c362ee109224e45fad104"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39b28579343dc2cdb67fe3fbffe731a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39b28579343dc2cdb67fe3fbffe731a8"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_cleaner</b></td></tr>
-<tr class="separator:a39b28579343dc2cdb67fe3fbffe731a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0307e203ca37529138734040c3881a35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0307e203ca37529138734040c3881a35"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::interface6::internal::pipeline_proxy</b></td></tr>
-<tr class="separator:a0307e203ca37529138734040c3881a35"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A processing pipeline that applies filters to items. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ac3a7b33217b3f3bb0682ec3a40fd2c39"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">virtual __TBB_EXPORTED_METHOD tbb::pipeline::~pipeline </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
-  </tr>
+<tr class="memitem:a14b7e309c267e35b6db79cd24dfae724"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14b7e309c267e35b6db79cd24dfae724"></a>
+ </td><td class="memItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a14b7e309c267e35b6db79cd24dfae724"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a86bf13b42f0d09369b5062fe7a1d97e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86bf13b42f0d09369b5062fe7a1d97e8"></a>
+ </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00087.html">join_node</a> &other)</td></tr>
+<tr class="separator:a86bf13b42f0d09369b5062fe7a1d97e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5275b0f1db78ca08f968d4c905752ea5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5275b0f1db78ca08f968d4c905752ea5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a5275b0f1db78ca08f968d4c905752ea5"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-<p>Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB. </p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00070.png b/doc/html/a00089.png
similarity index 100%
copy from doc/html/a00070.png
copy to doc/html/a00089.png
diff --git a/doc/html/a00090.html b/doc/html/a00090.html
index 08400b8..91a2b12 100644
--- a/doc/html/a00090.html
+++ b/doc/html/a00090.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::pre_scan_tag Struct Reference</title>
+<title>tbb::flow::interface7::join_node< OutputTuple, tag_matching > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,38 +33,89 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00090.html">pre_scan_tag</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00090.html">join_node< OutputTuple, tag_matching ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="a00265.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00351.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::pre_scan_tag Struct Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, tag_matching > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Used to indicate that the initial scan is being performed.  
- <a href="a00090.html#details">More...</a></p>
-
-<p><code>#include <parallel_scan.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::join_node< OutputTuple, tag_matching >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00090.png" usemap="#tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map" alt=""/>
+  <map id="tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map" name="tbb::flow::interface7::join_node< OutputTuple, tag_matching >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a1d71947e8273d28e01620f92a292be59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d71947e8273d28e01620f92a292be59"></a>
-static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
-<tr class="separator:a1d71947e8273d28e01620f92a292be59"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a781bbb3b7d716e8228ded9837c990d2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a781bbb3b7d716e8228ded9837c990d2e"></a>
+typedef OutputTuple </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a781bbb3b7d716e8228ded9837c990d2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4a071f54524c83c4767b101cde5a3c98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a071f54524c83c4767b101cde5a3c98"></a>
+typedef <br class="typebreak"/>
+unfolded_type::input_ports_type </td><td class="memItemRight" valign="bottom"><b>input_ports_type</b></td></tr>
+<tr class="separator:a4a071f54524c83c4767b101cde5a3c98"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ae85fc11cda08b814533a9257d6adf994"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae85fc11cda08b814533a9257d6adf994"></a>
+template<typename __TBB_B0 , typename __TBB_B1 > </td></tr>
+<tr class="memitem:ae85fc11cda08b814533a9257d6adf994"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1)</td></tr>
+<tr class="separator:ae85fc11cda08b814533a9257d6adf994"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03ed108eab68b8e592ab96edde3aee8b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a03ed108eab68b8e592ab96edde3aee8b"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 > </td></tr>
+<tr class="memitem:a03ed108eab68b8e592ab96edde3aee8b"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2)</td></tr>
+<tr class="separator:a03ed108eab68b8e592ab96edde3aee8b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab24daee1d70ca07d16dd7ccdad5069f2"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 > </td></tr>
+<tr class="memitem:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3)</td></tr>
+<tr class="separator:ab24daee1d70ca07d16dd7ccdad5069f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aca64e8e0b0b032b4246d57575d73aacd"><td class="memTemplParams" colspan="2"><a class="anchor" id="aca64e8e0b0b032b4246d57575d73aacd"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 > </td></tr>
+<tr class="memitem:aca64e8e0b0b032b4246d57575d73aacd"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4)</td></tr>
+<tr class="separator:aca64e8e0b0b032b4246d57575d73aacd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a93e5f0dbdcc57290f522a89520dbce76"><td class="memTemplParams" colspan="2"><a class="anchor" id="a93e5f0dbdcc57290f522a89520dbce76"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 > </td></tr>
+<tr class="memitem:a93e5f0dbdcc57290f522a89520dbce76"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5)</td></tr>
+<tr class="separator:a93e5f0dbdcc57290f522a89520dbce76"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a90567e1dddddbde9de43fa4cd6b7447f"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 > </td></tr>
+<tr class="memitem:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6)</td></tr>
+<tr class="separator:a90567e1dddddbde9de43fa4cd6b7447f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a58b25ceef8a28e344077999f8d0554b0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a58b25ceef8a28e344077999f8d0554b0"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 > </td></tr>
+<tr class="memitem:a58b25ceef8a28e344077999f8d0554b0"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7)</td></tr>
+<tr class="separator:a58b25ceef8a28e344077999f8d0554b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a75c58249ea5875548a995bae56186ceb"><td class="memTemplParams" colspan="2"><a class="anchor" id="a75c58249ea5875548a995bae56186ceb"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 > </td></tr>
+<tr class="memitem:a75c58249ea5875548a995bae56186ceb"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8)</td></tr>
+<tr class="separator:a75c58249ea5875548a995bae56186ceb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a03a7669da77b8e28460be89709071e21"><td class="memTemplParams" colspan="2"><a class="anchor" id="a03a7669da77b8e28460be89709071e21"></a>
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 , typename __TBB_B9 > </td></tr>
+<tr class="memitem:a03a7669da77b8e28460be89709071e21"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>join_node</b> (<a class="el" href="a00070.html">graph</a> &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9)</td></tr>
+<tr class="separator:a03a7669da77b8e28460be89709071e21"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab84d8ca452b751406a4968143063eb5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab84d8ca452b751406a4968143063eb5d"></a>
+ </td><td class="memItemRight" valign="bottom"><b>join_node</b> (const <a class="el" href="a00087.html">join_node</a> &other)</td></tr>
+<tr class="separator:ab84d8ca452b751406a4968143063eb5d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeaa120514905a9e5c1c5d712d4633892"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeaa120514905a9e5c1c5d712d4633892"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:aeaa120514905a9e5c1c5d712d4633892"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Used to indicate that the initial scan is being performed. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>parallel_scan.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00071.png b/doc/html/a00090.png
similarity index 100%
rename from doc/html/a00071.png
rename to doc/html/a00090.png
diff --git a/doc/html/a00091.html b/doc/html/a00091.html
index dbfd9da..aaad6a4 100644
--- a/doc/html/a00091.html
+++ b/doc/html/a00091.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::priority_queue_node< T, Compare, A > Class Template Reference</title>
+<title>tbb::flow::interface7::limiter_node< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,284 +33,312 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00091.html">priority_queue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00091.html">limiter_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
+<a href="#pub-attribs">Public Attributes</a> |
 <a href="#pro-methods">Protected Member Functions</a> |
-<a href="a00329.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00330.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::priority_queue_node< T, Compare, A > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::limiter_node< T > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Forwards messages in priority order.  
+<p>Forwards messages only if the threshold has not been reached.  
  <a href="a00091.html#details">More...</a></p>
 
 <p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::priority_queue_node< T, Compare, A >:</div>
+Inheritance diagram for tbb::flow::interface7::limiter_node< T >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00091.png" usemap="#tbb::flow::interface7::priority_queue_node< T, Compare, A >_map" alt=""/>
-  <map id="tbb::flow::interface7::priority_queue_node< T, Compare, A >_map" name="tbb::flow::interface7::priority_queue_node< T, Compare, A >_map">
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="543,112,895,136"/>
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,352,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="724,56,1076,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="1086,56,1438,80"/>
+  <img src="a00091.png" usemap="#tbb::flow::interface7::limiter_node< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::limiter_node< T >_map" name="tbb::flow::interface7::limiter_node< T >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,226,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="236,56,462,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="472,56,698,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:af9a1f2ec01b3c87fbff0f1fbc9d1f70b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9a1f2ec01b3c87fbff0f1fbc9d1f70b"></a>
+<tr class="memitem:a69eff22a9947c69979454b3e3e02de4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69eff22a9947c69979454b3e3e02de4a"></a>
 typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:af9a1f2ec01b3c87fbff0f1fbc9d1f70b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a34d7a390e9b9b589d3f9c4ef9132facf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34d7a390e9b9b589d3f9c4ef9132facf"></a>
+<tr class="separator:a69eff22a9947c69979454b3e3e02de4a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a99fc5a0478d535dbde40afbb9104b235"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99fc5a0478d535dbde40afbb9104b235"></a>
 typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a34d7a390e9b9b589d3f9c4ef9132facf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a96b0fc02e4d635727a507ac22488709b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96b0fc02e4d635727a507ac22488709b"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>base_type</b></td></tr>
-<tr class="separator:a96b0fc02e4d635727a507ac22488709b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83261533efac3dd24a7d6e731d27fb0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83261533efac3dd24a7d6e731d27fb0a"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a83261533efac3dd24a7d6e731d27fb0a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bd8fea3f3d067e053972f3718bc922f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd8fea3f3d067e053972f3718bc922f"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a0bd8fea3f3d067e053972f3718bc922f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00027')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
-<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a99fc5a0478d535dbde40afbb9104b235"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad8a2c4701d026ddbdda2bb2bc7b3e0fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8a2c4701d026ddbdda2bb2bc7b3e0fd"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:ad8a2c4701d026ddbdda2bb2bc7b3e0fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ec4d2a468d636c36774840a2f18bc4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec4d2a468d636c36774840a2f18bc4d"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a7ec4d2a468d636c36774840a2f18bc4d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a060ff9d32a256a10c9c5c8f267dd7d75"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a060ff9d32a256a10c9c5c8f267dd7d75"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a060ff9d32a256a10c9c5c8f267dd7d75"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b41cc4a6e0dc0d896773f7f81245afb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b41cc4a6e0dc0d896773f7f81245afb"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a7b41cc4a6e0dc0d896773f7f81245afb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a58cc30fe31c30491557b0816afcd8caf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58cc30fe31c30491557b0816afcd8caf"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a58cc30fe31c30491557b0816afcd8caf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d9f873c7e1c3f9adcf6f0aed1c04675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d9f873c7e1c3f9adcf6f0aed1c04675"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a1d9f873c7e1c3f9adcf6f0aed1c04675"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab295c7b50ff804f7276609a25016e7ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab295c7b50ff804f7276609a25016e7ca"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ab295c7b50ff804f7276609a25016e7ca">priority_queue_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:ab295c7b50ff804f7276609a25016e7ca"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:ab295c7b50ff804f7276609a25016e7ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa163d8a81b4a795cb37f207b02191a39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa163d8a81b4a795cb37f207b02191a39"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#aa163d8a81b4a795cb37f207b02191a39">priority_queue_node</a> (const <a class="el" href="a00091.html">priority_queue_node</a> &src)</td></tr>
-<tr class="memdesc:aa163d8a81b4a795cb37f207b02191a39"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aa163d8a81b4a795cb37f207b02191a39"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59b60104b514ae3b108016adcc653dc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59b60104b514ae3b108016adcc653dc3"></a>
+<tr class="memitem:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1c8daee8d1fd31e63f78dbb8d0ec87d"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">limiter_node</a> (<a class="el" href="a00070.html">graph</a> &g, size_t threshold, int num_decrement_predecessors=0)</td></tr>
+<tr class="memdesc:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:af1c8daee8d1fd31e63f78dbb8d0ec87d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a99b359e7a83de8dc72dcad01798acab8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99b359e7a83de8dc72dcad01798acab8"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a99b359e7a83de8dc72dcad01798acab8">limiter_node</a> (const <a class="el" href="a00091.html">limiter_node</a> &src)</td></tr>
+<tr class="memdesc:a99b359e7a83de8dc72dcad01798acab8"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a99b359e7a83de8dc72dcad01798acab8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7b4e663007df5428bdb376a887a6c580"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b4e663007df5428bdb376a887a6c580"></a>
 void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a59b60104b514ae3b108016adcc653dc3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00027')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00027.html">buffer_node</a> &src)</td></tr>
-<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#ab458d9fa2c7d6f39ec62d4027c9da376">More...</a><br/></td></tr>
-<tr class="separator:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a70d3c1fb1af11deb9b92fa753fa8604c">More...</a><br/></td></tr>
-<tr class="separator:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00027.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
-<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
-<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
-<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
-<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
-<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
-<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
-<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a7b4e663007df5428bdb376a887a6c580"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2cfd954eb06732f7bae8f2c8fe28735"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ad2cfd954eb06732f7bae8f2c8fe28735">register_successor</a> (<a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
+<tr class="memdesc:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="mdescLeft"> </td><td class="mdescRight">Replace the current successor with this new successor. <br/></td></tr>
+<tr class="separator:ad2cfd954eb06732f7bae8f2c8fe28735"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac7b092dcc2808abf02816d4ac9c86e66"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ac7b092dcc2808abf02816d4ac9c86e66">remove_successor</a> (<a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
+<tr class="memdesc:ac7b092dcc2808abf02816d4ac9c86e66"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node.  <a href="#ac7b092dcc2808abf02816d4ac9c86e66">More...</a><br/></td></tr>
+<tr class="separator:ac7b092dcc2808abf02816d4ac9c86e66"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab3338bc8de0be33a246bdb99f46420c9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3338bc8de0be33a246bdb99f46420c9"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:ab3338bc8de0be33a246bdb99f46420c9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7e92788de5f7c4c3d479a35438e9e176"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e92788de5f7c4c3d479a35438e9e176"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a7e92788de5f7c4c3d479a35438e9e176"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af8a9bcbd7b9c79519a4f3f3215e0b9a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8a9bcbd7b9c79519a4f3f3215e0b9a8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &src)</td></tr>
+<tr class="separator:af8a9bcbd7b9c79519a4f3f3215e0b9a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a767b00f567fe53f95fdbc2874dbdde46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a767b00f567fe53f95fdbc2874dbdde46"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &src)</td></tr>
+<tr class="separator:a767b00f567fe53f95fdbc2874dbdde46"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae338d50ad2de151bfc8d468e19500e42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae338d50ad2de151bfc8d468e19500e42"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:ae338d50ad2de151bfc8d468e19500e42"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6ab328e503b1e807317639b971104bbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ab328e503b1e807317639b971104bbe"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a6ab328e503b1e807317639b971104bbe"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a090c72ee1055b0d6260f86a68acff4d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a090c72ee1055b0d6260f86a68acff4d7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &src)</td></tr>
+<tr class="separator:a090c72ee1055b0d6260f86a68acff4d7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6ffc3d3f264c27b436e3e41f671eca7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6ffc3d3f264c27b436e3e41f671eca7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &src)</td></tr>
+<tr class="separator:ae6ffc3d3f264c27b436e3e41f671eca7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3f85a6242ead5dd62ce05e30cf6f770"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3f85a6242ead5dd62ce05e30cf6f770"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:aa3f85a6242ead5dd62ce05e30cf6f770"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aab1140239fcdae89278fd3048ebd71c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab1140239fcdae89278fd3048ebd71c1"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:aab1140239fcdae89278fd3048ebd71c1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3fa166205c94e5bc85fa44f4d55c712d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fa166205c94e5bc85fa44f4d55c712d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a3fa166205c94e5bc85fa44f4d55c712d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aca5ef5cec3b26227d71686d99ee04f7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca5ef5cec3b26227d71686d99ee04f7e"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#aca5ef5cec3b26227d71686d99ee04f7e">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &src)</td></tr>
+<tr class="memdesc:aca5ef5cec3b26227d71686d99ee04f7e"><td class="mdescLeft"> </td><td class="mdescRight">Adds src to the list of cached predecessors. <br/></td></tr>
+<tr class="separator:aca5ef5cec3b26227d71686d99ee04f7e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aca7b4bd4ee13faf713021eb0d86735"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aca7b4bd4ee13faf713021eb0d86735"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a8aca7b4bd4ee13faf713021eb0d86735">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &src)</td></tr>
+<tr class="memdesc:a8aca7b4bd4ee13faf713021eb0d86735"><td class="mdescLeft"> </td><td class="mdescRight">Removes src from the list of cached predecessors. <br/></td></tr>
+<tr class="separator:a8aca7b4bd4ee13faf713021eb0d86735"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00142')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
+<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
+<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
+<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
+<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
+<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
+<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
+<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:acae546705b61ae7591752a1f601ccb0f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:acae546705b61ae7591752a1f601ccb0f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17327722546bfb4aa51fb4a637a63039"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17327722546bfb4aa51fb4a637a63039"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a17327722546bfb4aa51fb4a637a63039"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a83e13afae1142541b28bfe21ac71419c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83e13afae1142541b28bfe21ac71419c"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::item_type </td><td class="memItemRight" valign="bottom"><b>item_type</b></td></tr>
-<tr class="separator:a83e13afae1142541b28bfe21ac71419c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acd29f816dcbfa0f02541aef1d10dae1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd29f816dcbfa0f02541aef1d10dae1d"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::<a class="el" href="a00028.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>prio_operation</b></td></tr>
-<tr class="separator:acd29f816dcbfa0f02541aef1d10dae1d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00027')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
-  <b>reg_succ</b>, 
-<b>rem_succ</b>, 
-<b>req_item</b>, 
-<b>res_item</b>, 
-<br/>
-  <b>rel_res</b>, 
-<b>con_res</b>, 
-<b>put_item</b>, 
-<b>try_fwd_task</b>
-<br/>
- }</td></tr>
-<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
-typedef <br class="typebreak"/>
-internal::aggregating_functor<br class="typebreak"/>
-< <a class="el" href="a00027.html">my_class</a>, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
-<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:ac313b6586bf183a33c3196037964547d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac313b6586bf183a33c3196037964547d"></a>
+internal::decrementer<br class="typebreak"/>
+< <a class="el" href="a00091.html">limiter_node</a>< T > > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#ac313b6586bf183a33c3196037964547d">decrement</a></td></tr>
+<tr class="memdesc:ac313b6586bf183a33c3196037964547d"><td class="mdescLeft"> </td><td class="mdescRight">The internal <a class="el" href="a00124.html">receiver< continue_msg ></a> that decrements the count. <br/></td></tr>
+<tr class="separator:ac313b6586bf183a33c3196037964547d"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
 Protected Member Functions</h2></td></tr>
-<tr class="memitem:a5af7744bd02e70e94a443d8b51d1b60e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5af7744bd02e70e94a443d8b51d1b60e"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a5af7744bd02e70e94a443d8b51d1b60e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab478330c41fa262d1b896432f1ac37cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab478330c41fa262d1b896432f1ac37cc"></a>
-void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00028.html">prio_operation</a> *op_list)</td></tr>
-<tr class="separator:ab478330c41fa262d1b896432f1ac37cc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4e6d43ca8748046098fd27ca97e58f3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e6d43ca8748046098fd27ca97e58f3d"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a4e6d43ca8748046098fd27ca97e58f3d">internal_forward_task</a> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="memdesc:a4e6d43ca8748046098fd27ca97e58f3d"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
-<tr class="separator:a4e6d43ca8748046098fd27ca97e58f3d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="separator:a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac67d6e65c708a40b3849d6d9e96916fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac67d6e65c708a40b3849d6d9e96916fa"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="separator:ac67d6e65c708a40b3849d6d9e96916fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac820e6e5f2a0eed1f9ef72262f78f45d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac820e6e5f2a0eed1f9ef72262f78f45d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="separator:ac820e6e5f2a0eed1f9ef72262f78f45d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21cc506b6bc5bbe59dfab4f9e59955fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21cc506b6bc5bbe59dfab4f9e59955fe"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="separator:a21cc506b6bc5bbe59dfab4f9e59955fe"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adbcefdb4ae0369abb1d047bb49622176"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbcefdb4ae0369abb1d047bb49622176"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00028.html">prio_operation</a> *op)</td></tr>
-<tr class="separator:adbcefdb4ae0369abb1d047bb49622176"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00027')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
-virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
-<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
-<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
-<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
-<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
-<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
-<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4fe0ea40c0f1ed6d109eed8d8bf25ee inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4fe0ea40c0f1ed6d109eed8d8bf25ee"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:aa4fe0ea40c0f1ed6d109eed8d8bf25ee inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+<tr class="memitem:a0551cf104b35669b5f5153c1d03d5d2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0551cf104b35669b5f5153c1d03d5d2d"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html#a0551cf104b35669b5f5153c1d03d5d2d">try_put_task</a> (const T &t)</td></tr>
+<tr class="memdesc:a0551cf104b35669b5f5153c1d03d5d2d"><td class="mdescLeft"> </td><td class="mdescRight">Puts an item to this receiver. <br/></td></tr>
+<tr class="separator:a0551cf104b35669b5f5153c1d03d5d2d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abad6141f2d6682b851dd4db3af2f24f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abad6141f2d6682b851dd4db3af2f24f6"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:abad6141f2d6682b851dd4db3af2f24f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ace68f4550862c2725746df84dbd02201"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace68f4550862c2725746df84dbd02201"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:ace68f4550862c2725746df84dbd02201"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
 virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:affe7799181c01bdd203c2ca2117dae7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affe7799181c01bdd203c2ca2117dae7d"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass< limiter_node< T > ></b></td></tr>
+<tr class="separator:affe7799181c01bdd203c2ca2117dae7d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a80d4e1a1fa28ce76b1b08e12f93983f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80d4e1a1fa28ce76b1b08e12f93983f2"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::decrementer< limiter_node< T > ></b></td></tr>
+<tr class="separator:a80d4e1a1fa28ce76b1b08e12f93983f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
 Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00027')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
-<a class="el" href="a00108.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
-<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
-internal::aggregator<br class="typebreak"/>
-< my_handler, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
-<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>><br/>
-class tbb::flow::interface7::priority_queue_node< T, Compare, A ></h3>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::flow::interface7::limiter_node< T ></h3>
+
+<p>Forwards messages only if the threshold has not been reached. </p>
+<p>This node forwards items until its threshold is reached. It contains no buffering. If the downstream node rejects, the message is dropped. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ac7b092dcc2808abf02816d4ac9c86e66"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node</a>< T >::remove_successor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > & </td>
+          <td class="paramname"><em>r</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Removes a successor from this node. </p>
+<p>r.remove_predecessor(*this) is also called. </p>
 
-<p>Forwards messages in priority order. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<p>Implements <a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00091.png b/doc/html/a00091.png
index a84ee06..e821303 100644
Binary files a/doc/html/a00091.png and b/doc/html/a00091.png differ
diff --git a/doc/html/a00092.html b/doc/html/a00092.html
index d7cffb1..29d423a 100644
--- a/doc/html/a00092.html
+++ b/doc/html/a00092.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::queue_node< T, A > Class Template Reference</title>
+<title>tbb::interface6::memory_pool< Alloc > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,278 +33,54 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00092.html">queue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00092.html">memory_pool</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="a00327.html">List of all members</a>  </div>
+<a href="a00398.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::queue_node< T, A > Class Template Reference</div>  </div>
+<div class="title">tbb::interface6::memory_pool< Alloc > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Forwards messages in FIFO order.  
+<p>Thread-safe growable pool allocator for variable-size requests.  
  <a href="a00092.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
+<p><code>#include <memory_pool.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::queue_node< T, A >:</div>
+Inheritance diagram for tbb::interface6::memory_pool< Alloc >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00092.png" usemap="#tbb::flow::interface7::queue_node< T, A >_map" alt=""/>
-  <map id="tbb::flow::interface7::queue_node< T, A >_map" name="tbb::flow::interface7::queue_node< T, A >_map">
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="420,112,690,136"/>
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,270,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="560,56,830,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="840,56,1110,80"/>
-<area href="a00125.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="420,224,690,248"/>
+  <img src="a00092.png" usemap="#tbb::interface6::memory_pool< Alloc >_map" alt=""/>
+  <map id="tbb::interface6::memory_pool< Alloc >_map" name="tbb::interface6::memory_pool< Alloc >_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a6c97cb00f09b2920b470f7f05bd164d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c97cb00f09b2920b470f7f05bd164d1"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a6c97cb00f09b2920b470f7f05bd164d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17ed7b6084d51f1d50164ed9b2eff680"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17ed7b6084d51f1d50164ed9b2eff680"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a17ed7b6084d51f1d50164ed9b2eff680"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a768cdbf6ab5f38ec87e402ff2897ca38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a768cdbf6ab5f38ec87e402ff2897ca38"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a768cdbf6ab5f38ec87e402ff2897ca38"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad5fc2cf414bebdf02246e356b21cf39a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5fc2cf414bebdf02246e356b21cf39a"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:ad5fc2cf414bebdf02246e356b21cf39a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00027')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
-<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a503d3fe4f98302549e36f74633de5716"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503d3fe4f98302549e36f74633de5716"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">queue_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a503d3fe4f98302549e36f74633de5716"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a503d3fe4f98302549e36f74633de5716"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa790bb6d3c8bef58d59235dfba1a1092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa790bb6d3c8bef58d59235dfba1a1092"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a> (const <a class="el" href="a00092.html">queue_node</a> &src)</td></tr>
-<tr class="memdesc:aa790bb6d3c8bef58d59235dfba1a1092"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aa790bb6d3c8bef58d59235dfba1a1092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af27bdd716ffead0a648bb9e7e81790ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af27bdd716ffead0a648bb9e7e81790ae"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:af27bdd716ffead0a648bb9e7e81790ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00027')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00027.html">buffer_node</a> &src)</td></tr>
-<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#ab458d9fa2c7d6f39ec62d4027c9da376">More...</a><br/></td></tr>
-<tr class="separator:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a70d3c1fb1af11deb9b92fa753fa8604c">More...</a><br/></td></tr>
-<tr class="separator:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00027.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
-<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
-<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
-<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
-<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
-<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
-<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
-<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a7e8acd469a6e7d7f843158104c3a829d"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a7e8acd469a6e7d7f843158104c3a829d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef5a0b62dcb531fbca36f329415423c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5a0b62dcb531fbca36f329415423c2"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:aef5a0b62dcb531fbca36f329415423c2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57e3683d6bd811bb88c117310d1165ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57e3683d6bd811bb88c117310d1165ca"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::<a class="el" href="a00028.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>queue_operation</b></td></tr>
-<tr class="separator:a57e3683d6bd811bb88c117310d1165ca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00027')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
-  <b>reg_succ</b>, 
-<b>rem_succ</b>, 
-<b>req_item</b>, 
-<b>res_item</b>, 
-<br/>
-  <b>rel_res</b>, 
-<b>con_res</b>, 
-<b>put_item</b>, 
-<b>try_fwd_task</b>
-<br/>
- }</td></tr>
-<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
-typedef <br class="typebreak"/>
-internal::aggregating_functor<br class="typebreak"/>
-< <a class="el" href="a00027.html">my_class</a>, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
-<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a1ab7e37f537acb75175844bd34132b99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ab7e37f537acb75175844bd34132b99"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="memdesc:a1ab7e37f537acb75175844bd34132b99"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
-<tr class="separator:a1ab7e37f537acb75175844bd34132b99"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad5d225b5305d2d8e1778d2ac65e473a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d225b5305d2d8e1778d2ac65e473a8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:ad5d225b5305d2d8e1778d2ac65e473a8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae85f9ee123b22bb273116402372d2619"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85f9ee123b22bb273116402372d2619"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:ae85f9ee123b22bb273116402372d2619"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acc6c42585d3deef75dd3922b6fe9cc21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc6c42585d3deef75dd3922b6fe9cc21"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:acc6c42585d3deef75dd3922b6fe9cc21"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00027')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a2d09326016a31e17acd57f8e6ce58054 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d09326016a31e17acd57f8e6ce58054"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00028.html">buffer_operation</a> *op_list)</td></tr>
-<tr class="separator:a2d09326016a31e17acd57f8e6ce58054 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00028.html">buffer_operation</a> &op_data)</td></tr>
-<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
-virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
-<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
-<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
-<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
-<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe75e82e8dffa7d13fa9e82d9951dba inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe75e82e8dffa7d13fa9e82d9951dba"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:a2fe75e82e8dffa7d13fa9e82d9951dba inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae7b3eee1ec878f6f0055f6133b233c09 inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7b3eee1ec878f6f0055f6133b233c09"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00028.html">buffer_operation</a> *op)</td></tr>
-<tr class="separator:ae7b3eee1ec878f6f0055f6133b233c09 inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
-task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
-<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
-<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c02d02bdb7ab20055d2f0aaba8d3c9c inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c02d02bdb7ab20055d2f0aaba8d3c9c"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a5c02d02bdb7ab20055d2f0aaba8d3c9c inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4fe0ea40c0f1ed6d109eed8d8bf25ee inherit pro_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4fe0ea40c0f1ed6d109eed8d8bf25ee"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:aa4fe0ea40c0f1ed6d109eed8d8bf25ee inherit pro_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00027')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
-<a class="el" href="a00108.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
-<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
-internal::aggregator<br class="typebreak"/>
-< my_handler, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
-<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4c36829a159eac04d630ac5a99b9354"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4c36829a159eac04d630ac5a99b9354"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#af4c36829a159eac04d630ac5a99b9354">memory_pool</a> (const Alloc &src=Alloc())</td></tr>
+<tr class="memdesc:af4c36829a159eac04d630ac5a99b9354"><td class="mdescLeft"> </td><td class="mdescRight">construct pool with underlying allocator <br/></td></tr>
+<tr class="separator:af4c36829a159eac04d630ac5a99b9354"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2c7645b39b7280b1b3cf393d05fbaf7"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#ad2c7645b39b7280b1b3cf393d05fbaf7">~memory_pool</a> ()</td></tr>
+<tr class="memdesc:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="mdescLeft"> </td><td class="mdescRight">destroy pool <br/></td></tr>
+<tr class="separator:ad2c7645b39b7280b1b3cf393d05fbaf7"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
-class tbb::flow::interface7::queue_node< T, A ></h3>
+<div class="textblock"><h3>template<typename Alloc><br/>
+class tbb::interface6::memory_pool< Alloc ></h3>
 
-<p>Forwards messages in FIFO order. </p>
+<p>Thread-safe growable pool allocator for variable-size requests. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00092.png b/doc/html/a00092.png
index 98df659..040c525 100644
Binary files a/doc/html/a00092.png and b/doc/html/a00092.png differ
diff --git a/doc/html/a00093.html b/doc/html/a00093.html
index 28ca6c4..1f86159 100644
--- a/doc/html/a00093.html
+++ b/doc/html/a00093.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::queuing_mutex Class Reference</title>
+<title>tbb::interface6::memory_pool_allocator< T, P > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,62 +33,144 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00093.html">queuing_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00093.html">memory_pool_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00271.html">List of all members</a>  </div>
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00394.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::queuing_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::interface6::memory_pool_allocator< T, P > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Queuing mutex with local-only spinning.  
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
  <a href="a00093.html#details">More...</a></p>
 
-<p><code>#include <queuing_mutex.h></code></p>
+<p><code>#include <memory_pool.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00121.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html">rebind</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a6202050e0edbded0b0534ea4be9547e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6202050e0edbded0b0534ea4be9547e0"></a>
+typedef <br class="typebreak"/>
+tbb::internal::allocator_type<br class="typebreak"/>
+< T >::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a6202050e0edbded0b0534ea4be9547e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a07450f397df1af8096f31bfa8f2e1722"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07450f397df1af8096f31bfa8f2e1722"></a>
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a07450f397df1af8096f31bfa8f2e1722"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a972521ed466cc8140d386331a25e895a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a972521ed466cc8140d386331a25e895a"></a>
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a972521ed466cc8140d386331a25e895a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83b91759effc3a452fc565ac3bb45613"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83b91759effc3a452fc565ac3bb45613"></a>
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a83b91759effc3a452fc565ac3bb45613"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15abe537e2dad4132c956c08d9d0a27e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15abe537e2dad4132c956c08d9d0a27e"></a>
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a15abe537e2dad4132c956c08d9d0a27e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac20767f3b7a8fcdc1aff0b0874245d3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac20767f3b7a8fcdc1aff0b0874245d3a"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac20767f3b7a8fcdc1aff0b0874245d3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a23267e855e2427b401b99ce4b547f83e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23267e855e2427b401b99ce4b547f83e"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a23267e855e2427b401b99ce4b547f83e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a0e58fce2062ae349a30b320b7fdc9155"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e58fce2062ae349a30b320b7fdc9155"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html#a0e58fce2062ae349a30b320b7fdc9155">queuing_mutex</a> ()</td></tr>
-<tr class="memdesc:a0e58fce2062ae349a30b320b7fdc9155"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
-<tr class="separator:a0e58fce2062ae349a30b320b7fdc9155"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae475e98e804c75239748b293e7e0feff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae475e98e804c75239748b293e7e0feff"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-<tr class="separator:ae475e98e804c75239748b293e7e0feff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a384be31e682a3b86b5b11e635232c9c5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a384be31e682a3b86b5b11e635232c9c5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (pool_type &pool)  throw ()</td></tr>
+<tr class="separator:a384be31e682a3b86b5b11e635232c9c5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa2b4cf16b566e40ddb196c371e5ae96e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b4cf16b566e40ddb196c371e5ae96e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a> &src)  throw ()</td></tr>
+<tr class="separator:aa2b4cf16b566e40ddb196c371e5ae96e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad32ad8245399fbdb38a0a41e912d86d9"></a>
+template<typename U > </td></tr>
+<tr class="memitem:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, P > &src)  throw ()</td></tr>
+<tr class="separator:ad32ad8245399fbdb38a0a41e912d86d9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55653a8c539901be6ca24a120a5d7b72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55653a8c539901be6ca24a120a5d7b72"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+<tr class="separator:a55653a8c539901be6ca24a120a5d7b72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8a3e4236f6e1266f126dac557906ce2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a3e4236f6e1266f126dac557906ce2c"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+<tr class="separator:a8a3e4236f6e1266f126dac557906ce2c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a10b9888883a3dbd66e87c4a7f874ef28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10b9888883a3dbd66e87c4a7f874ef28"></a>
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html#a10b9888883a3dbd66e87c4a7f874ef28">allocate</a> (size_type n, const void *=0)</td></tr>
+<tr class="memdesc:a10b9888883a3dbd66e87c4a7f874ef28"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
+<tr class="separator:a10b9888883a3dbd66e87c4a7f874ef28"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9fcf288f2d653972d1bdc0c65abebed4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fcf288f2d653972d1bdc0c65abebed4"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html#a9fcf288f2d653972d1bdc0c65abebed4">deallocate</a> (pointer p, size_type)</td></tr>
+<tr class="memdesc:a9fcf288f2d653972d1bdc0c65abebed4"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
+<tr class="separator:a9fcf288f2d653972d1bdc0c65abebed4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bded8e3fb2cec32b48771e7a1bbb838"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html#a2bded8e3fb2cec32b48771e7a1bbb838">max_size</a> () const   throw ()</td></tr>
+<tr class="memdesc:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
+<tr class="separator:a2bded8e3fb2cec32b48771e7a1bbb838"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac51b34ef90ecabdd2e0483e25603a15b"></a>
+template<typename U , typename... Args> </td></tr>
+<tr class="memitem:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00093.html#ac51b34ef90ecabdd2e0483e25603a15b">construct</a> (U *p, Args &&...args)</td></tr>
+<tr class="memdesc:ac51b34ef90ecabdd2e0483e25603a15b"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
+<tr class="separator:ac51b34ef90ecabdd2e0483e25603a15b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8be8f1b38d4b1b6bea2d83f611bf66e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8be8f1b38d4b1b6bea2d83f611bf66e7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, value_type &&value)</td></tr>
+<tr class="separator:a8be8f1b38d4b1b6bea2d83f611bf66e7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:affac76f7742c4d8ea6345e0aad82792a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affac76f7742c4d8ea6345e0aad82792a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
+<tr class="separator:affac76f7742c4d8ea6345e0aad82792a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2223b6469f88aadc432a4b3f88728d0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2223b6469f88aadc432a4b3f88728d0f"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html#a2223b6469f88aadc432a4b3f88728d0f">destroy</a> (pointer p)</td></tr>
+<tr class="memdesc:a2223b6469f88aadc432a4b3f88728d0f"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
+<tr class="separator:a2223b6469f88aadc432a4b3f88728d0f"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:aecd858782faee0fb5fa707671cfc49aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecd858782faee0fb5fa707671cfc49aa"></a>
+typedef P </td><td class="memItemRight" valign="bottom"><b>pool_type</b></td></tr>
+<tr class="separator:aecd858782faee0fb5fa707671cfc49aa"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a504f3af8a939468f1514604c0941bc62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a504f3af8a939468f1514604c0941bc62"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a504f3af8a939468f1514604c0941bc62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47ad4cdac79581c01a66241e2e5c2c07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47ad4cdac79581c01a66241e2e5c2c07"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:a47ad4cdac79581c01a66241e2e5c2c07"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b4833b97208bd699cba061dfc3057cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b4833b97208bd699cba061dfc3057cc"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-<tr class="separator:a5b4833b97208bd699cba061dfc3057cc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a0fbd737811d556f1d2898d3722e85f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fbd737811d556f1d2898d3722e85f32"></a>
+pool_type * </td><td class="memItemRight" valign="bottom"><b>my_pool</b></td></tr>
+<tr class="separator:a0fbd737811d556f1d2898d3722e85f32"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c34ee2e5a57845f050b507cc516a005"></a>
+template<typename U , typename R > </td></tr>
+<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b></td></tr>
+<tr class="separator:a6c34ee2e5a57845f050b507cc516a005"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac8c26a64f4e012f2a9cf6035cf029905"></a>
+template<typename V , typename U , typename R > </td></tr>
+<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
+<tr class="separator:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2f7230e5bc817e7512e18b5311b3371b"></a>
+template<typename V , typename U , typename R > </td></tr>
+<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
+<tr class="separator:a2f7230e5bc817e7512e18b5311b3371b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Queuing mutex with local-only spinning. </p>
+<div class="textblock"><h3>template<typename T, typename P = internal::pool_base><br/>
+class tbb::interface6::memory_pool_allocator< T, P ></h3>
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>queuing_mutex.h</li>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00094.html b/doc/html/a00094.html
index 2af5a70..c1b6091 100644
--- a/doc/html/a00094.html
+++ b/doc/html/a00094.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::queuing_rw_mutex Class Reference</title>
+<title>tbb::interface6::memory_pool_allocator< void, P > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,67 +33,93 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00094.html">queuing_rw_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00094.html">memory_pool_allocator< void, P ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00273.html">List of all members</a>  </div>
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00396.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::queuing_rw_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::interface6::memory_pool_allocator< void, P > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Queuing reader-writer mutex with local-only spinning.  
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
  <a href="a00094.html#details">More...</a></p>
 
-<p><code>#include <queuing_rw_mutex.h></code></p>
+<p><code>#include <memory_pool.h></code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00119.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">rebind</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aa4a3be261ace6f19c3c40ef2503c4984"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4a3be261ace6f19c3c40ef2503c4984"></a>
+typedef P </td><td class="memItemRight" valign="bottom"><b>pool_type</b></td></tr>
+<tr class="separator:aa4a3be261ace6f19c3c40ef2503c4984"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb58c3e8f2e0a8f9152eae641ee420fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb58c3e8f2e0a8f9152eae641ee420fa"></a>
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:afb58c3e8f2e0a8f9152eae641ee420fa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e53158493ed0d617460e8dd6534a525"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e53158493ed0d617460e8dd6534a525"></a>
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a5e53158493ed0d617460e8dd6534a525"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a676a2c2649d6ffc45466d94555d71df2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a676a2c2649d6ffc45466d94555d71df2"></a>
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a676a2c2649d6ffc45466d94555d71df2"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23de1ac415b6f54b778c8fd6ec6073e0"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html#a23de1ac415b6f54b778c8fd6ec6073e0">queuing_rw_mutex</a> ()</td></tr>
-<tr class="memdesc:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
-<tr class="separator:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae67fe828d7e07222e7876ef9fd780fcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae67fe828d7e07222e7876ef9fd780fcc"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html#ae67fe828d7e07222e7876ef9fd780fcc">~queuing_rw_mutex</a> ()</td></tr>
-<tr class="memdesc:ae67fe828d7e07222e7876ef9fd780fcc"><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. q_tail is non-NULL. <br/></td></tr>
-<tr class="separator:ae67fe828d7e07222e7876ef9fd780fcc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd032e7e13804cd4d1cd8fce60d773f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd032e7e13804cd4d1cd8fce60d773f8"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
-<tr class="separator:afd032e7e13804cd4d1cd8fce60d773f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8e697e2d03e8f69de1728409bec4f7b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e697e2d03e8f69de1728409bec4f7b5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (pool_type &pool)  throw ()</td></tr>
+<tr class="separator:a8e697e2d03e8f69de1728409bec4f7b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a001103c81ba25e645305f19a82db2e4a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a001103c81ba25e645305f19a82db2e4a"></a>
+ </td><td class="memItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a> &src)  throw ()</td></tr>
+<tr class="separator:a001103c81ba25e645305f19a82db2e4a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d3db3082c1fa40ccb3997626f61e61e"></a>
+template<typename U > </td></tr>
+<tr class="memitem:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, P > &src)  throw ()</td></tr>
+<tr class="separator:a8d3db3082c1fa40ccb3997626f61e61e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a1e497d3d88dcb063ab6594eb4ad3dc35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e497d3d88dcb063ab6594eb4ad3dc35"></a>
+pool_type * </td><td class="memItemRight" valign="bottom"><b>my_pool</b></td></tr>
+<tr class="separator:a1e497d3d88dcb063ab6594eb4ad3dc35"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:ae3dbfbf71bfa9c662a59688cd86bfbd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3dbfbf71bfa9c662a59688cd86bfbd7"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
-<tr class="separator:ae3dbfbf71bfa9c662a59688cd86bfbd7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae8c3ee1f5ab3af3954abeec1d165ea8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8c3ee1f5ab3af3954abeec1d165ea8e"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:ae8c3ee1f5ab3af3954abeec1d165ea8e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4704d512922b4b5d21c97901f9f7abd0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4704d512922b4b5d21c97901f9f7abd0"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
-<tr class="separator:a4704d512922b4b5d21c97901f9f7abd0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c34ee2e5a57845f050b507cc516a005"></a>
+template<typename U , typename R > </td></tr>
+<tr class="memitem:a6c34ee2e5a57845f050b507cc516a005"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>memory_pool_allocator</b></td></tr>
+<tr class="separator:a6c34ee2e5a57845f050b507cc516a005"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac8c26a64f4e012f2a9cf6035cf029905"></a>
+template<typename V , typename U , typename R > </td></tr>
+<tr class="memitem:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
+<tr class="separator:ac8c26a64f4e012f2a9cf6035cf029905"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2f7230e5bc817e7512e18b5311b3371b"></a>
+template<typename V , typename U , typename R > </td></tr>
+<tr class="memitem:a2f7230e5bc817e7512e18b5311b3371b"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00093.html">memory_pool_allocator</a>< V, R > &a, const <a class="el" href="a00093.html">memory_pool_allocator</a>< U, R > &b)</td></tr>
+<tr class="separator:a2f7230e5bc817e7512e18b5311b3371b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Queuing reader-writer mutex with local-only spinning. </p>
-<p>Adapted from Krieger, Stumm, et al. pseudocode at <a href="http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93">http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93</a> </p>
+<div class="textblock"><h3>template<typename P><br/>
+class tbb::interface6::memory_pool_allocator< void, P ></h3>
+
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>queuing_rw_mutex.h</li>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00095.html b/doc/html/a00095.html
index 09ef886..2fdb0e0 100644
--- a/doc/html/a00095.html
+++ b/doc/html/a00095.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::reader_writer_lock Class Reference</title>
+<title>rml::MemPoolPolicy Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,196 +33,63 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00237.html">rml</a></li><li class="navelem"><a class="el" href="a00095.html">MemPoolPolicy</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00347.html">List of all members</a>  </div>
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00263.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">rml::MemPoolPolicy Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Writer-preference reader-writer lock with local-only spinning on readers.  
- <a href="a00095.html#details">More...</a></p>
-
-<p><code>#include <reader_writer_lock.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface5::reader_writer_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00095.png" usemap="#tbb::interface5::reader_writer_lock_map" alt=""/>
-  <map id="tbb::interface5::reader_writer_lock_map" name="tbb::interface5::reader_writer_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped lock pattern for write locks.  <a href="a00118.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">scoped_lock_read</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped lock pattern for read locks.  <a href="a00123.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">status_t</a> { <b>waiting_nonblocking</b>, 
-<b>waiting</b>, 
-<b>active</b>, 
-<b>invalid</b>
+<tr class="memitem:a2a8905fe8598b18ff8195e3484178d2c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>TBBMALLOC_POOL_VERSION</b> = 1
  }</td></tr>
-<tr class="memdesc:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="mdescLeft"> </td><td class="mdescRight">Status type for nodes associated with lock instances.  <a href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">More...</a><br/></td></tr>
-<tr class="separator:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a2a8905fe8598b18ff8195e3484178d2c"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:abceda6c50b0c36eacbef51f4682742f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abceda6c50b0c36eacbef51f4682742f3"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#abceda6c50b0c36eacbef51f4682742f3">reader_writer_lock</a> ()</td></tr>
-<tr class="memdesc:abceda6c50b0c36eacbef51f4682742f3"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a>. <br/></td></tr>
-<tr class="separator:abceda6c50b0c36eacbef51f4682742f3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeee96b648c7b5ff6126c8a2e13ec7241"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#aeee96b648c7b5ff6126c8a2e13ec7241">~reader_writer_lock</a> ()</td></tr>
-<tr class="memdesc:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="mdescLeft"> </td><td class="mdescRight">Destructs a <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> object. <br/></td></tr>
-<tr class="separator:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af92eb949fc491af8f7e350869ea0a0d1"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a> ()</td></tr>
-<tr class="memdesc:af92eb949fc491af8f7e350869ea0a0d1"><td class="mdescLeft"> </td><td class="mdescRight">Acquires the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write.  <a href="#af92eb949fc491af8f7e350869ea0a0d1">More...</a><br/></td></tr>
-<tr class="separator:af92eb949fc491af8f7e350869ea0a0d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1739e842af52925a2d4a7e821b9b3b8d"><td class="memItemLeft" align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#a1739e842af52925a2d4a7e821b9b3b8d">try_lock</a> ()</td></tr>
-<tr class="memdesc:a1739e842af52925a2d4a7e821b9b3b8d"><td class="mdescLeft"> </td><td class="mdescRight">Tries to acquire the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write.  <a href="#a1739e842af52925a2d4a7e821b9b3b8d">More...</a><br/></td></tr>
-<tr class="separator:a1739e842af52925a2d4a7e821b9b3b8d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#a6fd4fcdf0e5c0425d1cc736d644f234f">lock_read</a> ()</td></tr>
-<tr class="memdesc:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="mdescLeft"> </td><td class="mdescRight">Acquires the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read.  <a href="#a6fd4fcdf0e5c0425d1cc736d644f234f">More...</a><br/></td></tr>
-<tr class="separator:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="memItemLeft" align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#a9c7aa04e00202c9a1197cb6d870cabb4">try_lock_read</a> ()</td></tr>
-<tr class="memdesc:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="mdescLeft"> </td><td class="mdescRight">Tries to acquire the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read.  <a href="#a9c7aa04e00202c9a1197cb6d870cabb4">More...</a><br/></td></tr>
-<tr class="separator:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4c55c4dbde63e950fdc843c9b01a174f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c55c4dbde63e950fdc843c9b01a174f"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html#a4c55c4dbde63e950fdc843c9b01a174f">unlock</a> ()</td></tr>
-<tr class="memdesc:a4c55c4dbde63e950fdc843c9b01a174f"><td class="mdescLeft"> </td><td class="mdescRight">Releases the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a>. <br/></td></tr>
-<tr class="separator:a4c55c4dbde63e950fdc843c9b01a174f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73e485e36709acc04a9448eaa95bb666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73e485e36709acc04a9448eaa95bb666"></a>
+ </td><td class="memItemRight" valign="bottom"><b>MemPoolPolicy</b> (rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false)</td></tr>
+<tr class="separator:a73e485e36709acc04a9448eaa95bb666"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock_read</b></td></tr>
-<tr class="separator:a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a0935ae38d632881a6d6cccb675cb6f27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0935ae38d632881a6d6cccb675cb6f27"></a>
+rawAllocType </td><td class="memItemRight" valign="bottom"><b>pAlloc</b></td></tr>
+<tr class="separator:a0935ae38d632881a6d6cccb675cb6f27"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a221c0a53496a391c60d2f452fc9d76ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a221c0a53496a391c60d2f452fc9d76ae"></a>
+rawFreeType </td><td class="memItemRight" valign="bottom"><b>pFree</b></td></tr>
+<tr class="separator:a221c0a53496a391c60d2f452fc9d76ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac91fffeccd1f4255bbb5719f25785bce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac91fffeccd1f4255bbb5719f25785bce"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>granularity</b></td></tr>
+<tr class="separator:ac91fffeccd1f4255bbb5719f25785bce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaea7ca6973332913c839073822352046"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaea7ca6973332913c839073822352046"></a>
+int </td><td class="memItemRight" valign="bottom"><b>version</b></td></tr>
+<tr class="separator:aaea7ca6973332913c839073822352046"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab00be5199577e8dd87f25c867a488aaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab00be5199577e8dd87f25c867a488aaf"></a>
+unsigned </td><td class="memItemRight" valign="bottom"><b>fixedPool</b>: 1</td></tr>
+<tr class="separator:ab00be5199577e8dd87f25c867a488aaf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afc2ea43e020580853224fa430736d38a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc2ea43e020580853224fa430736d38a"></a>
+unsigned </td><td class="memItemRight" valign="bottom"><b>keepAllMemory</b>: 1</td></tr>
+<tr class="separator:afc2ea43e020580853224fa430736d38a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2fe8bde7ec5c0f347f5c8e648c92c612"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe8bde7ec5c0f347f5c8e648c92c612"></a>
+unsigned </td><td class="memItemRight" valign="bottom"><b>reserved</b>: 30</td></tr>
+<tr class="separator:a2fe8bde7ec5c0f347f5c8e648c92c612"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Writer-preference reader-writer lock with local-only spinning on readers. </p>
-<p>Loosely adapted from Mellor-Crummey and Scott pseudocode at <a href="http://www.cs.rochester.edu/research/synchronization/pseudocode/rw.html#s_wp">http://www.cs.rochester.edu/research/synchronization/pseudocode/rw.html#s_wp</a> </p>
-</div><h2 class="groupheader">Member Enumeration Documentation</h2>
-<a class="anchor" id="a29bbf9ca21c12b313d9fa5326feaf3ed"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock::status_t</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Status type for nodes associated with lock instances. </p>
-<p>waiting_nonblocking: the wait state for nonblocking lock instances; for writes, these transition straight to active states; for reads, these are unused.</p>
-<p>waiting: the start and spin state for all lock instances; these will transition to active state when appropriate. Non-blocking write locks transition from this state to waiting_nonblocking immediately.</p>
-<p>active: the active state means that the lock instance holds the lock; it will transition to invalid state during node deletion</p>
-<p>invalid: the end state for all nodes; this is set in the destructor so if we encounter this state, we are looking at memory that has already been freed</p>
-<p>The state diagrams below describe the status transitions. Single arrows indicate that the thread that owns the node is responsible for the transition; double arrows indicate that any thread could make the transition.</p>
-<p>State diagram for <a class="el" href="a00118.html" title="The scoped lock pattern for write locks. ">scoped_lock</a> status:</p>
-<p>waiting -------—> waiting_nonblocking | _____________/ | V V V active --------------—> invalid</p>
-<p>State diagram for <a class="el" href="a00123.html" title="The scoped lock pattern for read locks. ">scoped_lock_read</a> status:</p>
-<p>waiting | V active --------------—>invalid </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="af92eb949fc491af8f7e350869ea0a0d1"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Acquires the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write. </p>
-<p>If the lock is currently held in write mode by another context, the writer will block by spinning on a local variable. Exceptions thrown: <a class="el" href="a00065.html" title="Exception for PPL locks. ">improper_lock</a> The context tries to acquire a <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> that it already has write ownership of. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6fd4fcdf0e5c0425d1cc736d644f234f"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock_read </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Acquires the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read. </p>
-<p>If the lock is currently held by a writer, this reader will block and wait until the writers are done. Exceptions thrown: <a class="el" href="a00065.html" title="Exception for PPL locks. ">improper_lock</a> The context tries to acquire a <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> that it already has write ownership of. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1739e842af52925a2d4a7e821b9b3b8d"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Tries to acquire the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write. </p>
-<p>This function does not block. Return Value: True or false, depending on whether the lock is acquired or not. If the lock is already held by this acquiring context, <a class="el" href="a00095.html#a1739e842af52925a2d4a7e821b9b3b8d" title="Tries to acquire the reader_writer_lock for write. ">try_lock()</a> returns false. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9c7aa04e00202c9a1197cb6d870cabb4"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock_read </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Tries to acquire the <a class="el" href="a00095.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read. </p>
-<p>This function does not block. Return Value: True or false, depending on whether the lock is acquired or not. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>reader_writer_lock.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00217.html">scalable_allocator.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00095.png b/doc/html/a00095.png
deleted file mode 100644
index 12ea5c6..0000000
Binary files a/doc/html/a00095.png and /dev/null differ
diff --git a/doc/html/a00096.html b/doc/html/a00096.html
index 42e9be3..c8375a5 100644
--- a/doc/html/a00096.html
+++ b/doc/html/a00096.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference</title>
+<title>tbb::missing_wait Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a></li><li class="navelem"><a class="el" href="a00096.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00096.html">missing_wait</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00253.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00321.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::missing_wait Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Exception for missing wait on <a class="el" href="a00148.html">structured_task_group</a>.  
+ <a href="a00096.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::missing_wait:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00096.png" usemap="#tbb::missing_wait_map" alt=""/>
+  <map id="tbb::missing_wait_map" name="tbb::missing_wait_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a9a8756c2c1d9425bdf7490943ae0b189"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a8756c2c1d9425bdf7490943ae0b189"></a>
-typedef <br class="typebreak"/>
-<a class="el" href="a00029.html">cache_aligned_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a9a8756c2c1d9425bdf7490943ae0b189"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:abfa0b14450e89cab85092b188ac86fd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfa0b14450e89cab85092b188ac86fd6"></a>
+const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+<tr class="separator:abfa0b14450e89cab85092b188ac86fd6"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>cache_aligned_allocator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception for missing wait on <a class="el" href="a00148.html">structured_task_group</a>. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00077.png b/doc/html/a00096.png
similarity index 100%
copy from doc/html/a00077.png
copy to doc/html/a00096.png
diff --git a/doc/html/a00097.html b/doc/html/a00097.html
index 6a3e2d0..e0b06de 100644
--- a/doc/html/a00097.html
+++ b/doc/html/a00097.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::scalable_allocator< void >::rebind< U > Struct Template Reference</title>
+<title>tbb::movable_exception< ExceptionData > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,195 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">scalable_allocator< void ></a></li><li class="navelem"><a class="el" href="a00097.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00097.html">movable_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00280.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="a00325.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::movable_exception< ExceptionData > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  
+ <a href="a00097.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::movable_exception< ExceptionData >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00097.png" usemap="#tbb::movable_exception< ExceptionData >_map" alt=""/>
+  <map id="tbb::movable_exception< ExceptionData >_map" name="tbb::movable_exception< ExceptionData >_map">
+<area href="a00161.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads..." alt="tbb::tbb_exception" shape="rect" coords="0,56,248,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a37986044aa989f9c1f9edef6ab79435d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37986044aa989f9c1f9edef6ab79435d"></a>
-typedef <a class="el" href="a00111.html">scalable_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a37986044aa989f9c1f9edef6ab79435d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a785b749022a1e6a7486d315b84bd37e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a785b749022a1e6a7486d315b84bd37e5"></a>
+ </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const ExceptionData &data_)</td></tr>
+<tr class="separator:a785b749022a1e6a7486d315b84bd37e5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7be7103edd861653baebbca5aeed5205"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7be7103edd861653baebbca5aeed5205"></a>
+ </td><td class="memItemRight" valign="bottom"><b>movable_exception</b> (const <a class="el" href="a00097.html">movable_exception</a> &src)  throw ()</td></tr>
+<tr class="separator:a7be7103edd861653baebbca5aeed5205"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35a4bf997b56ea221ae1bd9bb17cd33b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35a4bf997b56ea221ae1bd9bb17cd33b"></a>
+const <a class="el" href="a00097.html">movable_exception</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="a00097.html">movable_exception</a> &src)</td></tr>
+<tr class="separator:a35a4bf997b56ea221ae1bd9bb17cd33b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4eac52bc2a10d4bfcd74ad85c2853740"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eac52bc2a10d4bfcd74ad85c2853740"></a>
+ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> ()  throw ()</td></tr>
+<tr class="separator:a4eac52bc2a10d4bfcd74ad85c2853740"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a394c11a07cfcd4977327f58362aa1439"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a394c11a07cfcd4977327f58362aa1439"></a>
+const ExceptionData & </td><td class="memItemRight" valign="bottom"><b>data</b> () const   throw ()</td></tr>
+<tr class="separator:a394c11a07cfcd4977327f58362aa1439"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a65dd805ed2424f1d2d0998f5567a9690"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65dd805ed2424f1d2d0998f5567a9690"></a>
+const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#a65dd805ed2424f1d2d0998f5567a9690">name</a> () const   throw ()</td></tr>
+<tr class="memdesc:a65dd805ed2424f1d2d0998f5567a9690"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
+<tr class="separator:a65dd805ed2424f1d2d0998f5567a9690"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a41a2a7b61537ecd684bae760366f611c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41a2a7b61537ecd684bae760366f611c"></a>
+const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#a41a2a7b61537ecd684bae760366f611c">what</a> () const   throw ()</td></tr>
+<tr class="memdesc:a41a2a7b61537ecd684bae760366f611c"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00097.html#a41a2a7b61537ecd684bae760366f611c" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
+<tr class="separator:a41a2a7b61537ecd684bae760366f611c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00097.html">movable_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d">move</a> ()  throw ()</td></tr>
+<tr class="memdesc:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#aeb47d3ac90a1f01fe642b572f6ac519d">More...</a><br/></td></tr>
+<tr class="separator:aeb47d3ac90a1f01fe642b572f6ac519d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a02f0401b465690de797face2432d9421"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#a02f0401b465690de797face2432d9421">destroy</a> ()  throw ()</td></tr>
+<tr class="memdesc:a02f0401b465690de797face2432d9421"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#a02f0401b465690de797face2432d9421">More...</a><br/></td></tr>
+<tr class="separator:a02f0401b465690de797face2432d9421"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d1570b53220fbcb45eb81552b57827a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#a3d1570b53220fbcb45eb81552b57827a">throw_self</a> ()</td></tr>
+<tr class="memdesc:a3d1570b53220fbcb45eb81552b57827a"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#a3d1570b53220fbcb45eb81552b57827a">More...</a><br/></td></tr>
+<tr class="separator:a3d1570b53220fbcb45eb81552b57827a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00161"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00161')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00161.html">tbb::tbb_exception</a></td></tr>
+<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00161"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
+<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd inherit pub_methods_a00161"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:adba063da80054afe64d5268711084d9b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adba063da80054afe64d5268711084d9b"></a>
+ExceptionData </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html#adba063da80054afe64d5268711084d9b">my_exception_data</a></td></tr>
+<tr class="memdesc:adba063da80054afe64d5268711084d9b"><td class="mdescLeft"> </td><td class="mdescRight">User data. <br/></td></tr>
+<tr class="separator:adba063da80054afe64d5268711084d9b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00199.html">scalable_allocator.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename ExceptionData><br/>
+class tbb::movable_exception< ExceptionData ></h3>
+
+<p>Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. </p>
+<p>Code using TBB can instantiate this template with an arbitrary ExceptionData type and throw this exception object. Such exceptions are intercepted by the TBB scheduler and delivered to the root thread (). </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="a00161.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> </dd></dl>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a02f0401b465690de797face2432d9421"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00097.html">tbb::movable_exception</a>< ExceptionData >::destroy </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
+        </tr>
+        <tr>
+          <td align="right"></td><td>)</td><td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Destroys objects created by the <a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
+<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
+
+<p>Implements <a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb47d3ac90a1f01fe642b572f6ac519d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00097.html">movable_exception</a>* <a class="el" href="a00097.html">tbb::movable_exception</a>< ExceptionData >::move </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
+        </tr>
+        <tr>
+          <td align="right"></td><td>)</td><td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates and returns pointer to the deep copy of this exception object. </p>
+<p>Move semantics is allowed. </p>
+
+<p>Implements <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3d1570b53220fbcb45eb81552b57827a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExceptionData > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00097.html">tbb::movable_exception</a>< ExceptionData >::throw_self </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Throws this exception object. </p>
+<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
+
+<p>Implements <a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00078.png b/doc/html/a00097.png
similarity index 100%
copy from doc/html/a00078.png
copy to doc/html/a00097.png
diff --git a/doc/html/a00098.html b/doc/html/a00098.html
index b37238a..01caf62 100644
--- a/doc/html/a00098.html
+++ b/doc/html/a00098.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_allocator< T >::rebind< U > Struct Template Reference</title>
+<title>tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,123 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00144.html">tbb_allocator</a></li><li class="navelem"><a class="el" href="a00098.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00098.html">multifunction_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
-<a href="a00290.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-static-attribs">Static Protected Attributes</a> |
+<a href="a00337.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>implements a function node that supports Input -> (set of outputs)  
+ <a href="a00098.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00098.png" usemap="#tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator >_map" alt=""/>
+  <map id="tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator >_map" name="tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,914,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:adbeadd225df01e2cde9ffe5d92293671"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbeadd225df01e2cde9ffe5d92293671"></a>
-typedef <a class="el" href="a00144.html">tbb_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:adbeadd225df01e2cde9ffe5d92293671"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a75218ea29a85874581e480fb52914bbd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75218ea29a85874581e480fb52914bbd"></a>
+typedef Input </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a75218ea29a85874581e480fb52914bbd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae51475eb8c4ab433d7db635395cc49a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae51475eb8c4ab433d7db635395cc49a0"></a>
+typedef <a class="el" href="a00103.html">null_type</a> </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ae51475eb8c4ab433d7db635395cc49a0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a636872cf56c8cad039f608d84350f59d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a636872cf56c8cad039f608d84350f59d"></a>
+typedef <br class="typebreak"/>
+internal::wrap_tuple_elements<br class="typebreak"/>
+< N, <br class="typebreak"/>
+internal::multifunction_output, <br class="typebreak"/>
+Output >::type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
+<tr class="separator:a636872cf56c8cad039f608d84350f59d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6ec40f6a47dc70508b18c94fa9e459d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6ec40f6a47dc70508b18c94fa9e459d"></a>
+typedef <br class="typebreak"/>
+internal::multifunction_input<br class="typebreak"/>
+< input_type, <br class="typebreak"/>
+output_ports_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
+<tr class="separator:aa6ec40f6a47dc70508b18c94fa9e459d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fa37afc331d0c9738dab1f642265f95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa37afc331d0c9738dab1f642265f95"></a>
+typedef <br class="typebreak"/>
+internal::function_input_queue<br class="typebreak"/>
+< input_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>input_queue_type</b></td></tr>
+<tr class="separator:a5fa37afc331d0c9738dab1f642265f95"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a809925417689059399b7f2fcbdb21754"><td class="memTemplParams" colspan="2"><a class="anchor" id="a809925417689059399b7f2fcbdb21754"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a809925417689059399b7f2fcbdb21754"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>multifunction_node</b> (<a class="el" href="a00070.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
+<tr class="separator:a809925417689059399b7f2fcbdb21754"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac4a12b4da8e8a0e9cd5b3cad770e5b38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4a12b4da8e8a0e9cd5b3cad770e5b38"></a>
+ </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (const <a class="el" href="a00098.html">multifunction_node</a> &other)</td></tr>
+<tr class="separator:ac4a12b4da8e8a0e9cd5b3cad770e5b38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aab27cfc228b04974c670e0ba2e000b32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab27cfc228b04974c670e0ba2e000b32"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:aab27cfc228b04974c670e0ba2e000b32"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fe68df8a4081035b0d48743b1329374"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fe68df8a4081035b0d48743b1329374"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a8fe68df8a4081035b0d48743b1329374"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a18b55415057cd0a0a13ce50a10ae114a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18b55415057cd0a0a13ce50a10ae114a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a18b55415057cd0a0a13ce50a10ae114a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
+Static Protected Attributes</h2></td></tr>
+<tr class="memitem:a3fa1db1d966237e6e61e7f36c788bc56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fa1db1d966237e6e61e7f36c788bc56"></a>
+static const int </td><td class="memItemRight" valign="bottom"><b>N</b> = tbb::flow::tuple_size<Output>::value</td></tr>
+<tr class="separator:a3fa1db1d966237e6e61e7f36c788bc56"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Input, typename Output, graph_buffer_policy G = queueing, typename Allocator = cache_aligned_allocator<Input>><br/>
+class tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></h3>
+
+<p>implements a function node that supports Input -> (set of outputs) </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00098.png b/doc/html/a00098.png
new file mode 100644
index 0000000..92eb692
Binary files /dev/null and b/doc/html/a00098.png differ
diff --git a/doc/html/a00099.html b/doc/html/a00099.html
index a1d12eb..b2d6dcd 100644
--- a/doc/html/a00099.html
+++ b/doc/html/a00099.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_allocator< void >::rebind< U > Struct Template Reference</title>
+<title>tbb::mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,140 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">tbb_allocator< void ></a></li><li class="navelem"><a class="el" href="a00099.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00099.html">mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
-<a href="a00292.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00279.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Wrapper around the platform's native reader-writer lock.  
+ <a href="a00099.html#details">More...</a></p>
+
+<p><code>#include <mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00099.png" usemap="#tbb::mutex_map" alt=""/>
+  <map id="tbb::mutex_map" name="tbb::mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00140.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a8f3c27dc0f43be2eafdfe8c6f222c44c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f3c27dc0f43be2eafdfe8c6f222c44c"></a>
-typedef <a class="el" href="a00144.html">tbb_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a8f3c27dc0f43be2eafdfe8c6f222c44c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad35737cbe356d6814f59abba680ab067"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>state_t</b> { <b>INITIALIZED</b> =0x1234, 
+<b>DESTROYED</b> =0x789A, 
+<b>HELD</b> =0x56CD
+ }</td></tr>
+<tr class="separator:ad35737cbe356d6814f59abba680ab067"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abbe0cd12246121753ace00a5a12a90b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbe0cd12246121753ace00a5a12a90b0"></a>
+typedef LPCRITICAL_SECTION </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a></td></tr>
+<tr class="memdesc:abbe0cd12246121753ace00a5a12a90b0"><td class="mdescLeft"> </td><td class="mdescRight">Return native_handle. <br/></td></tr>
+<tr class="separator:abbe0cd12246121753ace00a5a12a90b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0d992511dfc6f47295b10eb7fc0813d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d992511dfc6f47295b10eb7fc0813d4"></a>
+typedef pthread_mutex_t * </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
+<tr class="separator:a0d992511dfc6f47295b10eb7fc0813d4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1b280c954ffc8b8b3e63e4ee4144035"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#ad1b280c954ffc8b8b3e63e4ee4144035">mutex</a> ()</td></tr>
+<tr class="memdesc:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
+<tr class="separator:ad1b280c954ffc8b8b3e63e4ee4144035"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95ff02ee699b34696001db4003c11a3a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95ff02ee699b34696001db4003c11a3a"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#a95ff02ee699b34696001db4003c11a3a">lock</a> ()</td></tr>
+<tr class="memdesc:a95ff02ee699b34696001db4003c11a3a"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
+<tr class="separator:a95ff02ee699b34696001db4003c11a3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a480283933106941125717499f9c5ad42"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#a480283933106941125717499f9c5ad42">try_lock</a> ()</td></tr>
+<tr class="memdesc:a480283933106941125717499f9c5ad42"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a480283933106941125717499f9c5ad42">More...</a><br/></td></tr>
+<tr class="separator:a480283933106941125717499f9c5ad42"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a721eeae7ba16f8b92535f4534b583874"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a721eeae7ba16f8b92535f4534b583874"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#a721eeae7ba16f8b92535f4534b583874">unlock</a> ()</td></tr>
+<tr class="memdesc:a721eeae7ba16f8b92535f4534b583874"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a721eeae7ba16f8b92535f4534b583874"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af69874d93822c905bdea0ab9e5ca5b89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af69874d93822c905bdea0ab9e5ca5b89"></a>
+<a class="el" href="a00099.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a> </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
+<tr class="separator:af69874d93822c905bdea0ab9e5ca5b89"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0857c4596d7d5de09fe402ccd41d3e42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0857c4596d7d5de09fe402ccd41d3e42"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html#a0857c4596d7d5de09fe402ccd41d3e42">set_state</a> (state_t to)</td></tr>
+<tr class="memdesc:a0857c4596d7d5de09fe402ccd41d3e42"><td class="mdescLeft"> </td><td class="mdescRight">Set the internal state. <br/></td></tr>
+<tr class="separator:a0857c4596d7d5de09fe402ccd41d3e42"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a2677d672446faa842de9de38b3aff80a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2677d672446faa842de9de38b3aff80a"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a2677d672446faa842de9de38b3aff80a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adf7e9e11c47cc869d219298232d6c0a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf7e9e11c47cc869d219298232d6c0a1"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:adf7e9e11c47cc869d219298232d6c0a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab729ebd784af412184653c4fa90468d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab729ebd784af412184653c4fa90468d0"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+<tr class="separator:ab729ebd784af412184653c4fa90468d0"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Wrapper around the platform's native reader-writer lock. </p>
+<p>For testing purposes only. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a480283933106941125717499f9c5ad42"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::mutex::try_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Try acquiring lock (non-blocking) </p>
+<p>Return true if lock acquired; false otherwise. </p>
+
+<p>References <a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
+
+<p>Referenced by <a class="el" href="a00140.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock::try_acquire()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00099.png b/doc/html/a00099.png
new file mode 100644
index 0000000..5fdf55b
Binary files /dev/null and b/doc/html/a00099.png differ
diff --git a/doc/html/a00100.html b/doc/html/a00100.html
index 91ca248..f1db948 100644
--- a/doc/html/a00100.html
+++ b/doc/html/a00100.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference</title>
+<title>tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,71 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">zero_allocator</a></li><li class="navelem"><a class="el" href="a00100.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00100.html">node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00294.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00374.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00100.png" usemap="#tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map" alt=""/>
+  <map id="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map" name="tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:aab450b73dbeb738f88700ac54ce04ce9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab450b73dbeb738f88700ac54ce04ce9"></a>
-typedef <a class="el" href="a00160.html">zero_allocator</a>< U, <br class="typebreak"/>
-Allocator > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:aab450b73dbeb738f88700ac54ce04ce9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ace61f7bd9d097375f6e33fea4758fbf9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace61f7bd9d097375f6e33fea4758fbf9"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (const Key &key)</td></tr>
+<tr class="separator:ace61f7bd9d097375f6e33fea4758fbf9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6755d387982f27a06d859811699e40b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6755d387982f27a06d859811699e40b7"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (const Key &key, const T &t)</td></tr>
+<tr class="separator:a6755d387982f27a06d859811699e40b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a61f7e6e835b09c4387fd0c8498fbf603"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61f7e6e835b09c4387fd0c8498fbf603"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (const Key &key, T &&t)</td></tr>
+<tr class="separator:a61f7e6e835b09c4387fd0c8498fbf603"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac28d72d857eccf6e7cc06a9ee146d416"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac28d72d857eccf6e7cc06a9ee146d416"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (value_type &&i)</td></tr>
+<tr class="separator:ac28d72d857eccf6e7cc06a9ee146d416"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae7c083b7efff342469789f487e3561ec"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae7c083b7efff342469789f487e3561ec"></a>
+template<typename... Args> </td></tr>
+<tr class="memitem:ae7c083b7efff342469789f487e3561ec"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>node</b> (Args &&...args)</td></tr>
+<tr class="separator:ae7c083b7efff342469789f487e3561ec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad7a5d977900af48a359f428658e2876b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7a5d977900af48a359f428658e2876b"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (value_type &i)</td></tr>
+<tr class="separator:ad7a5d977900af48a359f428658e2876b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbdc995156da4cf9b11561d006cf6821"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbdc995156da4cf9b11561d006cf6821"></a>
+ </td><td class="memItemRight" valign="bottom"><b>node</b> (const value_type &i)</td></tr>
+<tr class="separator:acbdc995156da4cf9b11561d006cf6821"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15b3c8955eb1b104db439e9caf3737c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15b3c8955eb1b104db439e9caf3737c3"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t, node_allocator_type &a)</td></tr>
+<tr class="separator:a15b3c8955eb1b104db439e9caf3737c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3115742612b79db574914741f2fff45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3115742612b79db574914741f2fff45"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr, node_allocator_type &a)</td></tr>
+<tr class="separator:aa3115742612b79db574914741f2fff45"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a6977520eaa2f1dee220f726c8a884b46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6977520eaa2f1dee220f726c8a884b46"></a>
+value_type </td><td class="memItemRight" valign="bottom"><b>item</b></td></tr>
+<tr class="separator:a6977520eaa2f1dee220f726c8a884b46"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+<li>concurrent_hash_map.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00082.png b/doc/html/a00100.png
similarity index 100%
copy from doc/html/a00082.png
copy to doc/html/a00100.png
diff --git a/doc/html/a00101.html b/doc/html/a00101.html
index 9991356..9a02d1d 100644
--- a/doc/html/a00101.html
+++ b/doc/html/a00101.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference</title>
+<title>tbb::null_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,60 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00074.html">memory_pool_allocator</a></li><li class="navelem"><a class="el" href="a00101.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00101.html">null_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00357.html">List of all members</a>  </div>
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00281.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::null_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>A mutex which does nothing.  
+ <a href="a00101.html#details">More...</a></p>
+
+<p><code>#include <null_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::null_mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00101.png" usemap="#tbb::null_mutex_map" alt=""/>
+  <map id="tbb::null_mutex_map" name="tbb::null_mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a1e9f9c6f0163df16980598fcafca665b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e9f9c6f0163df16980598fcafca665b"></a>
-typedef <a class="el" href="a00074.html">memory_pool_allocator</a><br class="typebreak"/>
-< U, P > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a1e9f9c6f0163df16980598fcafca665b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00137.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00137.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a20ed8301299d9ec166588401269d1788"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20ed8301299d9ec166588401269d1788"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a20ed8301299d9ec166588401269d1788"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49bd7f5da83382e39f898d06cbf0e23e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49bd7f5da83382e39f898d06cbf0e23e"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
+<tr class="separator:a49bd7f5da83382e39f898d06cbf0e23e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae4684b268ff379a69cd1fe93718ee7fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4684b268ff379a69cd1fe93718ee7fc"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+<tr class="separator:ae4684b268ff379a69cd1fe93718ee7fc"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A mutex which does nothing. </p>
+<p>A <a class="el" href="a00101.html" title="A mutex which does nothing. ">null_mutex</a> does no operation and simulates success. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>null_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00101.png b/doc/html/a00101.png
new file mode 100644
index 0000000..b72b310
Binary files /dev/null and b/doc/html/a00101.png differ
diff --git a/doc/html/a00102.html b/doc/html/a00102.html
index 38a0e56..c20d5bf 100644
--- a/doc/html/a00102.html
+++ b/doc/html/a00102.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference</title>
+<title>tbb::null_rw_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,60 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00075.html">memory_pool_allocator< void, P ></a></li><li class="navelem"><a class="el" href="a00102.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00102.html">null_rw_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00359.html">List of all members</a>  </div>
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00283.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::null_rw_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>A rw mutex which does nothing.  
+ <a href="a00102.html#details">More...</a></p>
+
+<p><code>#include <null_rw_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::null_rw_mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00102.png" usemap="#tbb::null_rw_mutex_map" alt=""/>
+  <map id="tbb::null_rw_mutex_map" name="tbb::null_rw_mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a4a2190850873b9f2bc63c28dfd336dd9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a2190850873b9f2bc63c28dfd336dd9"></a>
-typedef <a class="el" href="a00074.html">memory_pool_allocator</a><br class="typebreak"/>
-< U, P > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a4a2190850873b9f2bc63c28dfd336dd9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00138.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a2a676977ac67532f5f35f849ec7eac8c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a676977ac67532f5f35f849ec7eac8c"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
+<tr class="separator:a2a676977ac67532f5f35f849ec7eac8c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab153992db6e44aee96ce8c1b2d495c94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab153992db6e44aee96ce8c1b2d495c94"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
+<tr class="separator:ab153992db6e44aee96ce8c1b2d495c94"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8500b8a645b1c03221fd1fb4156fa78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8500b8a645b1c03221fd1fb4156fa78"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+<tr class="separator:ab8500b8a645b1c03221fd1fb4156fa78"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00180.html">memory_pool.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A rw mutex which does nothing. </p>
+<p>A <a class="el" href="a00102.html" title="A rw mutex which does nothing. ">null_rw_mutex</a> is a rw mutex that does nothing and simulates successful operation. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>null_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00102.png b/doc/html/a00102.png
new file mode 100644
index 0000000..1ddf071
Binary files /dev/null and b/doc/html/a00102.png differ
diff --git a/doc/html/a00103.html b/doc/html/a00103.html
index bb4976f..3a6e5dd 100644
--- a/doc/html/a00103.html
+++ b/doc/html/a00103.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference</title>
+<title>tbb::flow::interface7::null_type Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a></li><li class="navelem"><a class="el" href="a00103.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00103.html">null_type</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00296.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::null_type Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a6a001a156c058ee1194ba55ce534a43e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a001a156c058ee1194ba55ce534a43e"></a>
-typedef <a class="el" href="a00160.html">zero_allocator</a>< U, <br class="typebreak"/>
-Allocator > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a6a001a156c058ee1194ba55ce534a43e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
 <hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00104.html b/doc/html/a00104.html
index 5787d8d..ecb75f9 100644
--- a/doc/html/a00104.html
+++ b/doc/html/a00104.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference</title>
+<title>tbb::flow::interface7::overwrite_node< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,32 +33,277 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00029.html">cache_aligned_allocator</a></li><li class="navelem"><a class="el" href="a00104.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00104.html">overwrite_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
-<a href="a00251.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00340.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::overwrite_node< T > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::overwrite_node< T >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00104.png" usemap="#tbb::flow::interface7::overwrite_node< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::overwrite_node< T >_map" name="tbb::flow::interface7::overwrite_node< T >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,255,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="265,56,520,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="530,56,785,80"/>
+<area href="a00176.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="265,168,520,192"/>
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a1bb89d2224e26a9dfee7ef1adbac8b3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bb89d2224e26a9dfee7ef1adbac8b3d"></a>
+<tr class="memitem:a0a8edb9abd1842cb9a1f00574a85c5c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a8edb9abd1842cb9a1f00574a85c5c3"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a0a8edb9abd1842cb9a1f00574a85c5c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acaa2a72c0275a503c72c59b7b1b107a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaa2a72c0275a503c72c59b7b1b107a7"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:acaa2a72c0275a503c72c59b7b1b107a7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae3c9152237c0355406644f8bdd423db9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3c9152237c0355406644f8bdd423db9"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:ae3c9152237c0355406644f8bdd423db9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3840465efc064f51b88f55bf12cd8526"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3840465efc064f51b88f55bf12cd8526"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a3840465efc064f51b88f55bf12cd8526"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af2038834cf5718d675a5e89c798ba9b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2038834cf5718d675a5e89c798ba9b6"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:af2038834cf5718d675a5e89c798ba9b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39c66daf12b89510476a440941ec338b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39c66daf12b89510476a440941ec338b"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a39c66daf12b89510476a440941ec338b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0418696834321ec04abcee449d860ed7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0418696834321ec04abcee449d860ed7"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a0418696834321ec04abcee449d860ed7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2c89dfa3dc30f0ac869926f714c80d42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c89dfa3dc30f0ac869926f714c80d42"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a2c89dfa3dc30f0ac869926f714c80d42"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
 typedef <br class="typebreak"/>
-<a class="el" href="a00029.html">cache_aligned_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a1bb89d2224e26a9dfee7ef1adbac8b3d"><td class="memSeparator" colspan="2"> </td></tr>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8e0fdb38848772d2e8f93f55e062d148"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e0fdb38848772d2e8f93f55e062d148"></a>
+ </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a8e0fdb38848772d2e8f93f55e062d148"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2605cf9efc94c3cba2c59cb5c59e8f19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2605cf9efc94c3cba2c59cb5c59e8f19"></a>
+ </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (const <a class="el" href="a00104.html">overwrite_node</a> &src)</td></tr>
+<tr class="separator:a2605cf9efc94c3cba2c59cb5c59e8f19"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a584b012e5f6a786799b23df4cbd5dba5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584b012e5f6a786799b23df4cbd5dba5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a584b012e5f6a786799b23df4cbd5dba5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed811ce5f59a555396c7bcd56316b4da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed811ce5f59a555396c7bcd56316b4da"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="memdesc:aed811ce5f59a555396c7bcd56316b4da"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
+<tr class="separator:aed811ce5f59a555396c7bcd56316b4da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ff89d56e2e3c3848d84a09c88b1d52"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="memdesc:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
+<tr class="separator:ab5ff89d56e2e3c3848d84a09c88b1d52"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:addc54b82dc4d29e97d08cdefb9450925"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addc54b82dc4d29e97d08cdefb9450925"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:addc54b82dc4d29e97d08cdefb9450925"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8dbd8828713f56fa055b9e29e3039b3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8dbd8828713f56fa055b9e29e3039b3f"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a8dbd8828713f56fa055b9e29e3039b3f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5a38fedbe469b39d142b045afe85e91"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5a38fedbe469b39d142b045afe85e91"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="separator:ad5a38fedbe469b39d142b045afe85e91"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af44826566f279170bba1d9d9bbcfc8f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af44826566f279170bba1d9d9bbcfc8f3"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="separator:af44826566f279170bba1d9d9bbcfc8f3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbf5f11e221cc7cd547cf01a0806514a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbf5f11e221cc7cd547cf01a0806514a"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:adbf5f11e221cc7cd547cf01a0806514a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcac4e4c70d42a3a1709dc068c448540"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcac4e4c70d42a3a1709dc068c448540"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:afcac4e4c70d42a3a1709dc068c448540"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a631ef156f3443dfcf811c2fb0efec1eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a631ef156f3443dfcf811c2fb0efec1eb"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a631ef156f3443dfcf811c2fb0efec1eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7923c0aebb36198316da10587b367d77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7923c0aebb36198316da10587b367d77"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a7923c0aebb36198316da10587b367d77"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1459dabd54dc411e4f39a10f9a590a0b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1459dabd54dc411e4f39a10f9a590a0b"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a1459dabd54dc411e4f39a10f9a590a0b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a69f8b5478bf681d575c825fdeeb05f53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f8b5478bf681d575c825fdeeb05f53"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:a69f8b5478bf681d575c825fdeeb05f53"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9e835759164978cd1d3b15c11248da67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e835759164978cd1d3b15c11248da67"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a9e835759164978cd1d3b15c11248da67"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa655eef6671b35f99dfbddd0f3cf2309"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa655eef6671b35f99dfbddd0f3cf2309"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">try_get</a> (<a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> &v)</td></tr>
+<tr class="memdesc:aa655eef6671b35f99dfbddd0f3cf2309"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
+<tr class="separator:aa655eef6671b35f99dfbddd0f3cf2309"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3bf01d9c754667474fdb47e47df470a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bf01d9c754667474fdb47e47df470a9"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_valid</b> ()</td></tr>
+<tr class="separator:a3bf01d9c754667474fdb47e47df470a9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4d950320406a8c819882ea50d918678a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d950320406a8c819882ea50d918678a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:a4d950320406a8c819882ea50d918678a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00142')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
+<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
+<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
+<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
+<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
+<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a902bc07ba73e8e3056efb3a1001275db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a902bc07ba73e8e3056efb3a1001275db"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> &v)</td></tr>
+<tr class="separator:a902bc07ba73e8e3056efb3a1001275db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a48f960dd752b18dc2f0767619461ecb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48f960dd752b18dc2f0767619461ecb8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:a48f960dd752b18dc2f0767619461ecb8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13b0e23bd0b9f4a1769d2760ead04719"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13b0e23bd0b9f4a1769d2760ead04719"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a13b0e23bd0b9f4a1769d2760ead04719"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ad8d534d5d059f91b82c4aef9235aa9f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8d534d5d059f91b82c4aef9235aa9f6"></a>
+<a class="el" href="a00145.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
+<tr class="separator:ad8d534d5d059f91b82c4aef9235aa9f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fdd59fdffd500a1508fd7e42e6cabf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fdd59fdffd500a1508fd7e42e6cabf8"></a>
+<a class="el" href="a00027.html">internal::broadcast_cache</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a>, <a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:a6fdd59fdffd500a1508fd7e42e6cabf8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af82a3ea91b6770c1ccd4d04dc417d088"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af82a3ea91b6770c1ccd4d04dc417d088"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:af82a3ea91b6770c1ccd4d04dc417d088"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d6538f03750446febcdc570fa41bc23"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d6538f03750446febcdc570fa41bc23"></a>
+<a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> </td><td class="memItemRight" valign="bottom"><b>my_buffer</b></td></tr>
+<tr class="separator:a1d6538f03750446febcdc570fa41bc23"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbf79aaedd9459ed382823d8d85d0bfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbf79aaedd9459ed382823d8d85d0bfc"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>my_buffer_is_valid</b></td></tr>
+<tr class="separator:afbf79aaedd9459ed382823d8d85d0bfc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>cache_aligned_allocator.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00086.png b/doc/html/a00104.png
similarity index 100%
copy from doc/html/a00086.png
copy to doc/html/a00104.png
diff --git a/doc/html/a00105.html b/doc/html/a00105.html
index 908cf4d..2675b20 100644
--- a/doc/html/a00105.html
+++ b/doc/html/a00105.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::scalable_allocator< T >::rebind< U > Struct Template Reference</title>
+<title>tbb::parallel_do_feeder< Item > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,64 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">scalable_allocator</a></li><li class="navelem"><a class="el" href="a00105.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00105.html">parallel_do_feeder</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00278.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00285.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
+<div class="title">tbb::parallel_do_feeder< Item > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Class the user supplied algorithm body uses to add new tasks.  
+ <a href="a00105.html#details">More...</a></p>
+
+<p><code>#include <parallel_do.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::parallel_do_feeder< Item >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00105.png" usemap="#tbb::parallel_do_feeder< Item >_map" alt=""/>
+  <map id="tbb::parallel_do_feeder< Item >_map" name="tbb::parallel_do_feeder< Item >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a4f44c77105a911769353936a23b780a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f44c77105a911769353936a23b780a6"></a>
-typedef <a class="el" href="a00111.html">scalable_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
-<tr class="separator:a4f44c77105a911769353936a23b780a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac095c6b1a32e9c0be010aa32875d7a63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac095c6b1a32e9c0be010aa32875d7a63"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html#ac095c6b1a32e9c0be010aa32875d7a63">add</a> (const Item &item)</td></tr>
+<tr class="memdesc:ac095c6b1a32e9c0be010aa32875d7a63"><td class="mdescLeft"> </td><td class="mdescRight">Add a work item to a running parallel_do. <br/></td></tr>
+<tr class="separator:ac095c6b1a32e9c0be010aa32875d7a63"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ae5c8cc31bc27b79377687e3de76f480e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae5c8cc31bc27b79377687e3de76f480e"></a>
+template<typename Body_ , typename Item_ > </td></tr>
+<tr class="memitem:ae5c8cc31bc27b79377687e3de76f480e"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::parallel_do_feeder_impl</b></td></tr>
+<tr class="separator:ae5c8cc31bc27b79377687e3de76f480e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li><a class="el" href="a00199.html">scalable_allocator.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Item><br/>
+class tbb::parallel_do_feeder< Item ></h3>
+
+<p>Class the user supplied algorithm body uses to add new tasks. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">Item</td><td>Work item type </td></tr>
+  </table>
+  </dd>
+</dl>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>parallel_do.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00087.png b/doc/html/a00105.png
similarity index 100%
rename from doc/html/a00087.png
rename to doc/html/a00105.png
diff --git a/doc/html/a00106.html b/doc/html/a00106.html
index 0771610..9960b59 100644
--- a/doc/html/a00106.html
+++ b/doc/html/a00106.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::receiver< T > Class Template Reference</title>
+<title>tbb::parallel_while< Body > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,121 +33,130 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00106.html">receiver</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00106.html">parallel_while</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00309.html">List of all members</a>  </div>
+<a href="a00288.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::receiver< T > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::parallel_while< Body > Class Template Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Pure virtual template class that defines a receiver of messages of type T.  
+<p>Parallel iteration over a stream, with optional addition of more work.  
  <a href="a00106.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
+<p><code>#include <parallel_while.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::receiver< T >:</div>
+Inheritance diagram for tbb::parallel_while< Body >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00106.png" usemap="#tbb::flow::interface7::receiver< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::receiver< T >_map" name="tbb::flow::interface7::receiver< T >_map">
-<area href="a00025.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="0,56,352,80"/>
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="362,56,714,80"/>
-<area href="a00072.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="724,56,1076,80"/>
-<area href="a00086.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="1086,56,1438,80"/>
-<area href="a00091.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136"/>
-<area href="a00092.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="543,112,895,136"/>
-<area href="a00159.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="1086,112,1438,136"/>
-<area href="a00125.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="543,168,895,192"/>
+  <img src="a00106.png" usemap="#tbb::parallel_while< Body >_map" alt=""/>
+  <map id="tbb::parallel_while< Body >_map" name="tbb::parallel_while< Body >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2442f019427e608d46801376267e44a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2442f019427e608d46801376267e44a8"></a>
+typedef Body::argument_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">value_type</a></td></tr>
+<tr class="memdesc:a2442f019427e608d46801376267e44a8"><td class="mdescLeft"> </td><td class="mdescRight">Type of items. <br/></td></tr>
+<tr class="separator:a2442f019427e608d46801376267e44a8"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a3581a59d59476fffdc7caeea06c26371"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3581a59d59476fffdc7caeea06c26371"></a>
-virtual task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const T &t)=0</td></tr>
-<tr class="separator:a3581a59d59476fffdc7caeea06c26371"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a39778b19a5b622d470e30418d576346f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39778b19a5b622d470e30418d576346f"></a>
-virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()=0</td></tr>
-<tr class="separator:a39778b19a5b622d470e30418d576346f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00106.html#abaf9bf74ca5f2854d09f5f07337280eb">run_and_put_task</a></td></tr>
-<tr class="memdesc:abaf9bf74ca5f2854d09f5f07337280eb"><td class="mdescLeft"> </td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br/></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05ec930a348f7eed564236d00edbda24"></a>
-template<typename U > </td></tr>
-<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00106.html#a05ec930a348f7eed564236d00edbda24">limiter_node</a></td></tr>
-<tr class="memdesc:a05ec930a348f7eed564236d00edbda24"><td class="mdescLeft"> </td><td class="mdescRight">put receiver back in initial state <br/></td></tr>
-<tr class="separator:a05ec930a348f7eed564236d00edbda24"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplParams" colspan="2"><a class="anchor" id="a73cd25db4e6e9497940262f70f3ffc54"></a>
-template<typename TT , typename M > </td></tr>
-<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::successor_cache</b></td></tr>
-<tr class="separator:a73cd25db4e6e9497940262f70f3ffc54"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a220a7307358aa36802c8754ea45ca385"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a220a7307358aa36802c8754ea45ca385"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a220a7307358aa36802c8754ea45ca385">parallel_while</a> ()</td></tr>
+<tr class="memdesc:a220a7307358aa36802c8754ea45ca385"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty non-running parallel while. <br/></td></tr>
+<tr class="separator:a220a7307358aa36802c8754ea45ca385"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2fd559c8a38639fa1ba97a0d5639ca8"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#ac2fd559c8a38639fa1ba97a0d5639ca8">~parallel_while</a> ()</td></tr>
+<tr class="memdesc:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="mdescLeft"> </td><td class="mdescRight">Destructor cleans up data members before returning. <br/></td></tr>
+<tr class="separator:ac2fd559c8a38639fa1ba97a0d5639ca8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a20607ba5faa958144787d980aa850c16"><td class="memTemplParams" colspan="2">template<typename Stream > </td></tr>
+<tr class="memitem:a20607ba5faa958144787d980aa850c16"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00106.html#a20607ba5faa958144787d980aa850c16">run</a> (Stream &stream, const Body &body)</td></tr>
+<tr class="memdesc:a20607ba5faa958144787d980aa850c16"><td class="mdescLeft"> </td><td class="mdescRight">Apply body.apply to each item in the stream.  <a href="#a20607ba5faa958144787d980aa850c16">More...</a><br/></td></tr>
+<tr class="separator:a20607ba5faa958144787d980aa850c16"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4861989d7f5e3111d264d4d6013e8fe1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a4861989d7f5e3111d264d4d6013e8fe1">add</a> (const <a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">value_type</a> &item)</td></tr>
+<tr class="memdesc:a4861989d7f5e3111d264d4d6013e8fe1"><td class="mdescLeft"> </td><td class="mdescRight">Add a work item while running.  <a href="#a4861989d7f5e3111d264d4d6013e8fe1">More...</a><br/></td></tr>
+<tr class="separator:a4861989d7f5e3111d264d4d6013e8fe1"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::flow::interface7::receiver< T ></h3>
+<div class="textblock"><h3>template<typename Body><br/>
+class tbb::parallel_while< Body ></h3>
+
+<p>Parallel iteration over a stream, with optional addition of more work. </p>
+<p>The Body b has the requirement: <br/>
+ "b(v)" <br/>
+ "b.argument_type" <br/>
+ where v is an argument_type </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a4861989d7f5e3111d264d4d6013e8fe1"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00106.html">tbb::parallel_while</a>< Body >::add </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">value_type</a> & </td>
+          <td class="paramname"><em>item</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Add a work item while running. </p>
+<p>Should be executed only by body.apply or a thread spawned therefrom. </p>
+
+</div>
+</div>
+<a class="anchor" id="a20607ba5faa958144787d980aa850c16"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Body > </div>
+<div class="memtemplate">
+template<typename Stream > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void <a class="el" href="a00106.html">tbb::parallel_while</a>< Body >::run </td>
+          <td>(</td>
+          <td class="paramtype">Stream & </td>
+          <td class="paramname"><em>stream</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Apply body.apply to each item in the stream. </p>
+<p>A Stream s has the requirements <br/>
+ "S::value_type" <br/>
+ "s.pop_if_present(value) is convertible to bool </p>
 
-<p>Pure virtual template class that defines a receiver of messages of type T. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>parallel_while.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00106.png b/doc/html/a00106.png
index 80adf90..fc86480 100644
Binary files a/doc/html/a00106.png and b/doc/html/a00106.png differ
diff --git a/doc/html/a00107.html b/doc/html/a00107.html
index 0a37a74..4403551 100644
--- a/doc/html/a00107.html
+++ b/doc/html/a00107.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::recursive_mutex Class Reference</title>
+<title>tbb::pipeline Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,83 +33,74 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">recursive_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">pipeline</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00275.html">List of all members</a>  </div>
+<a href="a00291.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::recursive_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::pipeline Class Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p><code>#include <recursive_mutex.h></code></p>
+<p>A processing pipeline that applies filters to items.  
+ <a href="a00107.html#details">More...</a></p>
+
+<p><code>#include <pipeline.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00120.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a3d40334b0e26d5addfde5596e7f9aaec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d40334b0e26d5addfde5596e7f9aaec"></a>
-typedef LPCRITICAL_SECTION </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a></td></tr>
-<tr class="memdesc:a3d40334b0e26d5addfde5596e7f9aaec"><td class="mdescLeft"> </td><td class="mdescRight">Return native_handle. <br/></td></tr>
-<tr class="separator:a3d40334b0e26d5addfde5596e7f9aaec"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59f90e65656fec5a07e375c6e7cd39f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59f90e65656fec5a07e375c6e7cd39f3"></a>
-typedef pthread_mutex_t * </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-<tr class="separator:a59f90e65656fec5a07e375c6e7cd39f3"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a47eb6e7e7ffa5d35341125792b17236b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47eb6e7e7ffa5d35341125792b17236b"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a47eb6e7e7ffa5d35341125792b17236b">recursive_mutex</a> ()</td></tr>
-<tr class="memdesc:a47eb6e7e7ffa5d35341125792b17236b"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired <a class="el" href="a00107.html">recursive_mutex</a>. <br/></td></tr>
-<tr class="separator:a47eb6e7e7ffa5d35341125792b17236b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adea997b45dc4a360f38d14bde9c991f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adea997b45dc4a360f38d14bde9c991f2"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#adea997b45dc4a360f38d14bde9c991f2">lock</a> ()</td></tr>
-<tr class="memdesc:adea997b45dc4a360f38d14bde9c991f2"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
-<tr class="separator:adea997b45dc4a360f38d14bde9c991f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8b181d9aaa95444145222cfe206e8094"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a8b181d9aaa95444145222cfe206e8094">try_lock</a> ()</td></tr>
-<tr class="memdesc:a8b181d9aaa95444145222cfe206e8094"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a8b181d9aaa95444145222cfe206e8094">More...</a><br/></td></tr>
-<tr class="separator:a8b181d9aaa95444145222cfe206e8094"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af57e8d25e0e7614e98bcfa50bc9416c8"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#af57e8d25e0e7614e98bcfa50bc9416c8">unlock</a> ()</td></tr>
-<tr class="memdesc:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a050ca2a8d3b5c98f9d6c1252856436db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a050ca2a8d3b5c98f9d6c1252856436db"></a>
-<a class="el" href="a00107.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a> </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
-<tr class="separator:a050ca2a8d3b5c98f9d6c1252856436db"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a668511b8520c41a342c038ba26ce70ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a668511b8520c41a342c038ba26ce70ff"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a668511b8520c41a342c038ba26ce70ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2817cf2c1a7875590548f49a834ca668"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2817cf2c1a7875590548f49a834ca668"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
-<tr class="separator:a2817cf2c1a7875590548f49a834ca668"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abcc4a830c307cb4d25311550a527fe4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcc4a830c307cb4d25311550a527fe4d"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-<tr class="separator:abcc4a830c307cb4d25311550a527fe4d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afe7b7bd9b2617c2b69170675a478b2bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe7b7bd9b2617c2b69170675a478b2bd"></a>
+__TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#afe7b7bd9b2617c2b69170675a478b2bd">pipeline</a> ()</td></tr>
+<tr class="memdesc:afe7b7bd9b2617c2b69170675a478b2bd"><td class="mdescLeft"> </td><td class="mdescRight">Construct empty pipeline. <br/></td></tr>
+<tr class="separator:afe7b7bd9b2617c2b69170675a478b2bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac3a7b33217b3f3bb0682ec3a40fd2c39"><td class="memItemLeft" align="right" valign="top">virtual __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">~pipeline</a> ()</td></tr>
+<tr class="separator:ac3a7b33217b3f3bb0682ec3a40fd2c39"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8eb83014bd53b184e0ed50f120ca310b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8eb83014bd53b184e0ed50f120ca310b"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a8eb83014bd53b184e0ed50f120ca310b">add_filter</a> (<a class="el" href="a00062.html">filter</a> &filter_)</td></tr>
+<tr class="memdesc:a8eb83014bd53b184e0ed50f120ca310b"><td class="mdescLeft"> </td><td class="mdescRight">Add filter to end of pipeline. <br/></td></tr>
+<tr class="separator:a8eb83014bd53b184e0ed50f120ca310b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac9ee9080cfc080c40a7ee7cb03a62637"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#ac9ee9080cfc080c40a7ee7cb03a62637">run</a> (size_t max_number_of_live_tokens)</td></tr>
+<tr class="memdesc:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion. <br/></td></tr>
+<tr class="separator:ac9ee9080cfc080c40a7ee7cb03a62637"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a270dba81f7dd9935be7f3d69db907ff4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a270dba81f7dd9935be7f3d69db907ff4"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#a270dba81f7dd9935be7f3d69db907ff4">run</a> (size_t max_number_of_live_tokens, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="memdesc:a270dba81f7dd9935be7f3d69db907ff4"><td class="mdescLeft"> </td><td class="mdescRight">Run the pipeline to completion with user-supplied context. <br/></td></tr>
+<tr class="separator:a270dba81f7dd9935be7f3d69db907ff4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae53edbda1771eeaa254d78ae6100a762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae53edbda1771eeaa254d78ae6100a762"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html#ae53edbda1771eeaa254d78ae6100a762">clear</a> ()</td></tr>
+<tr class="memdesc:ae53edbda1771eeaa254d78ae6100a762"><td class="mdescLeft"> </td><td class="mdescRight">Remove all filters from the pipeline. <br/></td></tr>
+<tr class="separator:ae53edbda1771eeaa254d78ae6100a762"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a88bd11ed4d74f6de43a7d3b0bc05f2c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88bd11ed4d74f6de43a7d3b0bc05f2c3"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::stage_task</b></td></tr>
+<tr class="separator:a88bd11ed4d74f6de43a7d3b0bc05f2c3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6f9dcf41617866d7bf0e72d8efc11e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6f9dcf41617866d7bf0e72d8efc11e7"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_root_task</b></td></tr>
+<tr class="separator:aa6f9dcf41617866d7bf0e72d8efc11e7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adcddbbe2df37193795a145ef8aac7954"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcddbbe2df37193795a145ef8aac7954"></a>
+class </td><td class="memItemRight" valign="bottom"><b>filter</b></td></tr>
+<tr class="separator:adcddbbe2df37193795a145ef8aac7954"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab4463cf8612c362ee109224e45fad104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4463cf8612c362ee109224e45fad104"></a>
+class </td><td class="memItemRight" valign="bottom"><b>thread_bound_filter</b></td></tr>
+<tr class="separator:ab4463cf8612c362ee109224e45fad104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39b28579343dc2cdb67fe3fbffe731a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39b28579343dc2cdb67fe3fbffe731a8"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::pipeline_cleaner</b></td></tr>
+<tr class="separator:a39b28579343dc2cdb67fe3fbffe731a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0307e203ca37529138734040c3881a35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0307e203ca37529138734040c3881a35"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb::interface6::internal::pipeline_proxy</b></td></tr>
+<tr class="separator:a0307e203ca37529138734040c3881a35"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Mutex that allows recursive mutex acquisition. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a8b181d9aaa95444145222cfe206e8094"></a>
+<div class="textblock"><p>A processing pipeline that applies filters to items. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="ac3a7b33217b3f3bb0682ec3a40fd2c39"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -117,7 +108,7 @@ class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool tbb::recursive_mutex::try_lock </td>
+          <td class="memname">virtual __TBB_EXPORTED_METHOD tbb::pipeline::~pipeline </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
@@ -125,27 +116,21 @@ class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
-
-<p>Try acquiring lock (non-blocking) </p>
-<p>Return true if lock acquired; false otherwise. </p>
-
-<p>References <a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
-
-<p>Referenced by <a class="el" href="a00120.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock::try_acquire()</a>.</p>
+<p>Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>recursive_mutex.h</li>
+<li>pipeline.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00108.html b/doc/html/a00108.html
index ffb785f..c7cd708 100644
--- a/doc/html/a00108.html
+++ b/doc/html/a00108.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::internal::round_robin_cache< T, M > Class Template Reference</title>
+<title>tbb::pre_scan_tag Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00108.html">round_robin_cache</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00108.html">pre_scan_tag</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00286.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::internal::round_robin_cache< T, M > Class Template Reference</div>  </div>
+<div class="title">tbb::pre_scan_tag Struct Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+
+<p>Used to indicate that the initial scan is being performed.  
+ <a href="a00108.html#details">More...</a></p>
+
+<p><code>#include <parallel_scan.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a1d71947e8273d28e01620f92a292be59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d71947e8273d28e01620f92a292be59"></a>
+static bool </td><td class="memItemRight" valign="bottom"><b>is_final_scan</b> ()</td></tr>
+<tr class="separator:a1d71947e8273d28e01620f92a292be59"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Used to indicate that the initial scan is being performed. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>parallel_scan.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00109.html b/doc/html/a00109.html
index 878c999..fc56934 100644
--- a/doc/html/a00109.html
+++ b/doc/html/a00109.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::run_and_put_task< R, B > Class Template Reference</title>
+<title>tbb::flow::interface7::priority_queue_node< T, Compare, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,403 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00109.html">run_and_put_task</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00109.html">priority_queue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00348.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::run_and_put_task< R, B > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::priority_queue_node< T, Compare, A > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+
+<p>Forwards messages in priority order.  
+ <a href="a00109.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::priority_queue_node< T, Compare, A >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00109.png" usemap="#tbb::flow::interface7::priority_queue_node< T, Compare, A >_map" alt=""/>
+  <map id="tbb::flow::interface7::priority_queue_node< T, Compare, A >_map" name="tbb::flow::interface7::priority_queue_node< T, Compare, A >_map">
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="543,112,895,136"/>
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,352,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="724,56,1076,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="1086,56,1438,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:af9a1f2ec01b3c87fbff0f1fbc9d1f70b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9a1f2ec01b3c87fbff0f1fbc9d1f70b"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:af9a1f2ec01b3c87fbff0f1fbc9d1f70b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a34d7a390e9b9b589d3f9c4ef9132facf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34d7a390e9b9b589d3f9c4ef9132facf"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a34d7a390e9b9b589d3f9c4ef9132facf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a96b0fc02e4d635727a507ac22488709b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96b0fc02e4d635727a507ac22488709b"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>base_type</b></td></tr>
+<tr class="separator:a96b0fc02e4d635727a507ac22488709b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83261533efac3dd24a7d6e731d27fb0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83261533efac3dd24a7d6e731d27fb0a"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a83261533efac3dd24a7d6e731d27fb0a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0bd8fea3f3d067e053972f3718bc922f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bd8fea3f3d067e053972f3718bc922f"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a0bd8fea3f3d067e053972f3718bc922f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00030')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
+<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66143b157bc766e35601b0c28362f99e"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39ebd2459b9cb2497e323141685c926f"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab295c7b50ff804f7276609a25016e7ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab295c7b50ff804f7276609a25016e7ca"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#ab295c7b50ff804f7276609a25016e7ca">priority_queue_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:ab295c7b50ff804f7276609a25016e7ca"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:ab295c7b50ff804f7276609a25016e7ca"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa163d8a81b4a795cb37f207b02191a39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa163d8a81b4a795cb37f207b02191a39"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#aa163d8a81b4a795cb37f207b02191a39">priority_queue_node</a> (const <a class="el" href="a00109.html">priority_queue_node</a> &src)</td></tr>
+<tr class="memdesc:aa163d8a81b4a795cb37f207b02191a39"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:aa163d8a81b4a795cb37f207b02191a39"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59b60104b514ae3b108016adcc653dc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59b60104b514ae3b108016adcc653dc3"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a59b60104b514ae3b108016adcc653dc3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00030')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00030.html">buffer_node</a> &src)</td></tr>
+<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#a5e87f7e8fd8698f62f2cad8b52b6e565">More...</a><br/></td></tr>
+<tr class="separator:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1db0288f46391e3a0a003c181ae87c38"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acce1c8dbcf21cfb56d1583cb716398f4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c20eb93a5601b442a589a20bca403a4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae19e0420a628d31cbd685c4c9e513f04"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a784b06e7c4091a3ef4f9a6b0ffe35bdb"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95a3b3ce6658e5c3298e2e361cde9a78"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af20f7dba5c291f03bfabcabe250cbd23"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec31111eb839e28e2cfeb08192bbfa5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a3c31300c060bffbbad7798219e702aba">More...</a><br/></td></tr>
+<tr class="separator:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
+<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00030.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
+<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
+<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
+<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
+<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
+<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
+<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
+<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcdf027115b519b3b868a7430c39639"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:acae546705b61ae7591752a1f601ccb0f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:acae546705b61ae7591752a1f601ccb0f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17327722546bfb4aa51fb4a637a63039"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17327722546bfb4aa51fb4a637a63039"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A ><br class="typebreak"/>
+::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a17327722546bfb4aa51fb4a637a63039"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a83e13afae1142541b28bfe21ac71419c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83e13afae1142541b28bfe21ac71419c"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A ><br class="typebreak"/>
+::item_type </td><td class="memItemRight" valign="bottom"><b>item_type</b></td></tr>
+<tr class="separator:a83e13afae1142541b28bfe21ac71419c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acd29f816dcbfa0f02541aef1d10dae1d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd29f816dcbfa0f02541aef1d10dae1d"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A ><br class="typebreak"/>
+::<a class="el" href="a00031.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>prio_operation</b></td></tr>
+<tr class="separator:acd29f816dcbfa0f02541aef1d10dae1d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00030')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
+  <b>reg_succ</b>, 
+<b>rem_succ</b>, 
+<b>req_item</b>, 
+<b>res_item</b>, 
+<br/>
+  <b>rel_res</b>, 
+<b>con_res</b>, 
+<b>put_item</b>, 
+<b>try_fwd_task</b>, 
+<br/>
+  <b>add_blt_succ</b>, 
+<b>del_blt_succ</b>, 
+<b>add_blt_pred</b>, 
+<b>del_blt_pred</b>, 
+<br/>
+  <b>blt_succ_cnt</b>, 
+<b>blt_pred_cnt</b>, 
+<b>blt_succ_cpy</b>, 
+<b>blt_pred_cpy</b>
+<br/>
+ }</td></tr>
+<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
+typedef <br class="typebreak"/>
+internal::aggregating_functor<br class="typebreak"/>
+< <a class="el" href="a00030.html">my_class</a>, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
+<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f09abf6db812abcbeb262b7f1b844a5"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81e553b64ccf191ddf3768cb1c184c1d"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a895caba96649f2fa22f10fd0c97b2edf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a895caba96649f2fa22f10fd0c97b2edf"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a895caba96649f2fa22f10fd0c97b2edf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab478330c41fa262d1b896432f1ac37cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab478330c41fa262d1b896432f1ac37cc"></a>
+void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00031.html">prio_operation</a> *op_list)</td></tr>
+<tr class="separator:ab478330c41fa262d1b896432f1ac37cc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4e6d43ca8748046098fd27ca97e58f3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e6d43ca8748046098fd27ca97e58f3d"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html#a4e6d43ca8748046098fd27ca97e58f3d">internal_forward_task</a> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="memdesc:a4e6d43ca8748046098fd27ca97e58f3d"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
+<tr class="separator:a4e6d43ca8748046098fd27ca97e58f3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="separator:a1fb636ae3d8e7a6fa6c6a30b6ae1d0b7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac67d6e65c708a40b3849d6d9e96916fa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac67d6e65c708a40b3849d6d9e96916fa"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="separator:ac67d6e65c708a40b3849d6d9e96916fa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac820e6e5f2a0eed1f9ef72262f78f45d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac820e6e5f2a0eed1f9ef72262f78f45d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="separator:ac820e6e5f2a0eed1f9ef72262f78f45d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21cc506b6bc5bbe59dfab4f9e59955fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21cc506b6bc5bbe59dfab4f9e59955fe"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="separator:a21cc506b6bc5bbe59dfab4f9e59955fe"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbcefdb4ae0369abb1d047bb49622176"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbcefdb4ae0369abb1d047bb49622176"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00031.html">prio_operation</a> *op)</td></tr>
+<tr class="separator:adbcefdb4ae0369abb1d047bb49622176"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00030')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
+virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
+<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
+<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
+<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
+<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3fd4023955e4ab600dbc0e31740e6321 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fd4023955e4ab600dbc0e31740e6321"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a3fd4023955e4ab600dbc0e31740e6321 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb7b729bec462169cb67326bd17b11e4 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb7b729bec462169cb67326bd17b11e4"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aeb7b729bec462169cb67326bd17b11e4 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac382cedb8002e429ce2ccda29ed0d137 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac382cedb8002e429ce2ccda29ed0d137"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac382cedb8002e429ce2ccda29ed0d137 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a951a36f8f2ed91f9b7c918486dc915 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a951a36f8f2ed91f9b7c918486dc915"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a1a951a36f8f2ed91f9b7c918486dc915 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac851d86cc55d14f57b4cc7ef889610be inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac851d86cc55d14f57b4cc7ef889610be"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac851d86cc55d14f57b4cc7ef889610be inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a32ff0f0106531343a46b53b882763317 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32ff0f0106531343a46b53b882763317"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a32ff0f0106531343a46b53b882763317 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a632cbb0a8529d8fb559aa33cbd99b613 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a632cbb0a8529d8fb559aa33cbd99b613"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_succ_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a632cbb0a8529d8fb559aa33cbd99b613 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa162bcd7cf8f7021ad8571d4db505bff inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa162bcd7cf8f7021ad8571d4db505bff"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_pred_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aa162bcd7cf8f7021ad8571d4db505bff inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2fad967e9fff72d5e7669f94744bc2d inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fad967e9fff72d5e7669f94744bc2d"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_succs</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ae2fad967e9fff72d5e7669f94744bc2d inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c60751dba6a99adef58871ee520ae6e inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c60751dba6a99adef58871ee520ae6e"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_preds</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a5c60751dba6a99adef58871ee520ae6e inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
+<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
+<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ace801f92ca3f0525835d67afba0eef6c inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace801f92ca3f0525835d67afba0eef6c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:ace801f92ca3f0525835d67afba0eef6c inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc1b4323f79b01468a106ca313cfede7 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc1b4323f79b01468a106ca313cfede7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:acc1b4323f79b01468a106ca313cfede7 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00030')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
+<a class="el" href="a00126.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
+<a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eda90c0f6300644705f142c6ada1a4d"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
+<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
+internal::aggregator<br class="typebreak"/>
+< my_handler, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
+<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>><br/>
+class tbb::flow::interface7::priority_queue_node< T, Compare, A ></h3>
+
+<p>Forwards messages in priority order. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00109.png b/doc/html/a00109.png
new file mode 100644
index 0000000..6a491b9
Binary files /dev/null and b/doc/html/a00109.png differ
diff --git a/doc/html/a00110.html b/doc/html/a00110.html
index fa5fea4..f8d45a2 100644
--- a/doc/html/a00110.html
+++ b/doc/html/a00110.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::runtime_loader Class Reference</title>
+<title>tbb::flow::interface7::queue_node< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,286 +33,398 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00110.html">runtime_loader</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00110.html">queue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00364.html">List of all members</a>  </div>
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00346.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::runtime_loader Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::queue_node< T, A > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Load TBB at runtime.  
+<p>Forwards messages in FIFO order.  
  <a href="a00110.html#details">More...</a></p>
 
-<p><code>#include <runtime_loader.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::runtime_loader:</div>
+Inheritance diagram for tbb::flow::interface7::queue_node< T, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00110.png" usemap="#tbb::interface6::runtime_loader_map" alt=""/>
-  <map id="tbb::interface6::runtime_loader_map" name="tbb::interface6::runtime_loader_map">
+  <img src="a00110.png" usemap="#tbb::flow::interface7::queue_node< T, A >_map" alt=""/>
+  <map id="tbb::flow::interface7::queue_node< T, A >_map" name="tbb::flow::interface7::queue_node< T, A >_map">
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="420,112,690,136"/>
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,270,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="560,56,830,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="840,56,1110,80"/>
+<area href="a00143.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="420,224,690,248"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ab85c82f9c0ccd91905f2795a79ac1295"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> { <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">em_status</a>, 
-<a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">em_throw</a>, 
-<a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a>
+<tr class="memitem:a6c97cb00f09b2920b470f7f05bd164d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c97cb00f09b2920b470f7f05bd164d1"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a6c97cb00f09b2920b470f7f05bd164d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17ed7b6084d51f1d50164ed9b2eff680"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17ed7b6084d51f1d50164ed9b2eff680"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a17ed7b6084d51f1d50164ed9b2eff680"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a768cdbf6ab5f38ec87e402ff2897ca38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a768cdbf6ab5f38ec87e402ff2897ca38"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a768cdbf6ab5f38ec87e402ff2897ca38"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5fc2cf414bebdf02246e356b21cf39a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5fc2cf414bebdf02246e356b21cf39a"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:ad5fc2cf414bebdf02246e356b21cf39a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00030')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
+<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66143b157bc766e35601b0c28362f99e"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39ebd2459b9cb2497e323141685c926f"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a503d3fe4f98302549e36f74633de5716"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503d3fe4f98302549e36f74633de5716"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">queue_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a503d3fe4f98302549e36f74633de5716"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a503d3fe4f98302549e36f74633de5716"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa790bb6d3c8bef58d59235dfba1a1092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa790bb6d3c8bef58d59235dfba1a1092"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a> (const <a class="el" href="a00110.html">queue_node</a> &src)</td></tr>
+<tr class="memdesc:aa790bb6d3c8bef58d59235dfba1a1092"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:aa790bb6d3c8bef58d59235dfba1a1092"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af27bdd716ffead0a648bb9e7e81790ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af27bdd716ffead0a648bb9e7e81790ae"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:af27bdd716ffead0a648bb9e7e81790ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00030')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00030.html">buffer_node</a> &src)</td></tr>
+<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#a5e87f7e8fd8698f62f2cad8b52b6e565">More...</a><br/></td></tr>
+<tr class="separator:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1db0288f46391e3a0a003c181ae87c38"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acce1c8dbcf21cfb56d1583cb716398f4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c20eb93a5601b442a589a20bca403a4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae19e0420a628d31cbd685c4c9e513f04"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a784b06e7c4091a3ef4f9a6b0ffe35bdb"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95a3b3ce6658e5c3298e2e361cde9a78"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af20f7dba5c291f03bfabcabe250cbd23"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec31111eb839e28e2cfeb08192bbfa5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a3c31300c060bffbbad7798219e702aba">More...</a><br/></td></tr>
+<tr class="separator:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
+<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00030.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
+<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
+<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
+<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
+<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
+<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
+<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
+<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcdf027115b519b3b868a7430c39639"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a7e8acd469a6e7d7f843158104c3a829d"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
  }</td></tr>
-<tr class="memdesc:ab85c82f9c0ccd91905f2795a79ac1295"><td class="mdescLeft"> </td><td class="mdescRight">Error mode constants.  <a href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">More...</a><br/></td></tr>
-<tr class="separator:ab85c82f9c0ccd91905f2795a79ac1295"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a264674772d9f4240d89aa9d939c1eef7"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> { <br/>
-  <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">ec_ok</a>, 
-<a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">ec_bad_call</a>, 
-<a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">ec_bad_arg</a>, 
-<a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">ec_bad_lib</a>, 
+<tr class="separator:a7e8acd469a6e7d7f843158104c3a829d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a37343fca6678a3ea7008f3946362567d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37343fca6678a3ea7008f3946362567d"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>base_type</b></td></tr>
+<tr class="separator:a37343fca6678a3ea7008f3946362567d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35cc3a32918f9c5286199a251a082df6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35cc3a32918f9c5286199a251a082df6"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a35cc3a32918f9c5286199a251a082df6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7c9f9bba89dc190c85aef3ed0fc6856b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c9f9bba89dc190c85aef3ed0fc6856b"></a>
+typedef <a class="el" href="a00031.html">base_type::buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>queue_operation</b></td></tr>
+<tr class="separator:a7c9f9bba89dc190c85aef3ed0fc6856b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00030')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
+  <b>reg_succ</b>, 
+<b>rem_succ</b>, 
+<b>req_item</b>, 
+<b>res_item</b>, 
+<br/>
+  <b>rel_res</b>, 
+<b>con_res</b>, 
+<b>put_item</b>, 
+<b>try_fwd_task</b>, 
 <br/>
-  <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">ec_bad_ver</a>, 
-<a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">ec_no_lib</a>
+  <b>add_blt_succ</b>, 
+<b>del_blt_succ</b>, 
+<b>add_blt_pred</b>, 
+<b>del_blt_pred</b>, 
 <br/>
+  <b>blt_succ_cnt</b>, 
+<b>blt_pred_cnt</b>, 
+<b>blt_succ_cpy</b>, 
+<b>blt_pred_cpy</b>
+<br/>
+ }</td></tr>
+<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
  }</td></tr>
-<tr class="memdesc:a264674772d9f4240d89aa9d939c1eef7"><td class="mdescLeft"> </td><td class="mdescRight">Error codes.  <a href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">More...</a><br/></td></tr>
-<tr class="separator:a264674772d9f4240d89aa9d939c1eef7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
+typedef <br class="typebreak"/>
+internal::aggregating_functor<br class="typebreak"/>
+< <a class="el" href="a00030.html">my_class</a>, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
+<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f09abf6db812abcbeb262b7f1b844a5"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81e553b64ccf191ddf3768cb1c184c1d"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a2f87eaf99564c705aa140f2eb8848eaa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f87eaf99564c705aa140f2eb8848eaa"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a2f87eaf99564c705aa140f2eb8848eaa">runtime_loader</a> (<a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> mode=<a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a>)</td></tr>
-<tr class="memdesc:a2f87eaf99564c705aa140f2eb8848eaa"><td class="mdescLeft"> </td><td class="mdescRight">Initialize object but do not load TBB. <br/></td></tr>
-<tr class="separator:a2f87eaf99564c705aa140f2eb8848eaa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3e0932074d2f3ad04605e7e5da88c561"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a3e0932074d2f3ad04605e7e5da88c561">runtime_loader</a> (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX, <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> mode=<a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a42 [...]
-<tr class="memdesc:a3e0932074d2f3ad04605e7e5da88c561"><td class="mdescLeft"> </td><td class="mdescRight">Initialize object and load TBB.  <a href="#a3e0932074d2f3ad04605e7e5da88c561">More...</a><br/></td></tr>
-<tr class="separator:a3e0932074d2f3ad04605e7e5da88c561"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa3b96f53e165e3d692c3c36292ba0737"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3b96f53e165e3d692c3c36292ba0737"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#aa3b96f53e165e3d692c3c36292ba0737">~runtime_loader</a> ()</td></tr>
-<tr class="memdesc:aa3b96f53e165e3d692c3c36292ba0737"><td class="mdescLeft"> </td><td class="mdescRight">Destroy object. <br/></td></tr>
-<tr class="separator:aa3b96f53e165e3d692c3c36292ba0737"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae2949e9adcac56a2cb9864437be8e22e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e">load</a> (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX)</td></tr>
-<tr class="memdesc:ae2949e9adcac56a2cb9864437be8e22e"><td class="mdescLeft"> </td><td class="mdescRight">Load TBB.  <a href="#ae2949e9adcac56a2cb9864437be8e22e">More...</a><br/></td></tr>
-<tr class="separator:ae2949e9adcac56a2cb9864437be8e22e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a85bf9ee021a2076a3ac7cfd70aae7345">status</a> ()</td></tr>
-<tr class="memdesc:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="mdescLeft"> </td><td class="mdescRight">Report status.  <a href="#a85bf9ee021a2076a3ac7cfd70aae7345">More...</a><br/></td></tr>
-<tr class="separator:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a1ab7e37f537acb75175844bd34132b99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ab7e37f537acb75175844bd34132b99"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="memdesc:a1ab7e37f537acb75175844bd34132b99"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
+<tr class="separator:a1ab7e37f537acb75175844bd34132b99"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5d225b5305d2d8e1778d2ac65e473a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d225b5305d2d8e1778d2ac65e473a8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:ad5d225b5305d2d8e1778d2ac65e473a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae85f9ee123b22bb273116402372d2619"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85f9ee123b22bb273116402372d2619"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:ae85f9ee123b22bb273116402372d2619"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc6c42585d3deef75dd3922b6fe9cc21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc6c42585d3deef75dd3922b6fe9cc21"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:acc6c42585d3deef75dd3922b6fe9cc21"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3890cabe95773554ff067f287345faa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3890cabe95773554ff067f287345faa"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:af3890cabe95773554ff067f287345faa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00030')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a2d09326016a31e17acd57f8e6ce58054 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d09326016a31e17acd57f8e6ce58054"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>handle_operations</b> (<a class="el" href="a00031.html">buffer_operation</a> *op_list)</td></tr>
+<tr class="separator:a2d09326016a31e17acd57f8e6ce58054 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fde962bed26ee41c370e48bce678320"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>grab_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a5fde962bed26ee41c370e48bce678320 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19dbfc4065f57efd7375fcc1b259dd9c"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>enqueue_forwarding_task</b> (<a class="el" href="a00031.html">buffer_operation</a> &op_data)</td></tr>
+<tr class="separator:a19dbfc4065f57efd7375fcc1b259dd9c inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8910a497040a4c6f1a6a1fb7a33a8888"></a>
+virtual task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a> ()</td></tr>
+<tr class="memdesc:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">This is executed by an enqueued task, the "forwarder". <br/></td></tr>
+<tr class="separator:a8910a497040a4c6f1a6a1fb7a33a8888 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2dd93a1b42e77ccf7e1de0fddf3158"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Register successor. <br/></td></tr>
+<tr class="separator:afa2dd93a1b42e77ccf7e1de0fddf3158 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46c7f9cd9130036244d4ea8efd74bf22"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="memdesc:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Remove successor. <br/></td></tr>
+<tr class="separator:a46c7f9cd9130036244d4ea8efd74bf22 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3fd4023955e4ab600dbc0e31740e6321 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fd4023955e4ab600dbc0e31740e6321"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a3fd4023955e4ab600dbc0e31740e6321 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeb7b729bec462169cb67326bd17b11e4 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb7b729bec462169cb67326bd17b11e4"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aeb7b729bec462169cb67326bd17b11e4 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac382cedb8002e429ce2ccda29ed0d137 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac382cedb8002e429ce2ccda29ed0d137"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_succ</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac382cedb8002e429ce2ccda29ed0d137 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a951a36f8f2ed91f9b7c918486dc915 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a951a36f8f2ed91f9b7c918486dc915"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:a1a951a36f8f2ed91f9b7c918486dc915 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac851d86cc55d14f57b4cc7ef889610be inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac851d86cc55d14f57b4cc7ef889610be"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ac851d86cc55d14f57b4cc7ef889610be inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a32ff0f0106531343a46b53b882763317 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32ff0f0106531343a46b53b882763317"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_del_built_pred</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a32ff0f0106531343a46b53b882763317 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a632cbb0a8529d8fb559aa33cbd99b613 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a632cbb0a8529d8fb559aa33cbd99b613"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_succ_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a632cbb0a8529d8fb559aa33cbd99b613 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa162bcd7cf8f7021ad8571d4db505bff inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa162bcd7cf8f7021ad8571d4db505bff"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_pred_cnt</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:aa162bcd7cf8f7021ad8571d4db505bff inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2fad967e9fff72d5e7669f94744bc2d inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2fad967e9fff72d5e7669f94744bc2d"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_succs</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ae2fad967e9fff72d5e7669f94744bc2d inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c60751dba6a99adef58871ee520ae6e inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c60751dba6a99adef58871ee520ae6e"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_copy_preds</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a5c60751dba6a99adef58871ee520ae6e inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2fe75e82e8dffa7d13fa9e82d9951dba inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe75e82e8dffa7d13fa9e82d9951dba"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_push</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:a2fe75e82e8dffa7d13fa9e82d9951dba inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae7b3eee1ec878f6f0055f6133b233c09 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae7b3eee1ec878f6f0055f6133b233c09"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_release</b> (<a class="el" href="a00031.html">buffer_operation</a> *op)</td></tr>
+<tr class="separator:ae7b3eee1ec878f6f0055f6133b233c09 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4517c0a58649ea5eb140ab4b786e1ec"></a>
+task * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a> (const T &t)</td></tr>
+<tr class="memdesc:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">receive an item, return a task *if possible <br/></td></tr>
+<tr class="separator:aa4517c0a58649ea5eb140ab4b786e1ec inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ace801f92ca3f0525835d67afba0eef6c inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace801f92ca3f0525835d67afba0eef6c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:ace801f92ca3f0525835d67afba0eef6c inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc1b4323f79b01468a106ca313cfede7 inherit pro_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc1b4323f79b01468a106ca313cfede7"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:acc1b4323f79b01468a106ca313cfede7 inherit pro_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00030')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
+<a class="el" href="a00126.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
+<a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eda90c0f6300644705f142c6ada1a4d"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
+<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
+internal::aggregator<br class="typebreak"/>
+< my_handler, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
+<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Load TBB at runtime. </p>
-<p><b>Usage:</b> </p>
-<p>In source code:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include "tbb/runtime_loader.h"</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> <span class="keyword">const</span> * path[] = { <span class="stringliteral">"<install dir>/lib/ia32"</span>, NULL };</div>
-<div class="line">tbb::runtime_loader loader( path );</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// Now use TBB.</span></div>
-</div><!-- fragment --><p>Link with <code>tbbproxy.lib</code> (or <code>libtbbproxy.a</code>) instead of <code>tbb.lib</code> (<code>libtbb.dylib</code>, <code>libtbb.so</code>).</p>
-<p>TBB library will be loaded at runtime from <code></code> <install dir>="">/lib/ia32 directory.</p>
-<p><b>Attention:</b> </p>
-<p>All <code><a class="el" href="a00110.html" title="Load TBB at runtime. ">runtime_loader</a></code> objects (in the same module, i.e. exe or dll) share some global state. The most noticeable piece of global state is loaded TBB library. There are some implications: </p>
-<pre class="fragment">-   Only one TBB library can be loaded per module.
-
--   If one object has already loaded TBB library, another object will not load TBB.
-    If the loaded TBB library is suitable for the second object, both will use TBB
-    cooperatively, otherwise the second object will report an error.
-
--   \c runtime_loader objects will not work (correctly) in parallel due to absence of
-    syncronization.</pre> </div><h2 class="groupheader">Member Enumeration Documentation</h2>
-<a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader::error_code</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Error codes. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434"></a>ec_ok</em> </td><td class="fielddoc">
-<p>No errors. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01"></a>ec_bad_call</em> </td><td class="fielddoc">
-<p>Invalid function call (e. g. <a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e" title="Load TBB. ">load()</a> called when TBB is already loaded). </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3"></a>ec_bad_arg</em> </td><td class="fielddoc">
-<p>Invalid argument passed. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732"></a>ec_bad_lib</em> </td><td class="fielddoc">
-<p>Invalid library found (e. g. <code>TBB_runtime_version</code> symbol not found). </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064"></a>ec_bad_ver</em> </td><td class="fielddoc">
-<p>TBB found but version is not suitable. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd"></a>ec_no_lib</em> </td><td class="fielddoc">
-<p>No suitable TBB library found. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader::error_mode</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
+<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
+class tbb::flow::interface7::queue_node< T, A ></h3>
 
-<p>Error mode constants. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36"></a>em_status</em> </td><td class="fielddoc">
-<p>Save status of operation and continue. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c"></a>em_throw</em> </td><td class="fielddoc">
-<p>Throw an exception of tbb::runtime_loader::error_code type. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35"></a>em_abort</em> </td><td class="fielddoc">
-<p>Print message to <code>stderr</code> and call <code>abort()</code>. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a3e0932074d2f3ad04605e7e5da88c561"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::interface6::runtime_loader::runtime_loader </td>
-          <td>(</td>
-          <td class="paramtype">char const * </td>
-          <td class="paramname"><em>path</em>[], </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>min_ver</em> = <code>TBB_INTERFACE_VERSION</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>max_ver</em> = <code>INT_MAX</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> </td>
-          <td class="paramname"><em>mode</em> = <code><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a></code> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Initialize object and load TBB. </p>
-<p>See <a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e" title="Load TBB. ">load()</a> for details.</p>
-<p>If error mode is <code>em_status</code>, call <a class="el" href="a00110.html#a85bf9ee021a2076a3ac7cfd70aae7345" title="Report status. ">status()</a> to check whether TBB was loaded or not. </p>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">path</td><td>List of directories to search TBB in. </td></tr>
-    <tr><td class="paramname">min_ver</td><td>Minimal suitable version of TBB. </td></tr>
-    <tr><td class="paramname">max_ver</td><td>Maximal suitable version of TBB. </td></tr>
-    <tr><td class="paramname">mode</td><td>Error mode for this object. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ae2949e9adcac56a2cb9864437be8e22e"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> tbb::interface6::runtime_loader::load </td>
-          <td>(</td>
-          <td class="paramtype">char const * </td>
-          <td class="paramname"><em>path</em>[], </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>min_ver</em> = <code>TBB_INTERFACE_VERSION</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>max_ver</em> = <code>INT_MAX</code> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Load TBB. </p>
-<p>The method searches the directories specified in <code>path</code>[] array for the TBB library. When the library is found, it is loaded and its version is checked. If the version is not suitable, the library is unloaded, and the search continues.</p>
-<p><b>Note:</b> </p>
-<p>For security reasons, avoid using relative directory names. For example, never load TBB from current (<code>"."</code>), parent (<code>".."</code>) or any other relative directory (like <code>"lib"</code> ). Use only absolute directory names (e. g. "/usr/local/lib").</p>
-<p>For the same security reasons, avoid using system default directories (<code>""</code>) on Windows. (See <a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx">http://www.microsoft.com/technet/security/advisory/2269637.mspx</a> for details.)</p>
-<p>Neglecting these rules may cause your program to execute 3-rd party malicious code.</p>
-<p><b>Errors:</b> </p>
-<ul>
-<li><code>ec_bad_call</code> - TBB already loaded by this object.</li>
-<li><code>ec_bad_arg</code> - <code>min_ver</code> and/or <code>max_ver</code> negative or zero, or <code>min_ver</code> > <code>max_ver</code>.</li>
-<li><code>ec_bad_ver</code> - TBB of unsuitable version already loaded by another object.</li>
-<li><code>ec_no_lib</code> - No suitable library found. </li>
-</ul>
-<dl class="params"><dt>Parameters</dt><dd>
-  <table class="params">
-    <tr><td class="paramname">path</td><td>List of directories to search TBB in. </td></tr>
-    <tr><td class="paramname">min_ver</td><td>Minimal suitable version of TBB. </td></tr>
-    <tr><td class="paramname">max_ver</td><td>Maximal suitable version of TBB. </td></tr>
-  </table>
-  </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a85bf9ee021a2076a3ac7cfd70aae7345"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> tbb::interface6::runtime_loader::status </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Report status. </p>
-<p>If error mode is <code>em_status</code>, the function returns status of the last operation. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>runtime_loader.h</li>
+<p>Forwards messages in FIFO order. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00110.png b/doc/html/a00110.png
index 56b89a6..20d1c2d 100644
Binary files a/doc/html/a00110.png and b/doc/html/a00110.png differ
diff --git a/doc/html/a00111.html b/doc/html/a00111.html
index b9fa466..6cfbad5 100644
--- a/doc/html/a00111.html
+++ b/doc/html/a00111.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::scalable_allocator< T > Class Template Reference</title>
+<title>tbb::queuing_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,111 +33,70 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">scalable_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">queuing_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00277.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00292.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::queuing_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<p>Queuing mutex with local-only spinning.  
  <a href="a00111.html#details">More...</a></p>
 
-<p><code>#include <scalable_allocator.h></code></p>
+<p><code>#include <queuing_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::queuing_mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00111.png" usemap="#tbb::queuing_mutex_map" alt=""/>
+  <map id="tbb::queuing_mutex_map" name="tbb::queuing_mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html">rebind</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00132.html#details">More...</a><br/></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:aa9171ca5fc6dc349ae95a28cd16b504c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9171ca5fc6dc349ae95a28cd16b504c"></a>
-typedef <br class="typebreak"/>
-internal::allocator_type< T ><br class="typebreak"/>
-::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:aa9171ca5fc6dc349ae95a28cd16b504c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af5352e44d6bcde3d0bdf8368acd3c84c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5352e44d6bcde3d0bdf8368acd3c84c"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:af5352e44d6bcde3d0bdf8368acd3c84c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9722dbf8015bed6319bc16996d45546f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9722dbf8015bed6319bc16996d45546f"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a9722dbf8015bed6319bc16996d45546f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3c8f5f07f47672c0c97fab799807728"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3c8f5f07f47672c0c97fab799807728"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:af3c8f5f07f47672c0c97fab799807728"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4de1dd8be241f945d464cbef0dd6c5b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4de1dd8be241f945d464cbef0dd6c5b8"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a4de1dd8be241f945d464cbef0dd6c5b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2376f6bacc6dcb3aa37f27a78681e89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2376f6bacc6dcb3aa37f27a78681e89"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac2376f6bacc6dcb3aa37f27a78681e89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a751a0d5a410244226f62914cbde260ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a751a0d5a410244226f62914cbde260ff"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:a751a0d5a410244226f62914cbde260ff"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a276a735dca4ba6abbe3b251d4c003ea7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a276a735dca4ba6abbe3b251d4c003ea7"></a>
- </td><td class="memItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00111.html">scalable_allocator</a> &)  throw ()</td></tr>
-<tr class="separator:a276a735dca4ba6abbe3b251d4c003ea7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae680426a4dfbd51a7447d12354679c6e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae680426a4dfbd51a7447d12354679c6e"></a>
-template<typename U > </td></tr>
-<tr class="memitem:ae680426a4dfbd51a7447d12354679c6e"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00111.html">scalable_allocator</a>< U > &)  throw ()</td></tr>
-<tr class="separator:ae680426a4dfbd51a7447d12354679c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a647d824ce9396c3c4cb4450b0c2b7b3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a647d824ce9396c3c4cb4450b0c2b7b3c"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-<tr class="separator:a647d824ce9396c3c4cb4450b0c2b7b3c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab30cf9e0d0bef7ba8567edc6efb045e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab30cf9e0d0bef7ba8567edc6efb045e4"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-<tr class="separator:ab30cf9e0d0bef7ba8567edc6efb045e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf24945c12dc0586dfb1f8638daf7838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf24945c12dc0586dfb1f8638daf7838"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#acf24945c12dc0586dfb1f8638daf7838">allocate</a> (size_type n, const void *=0)</td></tr>
-<tr class="memdesc:acf24945c12dc0586dfb1f8638daf7838"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
-<tr class="separator:acf24945c12dc0586dfb1f8638daf7838"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0632b19f25e5d5f86f18b3101925f488"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0632b19f25e5d5f86f18b3101925f488"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#a0632b19f25e5d5f86f18b3101925f488">deallocate</a> (pointer p, size_type)</td></tr>
-<tr class="memdesc:a0632b19f25e5d5f86f18b3101925f488"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
-<tr class="separator:a0632b19f25e5d5f86f18b3101925f488"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afaa85d739b466699cf669116fd10d175"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afaa85d739b466699cf669116fd10d175"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#afaa85d739b466699cf669116fd10d175">max_size</a> () const   throw ()</td></tr>
-<tr class="memdesc:afaa85d739b466699cf669116fd10d175"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
-<tr class="separator:afaa85d739b466699cf669116fd10d175"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0502de23b9ed7c1611703fe725cb4cd3"></a>
-template<typename U , typename... Args> </td></tr>
-<tr class="memitem:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>construct</b> (U *p, Args &&...args)</td></tr>
-<tr class="separator:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac79ddb098880d8bde6097ac11f641188"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac79ddb098880d8bde6097ac11f641188"></a>
-void </td><td class="memItemRight" valign="bottom"><b>destroy</b> (pointer p)</td></tr>
-<tr class="separator:ac79ddb098880d8bde6097ac11f641188"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0e58fce2062ae349a30b320b7fdc9155"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e58fce2062ae349a30b320b7fdc9155"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html#a0e58fce2062ae349a30b320b7fdc9155">queuing_mutex</a> ()</td></tr>
+<tr class="memdesc:a0e58fce2062ae349a30b320b7fdc9155"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
+<tr class="separator:a0e58fce2062ae349a30b320b7fdc9155"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae475e98e804c75239748b293e7e0feff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae475e98e804c75239748b293e7e0feff"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+<tr class="separator:ae475e98e804c75239748b293e7e0feff"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a5da5dab41683415768ef034005cd6302"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5da5dab41683415768ef034005cd6302"></a>
-::new((void *) p) U(std voi </td><td class="memItemRight" valign="bottom"><b>construct</b> )(pointer p, const value_type &value)</td></tr>
-<tr class="separator:a5da5dab41683415768ef034005cd6302"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a504f3af8a939468f1514604c0941bc62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a504f3af8a939468f1514604c0941bc62"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a504f3af8a939468f1514604c0941bc62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47ad4cdac79581c01a66241e2e5c2c07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47ad4cdac79581c01a66241e2e5c2c07"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:a47ad4cdac79581c01a66241e2e5c2c07"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b4833b97208bd699cba061dfc3057cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b4833b97208bd699cba061dfc3057cc"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+<tr class="separator:a5b4833b97208bd699cba061dfc3057cc"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::scalable_allocator< T ></h3>
-
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
-<p>The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
+<div class="textblock"><p>Queuing mutex with local-only spinning. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00199.html">scalable_allocator.h</a></li>
+<li>queuing_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00111.png b/doc/html/a00111.png
new file mode 100644
index 0000000..97f8b53
Binary files /dev/null and b/doc/html/a00111.png differ
diff --git a/doc/html/a00112.html b/doc/html/a00112.html
index 24c39b2..8997dc3 100644
--- a/doc/html/a00112.html
+++ b/doc/html/a00112.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::scalable_allocator< void > Class Template Reference</title>
+<title>tbb::queuing_rw_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,53 +33,75 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">scalable_allocator< void ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">queuing_rw_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="a00279.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00294.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::queuing_rw_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<p>Queuing reader-writer mutex with local-only spinning.  
  <a href="a00112.html#details">More...</a></p>
 
-<p><code>#include <scalable_allocator.h></code></p>
+<p><code>#include <queuing_rw_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::queuing_rw_mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00112.png" usemap="#tbb::queuing_rw_mutex_map" alt=""/>
+  <map id="tbb::queuing_rw_mutex_map" name="tbb::queuing_rw_mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html">rebind</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00131.html#details">More...</a><br/></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a4220fdea504929811e9c083da3ec24cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4220fdea504929811e9c083da3ec24cd"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a4220fdea504929811e9c083da3ec24cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2ae27d63cd7df1dc8d2a47c89aad8bba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ae27d63cd7df1dc8d2a47c89aad8bba"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a2ae27d63cd7df1dc8d2a47c89aad8bba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a968aea700a5f30ad613a84a474b00ba4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a968aea700a5f30ad613a84a474b00ba4"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a968aea700a5f30ad613a84a474b00ba4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23de1ac415b6f54b778c8fd6ec6073e0"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html#a23de1ac415b6f54b778c8fd6ec6073e0">queuing_rw_mutex</a> ()</td></tr>
+<tr class="memdesc:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
+<tr class="separator:a23de1ac415b6f54b778c8fd6ec6073e0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae67fe828d7e07222e7876ef9fd780fcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae67fe828d7e07222e7876ef9fd780fcc"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html#ae67fe828d7e07222e7876ef9fd780fcc">~queuing_rw_mutex</a> ()</td></tr>
+<tr class="memdesc:ae67fe828d7e07222e7876ef9fd780fcc"><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. q_tail is non-NULL. <br/></td></tr>
+<tr class="separator:ae67fe828d7e07222e7876ef9fd780fcc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afd032e7e13804cd4d1cd8fce60d773f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd032e7e13804cd4d1cd8fce60d773f8"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><b>internal_construct</b> ()</td></tr>
+<tr class="separator:afd032e7e13804cd4d1cd8fce60d773f8"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:ae3dbfbf71bfa9c662a59688cd86bfbd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3dbfbf71bfa9c662a59688cd86bfbd7"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
+<tr class="separator:ae3dbfbf71bfa9c662a59688cd86bfbd7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae8c3ee1f5ab3af3954abeec1d165ea8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8c3ee1f5ab3af3954abeec1d165ea8e"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:ae8c3ee1f5ab3af3954abeec1d165ea8e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4704d512922b4b5d21c97901f9f7abd0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4704d512922b4b5d21c97901f9f7abd0"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = true</td></tr>
+<tr class="separator:a4704d512922b4b5d21c97901f9f7abd0"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<><br/>
-class tbb::scalable_allocator< void ></h3>
-
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
+<div class="textblock"><p>Queuing reader-writer mutex with local-only spinning. </p>
+<p>Adapted from Krieger, Stumm, et al. pseudocode at <a href="http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93">http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93</a> </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00199.html">scalable_allocator.h</a></li>
+<li>queuing_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00112.png b/doc/html/a00112.png
new file mode 100644
index 0000000..aeda94c
Binary files /dev/null and b/doc/html/a00112.png differ
diff --git a/doc/html/a00113.html b/doc/html/a00113.html
index e2663cc..2f044b9 100644
--- a/doc/html/a00113.html
+++ b/doc/html/a00113.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::spin_mutex::scoped_lock Class Reference</title>
+<title>tbb::interface5::reader_writer_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,101 +33,196 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00127.html">spin_mutex</a></li><li class="navelem"><a class="el" href="a00113.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
 <a href="#friends">Friends</a> |
-<a href="a00282.html">List of all members</a>  </div>
+<a href="a00383.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::spin_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::interface5::reader_writer_lock Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Represents acquisition of a mutex.  
+<p>Writer-preference reader-writer lock with local-only spinning on readers.  
  <a href="a00113.html#details">More...</a></p>
 
-<p><code>#include <spin_mutex.h></code></p>
+<p><code>#include <reader_writer_lock.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::spin_mutex::scoped_lock:</div>
+Inheritance diagram for tbb::interface5::reader_writer_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00113.png" usemap="#tbb::spin_mutex::scoped_lock_map" alt=""/>
-  <map id="tbb::spin_mutex::scoped_lock_map" name="tbb::spin_mutex::scoped_lock_map">
+  <img src="a00113.png" usemap="#tbb::interface5::reader_writer_lock_map" alt=""/>
+  <map id="tbb::interface5::reader_writer_lock_map" name="tbb::interface5::reader_writer_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped lock pattern for write locks.  <a href="a00133.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html">scoped_lock_read</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped lock pattern for read locks.  <a href="a00141.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">status_t</a> { <b>waiting_nonblocking</b>, 
+<b>waiting</b>, 
+<b>active</b>, 
+<b>invalid</b>
+ }</td></tr>
+<tr class="memdesc:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="mdescLeft"> </td><td class="mdescRight">Status type for nodes associated with lock instances.  <a href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">More...</a><br/></td></tr>
+<tr class="separator:a29bbf9ca21c12b313d9fa5326feaf3ed"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a4287be975cf2448c95f068b065c45107"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4287be975cf2448c95f068b065c45107"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a4287be975cf2448c95f068b065c45107">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a4287be975cf2448c95f068b065c45107"><td class="mdescLeft"> </td><td class="mdescRight">Construct without acquiring a mutex. <br/></td></tr>
-<tr class="separator:a4287be975cf2448c95f068b065c45107"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a73f7381a9a112b9f5a856b1face525fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73f7381a9a112b9f5a856b1face525fb"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a73f7381a9a112b9f5a856b1face525fb">scoped_lock</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
-<tr class="memdesc:a73f7381a9a112b9f5a856b1face525fb"><td class="mdescLeft"> </td><td class="mdescRight">Construct and acquire lock on a mutex. <br/></td></tr>
-<tr class="separator:a73f7381a9a112b9f5a856b1face525fb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7c702117f08ae82d034a98b3d5510ffc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c702117f08ae82d034a98b3d5510ffc"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a7c702117f08ae82d034a98b3d5510ffc">acquire</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
-<tr class="memdesc:a7c702117f08ae82d034a98b3d5510ffc"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
-<tr class="separator:a7c702117f08ae82d034a98b3d5510ffc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a76acbd67c74906f6ea33a1de6fd443ce"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a76acbd67c74906f6ea33a1de6fd443ce">try_acquire</a> (<a class="el" href="a00127.html">spin_mutex</a> &m)</td></tr>
-<tr class="memdesc:a76acbd67c74906f6ea33a1de6fd443ce"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a76acbd67c74906f6ea33a1de6fd443ce">More...</a><br/></td></tr>
-<tr class="separator:a76acbd67c74906f6ea33a1de6fd443ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7e801b0c28fd8395fec400b96acc5c34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e801b0c28fd8395fec400b96acc5c34"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a7e801b0c28fd8395fec400b96acc5c34">release</a> ()</td></tr>
-<tr class="memdesc:a7e801b0c28fd8395fec400b96acc5c34"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a7e801b0c28fd8395fec400b96acc5c34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9940d6e494466d9c53846ed347d79d83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9940d6e494466d9c53846ed347d79d83"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a9940d6e494466d9c53846ed347d79d83">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a9940d6e494466d9c53846ed347d79d83"><td class="mdescLeft"> </td><td class="mdescRight">Destroy lock. If holding a lock, releases the lock first. <br/></td></tr>
-<tr class="separator:a9940d6e494466d9c53846ed347d79d83"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abceda6c50b0c36eacbef51f4682742f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abceda6c50b0c36eacbef51f4682742f3"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#abceda6c50b0c36eacbef51f4682742f3">reader_writer_lock</a> ()</td></tr>
+<tr class="memdesc:abceda6c50b0c36eacbef51f4682742f3"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a new <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a>. <br/></td></tr>
+<tr class="separator:abceda6c50b0c36eacbef51f4682742f3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeee96b648c7b5ff6126c8a2e13ec7241"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#aeee96b648c7b5ff6126c8a2e13ec7241">~reader_writer_lock</a> ()</td></tr>
+<tr class="memdesc:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="mdescLeft"> </td><td class="mdescRight">Destructs a <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> object. <br/></td></tr>
+<tr class="separator:aeee96b648c7b5ff6126c8a2e13ec7241"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af92eb949fc491af8f7e350869ea0a0d1"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a> ()</td></tr>
+<tr class="memdesc:af92eb949fc491af8f7e350869ea0a0d1"><td class="mdescLeft"> </td><td class="mdescRight">Acquires the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write.  <a href="#af92eb949fc491af8f7e350869ea0a0d1">More...</a><br/></td></tr>
+<tr class="separator:af92eb949fc491af8f7e350869ea0a0d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1739e842af52925a2d4a7e821b9b3b8d"><td class="memItemLeft" align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a1739e842af52925a2d4a7e821b9b3b8d">try_lock</a> ()</td></tr>
+<tr class="memdesc:a1739e842af52925a2d4a7e821b9b3b8d"><td class="mdescLeft"> </td><td class="mdescRight">Tries to acquire the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write.  <a href="#a1739e842af52925a2d4a7e821b9b3b8d">More...</a><br/></td></tr>
+<tr class="separator:a1739e842af52925a2d4a7e821b9b3b8d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a6fd4fcdf0e5c0425d1cc736d644f234f">lock_read</a> ()</td></tr>
+<tr class="memdesc:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="mdescLeft"> </td><td class="mdescRight">Acquires the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read.  <a href="#a6fd4fcdf0e5c0425d1cc736d644f234f">More...</a><br/></td></tr>
+<tr class="separator:a6fd4fcdf0e5c0425d1cc736d644f234f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="memItemLeft" align="right" valign="top">bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a9c7aa04e00202c9a1197cb6d870cabb4">try_lock_read</a> ()</td></tr>
+<tr class="memdesc:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="mdescLeft"> </td><td class="mdescRight">Tries to acquire the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read.  <a href="#a9c7aa04e00202c9a1197cb6d870cabb4">More...</a><br/></td></tr>
+<tr class="separator:a9c7aa04e00202c9a1197cb6d870cabb4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c55c4dbde63e950fdc843c9b01a174f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c55c4dbde63e950fdc843c9b01a174f"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html#a4c55c4dbde63e950fdc843c9b01a174f">unlock</a> ()</td></tr>
+<tr class="memdesc:a4c55c4dbde63e950fdc843c9b01a174f"><td class="mdescLeft"> </td><td class="mdescRight">Releases the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a>. <br/></td></tr>
+<tr class="separator:a4c55c4dbde63e950fdc843c9b01a174f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:adf989c33fa5ee03e75925c2d0f86b89e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf989c33fa5ee03e75925c2d0f86b89e"></a>
-class </td><td class="memItemRight" valign="bottom"><b>spin_mutex</b></td></tr>
-<tr class="separator:adf989c33fa5ee03e75925c2d0f86b89e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"></a>
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock_read</b></td></tr>
+<tr class="separator:a578ccbc6ecbc6d32cb45ccfdc0ed4ee6"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Represents acquisition of a mutex. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a76acbd67c74906f6ea33a1de6fd443ce"></a>
+<div class="textblock"><p>Writer-preference reader-writer lock with local-only spinning on readers. </p>
+<p>Loosely adapted from Mellor-Crummey and Scott pseudocode at <a href="http://www.cs.rochester.edu/research/synchronization/pseudocode/rw.html#s_wp">http://www.cs.rochester.edu/research/synchronization/pseudocode/rw.html#s_wp</a> </p>
+</div><h2 class="groupheader">Member Enumeration Documentation</h2>
+<a class="anchor" id="a29bbf9ca21c12b313d9fa5326feaf3ed"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock::status_t</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Status type for nodes associated with lock instances. </p>
+<p>waiting_nonblocking: the wait state for nonblocking lock instances; for writes, these transition straight to active states; for reads, these are unused.</p>
+<p>waiting: the start and spin state for all lock instances; these will transition to active state when appropriate. Non-blocking write locks transition from this state to waiting_nonblocking immediately.</p>
+<p>active: the active state means that the lock instance holds the lock; it will transition to invalid state during node deletion</p>
+<p>invalid: the end state for all nodes; this is set in the destructor so if we encounter this state, we are looking at memory that has already been freed</p>
+<p>The state diagrams below describe the status transitions. Single arrows indicate that the thread that owns the node is responsible for the transition; double arrows indicate that any thread could make the transition.</p>
+<p>State diagram for <a class="el" href="a00133.html" title="The scoped lock pattern for write locks. ">scoped_lock</a> status:</p>
+<p>waiting -------—> waiting_nonblocking | _____________/ | V V V active --------------—> invalid</p>
+<p>State diagram for <a class="el" href="a00141.html" title="The scoped lock pattern for read locks. ">scoped_lock_read</a> status:</p>
+<p>waiting | V active --------------—>invalid </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="af92eb949fc491af8f7e350869ea0a0d1"></a>
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool tbb::spin_mutex::scoped_lock::try_acquire </td>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock </td>
           <td>(</td>
-          <td class="paramtype"><a class="el" href="a00127.html">spin_mutex</a> & </td>
-          <td class="paramname"><em>m</em>)</td><td></td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Acquires the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write. </p>
+<p>If the lock is currently held in write mode by another context, the writer will block by spinning on a local variable. Exceptions thrown: <a class="el" href="a00074.html" title="Exception for PPL locks. ">improper_lock</a> The context tries to acquire a <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> that it already has write ownership of. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6fd4fcdf0e5c0425d1cc736d644f234f"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock_read </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Acquires the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read. </p>
+<p>If the lock is currently held by a writer, this reader will block and wait until the writers are done. Exceptions thrown: <a class="el" href="a00074.html" title="Exception for PPL locks. ">improper_lock</a> The context tries to acquire a <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> that it already has write ownership of. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1739e842af52925a2d4a7e821b9b3b8d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Tries to acquire the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for write. </p>
+<p>This function does not block. Return Value: True or false, depending on whether the lock is acquired or not. If the lock is already held by this acquiring context, <a class="el" href="a00113.html#a1739e842af52925a2d4a7e821b9b3b8d" title="Tries to acquire the reader_writer_lock for write. ">try_lock()</a> returns false. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9c7aa04e00202c9a1197cb6d870cabb4"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock_read </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
           <td></td>
         </tr>
       </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
 </div><div class="memdoc">
 
-<p>Try acquiring lock (non-blocking) </p>
-<p>Return true if lock acquired; false otherwise. </p>
+<p>Tries to acquire the <a class="el" href="a00113.html" title="Writer-preference reader-writer lock with local-only spinning on readers. ">reader_writer_lock</a> for read. </p>
+<p>This function does not block. Return Value: True or false, depending on whether the lock is acquired or not. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>spin_mutex.h</li>
+<li>reader_writer_lock.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00113.png b/doc/html/a00113.png
index 25da9c6..12ea5c6 100644
Binary files a/doc/html/a00113.png and b/doc/html/a00113.png differ
diff --git a/doc/html/a00114.html b/doc/html/a00114.html
index 255ad94..b0342eb 100644
--- a/doc/html/a00114.html
+++ b/doc/html/a00114.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</title>
+<title>tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,176 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00128.html">spin_rw_mutex_v3</a></li><li class="navelem"><a class="el" href="a00114.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a></li><li class="navelem"><a class="el" href="a00114.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="a00284.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00273.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::spin_rw_mutex_v3::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped locking pattern.  
- <a href="a00114.html#details">More...</a></p>
-
-<p><code>#include <spin_rw_mutex.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::spin_rw_mutex_v3::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00114.png" usemap="#tbb::spin_rw_mutex_v3::scoped_lock_map" alt=""/>
-  <map id="tbb::spin_rw_mutex_v3::scoped_lock_map" name="tbb::spin_rw_mutex_v3::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a285b355121772c874a7ecaaf4d347224"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a285b355121772c874a7ecaaf4d347224">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a285b355121772c874a7ecaaf4d347224"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a285b355121772c874a7ecaaf4d347224">More...</a><br/></td></tr>
-<tr class="separator:a285b355121772c874a7ecaaf4d347224"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0a2e15358575f7651446bca13a5a2674"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a2e15358575f7651446bca13a5a2674"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a0a2e15358575f7651446bca13a5a2674">scoped_lock</a> (<a class="el" href="a00128.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:a0a2e15358575f7651446bca13a5a2674"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:a0a2e15358575f7651446bca13a5a2674"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c27ca2e0c9db960a9a7430082ff7edd"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a5c27ca2e0c9db960a9a7430082ff7edd">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
-<tr class="separator:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6d49df365396ab314e78ba07c6b96433"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d49df365396ab314e78ba07c6b96433"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a6d49df365396ab314e78ba07c6b96433">acquire</a> (<a class="el" href="a00128.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:a6d49df365396ab314e78ba07c6b96433"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:a6d49df365396ab314e78ba07c6b96433"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbe5de57eadc457518df7a1bb0d30c00"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer</a> ()</td></tr>
-<tr class="memdesc:afbe5de57eadc457518df7a1bb0d30c00"><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#afbe5de57eadc457518df7a1bb0d30c00">More...</a><br/></td></tr>
-<tr class="separator:afbe5de57eadc457518df7a1bb0d30c00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a99e279a995a51abfb87b865e886949f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99e279a995a51abfb87b865e886949f8"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">release</a> ()</td></tr>
-<tr class="memdesc:a99e279a995a51abfb87b865e886949f8"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a99e279a995a51abfb87b865e886949f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa693c05221d977856a98270a255fe5df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa693c05221d977856a98270a255fe5df"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader</a> ()</td></tr>
-<tr class="memdesc:aa693c05221d977856a98270a255fe5df"><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br/></td></tr>
-<tr class="separator:aa693c05221d977856a98270a255fe5df"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf17ada91882fd70f139c503c0220f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf17ada91882fd70f139c503c0220f16"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#abf17ada91882fd70f139c503c0220f16">try_acquire</a> (<a class="el" href="a00128.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:abf17ada91882fd70f139c503c0220f16"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:abf17ada91882fd70f139c503c0220f16"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad65afc1689547cba82a4667480806ef5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad65afc1689547cba82a4667480806ef5"></a>
-<a class="el" href="a00128.html">spin_rw_mutex</a> * </td><td class="memItemRight" valign="bottom"><b>__internal_get_mutex</b> ()</td></tr>
-<tr class="separator:ad65afc1689547cba82a4667480806ef5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a50e7a21e905abc3e7448a30972923a36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50e7a21e905abc3e7448a30972923a36"></a>
-void </td><td class="memItemRight" valign="bottom"><b>__internal_set_mutex</b> (<a class="el" href="a00128.html">spin_rw_mutex</a> *m)</td></tr>
-<tr class="separator:a50e7a21e905abc3e7448a30972923a36"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0bc9be67c5c4f6ffb8ba79baa73448c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bc9be67c5c4f6ffb8ba79baa73448c8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>__internal_set_writer</b> (bool flag=true)</td></tr>
-<tr class="separator:a0bc9be67c5c4f6ffb8ba79baa73448c8"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a8d70c5a2348e30a6979bfbf677328dc4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d70c5a2348e30a6979bfbf677328dc4"></a>
-<a class="el" href="a00128.html">spin_rw_mutex</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#a8d70c5a2348e30a6979bfbf677328dc4">mutex</a></td></tr>
-<tr class="memdesc:a8d70c5a2348e30a6979bfbf677328dc4"><td class="mdescLeft"> </td><td class="mdescRight">The pointer to the current mutex that is held, or NULL if no mutex is held. <br/></td></tr>
-<tr class="separator:a8d70c5a2348e30a6979bfbf677328dc4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acfd129dc5106ad1129ba803e67311050"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html#acfd129dc5106ad1129ba803e67311050">is_writer</a></td></tr>
-<tr class="memdesc:acfd129dc5106ad1129ba803e67311050"><td class="mdescLeft"> </td><td class="mdescRight">If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock.  <a href="#acfd129dc5106ad1129ba803e67311050">More...</a><br/></td></tr>
-<tr class="separator:acfd129dc5106ad1129ba803e67311050"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a9a8756c2c1d9425bdf7490943ae0b189"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a8756c2c1d9425bdf7490943ae0b189"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00032.html">cache_aligned_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a9a8756c2c1d9425bdf7490943ae0b189"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped locking pattern. </p>
-<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a285b355121772c874a7ecaaf4d347224"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct lock that has not acquired a mutex. </p>
-<p>Equivalent to zero-initialization of *this. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="afbe5de57eadc457518df7a1bb0d30c00"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Upgrade reader to become a writer. </p>
-<p>Returns whether the upgrade happened without releasing and re-acquiring the lock </p>
-
-<p>References <a class="el" href="a00114.html#acfd129dc5106ad1129ba803e67311050">is_writer</a>.</p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="acfd129dc5106ad1129ba803e67311050"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::spin_rw_mutex_v3::scoped_lock::is_writer</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock. </p>
-<p>Not defined if not holding a lock. </p>
-
-<p>Referenced by <a class="el" href="a00114.html#a6d49df365396ab314e78ba07c6b96433">acquire()</a>, <a class="el" href="a00114.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader()</a>, <a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">release()</a>, <a class="el" href="a00114.html#abf17ada91882fd70f139c503c0220f16">try_acquire()</a>, and <a class="el" href="a00114.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer()</a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>spin_rw_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>cache_aligned_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00114.png b/doc/html/a00114.png
deleted file mode 100644
index 13249c6..0000000
Binary files a/doc/html/a00114.png and /dev/null differ
diff --git a/doc/html/a00115.html b/doc/html/a00115.html
index 1c275d6..e3f1731 100644
--- a/doc/html/a00115.html
+++ b/doc/html/a00115.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::null_mutex::scoped_lock Class Reference</title>
+<title>tbb::scalable_allocator< T >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,47 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00083.html">null_mutex</a></li><li class="navelem"><a class="el" href="a00115.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00129.html">scalable_allocator</a></li><li class="navelem"><a class="el" href="a00115.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00261.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00299.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::null_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::scalable_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Represents acquisition of a mutex.  
- <a href="a00115.html#details">More...</a></p>
-
-<p><code>#include <null_mutex.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:af71834d1fc4c7406595e9df5b43ab7bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af71834d1fc4c7406595e9df5b43ab7bb"></a>
- </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00083.html">null_mutex</a> &)</td></tr>
-<tr class="separator:af71834d1fc4c7406595e9df5b43ab7bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d541c92b1678a7dde6a45783a02160f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d541c92b1678a7dde6a45783a02160f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>acquire</b> (<a class="el" href="a00083.html">null_mutex</a> &)</td></tr>
-<tr class="separator:a7d541c92b1678a7dde6a45783a02160f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5d4d5a4182091ea13fb5d38667f6449"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5d4d5a4182091ea13fb5d38667f6449"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>try_acquire</b> (<a class="el" href="a00083.html">null_mutex</a> &)</td></tr>
-<tr class="separator:ac5d4d5a4182091ea13fb5d38667f6449"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a21f848f83dfa6504381e3da4de7a9e00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21f848f83dfa6504381e3da4de7a9e00"></a>
-void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
-<tr class="separator:a21f848f83dfa6504381e3da4de7a9e00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a4f44c77105a911769353936a23b780a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f44c77105a911769353936a23b780a6"></a>
+typedef <a class="el" href="a00129.html">scalable_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a4f44c77105a911769353936a23b780a6"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Represents acquisition of a mutex. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>null_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00217.html">scalable_allocator.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00116.html b/doc/html/a00116.html
index bcd3aca..2043694 100644
--- a/doc/html/a00116.html
+++ b/doc/html/a00116.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::mutex::scoped_lock Class Reference</title>
+<title>tbb::scalable_allocator< void >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,75 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00081.html">mutex</a></li><li class="navelem"><a class="el" href="a00116.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00130.html">scalable_allocator< void ></a></li><li class="navelem"><a class="el" href="a00116.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00259.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00301.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::scalable_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped locking pattern.  
- <a href="a00116.html#details">More...</a></p>
-
-<p><code>#include <mutex.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::mutex::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00116.png" usemap="#tbb::mutex::scoped_lock_map" alt=""/>
-  <map id="tbb::mutex::scoped_lock_map" name="tbb::mutex::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a23122745ccd5fc2498fcbbd5ced09e06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23122745ccd5fc2498fcbbd5ced09e06"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#a23122745ccd5fc2498fcbbd5ced09e06">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a23122745ccd5fc2498fcbbd5ced09e06"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex. <br/></td></tr>
-<tr class="separator:a23122745ccd5fc2498fcbbd5ced09e06"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab7c2074543443824790433d3d6c3fece"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7c2074543443824790433d3d6c3fece"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#ab7c2074543443824790433d3d6c3fece">scoped_lock</a> (<a class="el" href="a00081.html">mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:ab7c2074543443824790433d3d6c3fece"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:ab7c2074543443824790433d3d6c3fece"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a08c399ee0bb9762039b29e570ec46fe9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08c399ee0bb9762039b29e570ec46fe9"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#a08c399ee0bb9762039b29e570ec46fe9">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a08c399ee0bb9762039b29e570ec46fe9"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
-<tr class="separator:a08c399ee0bb9762039b29e570ec46fe9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fce3e2e9f592315dc9c1ada72ae5e3c"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">acquire</a> (<a class="el" href="a00081.html">mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a46f983371aa852d2427ce69f9a571f78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f983371aa852d2427ce69f9a571f78"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#a46f983371aa852d2427ce69f9a571f78">try_acquire</a> (<a class="el" href="a00081.html">mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:a46f983371aa852d2427ce69f9a571f78"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:a46f983371aa852d2427ce69f9a571f78"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1a1590281ccca912229a689d920fd78a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a1590281ccca912229a689d920fd78a"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html#a1a1590281ccca912229a689d920fd78a">release</a> ()</td></tr>
-<tr class="memdesc:a1a1590281ccca912229a689d920fd78a"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a1a1590281ccca912229a689d920fd78a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a6f4535025b9df015e1a7d35f4e2bbee7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f4535025b9df015e1a7d35f4e2bbee7"></a>
-class </td><td class="memItemRight" valign="bottom"><b>mutex</b></td></tr>
-<tr class="separator:a6f4535025b9df015e1a7d35f4e2bbee7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a37986044aa989f9c1f9edef6ab79435d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37986044aa989f9c1f9edef6ab79435d"></a>
+typedef <a class="el" href="a00129.html">scalable_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a37986044aa989f9c1f9edef6ab79435d"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped locking pattern. </p>
-<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00217.html">scalable_allocator.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00116.png b/doc/html/a00116.png
deleted file mode 100644
index 5450176..0000000
Binary files a/doc/html/a00116.png and /dev/null differ
diff --git a/doc/html/a00117.html b/doc/html/a00117.html
index df6dd88..6321881 100644
--- a/doc/html/a00117.html
+++ b/doc/html/a00117.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::null_rw_mutex::scoped_lock Class Reference</title>
+<title>tbb::tbb_allocator< T >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,53 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00084.html">null_rw_mutex</a></li><li class="navelem"><a class="el" href="a00117.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00159.html">tbb_allocator</a></li><li class="navelem"><a class="el" href="a00117.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00263.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00311.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::null_rw_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::tbb_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Represents acquisition of a mutex.  
- <a href="a00117.html#details">More...</a></p>
-
-<p><code>#include <null_rw_mutex.h></code></p>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a4b7f9a3976c7744a96e435e027c6262c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b7f9a3976c7744a96e435e027c6262c"></a>
- </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00084.html">null_rw_mutex</a> &, bool=true)</td></tr>
-<tr class="separator:a4b7f9a3976c7744a96e435e027c6262c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a251d45c5c42ac6c6006d0463c2173bc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a251d45c5c42ac6c6006d0463c2173bc8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>acquire</b> (<a class="el" href="a00084.html">null_rw_mutex</a> &, bool=true)</td></tr>
-<tr class="separator:a251d45c5c42ac6c6006d0463c2173bc8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07ed8c0c225fec43b96dcec5b4d4380d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07ed8c0c225fec43b96dcec5b4d4380d"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>upgrade_to_writer</b> ()</td></tr>
-<tr class="separator:a07ed8c0c225fec43b96dcec5b4d4380d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a899c14f8d077edd2fe7925bb82a94686"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a899c14f8d077edd2fe7925bb82a94686"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>downgrade_to_reader</b> ()</td></tr>
-<tr class="separator:a899c14f8d077edd2fe7925bb82a94686"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdb10af455fa8730b1a9bc8d5ca16c41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdb10af455fa8730b1a9bc8d5ca16c41"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>try_acquire</b> (<a class="el" href="a00084.html">null_rw_mutex</a> &, bool=true)</td></tr>
-<tr class="separator:afdb10af455fa8730b1a9bc8d5ca16c41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57d0613ea1614fe9c7daa0706e56efab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57d0613ea1614fe9c7daa0706e56efab"></a>
-void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
-<tr class="separator:a57d0613ea1614fe9c7daa0706e56efab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:adbeadd225df01e2cde9ffe5d92293671"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbeadd225df01e2cde9ffe5d92293671"></a>
+typedef <a class="el" href="a00159.html">tbb_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:adbeadd225df01e2cde9ffe5d92293671"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Represents acquisition of a mutex. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>null_rw_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00118.html b/doc/html/a00118.html
index cee3b56..8be3a82 100644
--- a/doc/html/a00118.html
+++ b/doc/html/a00118.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::reader_writer_lock::scoped_lock Class Reference</title>
+<title>tbb::tbb_allocator< void >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,65 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00118.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">tbb_allocator< void ></a></li><li class="navelem"><a class="el" href="a00118.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00348.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00313.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::tbb_allocator< void >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped lock pattern for write locks.  
- <a href="a00118.html#details">More...</a></p>
-
-<p><code>#include <reader_writer_lock.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00118.png" usemap="#tbb::interface5::reader_writer_lock::scoped_lock_map" alt=""/>
-  <map id="tbb::interface5::reader_writer_lock::scoped_lock_map" name="tbb::interface5::reader_writer_lock::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aaed982d8c3f1e84298f9842063694f3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaed982d8c3f1e84298f9842063694f3c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html#aaed982d8c3f1e84298f9842063694f3c">scoped_lock</a> (<a class="el" href="a00095.html">reader_writer_lock</a> &<a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>)</td></tr>
-<tr class="memdesc:aaed982d8c3f1e84298f9842063694f3c"><td class="mdescLeft"> </td><td class="mdescRight">Construct with blocking attempt to acquire write lock on the passed-in lock. <br/></td></tr>
-<tr class="separator:aaed982d8c3f1e84298f9842063694f3c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a41e77cf094ed30b0a9a39ee217c3653b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41e77cf094ed30b0a9a39ee217c3653b"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html#a41e77cf094ed30b0a9a39ee217c3653b">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a41e77cf094ed30b0a9a39ee217c3653b"><td class="mdescLeft"> </td><td class="mdescRight">Destructor, releases the write lock. <br/></td></tr>
-<tr class="separator:a41e77cf094ed30b0a9a39ee217c3653b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5bca00f4788ed8f635a8383a25a10ec8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bca00f4788ed8f635a8383a25a10ec8"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t s)</td></tr>
-<tr class="separator:a5bca00f4788ed8f635a8383a25a10ec8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3ef0de25ee6d7897198fcf09471bf24f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ef0de25ee6d7897198fcf09471bf24f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *p)</td></tr>
-<tr class="separator:a3ef0de25ee6d7897198fcf09471bf24f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afb01bc2e211c782503ef5088003f120f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb01bc2e211c782503ef5088003f120f"></a>
-class </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock</b></td></tr>
-<tr class="separator:afb01bc2e211c782503ef5088003f120f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a8f3c27dc0f43be2eafdfe8c6f222c44c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f3c27dc0f43be2eafdfe8c6f222c44c"></a>
+typedef <a class="el" href="a00159.html">tbb_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a8f3c27dc0f43be2eafdfe8c6f222c44c"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped lock pattern for write locks. </p>
-<p>Scoped locks help avoid the common problem of forgetting to release the lock. This type also serves as the node for queuing locks. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>reader_writer_lock.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00118.png b/doc/html/a00118.png
deleted file mode 100644
index a999a7d..0000000
Binary files a/doc/html/a00118.png and /dev/null differ
diff --git a/doc/html/a00119.html b/doc/html/a00119.html
index b0850cd..6b40b77 100644
--- a/doc/html/a00119.html
+++ b/doc/html/a00119.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::queuing_rw_mutex::scoped_lock Class Reference</title>
+<title>tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,120 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00094.html">queuing_rw_mutex</a></li><li class="navelem"><a class="el" href="a00119.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00177.html">zero_allocator</a></li><li class="navelem"><a class="el" href="a00119.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00274.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00315.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::queuing_rw_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped locking pattern.  
- <a href="a00119.html#details">More...</a></p>
-
-<p><code>#include <queuing_rw_mutex.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::queuing_rw_mutex::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00119.png" usemap="#tbb::queuing_rw_mutex::scoped_lock_map" alt=""/>
-  <map id="tbb::queuing_rw_mutex::scoped_lock_map" name="tbb::queuing_rw_mutex::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a1ae3792726dcff8da1f2c5366fb2b754"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a1ae3792726dcff8da1f2c5366fb2b754">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a1ae3792726dcff8da1f2c5366fb2b754"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a1ae3792726dcff8da1f2c5366fb2b754">More...</a><br/></td></tr>
-<tr class="separator:a1ae3792726dcff8da1f2c5366fb2b754"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1b55ca1839c9c7c2cd779cd2dd9c474"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#af1b55ca1839c9c7c2cd779cd2dd9c474">scoped_lock</a> (<a class="el" href="a00094.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6cb16cc55f884bbbd5a69430c47b288f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cb16cc55f884bbbd5a69430c47b288f"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a6cb16cc55f884bbbd5a69430c47b288f">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a6cb16cc55f884bbbd5a69430c47b288f"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
-<tr class="separator:a6cb16cc55f884bbbd5a69430c47b288f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4bf2fb86d6a418f9ea36474eb8893f9"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ab4bf2fb86d6a418f9ea36474eb8893f9">acquire</a> (<a class="el" href="a00094.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4843d40dddc37c1aa3444e27d35d2433"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4843d40dddc37c1aa3444e27d35d2433"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a4843d40dddc37c1aa3444e27d35d2433">try_acquire</a> (<a class="el" href="a00094.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
-<tr class="memdesc:a4843d40dddc37c1aa3444e27d35d2433"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking) <br/></td></tr>
-<tr class="separator:a4843d40dddc37c1aa3444e27d35d2433"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a50fb02b77f02a01c74754d163157ec77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50fb02b77f02a01c74754d163157ec77"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#a50fb02b77f02a01c74754d163157ec77">release</a> ()</td></tr>
-<tr class="memdesc:a50fb02b77f02a01c74754d163157ec77"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a50fb02b77f02a01c74754d163157ec77"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">upgrade_to_writer</a> ()</td></tr>
-<tr class="memdesc:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#ae0f28ecfbbc5f8b3024cd47048b72b5b">More...</a><br/></td></tr>
-<tr class="separator:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0af63035147a3d8422f8c8d7b8d2629"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0af63035147a3d8422f8c8d7b8d2629"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html#af0af63035147a3d8422f8c8d7b8d2629">downgrade_to_reader</a> ()</td></tr>
-<tr class="memdesc:af0af63035147a3d8422f8c8d7b8d2629"><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br/></td></tr>
-<tr class="separator:af0af63035147a3d8422f8c8d7b8d2629"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aab450b73dbeb738f88700ac54ce04ce9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab450b73dbeb738f88700ac54ce04ce9"></a>
+typedef <a class="el" href="a00177.html">zero_allocator</a>< U, <br class="typebreak"/>
+Allocator > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:aab450b73dbeb738f88700ac54ce04ce9"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped locking pattern. </p>
-<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a1ae3792726dcff8da1f2c5366fb2b754"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::queuing_rw_mutex::scoped_lock::scoped_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct lock that has not acquired a mutex. </p>
-<p>Equivalent to zero-initialization of *this. </p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ae0f28ecfbbc5f8b3024cd47048b72b5b"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Upgrade reader to become a writer. </p>
-<p>Returns whether the upgrade happened without releasing and re-acquiring the lock </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>queuing_rw_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00120.html b/doc/html/a00120.html
index 9eae4cb..ac7e65e 100644
--- a/doc/html/a00120.html
+++ b/doc/html/a00120.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::recursive_mutex::scoped_lock Class Reference</title>
+<title>tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,75 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">recursive_mutex</a></li><li class="navelem"><a class="el" href="a00120.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00178.html">zero_allocator< void, Allocator ></a></li><li class="navelem"><a class="el" href="a00120.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00276.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00317.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::recursive_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped locking pattern.  
- <a href="a00120.html#details">More...</a></p>
-
-<p><code>#include <recursive_mutex.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::recursive_mutex::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00120.png" usemap="#tbb::recursive_mutex::scoped_lock_map" alt=""/>
-  <map id="tbb::recursive_mutex::scoped_lock_map" name="tbb::recursive_mutex::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0a9962a3932cfbd0d12cb197494f951b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a9962a3932cfbd0d12cb197494f951b"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#a0a9962a3932cfbd0d12cb197494f951b">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a0a9962a3932cfbd0d12cb197494f951b"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a <a class="el" href="a00107.html">recursive_mutex</a>. <br/></td></tr>
-<tr class="separator:a0a9962a3932cfbd0d12cb197494f951b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab42cb541abb9647cac23b1db9a4db93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab42cb541abb9647cac23b1db9a4db93d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ab42cb541abb9647cac23b1db9a4db93d">scoped_lock</a> (<a class="el" href="a00107.html">recursive_mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:ab42cb541abb9647cac23b1db9a4db93d"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:ab42cb541abb9647cac23b1db9a4db93d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a90a966e19120aac99b36a3d6d04af1a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90a966e19120aac99b36a3d6d04af1a2"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#a90a966e19120aac99b36a3d6d04af1a2">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a90a966e19120aac99b36a3d6d04af1a2"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
-<tr class="separator:a90a966e19120aac99b36a3d6d04af1a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5450ce6a5813f395afaa434384c6539"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5450ce6a5813f395afaa434384c6539"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#ac5450ce6a5813f395afaa434384c6539">acquire</a> (<a class="el" href="a00107.html">recursive_mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:ac5450ce6a5813f395afaa434384c6539"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:ac5450ce6a5813f395afaa434384c6539"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a160bba506f4033980ddb69ab7a02c4fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a160bba506f4033980ddb69ab7a02c4fb"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#a160bba506f4033980ddb69ab7a02c4fb">try_acquire</a> (<a class="el" href="a00107.html">recursive_mutex</a> &<a class="el" href="a00081.html">mutex</a>)</td></tr>
-<tr class="memdesc:a160bba506f4033980ddb69ab7a02c4fb"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given <a class="el" href="a00107.html">recursive_mutex</a>. <br/></td></tr>
-<tr class="separator:a160bba506f4033980ddb69ab7a02c4fb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe3246ffc26bdb5a58f33ca513b6c0f"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">release</a> ()</td></tr>
-<tr class="memdesc:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a1bdb637fe5c9412323bf92846b40682e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bdb637fe5c9412323bf92846b40682e"></a>
-class </td><td class="memItemRight" valign="bottom"><b>recursive_mutex</b></td></tr>
-<tr class="separator:a1bdb637fe5c9412323bf92846b40682e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a6a001a156c058ee1194ba55ce534a43e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a001a156c058ee1194ba55ce534a43e"></a>
+typedef <a class="el" href="a00177.html">zero_allocator</a>< U, <br class="typebreak"/>
+Allocator > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a6a001a156c058ee1194ba55ce534a43e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped locking pattern. </p>
-<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>recursive_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00120.png b/doc/html/a00120.png
deleted file mode 100644
index 9d4ec98..0000000
Binary files a/doc/html/a00120.png and /dev/null differ
diff --git a/doc/html/a00121.html b/doc/html/a00121.html
index e3abd74..357d029 100644
--- a/doc/html/a00121.html
+++ b/doc/html/a00121.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::queuing_mutex::scoped_lock Class Reference</title>
+<title>tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,94 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00093.html">queuing_mutex</a></li><li class="navelem"><a class="el" href="a00121.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">cache_aligned_allocator</a></li><li class="navelem"><a class="el" href="a00121.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00272.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00271.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::queuing_mutex::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped locking pattern.  
- <a href="a00121.html#details">More...</a></p>
-
-<p><code>#include <queuing_mutex.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::queuing_mutex::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00121.png" usemap="#tbb::queuing_mutex::scoped_lock_map" alt=""/>
-  <map id="tbb::queuing_mutex::scoped_lock_map" name="tbb::queuing_mutex::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a0afe0107eb0aae613e726f67624d2fca"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#a0afe0107eb0aae613e726f67624d2fca">scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a0afe0107eb0aae613e726f67624d2fca"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a0afe0107eb0aae613e726f67624d2fca">More...</a><br/></td></tr>
-<tr class="separator:a0afe0107eb0aae613e726f67624d2fca"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa82d9da0dcfe5b21f1c08473f8223105"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa82d9da0dcfe5b21f1c08473f8223105"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#aa82d9da0dcfe5b21f1c08473f8223105">scoped_lock</a> (<a class="el" href="a00093.html">queuing_mutex</a> &m)</td></tr>
-<tr class="memdesc:aa82d9da0dcfe5b21f1c08473f8223105"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:aa82d9da0dcfe5b21f1c08473f8223105"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a469ec43836a8dd250ce0a22b02945630"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a469ec43836a8dd250ce0a22b02945630"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#a469ec43836a8dd250ce0a22b02945630">~scoped_lock</a> ()</td></tr>
-<tr class="memdesc:a469ec43836a8dd250ce0a22b02945630"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
-<tr class="separator:a469ec43836a8dd250ce0a22b02945630"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf8aa7ccd48d54dcb53665700a17d02a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf8aa7ccd48d54dcb53665700a17d02a"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#abf8aa7ccd48d54dcb53665700a17d02a">acquire</a> (<a class="el" href="a00093.html">queuing_mutex</a> &m)</td></tr>
-<tr class="memdesc:abf8aa7ccd48d54dcb53665700a17d02a"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
-<tr class="separator:abf8aa7ccd48d54dcb53665700a17d02a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab4800ba9e743cd91f152036a6689b0e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4800ba9e743cd91f152036a6689b0e9"></a>
-bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#ab4800ba9e743cd91f152036a6689b0e9">try_acquire</a> (<a class="el" href="a00093.html">queuing_mutex</a> &m)</td></tr>
-<tr class="memdesc:ab4800ba9e743cd91f152036a6689b0e9"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking) <br/></td></tr>
-<tr class="separator:ab4800ba9e743cd91f152036a6689b0e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa065e48b428b8d43e9bb931ba9e6f6c"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00121.html#aaa065e48b428b8d43e9bb931ba9e6f6c">release</a> ()</td></tr>
-<tr class="memdesc:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a1bb89d2224e26a9dfee7ef1adbac8b3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bb89d2224e26a9dfee7ef1adbac8b3d"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00032.html">cache_aligned_allocator</a>< U > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a1bb89d2224e26a9dfee7ef1adbac8b3d"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped locking pattern. </p>
-<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a0afe0107eb0aae613e726f67624d2fca"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::queuing_mutex::scoped_lock::scoped_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct lock that has not acquired a mutex. </p>
-<p>Equivalent to zero-initialization of *this. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>queuing_mutex.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>cache_aligned_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00122.html b/doc/html/a00122.html
index 8286c56..b45ce71 100644
--- a/doc/html/a00122.html
+++ b/doc/html/a00122.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::critical_section_v4::scoped_lock Class Reference</title>
+<title>tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,39 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00051.html">critical_section_v4</a></li><li class="navelem"><a class="el" href="a00122.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00093.html">memory_pool_allocator</a></li><li class="navelem"><a class="el" href="a00122.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00371.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00395.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::critical_section_v4::scoped_lock Class Reference</div>  </div>
+<div class="title">tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::internal::critical_section_v4::scoped_lock:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00122.png" usemap="#tbb::internal::critical_section_v4::scoped_lock_map" alt=""/>
-  <map id="tbb::internal::critical_section_v4::scoped_lock_map" name="tbb::internal::critical_section_v4::scoped_lock_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a3d2a294e9d790bdeba9ca3ff60e75d53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d2a294e9d790bdeba9ca3ff60e75d53"></a>
- </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00051.html">critical_section_v4</a> &lock_me)</td></tr>
-<tr class="separator:a3d2a294e9d790bdeba9ca3ff60e75d53"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a1e9f9c6f0163df16980598fcafca665b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e9f9c6f0163df16980598fcafca665b"></a>
+typedef <a class="el" href="a00093.html">memory_pool_allocator</a><br class="typebreak"/>
+< U, P > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a1e9f9c6f0163df16980598fcafca665b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>critical_section.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00122.png b/doc/html/a00122.png
deleted file mode 100644
index 15626cf..0000000
Binary files a/doc/html/a00122.png and /dev/null differ
diff --git a/doc/html/a00123.html b/doc/html/a00123.html
index 3d39c81..fe2bdc2 100644
--- a/doc/html/a00123.html
+++ b/doc/html/a00123.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference</title>
+<title>tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,64 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00123.html">scoped_lock_read</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00094.html">memory_pool_allocator< void, P ></a></li><li class="navelem"><a class="el" href="a00123.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00349.html">List of all members</a>  </div>
+<a href="#pub-types">Public Types</a> |
+<a href="a00397.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference</div>  </div>
+<div class="title">tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>The scoped lock pattern for read locks.  
- <a href="a00123.html#details">More...</a></p>
-
-<p><code>#include <reader_writer_lock.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock_read:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00123.png" usemap="#tbb::interface5::reader_writer_lock::scoped_lock_read_map" alt=""/>
-  <map id="tbb::interface5::reader_writer_lock::scoped_lock_read_map" name="tbb::interface5::reader_writer_lock::scoped_lock_read_map">
-</map>
- </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a9d3120a23016dabd4cc2683fa561ee5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d3120a23016dabd4cc2683fa561ee5a"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#a9d3120a23016dabd4cc2683fa561ee5a">scoped_lock_read</a> (<a class="el" href="a00095.html">reader_writer_lock</a> &<a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>)</td></tr>
-<tr class="memdesc:a9d3120a23016dabd4cc2683fa561ee5a"><td class="mdescLeft"> </td><td class="mdescRight">Construct with blocking attempt to acquire read lock on the passed-in lock. <br/></td></tr>
-<tr class="separator:a9d3120a23016dabd4cc2683fa561ee5a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf0e23fb4d3aeb6bde18d5d1236bd9d5"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">~scoped_lock_read</a> ()</td></tr>
-<tr class="memdesc:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="mdescLeft"> </td><td class="mdescRight">Destructor, releases the read lock. <br/></td></tr>
-<tr class="separator:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9eb8c7a64912a1c74ea76a01a20a1621"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9eb8c7a64912a1c74ea76a01a20a1621"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t s)</td></tr>
-<tr class="separator:a9eb8c7a64912a1c74ea76a01a20a1621"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1a6c15dfdbe1bc7a6648ed836ebd8de6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a6c15dfdbe1bc7a6648ed836ebd8de6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *p)</td></tr>
-<tr class="separator:a1a6c15dfdbe1bc7a6648ed836ebd8de6"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afb01bc2e211c782503ef5088003f120f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb01bc2e211c782503ef5088003f120f"></a>
-class </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock</b></td></tr>
-<tr class="separator:afb01bc2e211c782503ef5088003f120f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a4a2190850873b9f2bc63c28dfd336dd9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a2190850873b9f2bc63c28dfd336dd9"></a>
+typedef <a class="el" href="a00093.html">memory_pool_allocator</a><br class="typebreak"/>
+< U, P > </td><td class="memItemRight" valign="bottom"><b>other</b></td></tr>
+<tr class="separator:a4a2190850873b9f2bc63c28dfd336dd9"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The scoped lock pattern for read locks. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>reader_writer_lock.h</li>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="a00198.html">memory_pool.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00123.png b/doc/html/a00123.png
deleted file mode 100644
index 10066bd..0000000
Binary files a/doc/html/a00123.png and /dev/null differ
diff --git a/doc/html/a00124.html b/doc/html/a00124.html
index 28d324e..dbd50e3 100644
--- a/doc/html/a00124.html
+++ b/doc/html/a00124.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::sender< T > Class Template Reference</title>
+<title>tbb::flow::interface7::receiver< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,90 +33,145 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00124.html">sender</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00124.html">receiver</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00308.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00329.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::sender< T > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::flow::interface7::receiver< T > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Pure virtual template class that defines a sender of messages of type T.  
+<p>Pure virtual template class that defines a receiver of messages of type T.  
  <a href="a00124.html#details">More...</a></p>
 
 <p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::sender< T >:</div>
+Inheritance diagram for tbb::flow::interface7::receiver< T >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00124.png" usemap="#tbb::flow::interface7::sender< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::sender< T >_map" name="tbb::flow::interface7::sender< T >_map">
-<area href="a00025.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="0,56,352,80"/>
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="362,56,714,80"/>
-<area href="a00072.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="724,56,1076,80"/>
-<area href="a00086.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="1086,56,1438,80"/>
-<area href="a00091.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136"/>
-<area href="a00092.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="543,112,895,136"/>
-<area href="a00159.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="1086,112,1438,136"/>
-<area href="a00125.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="543,168,895,192"/>
+  <img src="a00124.png" usemap="#tbb::flow::interface7::receiver< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::receiver< T >_map" name="tbb::flow::interface7::receiver< T >_map">
+<area href="a00028.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="0,56,352,80"/>
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="362,56,714,80"/>
+<area href="a00091.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="724,56,1076,80"/>
+<area href="a00104.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="1086,56,1438,80"/>
+<area href="a00109.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136"/>
+<area href="a00110.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="543,112,895,136"/>
+<area href="a00176.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="1086,112,1438,136"/>
+<area href="a00143.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="543,168,895,192"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dac8f53a1f8373c1f3a874b9617e4ec"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a4dac8f53a1f8373c1f3a874b9617e4ec">register_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)=0</td></tr>
-<tr class="memdesc:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
-<tr class="separator:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1ae19f49e31c6ca94dcf14732eb7a64"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">remove_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)=0</td></tr>
-<tr class="memdesc:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
-<tr class="separator:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
-<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
-<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
-<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
-<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
-<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
-<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
-<tr class="separator:ad404d5218c7ae2556261ffa880cdf804"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c4f4848dd812c3c6607f3d73c07023c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c4f4848dd812c3c6607f3d73c07023c"></a>
+virtual <a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()=0</td></tr>
+<tr class="separator:a4c4f4848dd812c3c6607f3d73c07023c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6eb0f353746d17af003c9a87fb47a5a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6eb0f353746d17af003c9a87fb47a5a6"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)=0</td></tr>
+<tr class="separator:a6eb0f353746d17af003c9a87fb47a5a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a27b36a8e03fa43f74ebd796f73ecfbfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27b36a8e03fa43f74ebd796f73ecfbfc"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)=0</td></tr>
+<tr class="separator:a27b36a8e03fa43f74ebd796f73ecfbfc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a708474643ea80fe4a05bde83865e8f6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a708474643ea80fe4a05bde83865e8f6f"></a>
+virtual size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()=0</td></tr>
+<tr class="separator:a708474643ea80fe4a05bde83865e8f6f"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a3581a59d59476fffdc7caeea06c26371"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3581a59d59476fffdc7caeea06c26371"></a>
+virtual task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const T &t)=0</td></tr>
+<tr class="separator:a3581a59d59476fffdc7caeea06c26371"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00124.html#abaf9bf74ca5f2854d09f5f07337280eb">run_and_put_task</a></td></tr>
+<tr class="memdesc:abaf9bf74ca5f2854d09f5f07337280eb"><td class="mdescLeft"> </td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br/></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05ec930a348f7eed564236d00edbda24"></a>
+template<typename U > </td></tr>
+<tr class="memitem:a05ec930a348f7eed564236d00edbda24"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00124.html#a05ec930a348f7eed564236d00edbda24">limiter_node</a></td></tr>
+<tr class="memdesc:a05ec930a348f7eed564236d00edbda24"><td class="mdescLeft"> </td><td class="mdescRight">put receiver back in initial state <br/></td></tr>
+<tr class="separator:a05ec930a348f7eed564236d00edbda24"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplParams" colspan="2"><a class="anchor" id="a73cd25db4e6e9497940262f70f3ffc54"></a>
+template<typename TT , typename M > </td></tr>
+<tr class="memitem:a73cd25db4e6e9497940262f70f3ffc54"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::successor_cache</b></td></tr>
+<tr class="separator:a73cd25db4e6e9497940262f70f3ffc54"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><h3>template<typename T><br/>
-class tbb::flow::interface7::sender< T ></h3>
+class tbb::flow::interface7::receiver< T ></h3>
 
-<p>Pure virtual template class that defines a sender of messages of type T. </p>
+<p>Pure virtual template class that defines a receiver of messages of type T. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00124.png b/doc/html/a00124.png
index 4f10ba4..80adf90 100644
Binary files a/doc/html/a00124.png and b/doc/html/a00124.png differ
diff --git a/doc/html/a00125.html b/doc/html/a00125.html
index b27089d..8ac2caa 100644
--- a/doc/html/a00125.html
+++ b/doc/html/a00125.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::sequencer_node< T, A > Class Template Reference</title>
+<title>tbb::recursive_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,274 +33,127 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00125.html">sequencer_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00125.html">recursive_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="a00328.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00296.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::sequencer_node< T, A > Class Template Reference</div>  </div>
+<div class="title">tbb::recursive_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Forwards messages in sequence order.  
- <a href="a00125.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
+<p><code>#include <recursive_mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::sequencer_node< T, A >:</div>
+Inheritance diagram for tbb::recursive_mutex:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00125.png" usemap="#tbb::flow::interface7::sequencer_node< T, A >_map" alt=""/>
-  <map id="tbb::flow::interface7::sequencer_node< T, A >_map" name="tbb::flow::interface7::sequencer_node< T, A >_map">
-<area href="a00092.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="420,168,690,192"/>
-<area href="a00027.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="420,112,690,136"/>
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,270,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="560,56,830,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="840,56,1110,80"/>
+  <img src="a00125.png" usemap="#tbb::recursive_mutex_map" alt=""/>
+  <map id="tbb::recursive_mutex_map" name="tbb::recursive_mutex_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00139.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a5aa01d803952d6d83f58a57c6f5b86e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5aa01d803952d6d83f58a57c6f5b86e9"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a5aa01d803952d6d83f58a57c6f5b86e9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adcdbbd1ffdbe39bfc68310062c869e1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcdbbd1ffdbe39bfc68310062c869e1e"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:adcdbbd1ffdbe39bfc68310062c869e1e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af91d621025c821dd6d23b4aa587d8642"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91d621025c821dd6d23b4aa587d8642"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:af91d621025c821dd6d23b4aa587d8642"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeda5e9bf9d2c3101007a14332b7d578f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda5e9bf9d2c3101007a14332b7d578f"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:aeda5e9bf9d2c3101007a14332b7d578f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00092"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00092')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
-<tr class="memitem:a6c97cb00f09b2920b470f7f05bd164d1 inherit pub_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c97cb00f09b2920b470f7f05bd164d1"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a6c97cb00f09b2920b470f7f05bd164d1 inherit pub_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17ed7b6084d51f1d50164ed9b2eff680 inherit pub_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17ed7b6084d51f1d50164ed9b2eff680"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:a17ed7b6084d51f1d50164ed9b2eff680 inherit pub_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a768cdbf6ab5f38ec87e402ff2897ca38 inherit pub_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a768cdbf6ab5f38ec87e402ff2897ca38"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a768cdbf6ab5f38ec87e402ff2897ca38 inherit pub_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad5fc2cf414bebdf02246e356b21cf39a inherit pub_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5fc2cf414bebdf02246e356b21cf39a"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:ad5fc2cf414bebdf02246e356b21cf39a inherit pub_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00027')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
-<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d40334b0e26d5addfde5596e7f9aaec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d40334b0e26d5addfde5596e7f9aaec"></a>
+typedef LPCRITICAL_SECTION </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a></td></tr>
+<tr class="memdesc:a3d40334b0e26d5addfde5596e7f9aaec"><td class="mdescLeft"> </td><td class="mdescRight">Return native_handle. <br/></td></tr>
+<tr class="separator:a3d40334b0e26d5addfde5596e7f9aaec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59f90e65656fec5a07e375c6e7cd39f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59f90e65656fec5a07e375c6e7cd39f3"></a>
+typedef pthread_mutex_t * </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
+<tr class="separator:a59f90e65656fec5a07e375c6e7cd39f3"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0e8d3d486edc7f70c81b36ce9421c11a"></a>
-template<typename Sequencer > </td></tr>
-<tr class="memitem:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00125.html#a0e8d3d486edc7f70c81b36ce9421c11a">sequencer_node</a> (<a class="el" href="a00061.html">graph</a> &g, const Sequencer &s)</td></tr>
-<tr class="memdesc:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19cfdaf85098d0fcf0b1956dc913a7a2"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#a19cfdaf85098d0fcf0b1956dc913a7a2">sequencer_node</a> (const <a class="el" href="a00125.html">sequencer_node</a> &src)</td></tr>
-<tr class="memdesc:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01fd0321c7bd0f2112458cec2a636d7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01fd0321c7bd0f2112458cec2a636d7d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#a01fd0321c7bd0f2112458cec2a636d7d">~sequencer_node</a> ()</td></tr>
-<tr class="memdesc:a01fd0321c7bd0f2112458cec2a636d7d"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a01fd0321c7bd0f2112458cec2a636d7d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a76626e1f059d1ef1c5ddd3c798ef3ad6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76626e1f059d1ef1c5ddd3c798ef3ad6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a76626e1f059d1ef1c5ddd3c798ef3ad6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00092"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00092')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
-<tr class="memitem:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503d3fe4f98302549e36f74633de5716"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">queue_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00092"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa790bb6d3c8bef58d59235dfba1a1092"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a> (const <a class="el" href="a00092.html">queue_node</a> &src)</td></tr>
-<tr class="memdesc:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00092"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00027"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00027')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00027.html">buffer_node</a> &src)</td></tr>
-<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#ab458d9fa2c7d6f39ec62d4027c9da376">More...</a><br/></td></tr>
-<tr class="separator:ab458d9fa2c7d6f39ec62d4027c9da376 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > &r)</td></tr>
-<tr class="memdesc:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a70d3c1fb1af11deb9b92fa753fa8604c">More...</a><br/></td></tr>
-<tr class="separator:a70d3c1fb1af11deb9b92fa753fa8604c inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00027.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
-<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
-<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
-<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
-<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
-<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
-<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
-<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47eb6e7e7ffa5d35341125792b17236b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47eb6e7e7ffa5d35341125792b17236b"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#a47eb6e7e7ffa5d35341125792b17236b">recursive_mutex</a> ()</td></tr>
+<tr class="memdesc:a47eb6e7e7ffa5d35341125792b17236b"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired <a class="el" href="a00125.html">recursive_mutex</a>. <br/></td></tr>
+<tr class="separator:a47eb6e7e7ffa5d35341125792b17236b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adea997b45dc4a360f38d14bde9c991f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adea997b45dc4a360f38d14bde9c991f2"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#adea997b45dc4a360f38d14bde9c991f2">lock</a> ()</td></tr>
+<tr class="memdesc:adea997b45dc4a360f38d14bde9c991f2"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
+<tr class="separator:adea997b45dc4a360f38d14bde9c991f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8b181d9aaa95444145222cfe206e8094"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#a8b181d9aaa95444145222cfe206e8094">try_lock</a> ()</td></tr>
+<tr class="memdesc:a8b181d9aaa95444145222cfe206e8094"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a8b181d9aaa95444145222cfe206e8094">More...</a><br/></td></tr>
+<tr class="separator:a8b181d9aaa95444145222cfe206e8094"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af57e8d25e0e7614e98bcfa50bc9416c8"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html#af57e8d25e0e7614e98bcfa50bc9416c8">unlock</a> ()</td></tr>
+<tr class="memdesc:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:af57e8d25e0e7614e98bcfa50bc9416c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a050ca2a8d3b5c98f9d6c1252856436db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a050ca2a8d3b5c98f9d6c1252856436db"></a>
+<a class="el" href="a00125.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a> </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
+<tr class="separator:a050ca2a8d3b5c98f9d6c1252856436db"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a689a740c2b648ae4a1670af171a28543"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a689a740c2b648ae4a1670af171a28543"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae454d9879aff78200898fd37a9eb9d3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae454d9879aff78200898fd37a9eb9d3e"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ae454d9879aff78200898fd37a9eb9d3e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9bf4296222afd3309732039a96002c00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bf4296222afd3309732039a96002c00"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::<a class="el" href="a00028.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>sequencer_operation</b></td></tr>
-<tr class="separator:a9bf4296222afd3309732039a96002c00"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_types_a00092"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00092')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
-<tr class="memitem:a7e8acd469a6e7d7f843158104c3a829d inherit pro_types_a00092"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a7e8acd469a6e7d7f843158104c3a829d inherit pro_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef5a0b62dcb531fbca36f329415423c2 inherit pro_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef5a0b62dcb531fbca36f329415423c2"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:aef5a0b62dcb531fbca36f329415423c2 inherit pro_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57e3683d6bd811bb88c117310d1165ca inherit pro_types_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57e3683d6bd811bb88c117310d1165ca"></a>
-typedef <a class="el" href="a00027.html">buffer_node</a>< T, A ><br class="typebreak"/>
-::<a class="el" href="a00028.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>queue_operation</b></td></tr>
-<tr class="separator:a57e3683d6bd811bb88c117310d1165ca inherit pro_types_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_types_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00027')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
-  <b>reg_succ</b>, 
-<b>rem_succ</b>, 
-<b>req_item</b>, 
-<b>res_item</b>, 
-<br/>
-  <b>rel_res</b>, 
-<b>con_res</b>, 
-<b>put_item</b>, 
-<b>try_fwd_task</b>
-<br/>
- }</td></tr>
-<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
-<b>SUCCEEDED</b>, 
-<b>FAILED</b>
- }</td></tr>
-<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
-typedef <br class="typebreak"/>
-internal::aggregating_functor<br class="typebreak"/>
-< <a class="el" href="a00027.html">my_class</a>, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
-<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00027"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a668511b8520c41a342c038ba26ce70ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a668511b8520c41a342c038ba26ce70ff"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a668511b8520c41a342c038ba26ce70ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2817cf2c1a7875590548f49a834ca668"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2817cf2c1a7875590548f49a834ca668"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = true</td></tr>
+<tr class="separator:a2817cf2c1a7875590548f49a834ca668"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abcc4a830c307cb4d25311550a527fe4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcc4a830c307cb4d25311550a527fe4d"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+<tr class="separator:abcc4a830c307cb4d25311550a527fe4d"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_a00092"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00092')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
-<tr class="memitem:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ab7e37f537acb75175844bd34132b99"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="memdesc:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00092"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
-<tr class="separator:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad5d225b5305d2d8e1778d2ac65e473a8 inherit pro_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d225b5305d2d8e1778d2ac65e473a8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:ad5d225b5305d2d8e1778d2ac65e473a8 inherit pro_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae85f9ee123b22bb273116402372d2619 inherit pro_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85f9ee123b22bb273116402372d2619"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:ae85f9ee123b22bb273116402372d2619 inherit pro_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acc6c42585d3deef75dd3922b6fe9cc21 inherit pro_methods_a00092"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc6c42585d3deef75dd3922b6fe9cc21"></a>
-void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00028.html">queue_operation</a> *op)</td></tr>
-<tr class="separator:acc6c42585d3deef75dd3922b6fe9cc21 inherit pro_methods_a00092"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00027"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00027')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
-<a class="el" href="a00108.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
-<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
-internal::aggregator<br class="typebreak"/>
-< my_handler, <a class="el" href="a00028.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
-<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00027"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
-class tbb::flow::interface7::sequencer_node< T, A ></h3>
+<div class="textblock"><p>Mutex that allows recursive mutex acquisition. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a8b181d9aaa95444145222cfe206e8094"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::recursive_mutex::try_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Try acquiring lock (non-blocking) </p>
+<p>Return true if lock acquired; false otherwise. </p>
 
-<p>Forwards messages in sequence order. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<p>References <a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
+
+<p>Referenced by <a class="el" href="a00139.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock::try_acquire()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>recursive_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00125.png b/doc/html/a00125.png
index ba8cb4d..3157a91 100644
Binary files a/doc/html/a00125.png and b/doc/html/a00125.png differ
diff --git a/doc/html/a00126.html b/doc/html/a00126.html
index d79f736..3d7d907 100644
--- a/doc/html/a00126.html
+++ b/doc/html/a00126.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::source_node< Output > Class Template Reference</title>
+<title>tbb::flow::interface7::internal::round_robin_cache< T, M > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,179 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00126.html">source_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00126.html">round_robin_cache</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00315.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::source_node< Output > Class Template Reference</div>  </div>
+<div class="title">tbb::flow::interface7::internal::round_robin_cache< T, M > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>An executable node that acts as a source, i.e. it has no predecessors.  
- <a href="a00126.html#details">More...</a></p>
-
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::source_node< Output >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00126.png" usemap="#tbb::flow::interface7::source_node< Output >_map" alt=""/>
-  <map id="tbb::flow::interface7::source_node< Output >_map" name="tbb::flow::interface7::source_node< Output >_map">
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,262,80"/>
-<area href="a00124.html" alt="tbb::flow::interface7::sender< Output >" shape="rect" coords="272,56,534,80"/>
-</map>
- </div></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0308ffc2e5c24739cd85e769ec8a8f5f"></a>
-typedef Output </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a></td></tr>
-<tr class="memdesc:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="mdescLeft"> </td><td class="mdescRight">The type of the output message, which is complete. <br/></td></tr>
-<tr class="separator:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae354d135ba9aceb6ca41464fff027666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae354d135ba9aceb6ca41464fff027666"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< Output > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a></td></tr>
-<tr class="memdesc:ae354d135ba9aceb6ca41464fff027666"><td class="mdescLeft"> </td><td class="mdescRight">The type of successors of this node. <br/></td></tr>
-<tr class="separator:ae354d135ba9aceb6ca41464fff027666"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< Output ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef Output </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< Output > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5730a4677f5bfdf6ff6e45e31a249d37"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00126.html#a5730a4677f5bfdf6ff6e45e31a249d37">source_node</a> (<a class="el" href="a00061.html">graph</a> &g, Body body, bool is_active=true)</td></tr>
-<tr class="memdesc:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for a node with a successor. <br/></td></tr>
-<tr class="separator:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa365130109912d4cdd4534a0cb1d92bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa365130109912d4cdd4534a0cb1d92bd"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#aa365130109912d4cdd4534a0cb1d92bd">source_node</a> (const <a class="el" href="a00126.html">source_node</a> &src)</td></tr>
-<tr class="memdesc:aa365130109912d4cdd4534a0cb1d92bd"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
-<tr class="separator:aa365130109912d4cdd4534a0cb1d92bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5ce12e348e121b9f4dffda9d1035c490"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ce12e348e121b9f4dffda9d1035c490"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a5ce12e348e121b9f4dffda9d1035c490">~source_node</a> ()</td></tr>
-<tr class="memdesc:a5ce12e348e121b9f4dffda9d1035c490"><td class="mdescLeft"> </td><td class="mdescRight">The destructor. <br/></td></tr>
-<tr class="separator:a5ce12e348e121b9f4dffda9d1035c490"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee939f57a984576e945a71f476af3b81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee939f57a984576e945a71f476af3b81"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:aee939f57a984576e945a71f476af3b81"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abf1627cf40dc62fa456fbf23bbcd2efa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf1627cf40dc62fa456fbf23bbcd2efa"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#abf1627cf40dc62fa456fbf23bbcd2efa">register_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> > &r)</td></tr>
-<tr class="memdesc:abf1627cf40dc62fa456fbf23bbcd2efa"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
-<tr class="separator:abf1627cf40dc62fa456fbf23bbcd2efa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97c80882ddbdfdcf50761e606f231123"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97c80882ddbdfdcf50761e606f231123"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a97c80882ddbdfdcf50761e606f231123">remove_successor</a> (<a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> > &r)</td></tr>
-<tr class="memdesc:a97c80882ddbdfdcf50761e606f231123"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
-<tr class="separator:a97c80882ddbdfdcf50761e606f231123"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a038c6b2b406d496244617a2d6dc01581"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a038c6b2b406d496244617a2d6dc01581"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a038c6b2b406d496244617a2d6dc01581">try_get</a> (<a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> &v)</td></tr>
-<tr class="memdesc:a038c6b2b406d496244617a2d6dc01581"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the node. <br/></td></tr>
-<tr class="separator:a038c6b2b406d496244617a2d6dc01581"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aabb0d505d684d173b1a2c976bf0781a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabb0d505d684d173b1a2c976bf0781a6"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#aabb0d505d684d173b1a2c976bf0781a6">try_reserve</a> (<a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> &v)</td></tr>
-<tr class="memdesc:aabb0d505d684d173b1a2c976bf0781a6"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item. <br/></td></tr>
-<tr class="separator:aabb0d505d684d173b1a2c976bf0781a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a309c65a2d0208a1072f7e852198d461d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a309c65a2d0208a1072f7e852198d461d">try_release</a> ()</td></tr>
-<tr class="memdesc:a309c65a2d0208a1072f7e852198d461d"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#a309c65a2d0208a1072f7e852198d461d">More...</a><br/></td></tr>
-<tr class="separator:a309c65a2d0208a1072f7e852198d461d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad38a58c2f8f74f4c5cf72a2625ac26bf"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item. <br/></td></tr>
-<tr class="separator:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a67264c4564abefbf14c0d587c6fe2857"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67264c4564abefbf14c0d587c6fe2857"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a67264c4564abefbf14c0d587c6fe2857">activate</a> ()</td></tr>
-<tr class="memdesc:a67264c4564abefbf14c0d587c6fe2857"><td class="mdescLeft"> </td><td class="mdescRight">Activates a node that was created in the inactive state. <br/></td></tr>
-<tr class="separator:a67264c4564abefbf14c0d587c6fe2857"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44b05598b8e9636ed328b07dcfe40e09"><td class="memTemplParams" colspan="2"><a class="anchor" id="a44b05598b8e9636ed328b07dcfe40e09"></a>
-template<typename Body > </td></tr>
-<tr class="memitem:a44b05598b8e9636ed328b07dcfe40e09"><td class="memTemplItemLeft" align="right" valign="top">Body </td><td class="memTemplItemRight" valign="bottom"><b>copy_function_object</b> ()</td></tr>
-<tr class="separator:a44b05598b8e9636ed328b07dcfe40e09"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a1874ab9048214245bff7b26c0d9e814b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1874ab9048214245bff7b26c0d9e814b"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html#a1874ab9048214245bff7b26c0d9e814b">reset</a> ()</td></tr>
-<tr class="memdesc:a1874ab9048214245bff7b26c0d9e814b"><td class="mdescLeft"> </td><td class="mdescRight">resets the node to its initial state <br/></td></tr>
-<tr class="separator:a1874ab9048214245bff7b26c0d9e814b"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a5cb5b39a66ec0c37e20f8e17e7cfda9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cb5b39a66ec0c37e20f8e17e7cfda9a"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::source_task_bypass< source_node< output_type > ></b></td></tr>
-<tr class="separator:a5cb5b39a66ec0c37e20f8e17e7cfda9a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Output><br/>
-class tbb::flow::interface7::source_node< Output ></h3>
-
-<p>An executable node that acts as a source, i.e. it has no predecessors. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a309c65a2d0208a1072f7e852198d461d"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Output > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool <a class="el" href="a00126.html">tbb::flow::interface7::source_node</a>< Output >::try_release </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Release a reserved item. </p>
-<p>true = item has been released and so remains in sender, dest must request or reserve future items </p>
-
-<p>Reimplemented from <a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< Output ></a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00127.html b/doc/html/a00127.html
index afd6220..8ec62a0 100644
--- a/doc/html/a00127.html
+++ b/doc/html/a00127.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::spin_mutex Class Reference</title>
+<title>tbb::flow::interface7::run_and_put_task< R, B > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,139 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00127.html">spin_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00127.html">run_and_put_task</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="#friends">Friends</a> |
-<a href="a00281.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::spin_mutex Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::run_and_put_task< R, B > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>A lock that occupies a single byte.  
- <a href="a00127.html#details">More...</a></p>
-
-<p><code>#include <spin_mutex.h></code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00113.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a6c96196965bf7df426311d282ad3c378"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#a6c96196965bf7df426311d282ad3c378">spin_mutex</a> ()</td></tr>
-<tr class="memdesc:a6c96196965bf7df426311d282ad3c378"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired lock.  <a href="#a6c96196965bf7df426311d282ad3c378">More...</a><br/></td></tr>
-<tr class="separator:a6c96196965bf7df426311d282ad3c378"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ec484f4df6ec5595ec821ef20bd6cd7"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct</a> ()</td></tr>
-<tr class="memdesc:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="mdescLeft"> </td><td class="mdescRight">Internal constructor with ITT instrumentation. <br/></td></tr>
-<tr class="separator:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8957e40b0781192419d01d28e5205ec4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8957e40b0781192419d01d28e5205ec4"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#a8957e40b0781192419d01d28e5205ec4">lock</a> ()</td></tr>
-<tr class="memdesc:a8957e40b0781192419d01d28e5205ec4"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
-<tr class="separator:a8957e40b0781192419d01d28e5205ec4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a003ffb196d22bf22ca22142338b7eeab"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#a003ffb196d22bf22ca22142338b7eeab">try_lock</a> ()</td></tr>
-<tr class="memdesc:a003ffb196d22bf22ca22142338b7eeab"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a003ffb196d22bf22ca22142338b7eeab">More...</a><br/></td></tr>
-<tr class="separator:a003ffb196d22bf22ca22142338b7eeab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfcf8fe840aa73c08c2cadd570fd48fd"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html#adfcf8fe840aa73c08c2cadd570fd48fd">unlock</a> ()</td></tr>
-<tr class="memdesc:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a7c3354db4bd5cc81bccee9f249abb9e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c3354db4bd5cc81bccee9f249abb9e8"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
-<tr class="separator:a7c3354db4bd5cc81bccee9f249abb9e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0cae048c5dc5deffe75464e4a3a2b752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cae048c5dc5deffe75464e4a3a2b752"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:a0cae048c5dc5deffe75464e4a3a2b752"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad00ec9a97f34c9160300950b36deac3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00ec9a97f34c9160300950b36deac3e"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-<tr class="separator:ad00ec9a97f34c9160300950b36deac3e"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
-class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
-<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A lock that occupies a single byte. </p>
-<p>A <a class="el" href="a00127.html" title="A lock that occupies a single byte. ">spin_mutex</a> is a spin mutex that fits in a single byte. It should be used only for locking short critical sections (typically less than 20 instructions) when fairness is not an issue. If zero-initialized, the mutex is considered unheld. </p>
-</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a6c96196965bf7df426311d282ad3c378"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::spin_mutex::spin_mutex </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct unacquired lock. </p>
-<p>Equivalent to zero-initialization of *this. </p>
-
-<p>References <a class="el" href="a00127.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct()</a>.</p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a003ffb196d22bf22ca22142338b7eeab"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::spin_mutex::try_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Try acquiring lock (non-blocking) </p>
-<p>Return true if lock acquired; false otherwise. </p>
-
-<p>References <a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>spin_mutex.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00128.html b/doc/html/a00128.html
index 599407f..5317365 100644
--- a/doc/html/a00128.html
+++ b/doc/html/a00128.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::spin_rw_mutex_v3 Class Reference</title>
+<title>tbb::interface6::runtime_loader Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,193 +33,286 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00128.html">spin_rw_mutex_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00128.html">runtime_loader</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="#pro-types">Protected Types</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="#pro-static-attribs">Static Protected Attributes</a> |
-<a href="a00283.html">List of all members</a>  </div>
+<a href="a00402.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::spin_rw_mutex_v3 Class Reference<div class="ingroups"><a class="el" href="a00237.html">Synchronization</a></div></div>  </div>
+<div class="title">tbb::interface6::runtime_loader Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  
+<p>Load TBB at runtime.  
  <a href="a00128.html#details">More...</a></p>
 
-<p><code>#include <spin_rw_mutex.h></code></p>
+<p><code>#include <runtime_loader.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::interface6::runtime_loader:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00128.png" usemap="#tbb::interface6::runtime_loader_map" alt=""/>
+  <map id="tbb::interface6::runtime_loader_map" name="tbb::interface6::runtime_loader_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00114.html">scoped_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00114.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ab85c82f9c0ccd91905f2795a79ac1295"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> { <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">em_status</a>, 
+<a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">em_throw</a>, 
+<a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a>
+ }</td></tr>
+<tr class="memdesc:ab85c82f9c0ccd91905f2795a79ac1295"><td class="mdescLeft"> </td><td class="mdescRight">Error mode constants.  <a href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">More...</a><br/></td></tr>
+<tr class="separator:ab85c82f9c0ccd91905f2795a79ac1295"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a264674772d9f4240d89aa9d939c1eef7"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> { <br/>
+  <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">ec_ok</a>, 
+<a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">ec_bad_call</a>, 
+<a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">ec_bad_arg</a>, 
+<a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">ec_bad_lib</a>, 
+<br/>
+  <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">ec_bad_ver</a>, 
+<a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">ec_no_lib</a>
+<br/>
+ }</td></tr>
+<tr class="memdesc:a264674772d9f4240d89aa9d939c1eef7"><td class="mdescLeft"> </td><td class="mdescRight">Error codes.  <a href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">More...</a><br/></td></tr>
+<tr class="separator:a264674772d9f4240d89aa9d939c1eef7"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad30fc1ffa0a2b8134e177e02c5821d7f"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ad30fc1ffa0a2b8134e177e02c5821d7f">spin_rw_mutex_v3</a> ()</td></tr>
-<tr class="memdesc:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
-<tr class="separator:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc7cf2e4b14d3a2a591a3552d74ba99d"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#acc7cf2e4b14d3a2a591a3552d74ba99d">~spin_rw_mutex_v3</a> ()</td></tr>
-<tr class="memdesc:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. state is zero. <br/></td></tr>
-<tr class="separator:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a51e207646300a4c242bb4aaa4e04e9b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51e207646300a4c242bb4aaa4e04e9b8"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#a51e207646300a4c242bb4aaa4e04e9b8">lock</a> ()</td></tr>
-<tr class="memdesc:a51e207646300a4c242bb4aaa4e04e9b8"><td class="mdescLeft"> </td><td class="mdescRight">Acquire writer lock. <br/></td></tr>
-<tr class="separator:a51e207646300a4c242bb4aaa4e04e9b8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ab6ec20b1ec43a49c8c2908984e35b5e8">try_lock</a> ()</td></tr>
-<tr class="memdesc:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring writer lock (non-blocking)  <a href="#ab6ec20b1ec43a49c8c2908984e35b5e8">More...</a><br/></td></tr>
-<tr class="separator:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab04321ed2cdf12ac5825c54591028fc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab04321ed2cdf12ac5825c54591028fc0"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ab04321ed2cdf12ac5825c54591028fc0">unlock</a> ()</td></tr>
-<tr class="memdesc:ab04321ed2cdf12ac5825c54591028fc0"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
-<tr class="separator:ab04321ed2cdf12ac5825c54591028fc0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0e3bb644e9021d0f80ee36b03f228e4"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#aa0e3bb644e9021d0f80ee36b03f228e4">lock_read</a> ()</td></tr>
-<tr class="memdesc:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="mdescLeft"> </td><td class="mdescRight">Acquire reader lock. <br/></td></tr>
-<tr class="separator:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac932f65b0b66320688e7957ce9c3e2c1"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ac932f65b0b66320688e7957ce9c3e2c1">try_lock_read</a> ()</td></tr>
-<tr class="memdesc:ac932f65b0b66320688e7957ce9c3e2c1"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring reader lock (non-blocking)  <a href="#ac932f65b0b66320688e7957ce9c3e2c1">More...</a><br/></td></tr>
-<tr class="separator:ac932f65b0b66320688e7957ce9c3e2c1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:addc8223faacc1bb2cc8626b609ab2c49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addc8223faacc1bb2cc8626b609ab2c49"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
-<tr class="separator:addc8223faacc1bb2cc8626b609ab2c49"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
-<tr class="separator:a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:affd403f6e3822589e985a2c23505fbd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affd403f6e3822589e985a2c23505fbd1"></a>
-static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
-<tr class="separator:affd403f6e3822589e985a2c23505fbd1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
-Protected Types</h2></td></tr>
-<tr class="memitem:a27adc7d791dfaa4a60638313b9d1c1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27adc7d791dfaa4a60638313b9d1c1f4"></a>
-typedef intptr_t </td><td class="memItemRight" valign="bottom"><b>state_t</b></td></tr>
-<tr class="separator:a27adc7d791dfaa4a60638313b9d1c1f4"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:aa28625051072472ccd8a2b19405d6fb3"><td class="memItemLeft" align="right" valign="top">state_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#aa28625051072472ccd8a2b19405d6fb3">state</a></td></tr>
-<tr class="memdesc:aa28625051072472ccd8a2b19405d6fb3"><td class="mdescLeft"> </td><td class="mdescRight">State of lock.  <a href="#aa28625051072472ccd8a2b19405d6fb3">More...</a><br/></td></tr>
-<tr class="separator:aa28625051072472ccd8a2b19405d6fb3"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
-Static Protected Attributes</h2></td></tr>
-<tr class="memitem:aaeec59dde09fe92be196ecddb480777b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeec59dde09fe92be196ecddb480777b"></a>
-static const state_t </td><td class="memItemRight" valign="bottom"><b>WRITER</b> = 1</td></tr>
-<tr class="separator:aaeec59dde09fe92be196ecddb480777b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5b321914828e5e21baf24d58f32c66d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b321914828e5e21baf24d58f32c66d5"></a>
-static const state_t </td><td class="memItemRight" valign="bottom"><b>WRITER_PENDING</b> = 2</td></tr>
-<tr class="separator:a5b321914828e5e21baf24d58f32c66d5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6cc93cdcf4ad43f6bf8b0f76cde66f9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc93cdcf4ad43f6bf8b0f76cde66f9e"></a>
-static const state_t </td><td class="memItemRight" valign="bottom"><b>READERS</b> = ~(WRITER | WRITER_PENDING)</td></tr>
-<tr class="separator:a6cc93cdcf4ad43f6bf8b0f76cde66f9e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1386a2fa5979432e4a58b94e68db23f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1386a2fa5979432e4a58b94e68db23f"></a>
-static const state_t </td><td class="memItemRight" valign="bottom"><b>ONE_READER</b> = 4</td></tr>
-<tr class="separator:af1386a2fa5979432e4a58b94e68db23f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a811c72bd7e5ad6a3a9161ee05e298c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a811c72bd7e5ad6a3a9161ee05e298c"></a>
-static const state_t </td><td class="memItemRight" valign="bottom"><b>BUSY</b> = WRITER | READERS</td></tr>
-<tr class="separator:a6a811c72bd7e5ad6a3a9161ee05e298c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2f87eaf99564c705aa140f2eb8848eaa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f87eaf99564c705aa140f2eb8848eaa"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#a2f87eaf99564c705aa140f2eb8848eaa">runtime_loader</a> (<a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> mode=<a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a>)</td></tr>
+<tr class="memdesc:a2f87eaf99564c705aa140f2eb8848eaa"><td class="mdescLeft"> </td><td class="mdescRight">Initialize object but do not load TBB. <br/></td></tr>
+<tr class="separator:a2f87eaf99564c705aa140f2eb8848eaa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3e0932074d2f3ad04605e7e5da88c561"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#a3e0932074d2f3ad04605e7e5da88c561">runtime_loader</a> (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX, <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> mode=<a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a42 [...]
+<tr class="memdesc:a3e0932074d2f3ad04605e7e5da88c561"><td class="mdescLeft"> </td><td class="mdescRight">Initialize object and load TBB.  <a href="#a3e0932074d2f3ad04605e7e5da88c561">More...</a><br/></td></tr>
+<tr class="separator:a3e0932074d2f3ad04605e7e5da88c561"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa3b96f53e165e3d692c3c36292ba0737"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3b96f53e165e3d692c3c36292ba0737"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#aa3b96f53e165e3d692c3c36292ba0737">~runtime_loader</a> ()</td></tr>
+<tr class="memdesc:aa3b96f53e165e3d692c3c36292ba0737"><td class="mdescLeft"> </td><td class="mdescRight">Destroy object. <br/></td></tr>
+<tr class="separator:aa3b96f53e165e3d692c3c36292ba0737"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae2949e9adcac56a2cb9864437be8e22e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e">load</a> (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX)</td></tr>
+<tr class="memdesc:ae2949e9adcac56a2cb9864437be8e22e"><td class="mdescLeft"> </td><td class="mdescRight">Load TBB.  <a href="#ae2949e9adcac56a2cb9864437be8e22e">More...</a><br/></td></tr>
+<tr class="separator:ae2949e9adcac56a2cb9864437be8e22e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html#a85bf9ee021a2076a3ac7cfd70aae7345">status</a> ()</td></tr>
+<tr class="memdesc:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="mdescLeft"> </td><td class="mdescRight">Report status.  <a href="#a85bf9ee021a2076a3ac7cfd70aae7345">More...</a><br/></td></tr>
+<tr class="separator:a85bf9ee021a2076a3ac7cfd70aae7345"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Fast, unfair, spinning reader-writer lock with backoff and writer-preference. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ab6ec20b1ec43a49c8c2908984e35b5e8"></a>
+<div class="textblock"><p>Load TBB at runtime. </p>
+<p><b>Usage:</b> </p>
+<p>In source code:</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include "tbb/runtime_loader.h"</span></div>
+<div class="line"></div>
+<div class="line"><span class="keywordtype">char</span> <span class="keyword">const</span> * path[] = { <span class="stringliteral">"<install dir>/lib/ia32"</span>, NULL };</div>
+<div class="line">tbb::runtime_loader loader( path );</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// Now use TBB.</span></div>
+</div><!-- fragment --><p>Link with <code>tbbproxy.lib</code> (or <code>libtbbproxy.a</code>) instead of <code>tbb.lib</code> (<code>libtbb.dylib</code>, <code>libtbb.so</code>).</p>
+<p>TBB library will be loaded at runtime from <code></code> <install dir>="">/lib/ia32 directory.</p>
+<p><b>Attention:</b> </p>
+<p>All <code><a class="el" href="a00128.html" title="Load TBB at runtime. ">runtime_loader</a></code> objects (in the same module, i.e. exe or dll) share some global state. The most noticeable piece of global state is loaded TBB library. There are some implications: </p>
+<pre class="fragment">-   Only one TBB library can be loaded per module.
+
+-   If one object has already loaded TBB library, another object will not load TBB.
+    If the loaded TBB library is suitable for the second object, both will use TBB
+    cooperatively, otherwise the second object will report an error.
+
+-   \c runtime_loader objects will not work (correctly) in parallel due to absence of
+    synchronization.</pre> </div><h2 class="groupheader">Member Enumeration Documentation</h2>
+<a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7"></a>
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool tbb::spin_rw_mutex_v3::try_lock </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
+          <td class="memname">enum <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader::error_code</a></td>
         </tr>
       </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
+</div><div class="memdoc">
+
+<p>Error codes. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434"></a>ec_ok</em> </td><td class="fielddoc">
+<p>No errors. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01"></a>ec_bad_call</em> </td><td class="fielddoc">
+<p>Invalid function call (e. g. <a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e" title="Load TBB. ">load()</a> called when TBB is already loaded). </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3"></a>ec_bad_arg</em> </td><td class="fielddoc">
+<p>Invalid argument passed. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732"></a>ec_bad_lib</em> </td><td class="fielddoc">
+<p>Invalid library found (e. g. <code>TBB_runtime_version</code> symbol not found). </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064"></a>ec_bad_ver</em> </td><td class="fielddoc">
+<p>TBB found but version is not suitable. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd"></a>ec_no_lib</em> </td><td class="fielddoc">
+<p>No suitable TBB library found. </p>
+</td></tr>
 </table>
+
+</div>
+</div>
+<a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader::error_mode</a></td>
+        </tr>
+      </table>
 </div><div class="memdoc">
 
-<p>Try acquiring writer lock (non-blocking) </p>
-<p>Return true if lock acquired; false otherwise. </p>
+<p>Error mode constants. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36"></a>em_status</em> </td><td class="fielddoc">
+<p>Save status of operation and continue. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c"></a>em_throw</em> </td><td class="fielddoc">
+<p>Throw an exception of tbb::runtime_loader::error_code type. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35"></a>em_abort</em> </td><td class="fielddoc">
+<p>Print message to <code>stderr</code> and call <code>abort()</code>. </p>
+</td></tr>
+</table>
 
 </div>
 </div>
-<a class="anchor" id="ac932f65b0b66320688e7957ce9c3e2c1"></a>
+<h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a3e0932074d2f3ad04605e7e5da88c561"></a>
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">bool tbb::spin_rw_mutex_v3::try_lock_read </td>
+          <td class="memname">tbb::interface6::runtime_loader::runtime_loader </td>
           <td>(</td>
-          <td class="paramname">)</td><td></td>
+          <td class="paramtype">char const * </td>
+          <td class="paramname"><em>path</em>[], </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>min_ver</em> = <code>TBB_INTERFACE_VERSION</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>max_ver</em> = <code>INT_MAX</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
           <td></td>
+          <td class="paramtype"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> </td>
+          <td class="paramname"><em>mode</em> = <code><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a></code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
 </div><div class="memdoc">
 
-<p>Try acquiring reader lock (non-blocking) </p>
-<p>Return true if reader lock acquired; false otherwise. </p>
+<p>Initialize object and load TBB. </p>
+<p>See <a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e" title="Load TBB. ">load()</a> for details.</p>
+<p>If error mode is <code>em_status</code>, call <a class="el" href="a00128.html#a85bf9ee021a2076a3ac7cfd70aae7345" title="Report status. ">status()</a> to check whether TBB was loaded or not. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>List of directories to search TBB in. </td></tr>
+    <tr><td class="paramname">min_ver</td><td>Minimal suitable version of TBB. </td></tr>
+    <tr><td class="paramname">max_ver</td><td>Maximal suitable version of TBB. </td></tr>
+    <tr><td class="paramname">mode</td><td>Error mode for this object. </td></tr>
+  </table>
+  </dd>
+</dl>
 
 </div>
 </div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="aa28625051072472ccd8a2b19405d6fb3"></a>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ae2949e9adcac56a2cb9864437be8e22e"></a>
 <div class="memitem">
 <div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">state_t tbb::spin_rw_mutex_v3::state</td>
+          <td class="memname"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> tbb::interface6::runtime_loader::load </td>
+          <td>(</td>
+          <td class="paramtype">char const * </td>
+          <td class="paramname"><em>path</em>[], </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>min_ver</em> = <code>TBB_INTERFACE_VERSION</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>max_ver</em> = <code>INT_MAX</code> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
-  </tr>
-</table>
 </div><div class="memdoc">
 
-<p>State of lock. </p>
-<p>Bit 0 = writer is holding lock Bit 1 = request by a writer to acquire lock (hint to readers to wait) Bit 2..N = number of readers holding lock </p>
+<p>Load TBB. </p>
+<p>The method searches the directories specified in <code>path</code>[] array for the TBB library. When the library is found, it is loaded and its version is checked. If the version is not suitable, the library is unloaded, and the search continues.</p>
+<p><b>Note:</b> </p>
+<p>For security reasons, avoid using relative directory names. For example, never load TBB from current (<code>"."</code>), parent (<code>".."</code>) or any other relative directory (like <code>"lib"</code> ). Use only absolute directory names (e. g. "/usr/local/lib").</p>
+<p>For the same security reasons, avoid using system default directories (<code>""</code>) on Windows. (See <a href="http://www.microsoft.com/technet/security/advisory/2269637.mspx">http://www.microsoft.com/technet/security/advisory/2269637.mspx</a> for details.)</p>
+<p>Neglecting these rules may cause your program to execute 3-rd party malicious code.</p>
+<p><b>Errors:</b> </p>
+<ul>
+<li><code>ec_bad_call</code> - TBB already loaded by this object.</li>
+<li><code>ec_bad_arg</code> - <code>min_ver</code> and/or <code>max_ver</code> negative or zero, or <code>min_ver</code> > <code>max_ver</code>.</li>
+<li><code>ec_bad_ver</code> - TBB of unsuitable version already loaded by another object.</li>
+<li><code>ec_no_lib</code> - No suitable library found. </li>
+</ul>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>List of directories to search TBB in. </td></tr>
+    <tr><td class="paramname">min_ver</td><td>Minimal suitable version of TBB. </td></tr>
+    <tr><td class="paramname">max_ver</td><td>Maximal suitable version of TBB. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a85bf9ee021a2076a3ac7cfd70aae7345"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> tbb::interface6::runtime_loader::status </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
 
-<p>Referenced by <a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock::release()</a>, and <a class="el" href="a00128.html#ab04321ed2cdf12ac5825c54591028fc0">unlock()</a>.</p>
+<p>Report status. </p>
+<p>If error mode is <code>em_status</code>, the function returns status of the last operation. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>spin_rw_mutex.h</li>
+<li>runtime_loader.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00110.png b/doc/html/a00128.png
similarity index 100%
copy from doc/html/a00110.png
copy to doc/html/a00128.png
diff --git a/doc/html/a00129.html b/doc/html/a00129.html
index fa3beb0..da60ff5 100644
--- a/doc/html/a00129.html
+++ b/doc/html/a00129.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::split Class Reference</title>
+<title>tbb::scalable_allocator< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,29 +33,110 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00129.html">split</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00129.html">scalable_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00298.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::split Class Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::scalable_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Dummy type that distinguishes splitting constructor from copy constructor.  
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
  <a href="a00129.html#details">More...</a></p>
 
-<p><code>#include <tbb_stddef.h></code></p>
+<p><code>#include <scalable_allocator.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aa9171ca5fc6dc349ae95a28cd16b504c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9171ca5fc6dc349ae95a28cd16b504c"></a>
+typedef <br class="typebreak"/>
+internal::allocator_type< T ><br class="typebreak"/>
+::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:aa9171ca5fc6dc349ae95a28cd16b504c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af5352e44d6bcde3d0bdf8368acd3c84c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5352e44d6bcde3d0bdf8368acd3c84c"></a>
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:af5352e44d6bcde3d0bdf8368acd3c84c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9722dbf8015bed6319bc16996d45546f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9722dbf8015bed6319bc16996d45546f"></a>
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a9722dbf8015bed6319bc16996d45546f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3c8f5f07f47672c0c97fab799807728"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3c8f5f07f47672c0c97fab799807728"></a>
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:af3c8f5f07f47672c0c97fab799807728"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4de1dd8be241f945d464cbef0dd6c5b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4de1dd8be241f945d464cbef0dd6c5b8"></a>
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a4de1dd8be241f945d464cbef0dd6c5b8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2376f6bacc6dcb3aa37f27a78681e89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2376f6bacc6dcb3aa37f27a78681e89"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac2376f6bacc6dcb3aa37f27a78681e89"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a751a0d5a410244226f62914cbde260ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a751a0d5a410244226f62914cbde260ff"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:a751a0d5a410244226f62914cbde260ff"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a276a735dca4ba6abbe3b251d4c003ea7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a276a735dca4ba6abbe3b251d4c003ea7"></a>
+ </td><td class="memItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00129.html">scalable_allocator</a> &)  throw ()</td></tr>
+<tr class="separator:a276a735dca4ba6abbe3b251d4c003ea7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae680426a4dfbd51a7447d12354679c6e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae680426a4dfbd51a7447d12354679c6e"></a>
+template<typename U > </td></tr>
+<tr class="memitem:ae680426a4dfbd51a7447d12354679c6e"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>scalable_allocator</b> (const <a class="el" href="a00129.html">scalable_allocator</a>< U > &)  throw ()</td></tr>
+<tr class="separator:ae680426a4dfbd51a7447d12354679c6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a647d824ce9396c3c4cb4450b0c2b7b3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a647d824ce9396c3c4cb4450b0c2b7b3c"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+<tr class="separator:a647d824ce9396c3c4cb4450b0c2b7b3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab30cf9e0d0bef7ba8567edc6efb045e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab30cf9e0d0bef7ba8567edc6efb045e4"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+<tr class="separator:ab30cf9e0d0bef7ba8567edc6efb045e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf24945c12dc0586dfb1f8638daf7838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf24945c12dc0586dfb1f8638daf7838"></a>
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html#acf24945c12dc0586dfb1f8638daf7838">allocate</a> (size_type n, const void *=0)</td></tr>
+<tr class="memdesc:acf24945c12dc0586dfb1f8638daf7838"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
+<tr class="separator:acf24945c12dc0586dfb1f8638daf7838"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0632b19f25e5d5f86f18b3101925f488"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0632b19f25e5d5f86f18b3101925f488"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html#a0632b19f25e5d5f86f18b3101925f488">deallocate</a> (pointer p, size_type)</td></tr>
+<tr class="memdesc:a0632b19f25e5d5f86f18b3101925f488"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
+<tr class="separator:a0632b19f25e5d5f86f18b3101925f488"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afaa85d739b466699cf669116fd10d175"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afaa85d739b466699cf669116fd10d175"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html#afaa85d739b466699cf669116fd10d175">max_size</a> () const   throw ()</td></tr>
+<tr class="memdesc:afaa85d739b466699cf669116fd10d175"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
+<tr class="separator:afaa85d739b466699cf669116fd10d175"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0502de23b9ed7c1611703fe725cb4cd3"></a>
+template<typename U , typename... Args> </td></tr>
+<tr class="memitem:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>construct</b> (U *p, Args &&...args)</td></tr>
+<tr class="separator:a0502de23b9ed7c1611703fe725cb4cd3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aecd5a33086abab6860105ef9856e2786"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aecd5a33086abab6860105ef9856e2786"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, value_type &&value)</td></tr>
+<tr class="separator:aecd5a33086abab6860105ef9856e2786"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13115cd358c7be350dbeb5271181ae26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13115cd358c7be350dbeb5271181ae26"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
+<tr class="separator:a13115cd358c7be350dbeb5271181ae26"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac79ddb098880d8bde6097ac11f641188"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac79ddb098880d8bde6097ac11f641188"></a>
+void </td><td class="memItemRight" valign="bottom"><b>destroy</b> (pointer p)</td></tr>
+<tr class="separator:ac79ddb098880d8bde6097ac11f641188"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Dummy type that distinguishes splitting constructor from copy constructor. </p>
-<p>See description of parallel_for and parallel_reduce for example usages. </p>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::scalable_allocator< T ></h3>
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
+<p>The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_stddef.h</li>
+<li><a class="el" href="a00217.html">scalable_allocator.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00130.html b/doc/html/a00130.html
index 65a7e08..eed82df 100644
--- a/doc/html/a00130.html
+++ b/doc/html/a00130.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::split_node< TupleType, Allocator > Class Template Reference</title>
+<title>tbb::scalable_allocator< void > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,114 +33,53 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00130.html">split_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00130.html">scalable_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00320.html">List of all members</a>  </div>
+<a href="a00300.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::split_node< TupleType, Allocator > Class Template Reference</div>  </div>
+<div class="title">tbb::scalable_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p><a class="el" href="a00130.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its  
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
  <a href="a00130.html#details">More...</a></p>
 
-<p><code>#include <flow_graph.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::split_node< TupleType, Allocator >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00130.png" usemap="#tbb::flow::interface7::split_node< TupleType, Allocator >_map" alt=""/>
-  <map id="tbb::flow::interface7::split_node< TupleType, Allocator >_map" name="tbb::flow::interface7::split_node< TupleType, Allocator >_map">
-<area href="a00079.html" alt="tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator >" shape="rect" coords="500,112,1490,136"/>
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,990,80"/>
-</map>
- </div></div>
+<p><code>#include <scalable_allocator.h></code></p>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a7b30b85d93e3a6cc74eb58a9eccc77e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b30b85d93e3a6cc74eb58a9eccc77e8"></a>
-typedef <br class="typebreak"/>
-base_type::output_ports_type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
-<tr class="separator:a7b30b85d93e3a6cc74eb58a9eccc77e8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab385733461335acd814fdc501dd1ab90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab385733461335acd814fdc501dd1ab90"></a>
-typedef TupleType </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:ab385733461335acd814fdc501dd1ab90"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abd56f31b5208a5dff21e5ecba2c2902f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd56f31b5208a5dff21e5ecba2c2902f"></a>
-typedef Allocator </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
-<tr class="separator:abd56f31b5208a5dff21e5ecba2c2902f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00079"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00079')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
-<tr class="memitem:a3b656d3448ae8bf5acc58b07c072b3ab inherit pub_types_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b656d3448ae8bf5acc58b07c072b3ab"></a>
-typedef TupleType </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a3b656d3448ae8bf5acc58b07c072b3ab inherit pub_types_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a644a4f1eb5056ebae1f0032318b3e99d inherit pub_types_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a644a4f1eb5056ebae1f0032318b3e99d"></a>
-typedef <br class="typebreak"/>
-internal::wrap_tuple_elements<br class="typebreak"/>
-< N, <br class="typebreak"/>
-internal::multifunction_output, <br class="typebreak"/>
-TupleType >::type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
-<tr class="separator:a644a4f1eb5056ebae1f0032318b3e99d inherit pub_types_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a61bb1309f07046df50f2c9ab878c81d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61bb1309f07046df50f2c9ab878c81d4"></a>
- </td><td class="memItemRight" valign="bottom"><b>split_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a61bb1309f07046df50f2c9ab878c81d4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae9fad205fec699a225969f0391ea133d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9fad205fec699a225969f0391ea133d"></a>
- </td><td class="memItemRight" valign="bottom"><b>split_node</b> (const <a class="el" href="a00130.html">split_node</a> &other)</td></tr>
-<tr class="separator:ae9fad205fec699a225969f0391ea133d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1550198e198fc858c5619ce1dbd8411a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1550198e198fc858c5619ce1dbd8411a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:a1550198e198fc858c5619ce1dbd8411a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00079"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00079')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
-<tr class="memitem:a7be5663f3c71c628215860fb97302a5a inherit pub_methods_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7be5663f3c71c628215860fb97302a5a"></a>
- </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (<a class="el" href="a00061.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
-<tr class="separator:a7be5663f3c71c628215860fb97302a5a inherit pub_methods_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a09d3b9e53a7e2fa3c07a0b7a794556ea inherit pub_methods_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09d3b9e53a7e2fa3c07a0b7a794556ea"></a>
- </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (const <a class="el" href="a00079.html">multifunction_node</a> &other)</td></tr>
-<tr class="separator:a09d3b9e53a7e2fa3c07a0b7a794556ea inherit pub_methods_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcc4529e5533d36b6341c83a09502ee9 inherit pub_methods_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcc4529e5533d36b6341c83a09502ee9"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:afcc4529e5533d36b6341c83a09502ee9 inherit pub_methods_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_a00079"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00079')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
-<tr class="memitem:a69010000b837315a6b6f4c9fece42cca inherit pro_methods_a00079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69010000b837315a6b6f4c9fece42cca"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a69010000b837315a6b6f4c9fece42cca inherit pro_methods_a00079"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00063"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00063')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
-<a class="el" href="a00061.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
-<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
-<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
-<a class="el" href="a00063.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
-<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00063"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4220fdea504929811e9c083da3ec24cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4220fdea504929811e9c083da3ec24cd"></a>
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a4220fdea504929811e9c083da3ec24cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2ae27d63cd7df1dc8d2a47c89aad8bba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ae27d63cd7df1dc8d2a47c89aad8bba"></a>
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a2ae27d63cd7df1dc8d2a47c89aad8bba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a968aea700a5f30ad613a84a474b00ba4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a968aea700a5f30ad613a84a474b00ba4"></a>
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a968aea700a5f30ad613a84a474b00ba4"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename TupleType, typename Allocator = cache_aligned_allocator<TupleType>><br/>
-class tbb::flow::interface7::split_node< TupleType, Allocator ></h3>
+<div class="textblock"><h3>template<><br/>
+class tbb::scalable_allocator< void ></h3>
 
-<p><a class="el" href="a00130.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its </p>
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li><a class="el" href="a00217.html">scalable_allocator.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00131.html b/doc/html/a00131.html
index ee49534..67d4787 100644
--- a/doc/html/a00131.html
+++ b/doc/html/a00131.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::STATIC_ASSERTION_FAILED< condition > Struct Template Reference</title>
+<title>tbb::queuing_rw_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,120 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00131.html">STATIC_ASSERTION_FAILED</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">queuing_rw_mutex</a></li><li class="navelem"><a class="el" href="a00131.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00295.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::STATIC_ASSERTION_FAILED< condition > Struct Template Reference</div>  </div>
+<div class="title">tbb::queuing_rw_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_stddef.h</li>
+
+<p>The scoped locking pattern.  
+ <a href="a00131.html#details">More...</a></p>
+
+<p><code>#include <queuing_rw_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::queuing_rw_mutex::scoped_lock:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00131.png" usemap="#tbb::queuing_rw_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::queuing_rw_mutex::scoped_lock_map" name="tbb::queuing_rw_mutex::scoped_lock_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a1ae3792726dcff8da1f2c5366fb2b754"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#a1ae3792726dcff8da1f2c5366fb2b754">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a1ae3792726dcff8da1f2c5366fb2b754"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a1ae3792726dcff8da1f2c5366fb2b754">More...</a><br/></td></tr>
+<tr class="separator:a1ae3792726dcff8da1f2c5366fb2b754"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1b55ca1839c9c7c2cd779cd2dd9c474"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#af1b55ca1839c9c7c2cd779cd2dd9c474">scoped_lock</a> (<a class="el" href="a00112.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:af1b55ca1839c9c7c2cd779cd2dd9c474"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6cb16cc55f884bbbd5a69430c47b288f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cb16cc55f884bbbd5a69430c47b288f"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#a6cb16cc55f884bbbd5a69430c47b288f">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a6cb16cc55f884bbbd5a69430c47b288f"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
+<tr class="separator:a6cb16cc55f884bbbd5a69430c47b288f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4bf2fb86d6a418f9ea36474eb8893f9"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#ab4bf2fb86d6a418f9ea36474eb8893f9">acquire</a> (<a class="el" href="a00112.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:ab4bf2fb86d6a418f9ea36474eb8893f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4843d40dddc37c1aa3444e27d35d2433"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4843d40dddc37c1aa3444e27d35d2433"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#a4843d40dddc37c1aa3444e27d35d2433">try_acquire</a> (<a class="el" href="a00112.html">queuing_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:a4843d40dddc37c1aa3444e27d35d2433"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking) <br/></td></tr>
+<tr class="separator:a4843d40dddc37c1aa3444e27d35d2433"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a50fb02b77f02a01c74754d163157ec77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50fb02b77f02a01c74754d163157ec77"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#a50fb02b77f02a01c74754d163157ec77">release</a> ()</td></tr>
+<tr class="memdesc:a50fb02b77f02a01c74754d163157ec77"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a50fb02b77f02a01c74754d163157ec77"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">upgrade_to_writer</a> ()</td></tr>
+<tr class="memdesc:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#ae0f28ecfbbc5f8b3024cd47048b72b5b">More...</a><br/></td></tr>
+<tr class="separator:ae0f28ecfbbc5f8b3024cd47048b72b5b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0af63035147a3d8422f8c8d7b8d2629"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0af63035147a3d8422f8c8d7b8d2629"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00131.html#af0af63035147a3d8422f8c8d7b8d2629">downgrade_to_reader</a> ()</td></tr>
+<tr class="memdesc:af0af63035147a3d8422f8c8d7b8d2629"><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br/></td></tr>
+<tr class="separator:af0af63035147a3d8422f8c8d7b8d2629"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The scoped locking pattern. </p>
+<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a1ae3792726dcff8da1f2c5366fb2b754"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_rw_mutex::scoped_lock::scoped_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct lock that has not acquired a mutex. </p>
+<p>Equivalent to zero-initialization of *this. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ae0f28ecfbbc5f8b3024cd47048b72b5b"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Upgrade reader to become a writer. </p>
+<p>Returns whether the upgrade happened without releasing and re-acquiring the lock </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>queuing_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00119.png b/doc/html/a00131.png
similarity index 100%
rename from doc/html/a00119.png
rename to doc/html/a00131.png
diff --git a/doc/html/a00132.html b/doc/html/a00132.html
index 044a161..34eb430 100644
--- a/doc/html/a00132.html
+++ b/doc/html/a00132.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::STATIC_ASSERTION_FAILED< false > Struct Template Reference</title>
+<title>tbb::queuing_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,31 +33,94 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00132.html">STATIC_ASSERTION_FAILED< false ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">queuing_mutex</a></li><li class="navelem"><a class="el" href="a00132.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="a00376.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00293.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::STATIC_ASSERTION_FAILED< false > Struct Template Reference</div>  </div>
+<div class="title">tbb::queuing_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The scoped locking pattern.  
+ <a href="a00132.html#details">More...</a></p>
+
+<p><code>#include <queuing_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::queuing_mutex::scoped_lock:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00132.png" usemap="#tbb::queuing_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::queuing_mutex::scoped_lock_map" name="tbb::queuing_mutex::scoped_lock_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:aec2ba9645cac9caa207a83d7c2660266"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>value</b> =1
- }</td></tr>
-<tr class="separator:aec2ba9645cac9caa207a83d7c2660266"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a0afe0107eb0aae613e726f67624d2fca"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#a0afe0107eb0aae613e726f67624d2fca">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a0afe0107eb0aae613e726f67624d2fca"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a0afe0107eb0aae613e726f67624d2fca">More...</a><br/></td></tr>
+<tr class="separator:a0afe0107eb0aae613e726f67624d2fca"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa82d9da0dcfe5b21f1c08473f8223105"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa82d9da0dcfe5b21f1c08473f8223105"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#aa82d9da0dcfe5b21f1c08473f8223105">scoped_lock</a> (<a class="el" href="a00111.html">queuing_mutex</a> &m)</td></tr>
+<tr class="memdesc:aa82d9da0dcfe5b21f1c08473f8223105"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:aa82d9da0dcfe5b21f1c08473f8223105"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a469ec43836a8dd250ce0a22b02945630"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a469ec43836a8dd250ce0a22b02945630"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#a469ec43836a8dd250ce0a22b02945630">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a469ec43836a8dd250ce0a22b02945630"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
+<tr class="separator:a469ec43836a8dd250ce0a22b02945630"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abf8aa7ccd48d54dcb53665700a17d02a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf8aa7ccd48d54dcb53665700a17d02a"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#abf8aa7ccd48d54dcb53665700a17d02a">acquire</a> (<a class="el" href="a00111.html">queuing_mutex</a> &m)</td></tr>
+<tr class="memdesc:abf8aa7ccd48d54dcb53665700a17d02a"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:abf8aa7ccd48d54dcb53665700a17d02a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab4800ba9e743cd91f152036a6689b0e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4800ba9e743cd91f152036a6689b0e9"></a>
+bool __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#ab4800ba9e743cd91f152036a6689b0e9">try_acquire</a> (<a class="el" href="a00111.html">queuing_mutex</a> &m)</td></tr>
+<tr class="memdesc:ab4800ba9e743cd91f152036a6689b0e9"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex if free (i.e. non-blocking) <br/></td></tr>
+<tr class="separator:ab4800ba9e743cd91f152036a6689b0e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa065e48b428b8d43e9bb931ba9e6f6c"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00132.html#aaa065e48b428b8d43e9bb931ba9e6f6c">release</a> ()</td></tr>
+<tr class="memdesc:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:aaa065e48b428b8d43e9bb931ba9e6f6c"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_stddef.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The scoped locking pattern. </p>
+<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a0afe0107eb0aae613e726f67624d2fca"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::queuing_mutex::scoped_lock::scoped_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct lock that has not acquired a mutex. </p>
+<p>Equivalent to zero-initialization of *this. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>queuing_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00121.png b/doc/html/a00132.png
similarity index 100%
rename from doc/html/a00121.png
rename to doc/html/a00132.png
diff --git a/doc/html/a00133.html b/doc/html/a00133.html
index c471193..b881819 100644
--- a/doc/html/a00133.html
+++ b/doc/html/a00133.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::structured_task_group Class Reference</title>
+<title>tbb::interface5::reader_writer_lock::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,83 +33,65 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00133.html">structured_task_group</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00133.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00287.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00384.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::structured_task_group Class Reference</div>  </div>
+<div class="title">tbb::interface5::reader_writer_lock::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The scoped lock pattern for write locks.  
+ <a href="a00133.html#details">More...</a></p>
+
+<p><code>#include <reader_writer_lock.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::structured_task_group:</div>
+Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00133.png" usemap="#tbb::structured_task_group_map" alt=""/>
-  <map id="tbb::structured_task_group_map" name="tbb::structured_task_group_map">
-<area href="a00137.html" alt="tbb::internal::task_group_base" shape="rect" coords="0,56,179,80"/>
+  <img src="a00133.png" usemap="#tbb::interface5::reader_writer_lock::scoped_lock_map" alt=""/>
+  <map id="tbb::interface5::reader_writer_lock::scoped_lock_map" name="tbb::interface5::reader_writer_lock::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab6812c9b682cec4b1a93da169b6fffc7"></a>
-template<typename F > </td></tr>
-<tr class="memitem:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0578ff577290a108d395ab29a0a04e04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0578ff577290a108d395ab29a0a04e04"></a>
-task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
-<tr class="separator:a0578ff577290a108d395ab29a0a04e04"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00137"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00137')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
- </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
-<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
-template<typename F > </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
-task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
-<tr class="separator:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
-<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
-<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaed982d8c3f1e84298f9842063694f3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaed982d8c3f1e84298f9842063694f3c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#aaed982d8c3f1e84298f9842063694f3c">scoped_lock</a> (<a class="el" href="a00113.html">reader_writer_lock</a> &<a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>)</td></tr>
+<tr class="memdesc:aaed982d8c3f1e84298f9842063694f3c"><td class="mdescLeft"> </td><td class="mdescRight">Construct with blocking attempt to acquire write lock on the passed-in lock. <br/></td></tr>
+<tr class="separator:aaed982d8c3f1e84298f9842063694f3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a41e77cf094ed30b0a9a39ee217c3653b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41e77cf094ed30b0a9a39ee217c3653b"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html#a41e77cf094ed30b0a9a39ee217c3653b">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a41e77cf094ed30b0a9a39ee217c3653b"><td class="mdescLeft"> </td><td class="mdescRight">Destructor, releases the write lock. <br/></td></tr>
+<tr class="separator:a41e77cf094ed30b0a9a39ee217c3653b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5bca00f4788ed8f635a8383a25a10ec8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bca00f4788ed8f635a8383a25a10ec8"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t s)</td></tr>
+<tr class="separator:a5bca00f4788ed8f635a8383a25a10ec8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3ef0de25ee6d7897198fcf09471bf24f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3ef0de25ee6d7897198fcf09471bf24f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *p)</td></tr>
+<tr class="separator:a3ef0de25ee6d7897198fcf09471bf24f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_a00137"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00137')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
-task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
-<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
-template<typename F > </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
-<tr class="separator:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
-template<typename F , typename Task > </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
-<tr class="separator:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00137"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00137')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
-empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
-<tr class="separator:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
-<a class="el" href="a00138.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
-<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00137"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afb01bc2e211c782503ef5088003f120f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb01bc2e211c782503ef5088003f120f"></a>
+class </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock</b></td></tr>
+<tr class="separator:afb01bc2e211c782503ef5088003f120f"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_group.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The scoped lock pattern for write locks. </p>
+<p>Scoped locks help avoid the common problem of forgetting to release the lock. This type also serves as the node for queuing locks. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>reader_writer_lock.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00133.png b/doc/html/a00133.png
index f9335ed..a999a7d 100644
Binary files a/doc/html/a00133.png and b/doc/html/a00133.png differ
diff --git a/doc/html/a00134.html b/doc/html/a00134.html
index 2d5b3a2..c91d71a 100644
--- a/doc/html/a00134.html
+++ b/doc/html/a00134.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::internal::successor_cache< T, M > Class Template Reference</title>
+<title>tbb::spin_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,101 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00134.html">successor_cache</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">spin_mutex</a></li><li class="navelem"><a class="el" href="a00134.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00303.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::internal::successor_cache< T, M > Class Template Reference</div>  </div>
+<div class="title">tbb::spin_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Represents acquisition of a mutex.  
+ <a href="a00134.html#details">More...</a></p>
+
+<p><code>#include <spin_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::spin_mutex::scoped_lock:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00134.png" usemap="#tbb::spin_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::spin_mutex::scoped_lock_map" name="tbb::spin_mutex::scoped_lock_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a4287be975cf2448c95f068b065c45107"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4287be975cf2448c95f068b065c45107"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a4287be975cf2448c95f068b065c45107">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a4287be975cf2448c95f068b065c45107"><td class="mdescLeft"> </td><td class="mdescRight">Construct without acquiring a mutex. <br/></td></tr>
+<tr class="separator:a4287be975cf2448c95f068b065c45107"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a73f7381a9a112b9f5a856b1face525fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73f7381a9a112b9f5a856b1face525fb"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a73f7381a9a112b9f5a856b1face525fb">scoped_lock</a> (<a class="el" href="a00145.html">spin_mutex</a> &m)</td></tr>
+<tr class="memdesc:a73f7381a9a112b9f5a856b1face525fb"><td class="mdescLeft"> </td><td class="mdescRight">Construct and acquire lock on a mutex. <br/></td></tr>
+<tr class="separator:a73f7381a9a112b9f5a856b1face525fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7c702117f08ae82d034a98b3d5510ffc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c702117f08ae82d034a98b3d5510ffc"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a7c702117f08ae82d034a98b3d5510ffc">acquire</a> (<a class="el" href="a00145.html">spin_mutex</a> &m)</td></tr>
+<tr class="memdesc:a7c702117f08ae82d034a98b3d5510ffc"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
+<tr class="separator:a7c702117f08ae82d034a98b3d5510ffc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a76acbd67c74906f6ea33a1de6fd443ce"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a76acbd67c74906f6ea33a1de6fd443ce">try_acquire</a> (<a class="el" href="a00145.html">spin_mutex</a> &m)</td></tr>
+<tr class="memdesc:a76acbd67c74906f6ea33a1de6fd443ce"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a76acbd67c74906f6ea33a1de6fd443ce">More...</a><br/></td></tr>
+<tr class="separator:a76acbd67c74906f6ea33a1de6fd443ce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7e801b0c28fd8395fec400b96acc5c34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e801b0c28fd8395fec400b96acc5c34"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a7e801b0c28fd8395fec400b96acc5c34">release</a> ()</td></tr>
+<tr class="memdesc:a7e801b0c28fd8395fec400b96acc5c34"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a7e801b0c28fd8395fec400b96acc5c34"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9940d6e494466d9c53846ed347d79d83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9940d6e494466d9c53846ed347d79d83"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html#a9940d6e494466d9c53846ed347d79d83">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a9940d6e494466d9c53846ed347d79d83"><td class="mdescLeft"> </td><td class="mdescRight">Destroy lock. If holding a lock, releases the lock first. <br/></td></tr>
+<tr class="separator:a9940d6e494466d9c53846ed347d79d83"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:adf989c33fa5ee03e75925c2d0f86b89e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf989c33fa5ee03e75925c2d0f86b89e"></a>
+class </td><td class="memItemRight" valign="bottom"><b>spin_mutex</b></td></tr>
+<tr class="separator:adf989c33fa5ee03e75925c2d0f86b89e"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents acquisition of a mutex. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a76acbd67c74906f6ea33a1de6fd443ce"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::spin_mutex::scoped_lock::try_acquire </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="a00145.html">spin_mutex</a> & </td>
+          <td class="paramname"><em>m</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Try acquiring lock (non-blocking) </p>
+<p>Return true if lock acquired; false otherwise. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<li>spin_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00113.png b/doc/html/a00134.png
similarity index 100%
copy from doc/html/a00113.png
copy to doc/html/a00134.png
diff --git a/doc/html/a00135.html b/doc/html/a00135.html
index c7a5259..6f725fb 100644
--- a/doc/html/a00135.html
+++ b/doc/html/a00135.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface7::task_arena Class Reference</title>
+<title>tbb::spin_rw_mutex_v3::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,126 +33,87 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00135.html">task_arena</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">spin_rw_mutex_v3</a></li><li class="navelem"><a class="el" href="a00135.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00369.html">List of all members</a>  </div>
+<a href="a00305.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface7::task_arena Class Reference</div>  </div>
+<div class="title">tbb::spin_rw_mutex_v3::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p><code>#include <task_arena.h></code></p>
+<p>The scoped locking pattern.  
+ <a href="a00135.html#details">More...</a></p>
+
+<p><code>#include <spin_rw_mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface7::task_arena:</div>
+Inheritance diagram for tbb::spin_rw_mutex_v3::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00135.png" usemap="#tbb::interface7::task_arena_map" alt=""/>
-  <map id="tbb::interface7::task_arena_map" name="tbb::interface7::task_arena_map">
+  <img src="a00135.png" usemap="#tbb::spin_rw_mutex_v3::scoped_lock_map" alt=""/>
+  <map id="tbb::spin_rw_mutex_v3::scoped_lock_map" name="tbb::spin_rw_mutex_v3::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a6035737ce1a8db376d06880dae9d0c40"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a6035737ce1a8db376d06880dae9d0c40">task_arena</a> (int max_concurrency=automatic, unsigned reserved_for_masters=1)</td></tr>
-<tr class="memdesc:a6035737ce1a8db376d06880dae9d0c40"><td class="mdescLeft"> </td><td class="mdescRight">Creates <a class="el" href="a00135.html">task_arena</a> with certain concurrency limits.  <a href="#a6035737ce1a8db376d06880dae9d0c40">More...</a><br/></td></tr>
-<tr class="separator:a6035737ce1a8db376d06880dae9d0c40"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a70d122b3e6e4760c6053c5c230c715ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70d122b3e6e4760c6053c5c230c715ef"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a70d122b3e6e4760c6053c5c230c715ef">task_arena</a> (const <a class="el" href="a00135.html">task_arena</a> &s)</td></tr>
-<tr class="memdesc:a70d122b3e6e4760c6053c5c230c715ef"><td class="mdescLeft"> </td><td class="mdescRight">Copies settings from another <a class="el" href="a00135.html">task_arena</a>. <br/></td></tr>
-<tr class="separator:a70d122b3e6e4760c6053c5c230c715ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a955131a79f8dc5a0a5c9ffa66a7e7140"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a955131a79f8dc5a0a5c9ffa66a7e7140">initialize</a> ()</td></tr>
-<tr class="memdesc:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="mdescLeft"> </td><td class="mdescRight">Forces allocation of the resources for the <a class="el" href="a00135.html">task_arena</a> as specified in constructor arguments. <br/></td></tr>
-<tr class="separator:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a754d60ba6981461eb7c86afd14d3da2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a754d60ba6981461eb7c86afd14d3da2a"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a754d60ba6981461eb7c86afd14d3da2a">initialize</a> (int max_concurrency, unsigned reserved_for_masters=1)</td></tr>
-<tr class="memdesc:a754d60ba6981461eb7c86afd14d3da2a"><td class="mdescLeft"> </td><td class="mdescRight">Overrides concurrency level and forces initialization of internal representation. <br/></td></tr>
-<tr class="separator:a754d60ba6981461eb7c86afd14d3da2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aecb3eedeacfe8469a91c17525dae7fc9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#aecb3eedeacfe8469a91c17525dae7fc9">terminate</a> ()</td></tr>
-<tr class="separator:aecb3eedeacfe8469a91c17525dae7fc9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ff5a35a219953a4f3d99b833fa5f683"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a9ff5a35a219953a4f3d99b833fa5f683">~task_arena</a> ()</td></tr>
-<tr class="separator:a9ff5a35a219953a4f3d99b833fa5f683"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad85856cefa30d42155a2b122b03efd8c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#ad85856cefa30d42155a2b122b03efd8c">is_active</a> () const </td></tr>
-<tr class="separator:ad85856cefa30d42155a2b122b03efd8c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8034275ed2fffa68f70484043b90d406"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
-<tr class="memitem:a8034275ed2fffa68f70484043b90d406"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00135.html#a8034275ed2fffa68f70484043b90d406">enqueue</a> (const F &f)</td></tr>
-<tr class="separator:a8034275ed2fffa68f70484043b90d406"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
-<tr class="memitem:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00135.html#a9a04ab4afb2d74b0317618f59ab49be7">enqueue</a> (const F &f, priority_t p)</td></tr>
-<tr class="separator:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0c96f325b59d567b4c720f2830adde8"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
-<tr class="memitem:af0c96f325b59d567b4c720f2830adde8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00135.html#af0c96f325b59d567b4c720f2830adde8">execute</a> (F &f)</td></tr>
-<tr class="separator:af0c96f325b59d567b4c720f2830adde8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
-<tr class="memitem:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00135.html#ab8442c8e9e3e678349409e08cabc7ae2">execute</a> (const F &f)</td></tr>
-<tr class="separator:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a07d87dff8c6116ee349684e10f754aeb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a07d87dff8c6116ee349684e10f754aeb">debug_wait_until_empty</a> ()</td></tr>
-<tr class="separator:a07d87dff8c6116ee349684e10f754aeb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a285b355121772c874a7ecaaf4d347224"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a285b355121772c874a7ecaaf4d347224">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a285b355121772c874a7ecaaf4d347224"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex.  <a href="#a285b355121772c874a7ecaaf4d347224">More...</a><br/></td></tr>
+<tr class="separator:a285b355121772c874a7ecaaf4d347224"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a2e15358575f7651446bca13a5a2674"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a2e15358575f7651446bca13a5a2674"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a0a2e15358575f7651446bca13a5a2674">scoped_lock</a> (<a class="el" href="a00146.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:a0a2e15358575f7651446bca13a5a2674"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:a0a2e15358575f7651446bca13a5a2674"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c27ca2e0c9db960a9a7430082ff7edd"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a5c27ca2e0c9db960a9a7430082ff7edd">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
+<tr class="separator:a5c27ca2e0c9db960a9a7430082ff7edd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6d49df365396ab314e78ba07c6b96433"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d49df365396ab314e78ba07c6b96433"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a6d49df365396ab314e78ba07c6b96433">acquire</a> (<a class="el" href="a00146.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:a6d49df365396ab314e78ba07c6b96433"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:a6d49df365396ab314e78ba07c6b96433"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbe5de57eadc457518df7a1bb0d30c00"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer</a> ()</td></tr>
+<tr class="memdesc:afbe5de57eadc457518df7a1bb0d30c00"><td class="mdescLeft"> </td><td class="mdescRight">Upgrade reader to become a writer.  <a href="#afbe5de57eadc457518df7a1bb0d30c00">More...</a><br/></td></tr>
+<tr class="separator:afbe5de57eadc457518df7a1bb0d30c00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a99e279a995a51abfb87b865e886949f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99e279a995a51abfb87b865e886949f8"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">release</a> ()</td></tr>
+<tr class="memdesc:a99e279a995a51abfb87b865e886949f8"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a99e279a995a51abfb87b865e886949f8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa693c05221d977856a98270a255fe5df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa693c05221d977856a98270a255fe5df"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader</a> ()</td></tr>
+<tr class="memdesc:aa693c05221d977856a98270a255fe5df"><td class="mdescLeft"> </td><td class="mdescRight">Downgrade writer to become a reader. <br/></td></tr>
+<tr class="separator:aa693c05221d977856a98270a255fe5df"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abf17ada91882fd70f139c503c0220f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf17ada91882fd70f139c503c0220f16"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#abf17ada91882fd70f139c503c0220f16">try_acquire</a> (<a class="el" href="a00146.html">spin_rw_mutex</a> &m, bool write=true)</td></tr>
+<tr class="memdesc:abf17ada91882fd70f139c503c0220f16"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:abf17ada91882fd70f139c503c0220f16"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a4c107b6a4cc79183923fe2433d25644f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c107b6a4cc79183923fe2433d25644f"></a>
-static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a4c107b6a4cc79183923fe2433d25644f">current_slot</a> ()</td></tr>
-<tr class="memdesc:a4c107b6a4cc79183923fe2433d25644f"><td class="mdescLeft"> </td><td class="mdescRight">Returns the index, aka slot number, of the calling thread in its current arena. <br/></td></tr>
-<tr class="separator:a4c107b6a4cc79183923fe2433d25644f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a8d70c5a2348e30a6979bfbf677328dc4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d70c5a2348e30a6979bfbf677328dc4"></a>
+<a class="el" href="a00146.html">spin_rw_mutex</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#a8d70c5a2348e30a6979bfbf677328dc4">mutex</a></td></tr>
+<tr class="memdesc:a8d70c5a2348e30a6979bfbf677328dc4"><td class="mdescLeft"> </td><td class="mdescRight">The pointer to the current mutex that is held, or NULL if no mutex is held. <br/></td></tr>
+<tr class="separator:a8d70c5a2348e30a6979bfbf677328dc4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acfd129dc5106ad1129ba803e67311050"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html#acfd129dc5106ad1129ba803e67311050">is_writer</a></td></tr>
+<tr class="memdesc:acfd129dc5106ad1129ba803e67311050"><td class="mdescLeft"> </td><td class="mdescRight">If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock.  <a href="#acfd129dc5106ad1129ba803e67311050">More...</a><br/></td></tr>
+<tr class="separator:acfd129dc5106ad1129ba803e67311050"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a6887d06dd0f104ab6c06fdddca4d2471"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6887d06dd0f104ab6c06fdddca4d2471"></a>
-class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_scheduler_observer_v3</b></td></tr>
-<tr class="separator:a6887d06dd0f104ab6c06fdddca4d2471"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3297bb1f91f2e12c4f3fb3e68f135bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3297bb1f91f2e12c4f3fb3e68f135bb"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb::interface8::internal::x86_rtm_rw_mutex</b></td></tr>
+<tr class="separator:ad3297bb1f91f2e12c4f3fb3e68f135bb"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>1-to-1 proxy representation class of scheduler's arena Constructors set up settings only, real construction is deferred till the first method invocation Destructor only removes one of the references to the inner arena representation. Final destruction happens when all the references (and the work) are gone. </p>
+<div class="textblock"><p>The scoped locking pattern. </p>
+<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
 </div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a6035737ce1a8db376d06880dae9d0c40"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::interface7::task_arena::task_arena </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>max_concurrency</em> = <code>automatic</code>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">unsigned </td>
-          <td class="paramname"><em>reserved_for_masters</em> = <code>1</code> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Creates <a class="el" href="a00135.html">task_arena</a> with certain concurrency limits. </p>
-<p>Sets up settings only, real construction is deferred till the first method invocation </p>
-<ul>
-<li>max_concurrency specifies total number of slots in arena where threads work </li>
-<li>reserved_for_masters specifies number of slots to be used by master threads only. Value of 1 is default and reflects behavior of implicit arenas. </li>
-</ul>
-
-</div>
-</div>
-<a class="anchor" id="a9ff5a35a219953a4f3d99b833fa5f683"></a>
+<a class="anchor" id="a285b355121772c874a7ecaaf4d347224"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -160,7 +121,7 @@ class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">tbb::interface7::task_arena::~task_arena </td>
+          <td class="memname">tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
@@ -172,12 +133,14 @@ class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_
   </tr>
 </table>
 </div><div class="memdoc">
-<p>Removes the reference to the internal arena representation, and destroys the external object. Not thread safe wrt concurrent invocations of other methods. </p>
+
+<p>Construct lock that has not acquired a mutex. </p>
+<p>Equivalent to zero-initialization of *this. </p>
 
 </div>
 </div>
 <h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a07d87dff8c6116ee349684e10f754aeb"></a>
+<a class="anchor" id="afbe5de57eadc457518df7a1bb0d30c00"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -185,7 +148,7 @@ class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void tbb::interface7::task_arena::debug_wait_until_empty </td>
+          <td class="memname">bool tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
@@ -197,183 +160,47 @@ class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_
   </tr>
 </table>
 </div><div class="memdoc">
-<p>Wait for all work in the arena to be completed Even submitted by other application threads Joins arena if/when possible (in the same way as <a class="el" href="a00135.html#af0c96f325b59d567b4c720f2830adde8">execute()</a>) </p>
 
-</div>
-</div>
-<a class="anchor" id="a8034275ed2fffa68f70484043b90d406"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename F > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::interface7::task_arena::enqueue </td>
-          <td>(</td>
-          <td class="paramtype">const F & </td>
-          <td class="paramname"><em>f</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Enqueues a task into the arena to process a functor, and immediately returns. Does not require the calling thread to join the arena </p>
-
-</div>
-</div>
-<a class="anchor" id="a9a04ab4afb2d74b0317618f59ab49be7"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename F > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::interface7::task_arena::enqueue </td>
-          <td>(</td>
-          <td class="paramtype">const F & </td>
-          <td class="paramname"><em>f</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">priority_t </td>
-          <td class="paramname"><em>p</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Enqueues a task with priority p into the arena to process a functor f, and immediately returns. Does not require the calling thread to join the arena </p>
+<p>Upgrade reader to become a writer. </p>
+<p>Returns whether the upgrade happened without releasing and re-acquiring the lock </p>
 
-</div>
-</div>
-<a class="anchor" id="af0c96f325b59d567b4c720f2830adde8"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename F > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::interface7::task_arena::execute </td>
-          <td>(</td>
-          <td class="paramtype">F & </td>
-          <td class="paramname"><em>f</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread </p>
+<p>References <a class="el" href="a00135.html#acfd129dc5106ad1129ba803e67311050">is_writer</a>.</p>
 
 </div>
 </div>
-<a class="anchor" id="ab8442c8e9e3e678349409e08cabc7ae2"></a>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="acfd129dc5106ad1129ba803e67311050"></a>
 <div class="memitem">
 <div class="memproto">
-<div class="memtemplate">
-template<typename F > </div>
 <table class="mlabels">
   <tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">void tbb::interface7::task_arena::execute </td>
-          <td>(</td>
-          <td class="paramtype">const F & </td>
-          <td class="paramname"><em>f</em>)</td><td></td>
-          <td></td>
+          <td class="memname">bool tbb::spin_rw_mutex_v3::scoped_lock::is_writer</td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
-<p>Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread </p>
 
-</div>
-</div>
-<a class="anchor" id="ad85856cefa30d42155a2b122b03efd8c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">bool tbb::interface7::task_arena::is_active </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td> const</td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Returns true if the arena is active (initialized); false otherwise. The name was chosen to match a <a class="el" href="a00141.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> method with the same semantics. </p>
+<p>If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock. </p>
+<p>Not defined if not holding a lock. </p>
 
-</div>
-</div>
-<a class="anchor" id="aecb3eedeacfe8469a91c17525dae7fc9"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::interface7::task_arena::terminate </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-<p>Removes the reference to the internal arena representation. Not thread safe wrt concurrent invocations of other methods. </p>
+<p>Referenced by <a class="el" href="a00135.html#a6d49df365396ab314e78ba07c6b96433">acquire()</a>, <a class="el" href="a00135.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader()</a>, <a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">release()</a>, <a class="el" href="a00135.html#abf17ada91882fd70f139c503c0220f16">try_acquire()</a>, and <a class="el" href="a00135.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer()</a>.</p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_arena.h</li>
+<li>spin_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00135.png b/doc/html/a00135.png
index e9685d4..13249c6 100644
Binary files a/doc/html/a00135.png and b/doc/html/a00135.png differ
diff --git a/doc/html/a00136.html b/doc/html/a00136.html
index 1ed3b67..eb9f204 100644
--- a/doc/html/a00136.html
+++ b/doc/html/a00136.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::task_group Class Reference</title>
+<title>tbb::internal::critical_section_v4::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,95 +33,39 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00136.html">task_group</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00058.html">critical_section_v4</a></li><li class="navelem"><a class="el" href="a00136.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00286.html">List of all members</a>  </div>
+<a href="a00410.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::task_group Class Reference</div>  </div>
+<div class="title">tbb::internal::critical_section_v4::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::task_group:</div>
+Inheritance diagram for tbb::internal::critical_section_v4::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00136.png" usemap="#tbb::task_group_map" alt=""/>
-  <map id="tbb::task_group_map" name="tbb::task_group_map">
-<area href="a00137.html" alt="tbb::internal::task_group_base" shape="rect" coords="0,56,179,80"/>
+  <img src="a00136.png" usemap="#tbb::internal::critical_section_v4::scoped_lock_map" alt=""/>
+  <map id="tbb::internal::critical_section_v4::scoped_lock_map" name="tbb::internal::critical_section_v4::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a451393a4a540ffda7ba9996fd7b0dc93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a451393a4a540ffda7ba9996fd7b0dc93"></a>
- </td><td class="memItemRight" valign="bottom"><b>catch</b> (...)</td></tr>
-<tr class="separator:a451393a4a540ffda7ba9996fd7b0dc93"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abe756667c1272f714ad388aa31f2d29e"><td class="memTemplParams" colspan="2"><a class="anchor" id="abe756667c1272f714ad388aa31f2d29e"></a>
-template<typename F > </td></tr>
-<tr class="memitem:abe756667c1272f714ad388aa31f2d29e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:abe756667c1272f714ad388aa31f2d29e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6355cce7750b1367fb98924af151e8b2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6355cce7750b1367fb98924af151e8b2"></a>
-template<typename F > </td></tr>
-<tr class="memitem:a6355cce7750b1367fb98924af151e8b2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (const F &f)</td></tr>
-<tr class="separator:a6355cce7750b1367fb98924af151e8b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aeef1b473ff0edaf3f356722b13e877b0"><td class="memTemplParams" colspan="2"><a class="anchor" id="aeef1b473ff0edaf3f356722b13e877b0"></a>
-template<typename F > </td></tr>
-<tr class="memitem:aeef1b473ff0edaf3f356722b13e877b0"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (const F &f)</td></tr>
-<tr class="separator:aeef1b473ff0edaf3f356722b13e877b0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a543903ef748fd10eb864c27a2e8ac18b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a543903ef748fd10eb864c27a2e8ac18b"></a>
-template<typename F > </td></tr>
-<tr class="memitem:a543903ef748fd10eb864c27a2e8ac18b"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:a543903ef748fd10eb864c27a2e8ac18b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00137"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00137')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
- </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
-<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
-template<typename F > </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
-task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
-<tr class="separator:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
-<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
-<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_methods_a00137"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00137')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
-task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
-<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
-template<typename F > </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
-<tr class="separator:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
-template<typename F , typename Task > </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
-<tr class="separator:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_attribs_a00137"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00137')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00137.html">tbb::internal::task_group_base</a></td></tr>
-<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
-empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
-<tr class="separator:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00137"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00137"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
-<a class="el" href="a00138.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
-<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00137"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3d2a294e9d790bdeba9ca3ff60e75d53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d2a294e9d790bdeba9ca3ff60e75d53"></a>
+ </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00058.html">critical_section_v4</a> &lock_me)</td></tr>
+<tr class="separator:a3d2a294e9d790bdeba9ca3ff60e75d53"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_group.h</li>
+<li>critical_section.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00136.png b/doc/html/a00136.png
index d42b601..15626cf 100644
Binary files a/doc/html/a00136.png and b/doc/html/a00136.png differ
diff --git a/doc/html/a00137.html b/doc/html/a00137.html
index f8b715d..efe3bae 100644
--- a/doc/html/a00137.html
+++ b/doc/html/a00137.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::task_group_base Class Reference</title>
+<title>tbb::null_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,79 +33,55 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00137.html">task_group_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00101.html">null_mutex</a></li><li class="navelem"><a class="el" href="a00137.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
-<a href="a00373.html">List of all members</a>  </div>
+<a href="a00282.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::task_group_base Class Reference</div>  </div>
+<div class="title">tbb::null_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Represents acquisition of a mutex.  
+ <a href="a00137.html#details">More...</a></p>
+
+<p><code>#include <null_mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::internal::task_group_base:</div>
+Inheritance diagram for tbb::null_mutex::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00137.png" usemap="#tbb::internal::task_group_base_map" alt=""/>
-  <map id="tbb::internal::task_group_base_map" name="tbb::internal::task_group_base_map">
-<area href="a00133.html" alt="tbb::structured_task_group" shape="rect" coords="0,112,179,136"/>
-<area href="a00136.html" alt="tbb::task_group" shape="rect" coords="189,112,368,136"/>
+  <img src="a00137.png" usemap="#tbb::null_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::null_mutex::scoped_lock_map" name="tbb::null_mutex::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
- </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
-<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
-template<typename F > </td></tr>
-<tr class="memitem:a8d8398153ad19d83a629aeb46991620b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:a8d8398153ad19d83a629aeb46991620b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9a05d8b3350796df951c701978cec816"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
-task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
-<tr class="separator:a9a05d8b3350796df951c701978cec816"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
-<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
-void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
-<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
-task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
-<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
-template<typename F > </td></tr>
-<tr class="memitem:aef3561e83c11cde7299a34db1064f420"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
-<tr class="separator:aef3561e83c11cde7299a34db1064f420"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
-template<typename F , typename Task > </td></tr>
-<tr class="memitem:ab57636e45b436a15c7adefb25f9df090"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
-<tr class="separator:ab57636e45b436a15c7adefb25f9df090"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
-empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
-<tr class="separator:a60fb257f34f63428032f93e9b3b50a89"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
-<a class="el" href="a00138.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
-<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af71834d1fc4c7406595e9df5b43ab7bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af71834d1fc4c7406595e9df5b43ab7bb"></a>
+ </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00101.html">null_mutex</a> &)</td></tr>
+<tr class="separator:af71834d1fc4c7406595e9df5b43ab7bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7d541c92b1678a7dde6a45783a02160f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d541c92b1678a7dde6a45783a02160f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>acquire</b> (<a class="el" href="a00101.html">null_mutex</a> &)</td></tr>
+<tr class="separator:a7d541c92b1678a7dde6a45783a02160f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac5d4d5a4182091ea13fb5d38667f6449"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5d4d5a4182091ea13fb5d38667f6449"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>try_acquire</b> (<a class="el" href="a00101.html">null_mutex</a> &)</td></tr>
+<tr class="separator:ac5d4d5a4182091ea13fb5d38667f6449"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a21f848f83dfa6504381e3da4de7a9e00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21f848f83dfa6504381e3da4de7a9e00"></a>
+void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
+<tr class="separator:a21f848f83dfa6504381e3da4de7a9e00"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_group.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents acquisition of a mutex. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>null_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00137.png b/doc/html/a00137.png
index e95fec5..d8565aa 100644
Binary files a/doc/html/a00137.png and b/doc/html/a00137.png differ
diff --git a/doc/html/a00138.html b/doc/html/a00138.html
index 7dc9ed0..1f8d058 100644
--- a/doc/html/a00138.html
+++ b/doc/html/a00138.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::task_group_context Struct Reference</title>
+<title>tbb::null_rw_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,25 +33,61 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00138.html">task_group_context</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00102.html">null_rw_mutex</a></li><li class="navelem"><a class="el" href="a00138.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00284.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::task_group_context Struct Reference</div>  </div>
+<div class="title">tbb::null_rw_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p><code>#include <parallel_invoke.h></code></p>
+<p>Represents acquisition of a mutex.  
+ <a href="a00138.html#details">More...</a></p>
+
+<p><code>#include <null_rw_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::null_rw_mutex::scoped_lock:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00138.png" usemap="#tbb::null_rw_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::null_rw_mutex::scoped_lock_map" name="tbb::null_rw_mutex::scoped_lock_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a4b7f9a3976c7744a96e435e027c6262c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b7f9a3976c7744a96e435e027c6262c"></a>
+ </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b> (<a class="el" href="a00102.html">null_rw_mutex</a> &, bool=true)</td></tr>
+<tr class="separator:a4b7f9a3976c7744a96e435e027c6262c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a251d45c5c42ac6c6006d0463c2173bc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a251d45c5c42ac6c6006d0463c2173bc8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>acquire</b> (<a class="el" href="a00102.html">null_rw_mutex</a> &, bool=true)</td></tr>
+<tr class="separator:a251d45c5c42ac6c6006d0463c2173bc8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a07ed8c0c225fec43b96dcec5b4d4380d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07ed8c0c225fec43b96dcec5b4d4380d"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>upgrade_to_writer</b> ()</td></tr>
+<tr class="separator:a07ed8c0c225fec43b96dcec5b4d4380d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a899c14f8d077edd2fe7925bb82a94686"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a899c14f8d077edd2fe7925bb82a94686"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>downgrade_to_reader</b> ()</td></tr>
+<tr class="separator:a899c14f8d077edd2fe7925bb82a94686"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afdb10af455fa8730b1a9bc8d5ca16c41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdb10af455fa8730b1a9bc8d5ca16c41"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>try_acquire</b> (<a class="el" href="a00102.html">null_rw_mutex</a> &, bool=true)</td></tr>
+<tr class="separator:afdb10af455fa8730b1a9bc8d5ca16c41"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a57d0613ea1614fe9c7daa0706e56efab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57d0613ea1614fe9c7daa0706e56efab"></a>
+void </td><td class="memItemRight" valign="bottom"><b>release</b> ()</td></tr>
+<tr class="separator:a57d0613ea1614fe9c7daa0706e56efab"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Dummy to avoid cluttering the bulk of the header with enormous amount of ifdefs. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>parallel_invoke.h</li>
+<div class="textblock"><p>Represents acquisition of a mutex. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>null_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00138.png b/doc/html/a00138.png
new file mode 100644
index 0000000..081a54d
Binary files /dev/null and b/doc/html/a00138.png differ
diff --git a/doc/html/a00139.html b/doc/html/a00139.html
index ebc109b..c322c80 100644
--- a/doc/html/a00139.html
+++ b/doc/html/a00139.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::task_handle< F > Class Template Reference</title>
+<title>tbb::recursive_mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,56 +33,75 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00139.html">task_handle</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00125.html">recursive_mutex</a></li><li class="navelem"><a class="el" href="a00139.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
 <a href="#friends">Friends</a> |
-<a href="a00285.html">List of all members</a>  </div>
+<a href="a00297.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::task_handle< F > Class Template Reference</div>  </div>
+<div class="title">tbb::recursive_mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The scoped locking pattern.  
+ <a href="a00139.html#details">More...</a></p>
+
+<p><code>#include <recursive_mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::task_handle< F >:</div>
+Inheritance diagram for tbb::recursive_mutex::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00139.png" usemap="#tbb::task_handle< F >_map" alt=""/>
-  <map id="tbb::task_handle< F >_map" name="tbb::task_handle< F >_map">
+  <img src="a00139.png" usemap="#tbb::recursive_mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::recursive_mutex::scoped_lock_map" name="tbb::recursive_mutex::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a1e213e12e1c2d789c22e56901b53b1d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e213e12e1c2d789c22e56901b53b1d2"></a>
- </td><td class="memItemRight" valign="bottom"><b>task_handle</b> (const F &f)</td></tr>
-<tr class="separator:a1e213e12e1c2d789c22e56901b53b1d2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab09a19aa92286d48cc42d3e9cd60b5d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab09a19aa92286d48cc42d3e9cd60b5d8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator()</b> () const </td></tr>
-<tr class="separator:ab09a19aa92286d48cc42d3e9cd60b5d8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a9962a3932cfbd0d12cb197494f951b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a9962a3932cfbd0d12cb197494f951b"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#a0a9962a3932cfbd0d12cb197494f951b">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a0a9962a3932cfbd0d12cb197494f951b"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a <a class="el" href="a00125.html">recursive_mutex</a>. <br/></td></tr>
+<tr class="separator:a0a9962a3932cfbd0d12cb197494f951b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab42cb541abb9647cac23b1db9a4db93d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab42cb541abb9647cac23b1db9a4db93d"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#ab42cb541abb9647cac23b1db9a4db93d">scoped_lock</a> (<a class="el" href="a00125.html">recursive_mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:ab42cb541abb9647cac23b1db9a4db93d"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:ab42cb541abb9647cac23b1db9a4db93d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a90a966e19120aac99b36a3d6d04af1a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90a966e19120aac99b36a3d6d04af1a2"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#a90a966e19120aac99b36a3d6d04af1a2">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a90a966e19120aac99b36a3d6d04af1a2"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
+<tr class="separator:a90a966e19120aac99b36a3d6d04af1a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac5450ce6a5813f395afaa434384c6539"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5450ce6a5813f395afaa434384c6539"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#ac5450ce6a5813f395afaa434384c6539">acquire</a> (<a class="el" href="a00125.html">recursive_mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:ac5450ce6a5813f395afaa434384c6539"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:ac5450ce6a5813f395afaa434384c6539"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a160bba506f4033980ddb69ab7a02c4fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a160bba506f4033980ddb69ab7a02c4fb"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#a160bba506f4033980ddb69ab7a02c4fb">try_acquire</a> (<a class="el" href="a00125.html">recursive_mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:a160bba506f4033980ddb69ab7a02c4fb"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given <a class="el" href="a00125.html">recursive_mutex</a>. <br/></td></tr>
+<tr class="separator:a160bba506f4033980ddb69ab7a02c4fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fe3246ffc26bdb5a58f33ca513b6c0f"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">release</a> ()</td></tr>
+<tr class="memdesc:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a2fe3246ffc26bdb5a58f33ca513b6c0f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memTemplParams" colspan="2"><a class="anchor" id="a70a59090420eb9c76bd067b3ed3f1e72"></a>
-template<typename _F > </td></tr>
-<tr class="memitem:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::task_handle_task</b></td></tr>
-<tr class="separator:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abe85fe1f158cb2a40cd7203854b9460a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe85fe1f158cb2a40cd7203854b9460a"></a>
-class </td><td class="memItemRight" valign="bottom"><b>task_group</b></td></tr>
-<tr class="separator:abe85fe1f158cb2a40cd7203854b9460a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2913777f78e95f9ea09d788b12db6b62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2913777f78e95f9ea09d788b12db6b62"></a>
-class </td><td class="memItemRight" valign="bottom"><b>structured_task_group</b></td></tr>
-<tr class="separator:a2913777f78e95f9ea09d788b12db6b62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1bdb637fe5c9412323bf92846b40682e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bdb637fe5c9412323bf92846b40682e"></a>
+class </td><td class="memItemRight" valign="bottom"><b>recursive_mutex</b></td></tr>
+<tr class="separator:a1bdb637fe5c9412323bf92846b40682e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_group.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The scoped locking pattern. </p>
+<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>recursive_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00139.png b/doc/html/a00139.png
index 5f640e9..9d4ec98 100644
Binary files a/doc/html/a00139.png and b/doc/html/a00139.png differ
diff --git a/doc/html/a00140.html b/doc/html/a00140.html
index 5e306d8..69f90a7 100644
--- a/doc/html/a00140.html
+++ b/doc/html/a00140.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::task_handle_task< F > Class Template Reference</title>
+<title>tbb::mutex::scoped_lock Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,39 +33,75 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00140.html">task_handle_task</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00099.html">mutex</a></li><li class="navelem"><a class="el" href="a00140.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00372.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00280.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::task_handle_task< F > Class Template Reference</div>  </div>
+<div class="title">tbb::mutex::scoped_lock Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The scoped locking pattern.  
+ <a href="a00140.html#details">More...</a></p>
+
+<p><code>#include <mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::internal::task_handle_task< F >:</div>
+Inheritance diagram for tbb::mutex::scoped_lock:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00140.png" usemap="#tbb::internal::task_handle_task< F >_map" alt=""/>
-  <map id="tbb::internal::task_handle_task< F >_map" name="tbb::internal::task_handle_task< F >_map">
+  <img src="a00140.png" usemap="#tbb::mutex::scoped_lock_map" alt=""/>
+  <map id="tbb::mutex::scoped_lock_map" name="tbb::mutex::scoped_lock_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:abcddb511967aa06d264ac6c06c4fb08b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcddb511967aa06d264ac6c06c4fb08b"></a>
- </td><td class="memItemRight" valign="bottom"><b>task_handle_task</b> (<a class="el" href="a00139.html">task_handle</a>< F > &h)</td></tr>
-<tr class="separator:abcddb511967aa06d264ac6c06c4fb08b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a23122745ccd5fc2498fcbbd5ced09e06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23122745ccd5fc2498fcbbd5ced09e06"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a23122745ccd5fc2498fcbbd5ced09e06">scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a23122745ccd5fc2498fcbbd5ced09e06"><td class="mdescLeft"> </td><td class="mdescRight">Construct lock that has not acquired a mutex. <br/></td></tr>
+<tr class="separator:a23122745ccd5fc2498fcbbd5ced09e06"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7c2074543443824790433d3d6c3fece"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7c2074543443824790433d3d6c3fece"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab7c2074543443824790433d3d6c3fece">scoped_lock</a> (<a class="el" href="a00099.html">mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:ab7c2074543443824790433d3d6c3fece"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:ab7c2074543443824790433d3d6c3fece"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a08c399ee0bb9762039b29e570ec46fe9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08c399ee0bb9762039b29e570ec46fe9"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a08c399ee0bb9762039b29e570ec46fe9">~scoped_lock</a> ()</td></tr>
+<tr class="memdesc:a08c399ee0bb9762039b29e570ec46fe9"><td class="mdescLeft"> </td><td class="mdescRight">Release lock (if lock is held). <br/></td></tr>
+<tr class="separator:a08c399ee0bb9762039b29e570ec46fe9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fce3e2e9f592315dc9c1ada72ae5e3c"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">acquire</a> (<a class="el" href="a00099.html">mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:a9fce3e2e9f592315dc9c1ada72ae5e3c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a46f983371aa852d2427ce69f9a571f78"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46f983371aa852d2427ce69f9a571f78"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a46f983371aa852d2427ce69f9a571f78">try_acquire</a> (<a class="el" href="a00099.html">mutex</a> &<a class="el" href="a00099.html">mutex</a>)</td></tr>
+<tr class="memdesc:a46f983371aa852d2427ce69f9a571f78"><td class="mdescLeft"> </td><td class="mdescRight">Try acquire lock on given mutex. <br/></td></tr>
+<tr class="separator:a46f983371aa852d2427ce69f9a571f78"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a1590281ccca912229a689d920fd78a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a1590281ccca912229a689d920fd78a"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a1a1590281ccca912229a689d920fd78a">release</a> ()</td></tr>
+<tr class="memdesc:a1a1590281ccca912229a689d920fd78a"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:a1a1590281ccca912229a689d920fd78a"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6f4535025b9df015e1a7d35f4e2bbee7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f4535025b9df015e1a7d35f4e2bbee7"></a>
+class </td><td class="memItemRight" valign="bottom"><b>mutex</b></td></tr>
+<tr class="separator:a6f4535025b9df015e1a7d35f4e2bbee7"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_group.h</li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The scoped locking pattern. </p>
+<p>It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00140.png b/doc/html/a00140.png
index 229263c..5450176 100644
Binary files a/doc/html/a00140.png and b/doc/html/a00140.png differ
diff --git a/doc/html/a00141.html b/doc/html/a00141.html
index c045a16..12b3f94 100644
--- a/doc/html/a00141.html
+++ b/doc/html/a00141.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::task_scheduler_init Class Reference</title>
+<title>tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,180 +33,64 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00141.html">task_scheduler_init</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00141.html">scoped_lock_read</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="#pub-static-attribs">Static Public Attributes</a> |
-<a href="a00288.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00385.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::task_scheduler_init Class Reference<div class="ingroups"><a class="el" href="a00239.html">Task Scheduling</a></div></div>  </div>
+<div class="title">tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Class delimiting the scope of task scheduler activity.  
+<p>The scoped lock pattern for read locks.  
  <a href="a00141.html#details">More...</a></p>
 
-<p><code>#include <task_scheduler_init.h></code></p>
+<p><code>#include <reader_writer_lock.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::task_scheduler_init:</div>
+Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock_read:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00141.png" usemap="#tbb::task_scheduler_init_map" alt=""/>
-  <map id="tbb::task_scheduler_init_map" name="tbb::task_scheduler_init_map">
+  <img src="a00141.png" usemap="#tbb::interface5::reader_writer_lock::scoped_lock_read_map" alt=""/>
+  <map id="tbb::interface5::reader_writer_lock::scoped_lock_read_map" name="tbb::interface5::reader_writer_lock::scoped_lock_read_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a485028b867bffef5829209330e79e64c"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c">initialize</a> (int number_of_threads=<a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a>)</td></tr>
-<tr class="memdesc:a485028b867bffef5829209330e79e64c"><td class="mdescLeft"> </td><td class="mdescRight">Ensure that scheduler exists for this thread.  <a href="#a485028b867bffef5829209330e79e64c">More...</a><br/></td></tr>
-<tr class="separator:a485028b867bffef5829209330e79e64c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f5294f74b123a646a1762c68d11e39a"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a0f5294f74b123a646a1762c68d11e39a">initialize</a> (int number_of_threads, stack_size_type <a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a>)</td></tr>
-<tr class="memdesc:a0f5294f74b123a646a1762c68d11e39a"><td class="mdescLeft"> </td><td class="mdescRight">The overloaded method with stack size parameter.  <a href="#a0f5294f74b123a646a1762c68d11e39a">More...</a><br/></td></tr>
-<tr class="separator:a0f5294f74b123a646a1762c68d11e39a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a15d5dca7f79c5769bb96f674e4da0c04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15d5dca7f79c5769bb96f674e4da0c04"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a15d5dca7f79c5769bb96f674e4da0c04">terminate</a> ()</td></tr>
-<tr class="memdesc:a15d5dca7f79c5769bb96f674e4da0c04"><td class="mdescLeft"> </td><td class="mdescRight">Inverse of method initialize. <br/></td></tr>
-<tr class="separator:a15d5dca7f79c5769bb96f674e4da0c04"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa772e5a1bd18b171d335f41b58acd2b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa772e5a1bd18b171d335f41b58acd2b9"></a>
- </td><td class="memItemRight" valign="bottom"><b>if</b> (wait_workers_in_terminate) my_scheduler</td></tr>
-<tr class="separator:aa772e5a1bd18b171d335f41b58acd2b9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7d748f4a1f99884f081919feb3bca275"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d748f4a1f99884f081919feb3bca275"></a>
- </td><td class="memItemRight" valign="bottom"><b>initialize</b> (number_of_threads, <a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a>)</td></tr>
-<tr class="separator:a7d748f4a1f99884f081919feb3bca275"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a20b121334ec39c1d91bd4fe9a51892b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20b121334ec39c1d91bd4fe9a51892b0"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a20b121334ec39c1d91bd4fe9a51892b0">~task_scheduler_init</a> ()</td></tr>
-<tr class="memdesc:a20b121334ec39c1d91bd4fe9a51892b0"><td class="mdescLeft"> </td><td class="mdescRight">Destroy scheduler for this thread if thread has no other live task_scheduler_inits. <br/></td></tr>
-<tr class="separator:a20b121334ec39c1d91bd4fe9a51892b0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed5505d7fed9d5493676aa15c176512c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed5505d7fed9d5493676aa15c176512c"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#aed5505d7fed9d5493676aa15c176512c">is_active</a> () const </td></tr>
-<tr class="memdesc:aed5505d7fed9d5493676aa15c176512c"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if scheduler is active (initialized); false otherwise. <br/></td></tr>
-<tr class="separator:aed5505d7fed9d5493676aa15c176512c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9d3120a23016dabd4cc2683fa561ee5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d3120a23016dabd4cc2683fa561ee5a"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a9d3120a23016dabd4cc2683fa561ee5a">scoped_lock_read</a> (<a class="el" href="a00113.html">reader_writer_lock</a> &<a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>)</td></tr>
+<tr class="memdesc:a9d3120a23016dabd4cc2683fa561ee5a"><td class="mdescLeft"> </td><td class="mdescRight">Construct with blocking attempt to acquire read lock on the passed-in lock. <br/></td></tr>
+<tr class="separator:a9d3120a23016dabd4cc2683fa561ee5a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf0e23fb4d3aeb6bde18d5d1236bd9d5"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">~scoped_lock_read</a> ()</td></tr>
+<tr class="memdesc:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="mdescLeft"> </td><td class="mdescRight">Destructor, releases the read lock. <br/></td></tr>
+<tr class="separator:acf0e23fb4d3aeb6bde18d5d1236bd9d5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9eb8c7a64912a1c74ea76a01a20a1621"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9eb8c7a64912a1c74ea76a01a20a1621"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t s)</td></tr>
+<tr class="separator:a9eb8c7a64912a1c74ea76a01a20a1621"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a6c15dfdbe1bc7a6648ed836ebd8de6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a6c15dfdbe1bc7a6648ed836ebd8de6"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *p)</td></tr>
+<tr class="separator:a1a6c15dfdbe1bc7a6648ed836ebd8de6"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="memItemLeft" align="right" valign="top">static int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">default_num_threads</a> ()</td></tr>
-<tr class="memdesc:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of threads TBB scheduler would create if initialized by default.  <a href="#aa0c0d46ec09bedc1ee876aa8aa87c3d1">More...</a><br/></td></tr>
-<tr class="separator:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a8310e807e1199d0f23b3a57aeb4fde51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8310e807e1199d0f23b3a57aeb4fde51"></a>
-<a class="el" href="a00141.html">task_scheduler_init</a>(int <br class="typebreak"/>
-number_of_threads=<a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a>, <br class="typebreak"/>
-stack_size_type <br class="typebreak"/>
-thread_stack_size=0, bool <br class="typebreak"/>
-wait_workers_in_terminate=false) </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a> = TBB_USE_CAPTURED_EXCEPTION ? propagation_mode_captured : propagation_mode_exact</td></tr>
-<tr class="memdesc:a8310e807e1199d0f23b3a57aeb4fde51"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for default constructor followed by call to initialize(number_of_threads). <br/></td></tr>
-<tr class="separator:a8310e807e1199d0f23b3a57aeb4fde51"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
-Static Public Attributes</h2></td></tr>
-<tr class="memitem:a945886f5ef48300a8ebff2d077c166b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a945886f5ef48300a8ebff2d077c166b1"></a>
-static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a> = -1</td></tr>
-<tr class="memdesc:a945886f5ef48300a8ebff2d077c166b1"><td class="mdescLeft"> </td><td class="mdescRight">Typedef for number of threads that is automatic. <br/></td></tr>
-<tr class="separator:a945886f5ef48300a8ebff2d077c166b1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af0e49ff2f59a4e53c9c07897b57f084d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0e49ff2f59a4e53c9c07897b57f084d"></a>
-static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html#af0e49ff2f59a4e53c9c07897b57f084d">deferred</a> = -2</td></tr>
-<tr class="memdesc:af0e49ff2f59a4e53c9c07897b57f084d"><td class="mdescLeft"> </td><td class="mdescRight">Argument to <a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c" title="Ensure that scheduler exists for this thread. ">initialize()</a> or constructor that causes initialization to be deferred. <br/></td></tr>
-<tr class="separator:af0e49ff2f59a4e53c9c07897b57f084d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afb01bc2e211c782503ef5088003f120f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb01bc2e211c782503ef5088003f120f"></a>
+class </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock</b></td></tr>
+<tr class="separator:afb01bc2e211c782503ef5088003f120f"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Class delimiting the scope of task scheduler activity. </p>
-<p>A thread can construct a <a class="el" href="a00141.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> object and keep it alive while it uses TBB's tasking subsystem (including parallel algorithms).</p>
-<p>This class allows to customize properties of the TBB task pool to some extent. For example it can limit concurrency level of parallel work initiated by the given thread. It also can be used to specify stack size of the TBB worker threads, though this setting is not effective if the thread pool has already been created.</p>
-<p>If a parallel construct is used without <a class="el" href="a00141.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> object previously created, the scheduler will be initialized automatically with default settings, and will persist until this thread exits. Default concurrency level is defined as described in <a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c" title="Ensure that scheduler exists for this thread. ">task_schedule [...]
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="aa0c0d46ec09bedc1ee876aa8aa87c3d1"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">static int __TBB_EXPORTED_FUNC tbb::task_scheduler_init::default_num_threads </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Returns the number of threads TBB scheduler would create if initialized by default. </p>
-<p>Result returned by this method does not depend on whether the scheduler has already been initialized.</p>
-<p>Because tbb 2.0 does not support blocking tasks yet, you may use this method to boost the number of threads in the tbb's internal pool, if your tasks are doing I/O operations. The optimal number of additional threads depends on how much time your tasks spend in the blocked state.</p>
-<p>Before TBB 3.0 U4 this method returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.</p>
-<p>NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool. </p>
-
-</div>
-</div>
-<a class="anchor" id="a485028b867bffef5829209330e79e64c"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>number_of_threads</em> = <code><a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a></code>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Ensure that scheduler exists for this thread. </p>
-<p>A value of -1 lets TBB decide on the number of threads, which is usually maximal hardware concurrency for this process, that is the number of logical CPUs on the machine (possibly limited by the processor affinity mask of this process (Windows) or of this thread (Linux, FreeBSD). It is preferable option for production code because it helps to avoid nasty surprises when several TBB based components run side-by-side or in a nested fashion inside the same process.</p>
-<p>The number_of_threads is ignored if any other task_scheduler_inits currently exist. A thread may construct multiple task_scheduler_inits. Doing so does no harm because the underlying scheduler is reference counted. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0f5294f74b123a646a1762c68d11e39a"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>number_of_threads</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">stack_size_type </td>
-          <td class="paramname"><em>thread_stack_size</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The overloaded method with stack size parameter. </p>
-<p>Overloading is necessary to preserve ABI compatibility </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_scheduler_init.h</li>
+<div class="textblock"><p>The scoped lock pattern for read locks. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>reader_writer_lock.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00141.png b/doc/html/a00141.png
index 58550fd..10066bd 100644
Binary files a/doc/html/a00141.png and b/doc/html/a00141.png differ
diff --git a/doc/html/a00142.html b/doc/html/a00142.html
index 2c10e55..5d1d5ae 100644
--- a/doc/html/a00142.html
+++ b/doc/html/a00142.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface6::task_scheduler_observer Class Reference</title>
+<title>tbb::flow::interface7::sender< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,171 +33,115 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00142.html">task_scheduler_observer</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00142.html">sender</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00365.html">List of all members</a>  </div>
+<a href="a00328.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface6::task_scheduler_observer Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::sender< T > Class Template Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Pure virtual template class that defines a sender of messages of type T.  
+ <a href="a00142.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::interface6::task_scheduler_observer:</div>
+Inheritance diagram for tbb::flow::interface7::sender< T >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00142.png" usemap="#tbb::interface6::task_scheduler_observer_map" alt=""/>
-  <map id="tbb::interface6::task_scheduler_observer_map" name="tbb::interface6::task_scheduler_observer_map">
-<area href="a00143.html" alt="tbb::internal::task_scheduler_observer_v3" shape="rect" coords="0,0,247,24"/>
+  <img src="a00142.png" usemap="#tbb::flow::interface7::sender< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::sender< T >_map" name="tbb::flow::interface7::sender< T >_map">
+<area href="a00028.html" title="Forwards messages of type T to all successors. " alt="tbb::flow::interface7::broadcast_node< T >" shape="rect" coords="0,56,352,80"/>
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="362,56,714,80"/>
+<area href="a00091.html" title="Forwards messages only if the threshold has not been reached. " alt="tbb::flow::interface7::limiter_node< T >" shape="rect" coords="724,56,1076,80"/>
+<area href="a00104.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="1086,56,1438,80"/>
+<area href="a00109.html" title="Forwards messages in priority order. " alt="tbb::flow::interface7::priority_queue_node< T, Compare, A >" shape="rect" coords="181,112,533,136"/>
+<area href="a00110.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="543,112,895,136"/>
+<area href="a00176.html" alt="tbb::flow::interface7::write_once_node< T >" shape="rect" coords="1086,112,1438,136"/>
+<area href="a00143.html" title="Forwards messages in sequence order. " alt="tbb::flow::interface7::sequencer_node< T, A >" shape="rect" coords="543,168,895,192"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a89025b1e1d42e97d6fe114c0c331f730"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a89025b1e1d42e97d6fe114c0c331f730">task_scheduler_observer</a> (bool local=false)</td></tr>
-<tr class="memdesc:a89025b1e1d42e97d6fe114c0c331f730"><td class="mdescLeft"> </td><td class="mdescRight">Construct local or global observer in inactive state (observation disabled).  <a href="#a89025b1e1d42e97d6fe114c0c331f730">More...</a><br/></td></tr>
-<tr class="separator:a89025b1e1d42e97d6fe114c0c331f730"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36e7e0c466320029d5a3e50a573e04c1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a36e7e0c466320029d5a3e50a573e04c1">task_scheduler_observer</a> (task_arena &a)</td></tr>
-<tr class="memdesc:a36e7e0c466320029d5a3e50a573e04c1"><td class="mdescLeft"> </td><td class="mdescRight">Construct local observer for a given arena in inactive state (observation disabled).  <a href="#a36e7e0c466320029d5a3e50a573e04c1">More...</a><br/></td></tr>
-<tr class="separator:a36e7e0c466320029d5a3e50a573e04c1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9ef3f1853439b46e5a9db7fd1c0f9116"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ef3f1853439b46e5a9db7fd1c0f9116"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a9ef3f1853439b46e5a9db7fd1c0f9116">~task_scheduler_observer</a> ()</td></tr>
-<tr class="memdesc:a9ef3f1853439b46e5a9db7fd1c0f9116"><td class="mdescLeft"> </td><td class="mdescRight">Destructor additionally protects concurrent on_scheduler_leaving notification. <br/></td></tr>
-<tr class="separator:a9ef3f1853439b46e5a9db7fd1c0f9116"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afd3842518d9a37efb3c8455b22950bb8"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#afd3842518d9a37efb3c8455b22950bb8">on_scheduler_leaving</a> ()</td></tr>
-<tr class="memdesc:afd3842518d9a37efb3c8455b22950bb8"><td class="mdescLeft"> </td><td class="mdescRight">The callback can be invoked in a worker thread before it leaves an arena.  <a href="#afd3842518d9a37efb3c8455b22950bb8">More...</a><br/></td></tr>
-<tr class="separator:afd3842518d9a37efb3c8455b22950bb8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00143"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00143')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td></tr>
-<tr class="memitem:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">observe</a> (bool state=true)</td></tr>
-<tr class="memdesc:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable observation.  <a href="#a40209b347e3c82bb5bfda05941304309">More...</a><br/></td></tr>
-<tr class="separator:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31abaf256f7172f010cfb2259c7787bb"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a> () const </td></tr>
-<tr class="memdesc:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if observation is enabled, false otherwise. <br/></td></tr>
-<tr class="separator:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25bffb05efaaab36bc58590969e29745"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a> ()</td></tr>
-<tr class="memdesc:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Construct observer with observation disabled. <br/></td></tr>
-<tr class="separator:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a> (bool)</td></tr>
-<tr class="memdesc:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Entry notification.  <a href="#af4282a27725fbe86052bb785bdd9c5d3">More...</a><br/></td></tr>
-<tr class="separator:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a> (bool)</td></tr>
-<tr class="memdesc:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Exit notification.  <a href="#a657e90f833568e217b807d0122fa7668">More...</a><br/></td></tr>
-<tr class="separator:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00143"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a151e475ebba39172fcc13f43bed426cc"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a> ()</td></tr>
-<tr class="memdesc:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00143"><td class="mdescLeft"> </td><td class="mdescRight">Destructor automatically switches observation off if it is enabled. <br/></td></tr>
-<tr class="separator:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00143"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a567691ababd2dee2c44d1d6d4b9b093a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a567691ababd2dee2c44d1d6d4b9b093a"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::task_scheduler_observer_v3</b></td></tr>
-<tr class="separator:a567691ababd2dee2c44d1d6d4b9b093a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3fb165cd890fab10c1d09823dcb0ac9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3fb165cd890fab10c1d09823dcb0ac9"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::observer_proxy</b></td></tr>
-<tr class="separator:ae3fb165cd890fab10c1d09823dcb0ac9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5d0d193bf27a1606466663c68e05e1b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d0d193bf27a1606466663c68e05e1b3"></a>
-class </td><td class="memItemRight" valign="bottom"><b>internal::observer_list</b></td></tr>
-<tr class="separator:a5d0d193bf27a1606466663c68e05e1b3"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<h2 class="groupheader">Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a89025b1e1d42e97d6fe114c0c331f730"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::interface6::task_scheduler_observer::task_scheduler_observer </td>
-          <td>(</td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"><em>local</em> = <code>false</code>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct local or global observer in inactive state (observation disabled). </p>
-<p>For a local observer entry/exit notifications are invoked whenever a worker thread joins/leaves the arena of the observer's owner thread. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task. TODO: Obsolete. Global observer semantics is obsolete as it violates master thread isolation guarantees and is not composable. Thus the current default behavior of the constructor is obsolete too and will be  [...]
-
-<p>References <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb::relaxed</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a36e7e0c466320029d5a3e50a573e04c1"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">tbb::interface6::task_scheduler_observer::task_scheduler_observer </td>
-          <td>(</td>
-          <td class="paramtype">task_arena & </td>
-          <td class="paramname"><em>a</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Construct local observer for a given arena in inactive state (observation disabled). </p>
-<p>entry/exit notifications are invoked whenever a thread joins/leaves arena. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task. </p>
-
-<p>References <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb::relaxed</a>.</p>
-
-</div>
-</div>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="afd3842518d9a37efb3c8455b22950bb8"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">virtual bool tbb::interface6::task_scheduler_observer::on_scheduler_leaving </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
+<tr class="memitem:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dac8f53a1f8373c1f3a874b9617e4ec"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a4dac8f53a1f8373c1f3a874b9617e4ec">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)=0</td></tr>
+<tr class="memdesc:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
+<tr class="separator:a4dac8f53a1f8373c1f3a874b9617e4ec"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1ae19f49e31c6ca94dcf14732eb7a64"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)=0</td></tr>
+<tr class="memdesc:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
+<tr class="separator:ac1ae19f49e31c6ca94dcf14732eb7a64"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad50b8ac93e79cbdcd2bba11d35432f2c"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a> (T &)</td></tr>
+<tr class="memdesc:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
+<tr class="separator:ad50b8ac93e79cbdcd2bba11d35432f2c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
+<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
+<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
+<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
+<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
+<tr class="separator:ad404d5218c7ae2556261ffa880cdf804"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afd9bfe671041a8d80140ba16cfd9f0f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd9bfe671041a8d80140ba16cfd9f0f2"></a>
+virtual <a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()=0</td></tr>
+<tr class="separator:afd9bfe671041a8d80140ba16cfd9f0f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2bc6dc1a9b0ca3b58f6e227ad6600e90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bc6dc1a9b0ca3b58f6e227ad6600e90"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &)=0</td></tr>
+<tr class="separator:a2bc6dc1a9b0ca3b58f6e227ad6600e90"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1bdbd58013d224d202de7b3597ed099a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bdbd58013d224d202de7b3597ed099a"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &)=0</td></tr>
+<tr class="separator:a1bdbd58013d224d202de7b3597ed099a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abdac075720483765b6397be3f5ef8cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdac075720483765b6397be3f5ef8cdf"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &)=0</td></tr>
+<tr class="separator:abdac075720483765b6397be3f5ef8cdf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a34b78f0438b9ff43fe72be1f9e23adb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34b78f0438b9ff43fe72be1f9e23adb5"></a>
+virtual size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()=0</td></tr>
+<tr class="separator:a34b78f0438b9ff43fe72be1f9e23adb5"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>The callback can be invoked in a worker thread before it leaves an arena. </p>
-<p>If it returns false, the thread remains in the arena. Will not be called for masters or if the worker leaves arena due to rebalancing or priority changes, etc. NOTE: The preview library must be linked for this method to take effect </p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::flow::interface7::sender< T ></h3>
 
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_scheduler_observer.h</li>
+<p>Pure virtual template class that defines a sender of messages of type T. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00142.png b/doc/html/a00142.png
index 37496e9..4f10ba4 100644
Binary files a/doc/html/a00142.png and b/doc/html/a00142.png differ
diff --git a/doc/html/a00143.html b/doc/html/a00143.html
index 08b8027..e2dfd3d 100644
--- a/doc/html/a00143.html
+++ b/doc/html/a00143.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::task_scheduler_observer_v3 Class Reference</title>
+<title>tbb::flow::interface7::sequencer_node< T, A > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,150 +33,357 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00143.html">task_scheduler_observer_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00143.html">sequencer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00374.html">List of all members</a>  </div>
+<a href="#pro-types">Protected Types</a> |
+<a href="a00347.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::task_scheduler_observer_v3 Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::sequencer_node< T, A > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>Forwards messages in sequence order.  
+ <a href="a00143.html#details">More...</a></p>
+
+<p><code>#include <flow_graph.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::internal::task_scheduler_observer_v3:</div>
+Inheritance diagram for tbb::flow::interface7::sequencer_node< T, A >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00143.png" usemap="#tbb::internal::task_scheduler_observer_v3_map" alt=""/>
-  <map id="tbb::internal::task_scheduler_observer_v3_map" name="tbb::internal::task_scheduler_observer_v3_map">
-<area href="a00142.html" alt="tbb::interface6::task_scheduler_observer" shape="rect" coords="0,56,247,80"/>
+  <img src="a00143.png" usemap="#tbb::flow::interface7::sequencer_node< T, A >_map" alt=""/>
+  <map id="tbb::flow::interface7::sequencer_node< T, A >_map" name="tbb::flow::interface7::sequencer_node< T, A >_map">
+<area href="a00110.html" title="Forwards messages in FIFO order. " alt="tbb::flow::interface7::queue_node< T, A >" shape="rect" coords="420,168,690,192"/>
+<area href="a00030.html" title="Forwards messages in arbitrary order. " alt="tbb::flow::interface7::buffer_node< T, A >" shape="rect" coords="420,112,690,136"/>
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,270,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="560,56,830,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="840,56,1110,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a5aa01d803952d6d83f58a57c6f5b86e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5aa01d803952d6d83f58a57c6f5b86e9"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a5aa01d803952d6d83f58a57c6f5b86e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adcdbbd1ffdbe39bfc68310062c869e1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcdbbd1ffdbe39bfc68310062c869e1e"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:adcdbbd1ffdbe39bfc68310062c869e1e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af91d621025c821dd6d23b4aa587d8642"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91d621025c821dd6d23b4aa587d8642"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:af91d621025c821dd6d23b4aa587d8642"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeda5e9bf9d2c3101007a14332b7d578f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeda5e9bf9d2c3101007a14332b7d578f"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:aeda5e9bf9d2c3101007a14332b7d578f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00110"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00110')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
+<tr class="memitem:a6c97cb00f09b2920b470f7f05bd164d1 inherit pub_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c97cb00f09b2920b470f7f05bd164d1"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a6c97cb00f09b2920b470f7f05bd164d1 inherit pub_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17ed7b6084d51f1d50164ed9b2eff680 inherit pub_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17ed7b6084d51f1d50164ed9b2eff680"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:a17ed7b6084d51f1d50164ed9b2eff680 inherit pub_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a768cdbf6ab5f38ec87e402ff2897ca38 inherit pub_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a768cdbf6ab5f38ec87e402ff2897ca38"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a768cdbf6ab5f38ec87e402ff2897ca38 inherit pub_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5fc2cf414bebdf02246e356b21cf39a inherit pub_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5fc2cf414bebdf02246e356b21cf39a"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:ad5fc2cf414bebdf02246e356b21cf39a inherit pub_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00030')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57a0aab7103d1d0cbf27560c9acf6c8f"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a57a0aab7103d1d0cbf27560c9acf6c8f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abedb8c98e62146c3473344b7148173b8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:abedb8c98e62146c3473344b7148173b8 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c34a2182dcbbded45da979b0f405817"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:a3c34a2182dcbbded45da979b0f405817 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e505e0c4a904e2c1ded8c7c8f657c3b"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a5e505e0c4a904e2c1ded8c7c8f657c3b inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60032183e0f0266dc17b140e47dd8fc1"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>my_class</b></td></tr>
+<tr class="separator:a60032183e0f0266dc17b140e47dd8fc1 inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66143b157bc766e35601b0c28362f99e"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a66143b157bc766e35601b0c28362f99e inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39ebd2459b9cb2497e323141685c926f"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a39ebd2459b9cb2497e323141685c926f inherit pub_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a40209b347e3c82bb5bfda05941304309"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">observe</a> (bool state=true)</td></tr>
-<tr class="memdesc:a40209b347e3c82bb5bfda05941304309"><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable observation.  <a href="#a40209b347e3c82bb5bfda05941304309">More...</a><br/></td></tr>
-<tr class="separator:a40209b347e3c82bb5bfda05941304309"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a31abaf256f7172f010cfb2259c7787bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31abaf256f7172f010cfb2259c7787bb"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a> () const </td></tr>
-<tr class="memdesc:a31abaf256f7172f010cfb2259c7787bb"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if observation is enabled, false otherwise. <br/></td></tr>
-<tr class="separator:a31abaf256f7172f010cfb2259c7787bb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a25bffb05efaaab36bc58590969e29745"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25bffb05efaaab36bc58590969e29745"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a> ()</td></tr>
-<tr class="memdesc:a25bffb05efaaab36bc58590969e29745"><td class="mdescLeft"> </td><td class="mdescRight">Construct observer with observation disabled. <br/></td></tr>
-<tr class="separator:a25bffb05efaaab36bc58590969e29745"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af4282a27725fbe86052bb785bdd9c5d3"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a> (bool)</td></tr>
-<tr class="memdesc:af4282a27725fbe86052bb785bdd9c5d3"><td class="mdescLeft"> </td><td class="mdescRight">Entry notification.  <a href="#af4282a27725fbe86052bb785bdd9c5d3">More...</a><br/></td></tr>
-<tr class="separator:af4282a27725fbe86052bb785bdd9c5d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a657e90f833568e217b807d0122fa7668"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a> (bool)</td></tr>
-<tr class="memdesc:a657e90f833568e217b807d0122fa7668"><td class="mdescLeft"> </td><td class="mdescRight">Exit notification.  <a href="#a657e90f833568e217b807d0122fa7668">More...</a><br/></td></tr>
-<tr class="separator:a657e90f833568e217b807d0122fa7668"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a151e475ebba39172fcc13f43bed426cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a151e475ebba39172fcc13f43bed426cc"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a> ()</td></tr>
-<tr class="memdesc:a151e475ebba39172fcc13f43bed426cc"><td class="mdescLeft"> </td><td class="mdescRight">Destructor automatically switches observation off if it is enabled. <br/></td></tr>
-<tr class="separator:a151e475ebba39172fcc13f43bed426cc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0e8d3d486edc7f70c81b36ce9421c11a"></a>
+template<typename Sequencer > </td></tr>
+<tr class="memitem:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00143.html#a0e8d3d486edc7f70c81b36ce9421c11a">sequencer_node</a> (<a class="el" href="a00070.html">graph</a> &g, const Sequencer &s)</td></tr>
+<tr class="memdesc:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a0e8d3d486edc7f70c81b36ce9421c11a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19cfdaf85098d0fcf0b1956dc913a7a2"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a19cfdaf85098d0fcf0b1956dc913a7a2">sequencer_node</a> (const <a class="el" href="a00143.html">sequencer_node</a> &src)</td></tr>
+<tr class="memdesc:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a19cfdaf85098d0fcf0b1956dc913a7a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a01fd0321c7bd0f2112458cec2a636d7d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01fd0321c7bd0f2112458cec2a636d7d"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html#a01fd0321c7bd0f2112458cec2a636d7d">~sequencer_node</a> ()</td></tr>
+<tr class="memdesc:a01fd0321c7bd0f2112458cec2a636d7d"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a01fd0321c7bd0f2112458cec2a636d7d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a76626e1f059d1ef1c5ddd3c798ef3ad6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76626e1f059d1ef1c5ddd3c798ef3ad6"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a76626e1f059d1ef1c5ddd3c798ef3ad6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00110"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00110')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
+<tr class="memitem:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a503d3fe4f98302549e36f74633de5716"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">queue_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00110"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a503d3fe4f98302549e36f74633de5716 inherit pub_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa790bb6d3c8bef58d59235dfba1a1092"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a> (const <a class="el" href="a00110.html">queue_node</a> &src)</td></tr>
+<tr class="memdesc:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00110"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:aa790bb6d3c8bef58d59235dfba1a1092 inherit pub_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00030"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00030')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152f7bb9ab1f033ec56caa451327634c"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a152f7bb9ab1f033ec56caa451327634c inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a739635c43d1150f2c8dd3f455d698d36"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a> (const <a class="el" href="a00030.html">buffer_node</a> &src)</td></tr>
+<tr class="memdesc:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:a739635c43d1150f2c8dd3f455d698d36 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Adds a new successor.  <a href="#a5e87f7e8fd8698f62f2cad8b52b6e565">More...</a><br/></td></tr>
+<tr class="separator:a5e87f7e8fd8698f62f2cad8b52b6e565 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1db0288f46391e3a0a003c181ae87c38"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:a1db0288f46391e3a0a003c181ae87c38 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acce1c8dbcf21cfb56d1583cb716398f4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="separator:acce1c8dbcf21cfb56d1583cb716398f4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c20eb93a5601b442a589a20bca403a4"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a4c20eb93a5601b442a589a20bca403a4 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae19e0420a628d31cbd685c4c9e513f04"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:ae19e0420a628d31cbd685c4c9e513f04 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a784b06e7c4091a3ef4f9a6b0ffe35bdb"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a784b06e7c4091a3ef4f9a6b0ffe35bdb inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95a3b3ce6658e5c3298e2e361cde9a78"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:a95a3b3ce6658e5c3298e2e361cde9a78 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af20f7dba5c291f03bfabcabe250cbd23"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:af20f7dba5c291f03bfabcabe250cbd23 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ec31111eb839e28e2cfeb08192bbfa5"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:a7ec31111eb839e28e2cfeb08192bbfa5 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor.  <a href="#a3c31300c060bffbbad7798219e702aba">More...</a><br/></td></tr>
+<tr class="separator:a3c31300c060bffbbad7798219e702aba inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a> (T &v)</td></tr>
+<tr class="memdesc:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the <a class="el" href="a00030.html" title="Forwards messages in arbitrary order. ">buffer_node</a>.  <a href="#a175cb77dfbdd0e322097a833a2271c1e">More...</a><br/></td></tr>
+<tr class="separator:a175cb77dfbdd0e322097a833a2271c1e inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a> (T &v)</td></tr>
+<tr class="memdesc:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item.  <a href="#a3b12cdebf8cef15b90e3c9cd9e51019f">More...</a><br/></td></tr>
+<tr class="separator:a3b12cdebf8cef15b90e3c9cd9e51019f inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a> ()</td></tr>
+<tr class="memdesc:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#aaa3745fd4705345df16fb33954d93e30">More...</a><br/></td></tr>
+<tr class="separator:aaa3745fd4705345df16fb33954d93e30 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a> ()</td></tr>
+<tr class="memdesc:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item.  <a href="#a335072bc547c5e9b40f58dfeab525953">More...</a><br/></td></tr>
+<tr class="separator:a335072bc547c5e9b40f58dfeab525953 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fcdf027115b519b3b868a7430c39639"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a6fcdf027115b519b3b868a7430c39639 inherit pub_methods_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a897b52f8da750f35b9b2ef410eae7181"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a897b52f8da750f35b9b2ef410eae7181"></a>
-class </td><td class="memItemRight" valign="bottom"><b>observer_proxy</b></td></tr>
-<tr class="separator:a897b52f8da750f35b9b2ef410eae7181"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a232d1ae378b2c82f9788c5611429298b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a232d1ae378b2c82f9788c5611429298b"></a>
-class </td><td class="memItemRight" valign="bottom"><b>observer_list</b></td></tr>
-<tr class="separator:a232d1ae378b2c82f9788c5611429298b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad972d2c44eeed885d9df2b75e7231277"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad972d2c44eeed885d9df2b75e7231277"></a>
-class </td><td class="memItemRight" valign="bottom"><b>interface6::task_scheduler_observer</b></td></tr>
-<tr class="separator:ad972d2c44eeed885d9df2b75e7231277"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a40209b347e3c82bb5bfda05941304309"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_METHOD tbb::internal::task_scheduler_observer_v3::observe </td>
-          <td>(</td>
-          <td class="paramtype">bool </td>
-          <td class="paramname"><em>state</em> = <code>true</code>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Enable or disable observation. </p>
-<p>For local observers the method can be used only when the current thread has the task scheduler initialized or is attached to an arena.</p>
-<p>Repeated calls with the same state are no-ops. </p>
-
-<p>Referenced by <a class="el" href="a00142.html#a9ef3f1853439b46e5a9db7fd1c0f9116">tbb::interface6::task_scheduler_observer::~task_scheduler_observer()</a>, and <a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="af4282a27725fbe86052bb785bdd9c5d3"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_entry </td>
-          <td>(</td>
-          <td class="paramtype">bool </td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Entry notification. </p>
-<p>Invoked from inside observe(true) call and whenever a worker enters the arena this observer is associated with. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task.</p>
-<p>Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled. </p>
-
-</div>
-</div>
-<a class="anchor" id="a657e90f833568e217b807d0122fa7668"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_exit </td>
-          <td>(</td>
-          <td class="paramtype">bool </td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
-  </tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a689a740c2b648ae4a1670af171a28543"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:a689a740c2b648ae4a1670af171a28543"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae454d9879aff78200898fd37a9eb9d3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae454d9879aff78200898fd37a9eb9d3e"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A ><br class="typebreak"/>
+::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ae454d9879aff78200898fd37a9eb9d3e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9bf4296222afd3309732039a96002c00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bf4296222afd3309732039a96002c00"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A ><br class="typebreak"/>
+::<a class="el" href="a00031.html">buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>sequencer_operation</b></td></tr>
+<tr class="separator:a9bf4296222afd3309732039a96002c00"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_types_a00110"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00110')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
+<tr class="memitem:a7e8acd469a6e7d7f843158104c3a829d inherit pro_types_a00110"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:a7e8acd469a6e7d7f843158104c3a829d inherit pro_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a37343fca6678a3ea7008f3946362567d inherit pro_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37343fca6678a3ea7008f3946362567d"></a>
+typedef <a class="el" href="a00030.html">buffer_node</a>< T, A > </td><td class="memItemRight" valign="bottom"><b>base_type</b></td></tr>
+<tr class="separator:a37343fca6678a3ea7008f3946362567d inherit pro_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a35cc3a32918f9c5286199a251a082df6 inherit pro_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35cc3a32918f9c5286199a251a082df6"></a>
+typedef base_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a35cc3a32918f9c5286199a251a082df6 inherit pro_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7c9f9bba89dc190c85aef3ed0fc6856b inherit pro_types_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c9f9bba89dc190c85aef3ed0fc6856b"></a>
+typedef <a class="el" href="a00031.html">base_type::buffer_operation</a> </td><td class="memItemRight" valign="bottom"><b>queue_operation</b></td></tr>
+<tr class="separator:a7c9f9bba89dc190c85aef3ed0fc6856b inherit pro_types_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_types_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_types_a00030')"><img src="closed.png" alt="-"/> Protected Types inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_type</b> { <br/>
+  <b>reg_succ</b>, 
+<b>rem_succ</b>, 
+<b>req_item</b>, 
+<b>res_item</b>, 
+<br/>
+  <b>rel_res</b>, 
+<b>con_res</b>, 
+<b>put_item</b>, 
+<b>try_fwd_task</b>, 
+<br/>
+  <b>add_blt_succ</b>, 
+<b>del_blt_succ</b>, 
+<b>add_blt_pred</b>, 
+<b>del_blt_pred</b>, 
+<br/>
+  <b>blt_succ_cnt</b>, 
+<b>blt_pred_cnt</b>, 
+<b>blt_succ_cpy</b>, 
+<b>blt_pred_cpy</b>
+<br/>
+ }</td></tr>
+<tr class="separator:a0e9c45eefd5231c6a7f8e78ab4b3e3c1 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>op_stat</b> { <b>WAIT</b> =0, 
+<b>SUCCEEDED</b>, 
+<b>FAILED</b>
+ }</td></tr>
+<tr class="separator:a97578c4c0b47aa1e7281d0343f45c6e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2ba7ceb6c4c435c5abc9846a91853e2"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:ac2ba7ceb6c4c435c5abc9846a91853e2 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f1a187e32fb9a630a142ef37aeda958"></a>
+typedef <br class="typebreak"/>
+internal::aggregating_functor<br class="typebreak"/>
+< <a class="el" href="a00030.html">my_class</a>, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_handler</b></td></tr>
+<tr class="separator:a7f1a187e32fb9a630a142ef37aeda958 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f09abf6db812abcbeb262b7f1b844a5"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a5f09abf6db812abcbeb262b7f1b844a5 inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81e553b64ccf191ddf3768cb1c184c1d"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a81e553b64ccf191ddf3768cb1c184c1d inherit pro_types_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_a00110"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00110')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
+<tr class="memitem:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ab7e37f537acb75175844bd34132b99"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="memdesc:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00110"><td class="mdescLeft"> </td><td class="mdescRight">Tries to forward valid items to successors. <br/></td></tr>
+<tr class="separator:a1ab7e37f537acb75175844bd34132b99 inherit pro_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5d225b5305d2d8e1778d2ac65e473a8 inherit pro_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d225b5305d2d8e1778d2ac65e473a8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_pop</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:ad5d225b5305d2d8e1778d2ac65e473a8 inherit pro_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae85f9ee123b22bb273116402372d2619 inherit pro_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae85f9ee123b22bb273116402372d2619"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_reserve</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:ae85f9ee123b22bb273116402372d2619 inherit pro_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc6c42585d3deef75dd3922b6fe9cc21 inherit pro_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc6c42585d3deef75dd3922b6fe9cc21"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_consume</b> (<a class="el" href="a00031.html">queue_operation</a> *op)</td></tr>
+<tr class="separator:acc6c42585d3deef75dd3922b6fe9cc21 inherit pro_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3890cabe95773554ff067f287345faa inherit pro_methods_a00110"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3890cabe95773554ff067f287345faa"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:af3890cabe95773554ff067f287345faa inherit pro_methods_a00110"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00030"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00030')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memitem:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade2fe89be00e023aafb1d3c380762048"></a>
+<a class="el" href="a00126.html">internal::round_robin_cache</a>< T, <br class="typebreak"/>
+<a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:ade2fe89be00e023aafb1d3c380762048 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eda90c0f6300644705f142c6ada1a4d"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:a4eda90c0f6300644705f142c6ada1a4d inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a441fb73f0e15aed49945fb7ec9925e9f"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>forwarder_busy</b></td></tr>
+<tr class="separator:a441fb73f0e15aed49945fb7ec9925e9f inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc948866a1eb4c7a95b0edc08872d487"></a>
+internal::aggregator<br class="typebreak"/>
+< my_handler, <a class="el" href="a00031.html">buffer_operation</a> > </td><td class="memItemRight" valign="bottom"><b>my_aggregator</b></td></tr>
+<tr class="separator:adc948866a1eb4c7a95b0edc08872d487 inherit pro_attribs_a00030"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-</div><div class="memdoc">
-
-<p>Exit notification. </p>
-<p>Invoked from inside observe(false) call and whenever a worker leaves the arena this observer is associated with.</p>
-<p>Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled. </p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T, typename A = cache_aligned_allocator<T>><br/>
+class tbb::flow::interface7::sequencer_node< T, A ></h3>
 
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>task_scheduler_observer.h</li>
+<p>Forwards messages in sequence order. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00143.png b/doc/html/a00143.png
index b87088c..187632e 100644
Binary files a/doc/html/a00143.png and b/doc/html/a00143.png differ
diff --git a/doc/html/a00144.html b/doc/html/a00144.html
index 4fbac50..7f17ddf 100644
--- a/doc/html/a00144.html
+++ b/doc/html/a00144.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_allocator< T > Class Template Reference</title>
+<title>tbb::flow::interface7::source_node< Output > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,122 +33,222 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00144.html">tbb_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00144.html">source_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="a00289.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00335.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::flow::interface7::source_node< Output > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<p>An executable node that acts as a source, i.e. it has no predecessors.  
  <a href="a00144.html#details">More...</a></p>
 
-<p><code>#include <tbb_allocator.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::source_node< Output >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00144.png" usemap="#tbb::flow::interface7::source_node< Output >_map" alt=""/>
+  <map id="tbb::flow::interface7::source_node< Output >_map" name="tbb::flow::interface7::source_node< Output >_map">
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,262,80"/>
+<area href="a00142.html" alt="tbb::flow::interface7::sender< Output >" shape="rect" coords="272,56,534,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html">rebind</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a60463a571d5c20f7762112367261ad94"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> { <b>scalable</b>, 
-<b>standard</b>
- }</td></tr>
-<tr class="memdesc:a60463a571d5c20f7762112367261ad94"><td class="mdescLeft"> </td><td class="mdescRight">Specifies current allocator. <br/></td></tr>
-<tr class="separator:a60463a571d5c20f7762112367261ad94"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a26be966de4164e37002247c2c2266df9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26be966de4164e37002247c2c2266df9"></a>
+<tr class="memitem:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0308ffc2e5c24739cd85e769ec8a8f5f"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a></td></tr>
+<tr class="memdesc:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="mdescLeft"> </td><td class="mdescRight">The type of the output message, which is complete. <br/></td></tr>
+<tr class="separator:a0308ffc2e5c24739cd85e769ec8a8f5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae354d135ba9aceb6ca41464fff027666"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae354d135ba9aceb6ca41464fff027666"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< Output > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a></td></tr>
+<tr class="memdesc:ae354d135ba9aceb6ca41464fff027666"><td class="mdescLeft"> </td><td class="mdescRight">The type of successors of this node. <br/></td></tr>
+<tr class="separator:ae354d135ba9aceb6ca41464fff027666"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae30b73ef5eef1053aac315bef3bee4a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae30b73ef5eef1053aac315bef3bee4a1"></a>
+typedef <a class="el" href="a00103.html">null_type</a> </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:ae30b73ef5eef1053aac315bef3bee4a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9588c0b250b6a1edfda94fe3a2efe96e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9588c0b250b6a1edfda94fe3a2efe96e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a9588c0b250b6a1edfda94fe3a2efe96e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9317f0a4820e8f149ee855fb8b835a40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9317f0a4820e8f149ee855fb8b835a40"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a9317f0a4820e8f149ee855fb8b835a40"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< Output ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef Output </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< Output > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
 typedef <br class="typebreak"/>
-internal::allocator_type< T ><br class="typebreak"/>
-::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a26be966de4164e37002247c2c2266df9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a452a6c09408f425c9a005b5f2aad1761"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a452a6c09408f425c9a005b5f2aad1761"></a>
-typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a452a6c09408f425c9a005b5f2aad1761"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a63122d559635096a2618aecd1ba6664b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63122d559635096a2618aecd1ba6664b"></a>
-typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a63122d559635096a2618aecd1ba6664b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5ec6bd5e8cdd5b7abb99f5d72760c7a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ec6bd5e8cdd5b7abb99f5d72760c7a2"></a>
-typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a5ec6bd5e8cdd5b7abb99f5d72760c7a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24d98ce3ab908bc4b10d21dad6622364"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24d98ce3ab908bc4b10d21dad6622364"></a>
-typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a24d98ce3ab908bc4b10d21dad6622364"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a812817d50e8df15df54998caec9892eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a812817d50e8df15df54998caec9892eb"></a>
-typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a812817d50e8df15df54998caec9892eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acba390757f664df03a15e933e3e34941"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acba390757f664df03a15e933e3e34941"></a>
-typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:acba390757f664df03a15e933e3e34941"><td class="memSeparator" colspan="2"> </td></tr>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8371538bc959f41f342012e363564aed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8371538bc959f41f342012e363564aed"></a>
- </td><td class="memItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00144.html">tbb_allocator</a> &)  throw ()</td></tr>
-<tr class="separator:a8371538bc959f41f342012e363564aed"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9faff9ae2c2cd3ed2ca064b562224974"></a>
-template<typename U > </td></tr>
-<tr class="memitem:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00144.html">tbb_allocator</a>< U > &)  throw ()</td></tr>
-<tr class="separator:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1370dbb1f06fed57273bddcae688255"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1370dbb1f06fed57273bddcae688255"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
-<tr class="separator:ac1370dbb1f06fed57273bddcae688255"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afb9c91d548d4a5affe3ec1de1c1b9327"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb9c91d548d4a5affe3ec1de1c1b9327"></a>
-const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
-<tr class="separator:afb9c91d548d4a5affe3ec1de1c1b9327"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afedd8a64eed9692083c708f419338e0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afedd8a64eed9692083c708f419338e0c"></a>
-pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#afedd8a64eed9692083c708f419338e0c">allocate</a> (size_type n, const void *=0)</td></tr>
-<tr class="memdesc:afedd8a64eed9692083c708f419338e0c"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
-<tr class="separator:afedd8a64eed9692083c708f419338e0c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28e333e0fff56dd53c20b82cfee430ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28e333e0fff56dd53c20b82cfee430ab"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a28e333e0fff56dd53c20b82cfee430ab">deallocate</a> (pointer p, size_type)</td></tr>
-<tr class="memdesc:a28e333e0fff56dd53c20b82cfee430ab"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
-<tr class="separator:a28e333e0fff56dd53c20b82cfee430ab"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0a2676fb8a2f931961d373b88848c93e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a2676fb8a2f931961d373b88848c93e"></a>
-size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a0a2676fb8a2f931961d373b88848c93e">max_size</a> () const   throw ()</td></tr>
-<tr class="memdesc:a0a2676fb8a2f931961d373b88848c93e"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
-<tr class="separator:a0a2676fb8a2f931961d373b88848c93e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af54fa3029e33cebe5ba64a8538306fdf"><td class="memTemplParams" colspan="2"><a class="anchor" id="af54fa3029e33cebe5ba64a8538306fdf"></a>
-template<typename U , typename... Args> </td></tr>
-<tr class="memitem:af54fa3029e33cebe5ba64a8538306fdf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00144.html#af54fa3029e33cebe5ba64a8538306fdf">construct</a> (U *p, Args &&...args)</td></tr>
-<tr class="memdesc:af54fa3029e33cebe5ba64a8538306fdf"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
-<tr class="separator:af54fa3029e33cebe5ba64a8538306fdf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a694e266db657afba34ecb60111b2e2d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a694e266db657afba34ecb60111b2e2d3"></a>
-void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
-<tr class="separator:a694e266db657afba34ecb60111b2e2d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac7b1b393a8ff3399079328c0971c1996"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7b1b393a8ff3399079328c0971c1996"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#ac7b1b393a8ff3399079328c0971c1996">destroy</a> (pointer p)</td></tr>
-<tr class="memdesc:ac7b1b393a8ff3399079328c0971c1996"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
-<tr class="separator:ac7b1b393a8ff3399079328c0971c1996"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5730a4677f5bfdf6ff6e45e31a249d37"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00144.html#a5730a4677f5bfdf6ff6e45e31a249d37">source_node</a> (<a class="el" href="a00070.html">graph</a> &g, Body body, bool is_active=true)</td></tr>
+<tr class="memdesc:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="mdescLeft"> </td><td class="mdescRight">Constructor for a node with a successor. <br/></td></tr>
+<tr class="separator:a5730a4677f5bfdf6ff6e45e31a249d37"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa365130109912d4cdd4534a0cb1d92bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa365130109912d4cdd4534a0cb1d92bd"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#aa365130109912d4cdd4534a0cb1d92bd">source_node</a> (const <a class="el" href="a00144.html">source_node</a> &src)</td></tr>
+<tr class="memdesc:aa365130109912d4cdd4534a0cb1d92bd"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <br/></td></tr>
+<tr class="separator:aa365130109912d4cdd4534a0cb1d92bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5ce12e348e121b9f4dffda9d1035c490"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ce12e348e121b9f4dffda9d1035c490"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a5ce12e348e121b9f4dffda9d1035c490">~source_node</a> ()</td></tr>
+<tr class="memdesc:a5ce12e348e121b9f4dffda9d1035c490"><td class="mdescLeft"> </td><td class="mdescRight">The destructor. <br/></td></tr>
+<tr class="separator:a5ce12e348e121b9f4dffda9d1035c490"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee939f57a984576e945a71f476af3b81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee939f57a984576e945a71f476af3b81"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:aee939f57a984576e945a71f476af3b81"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a27aa895c54d59f570f267c26f14f0cf1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27aa895c54d59f570f267c26f14f0cf1"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a27aa895c54d59f570f267c26f14f0cf1">register_successor</a> (<a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a27aa895c54d59f570f267c26f14f0cf1"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
+<tr class="separator:a27aa895c54d59f570f267c26f14f0cf1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a313af00af7584f4b9aee1e1bacff4041"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a313af00af7584f4b9aee1e1bacff4041"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a313af00af7584f4b9aee1e1bacff4041">remove_successor</a> (<a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> &r)</td></tr>
+<tr class="memdesc:a313af00af7584f4b9aee1e1bacff4041"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
+<tr class="separator:a313af00af7584f4b9aee1e1bacff4041"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a813191618016b329d9e959f6b4d201a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a813191618016b329d9e959f6b4d201a8"></a>
+<a class="el" href="a00059.html">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a813191618016b329d9e959f6b4d201a8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afc3a170b55f0c5516530de19fde3670c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc3a170b55f0c5516530de19fde3670c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> &r)</td></tr>
+<tr class="separator:afc3a170b55f0c5516530de19fde3670c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5329794c90e838694258f6c82170f2fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5329794c90e838694258f6c82170f2fb"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> &r)</td></tr>
+<tr class="separator:a5329794c90e838694258f6c82170f2fb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a34c65072403172763c3a0de761bed759"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34c65072403172763c3a0de761bed759"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:a34c65072403172763c3a0de761bed759"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6b2ef15fe100caf27fb4cbca34c0eeb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6b2ef15fe100caf27fb4cbca34c0eeb"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:ab6b2ef15fe100caf27fb4cbca34c0eeb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a038c6b2b406d496244617a2d6dc01581"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a038c6b2b406d496244617a2d6dc01581"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a038c6b2b406d496244617a2d6dc01581">try_get</a> (<a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> &v)</td></tr>
+<tr class="memdesc:a038c6b2b406d496244617a2d6dc01581"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the node. <br/></td></tr>
+<tr class="separator:a038c6b2b406d496244617a2d6dc01581"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aabb0d505d684d173b1a2c976bf0781a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabb0d505d684d173b1a2c976bf0781a6"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#aabb0d505d684d173b1a2c976bf0781a6">try_reserve</a> (<a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> &v)</td></tr>
+<tr class="memdesc:aabb0d505d684d173b1a2c976bf0781a6"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item. <br/></td></tr>
+<tr class="separator:aabb0d505d684d173b1a2c976bf0781a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a309c65a2d0208a1072f7e852198d461d"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a309c65a2d0208a1072f7e852198d461d">try_release</a> ()</td></tr>
+<tr class="memdesc:a309c65a2d0208a1072f7e852198d461d"><td class="mdescLeft"> </td><td class="mdescRight">Release a reserved item.  <a href="#a309c65a2d0208a1072f7e852198d461d">More...</a><br/></td></tr>
+<tr class="separator:a309c65a2d0208a1072f7e852198d461d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad38a58c2f8f74f4c5cf72a2625ac26bf"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="mdescLeft"> </td><td class="mdescRight">Consumes a reserved item. <br/></td></tr>
+<tr class="separator:ad38a58c2f8f74f4c5cf72a2625ac26bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a67264c4564abefbf14c0d587c6fe2857"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67264c4564abefbf14c0d587c6fe2857"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#a67264c4564abefbf14c0d587c6fe2857">activate</a> ()</td></tr>
+<tr class="memdesc:a67264c4564abefbf14c0d587c6fe2857"><td class="mdescLeft"> </td><td class="mdescRight">Activates a node that was created in the inactive state. <br/></td></tr>
+<tr class="separator:a67264c4564abefbf14c0d587c6fe2857"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a44b05598b8e9636ed328b07dcfe40e09"><td class="memTemplParams" colspan="2"><a class="anchor" id="a44b05598b8e9636ed328b07dcfe40e09"></a>
+template<typename Body > </td></tr>
+<tr class="memitem:a44b05598b8e9636ed328b07dcfe40e09"><td class="memTemplItemLeft" align="right" valign="top">Body </td><td class="memTemplItemRight" valign="bottom"><b>copy_function_object</b> ()</td></tr>
+<tr class="separator:a44b05598b8e9636ed328b07dcfe40e09"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2b588ddacaec7948f8661a10afa1e057"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b588ddacaec7948f8661a10afa1e057"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a2b588ddacaec7948f8661a10afa1e057"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aed1fa277170d6cee6d1437f1258ac544"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed1fa277170d6cee6d1437f1258ac544"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#aed1fa277170d6cee6d1437f1258ac544">reset_node</a> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="memdesc:aed1fa277170d6cee6d1437f1258ac544"><td class="mdescLeft"> </td><td class="mdescRight">resets the <a class="el" href="a00144.html" title="An executable node that acts as a source, i.e. it has no predecessors. ">source_node</a> to its initial state <br/></td></tr>
+<tr class="separator:aed1fa277170d6cee6d1437f1258ac544"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:aa4606cff0156ec4237c1571204851bfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4606cff0156ec4237c1571204851bfb"></a>
-static <a class="el" href="a00144.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html#aa4606cff0156ec4237c1571204851bfb">allocator_type</a> ()</td></tr>
-<tr class="memdesc:aa4606cff0156ec4237c1571204851bfb"><td class="mdescLeft"> </td><td class="mdescRight">Returns current allocator. <br/></td></tr>
-<tr class="separator:aa4606cff0156ec4237c1571204851bfb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a5cb5b39a66ec0c37e20f8e17e7cfda9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cb5b39a66ec0c37e20f8e17e7cfda9a"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::source_task_bypass< source_node< output_type > ></b></td></tr>
+<tr class="separator:a5cb5b39a66ec0c37e20f8e17e7cfda9a"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T><br/>
-class tbb::tbb_allocator< T ></h3>
+<div class="textblock"><h3>template<typename Output><br/>
+class tbb::flow::interface7::source_node< Output ></h3>
+
+<p>An executable node that acts as a source, i.e. it has no predecessors. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a309c65a2d0208a1072f7e852198d461d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Output > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool <a class="el" href="a00144.html">tbb::flow::interface7::source_node</a>< Output >::try_release </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Release a reserved item. </p>
+<p>true = item has been released and so remains in sender, dest must request or reserve future items </p>
+
+<p>Reimplemented from <a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< Output ></a>.</p>
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
-<p>The class selects the best memory allocation mechanism available from scalable_malloc and standard malloc. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00126.png b/doc/html/a00144.png
similarity index 100%
rename from doc/html/a00126.png
rename to doc/html/a00144.png
diff --git a/doc/html/a00145.html b/doc/html/a00145.html
index 97027b5..3f35511 100644
--- a/doc/html/a00145.html
+++ b/doc/html/a00145.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_allocator< void > Class Template Reference</title>
+<title>tbb::spin_mutex Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,53 +33,147 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">tbb_allocator< void ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">spin_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="a00291.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00302.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::spin_mutex Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<p>A lock that occupies a single byte.  
  <a href="a00145.html#details">More...</a></p>
 
-<p><code>#include <tbb_allocator.h></code></p>
+<p><code>#include <spin_mutex.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::spin_mutex:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00145.png" usemap="#tbb::spin_mutex_map" alt=""/>
+  <map id="tbb::spin_mutex_map" name="tbb::spin_mutex_map">
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html">rebind</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Represents acquisition of a mutex.  <a href="a00134.html#details">More...</a><br/></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a8fda536620d85d53caa82c45ffa49dd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fda536620d85d53caa82c45ffa49dd8"></a>
-typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:a8fda536620d85d53caa82c45ffa49dd8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a401d3c91a38b09410a20fe69d4d9745d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a401d3c91a38b09410a20fe69d4d9745d"></a>
-typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a401d3c91a38b09410a20fe69d4d9745d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afef43ed21663982050fbae7b970e33f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef43ed21663982050fbae7b970e33f6"></a>
-typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:afef43ed21663982050fbae7b970e33f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a6c96196965bf7df426311d282ad3c378"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html#a6c96196965bf7df426311d282ad3c378">spin_mutex</a> ()</td></tr>
+<tr class="memdesc:a6c96196965bf7df426311d282ad3c378"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired lock.  <a href="#a6c96196965bf7df426311d282ad3c378">More...</a><br/></td></tr>
+<tr class="separator:a6c96196965bf7df426311d282ad3c378"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ec484f4df6ec5595ec821ef20bd6cd7"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct</a> ()</td></tr>
+<tr class="memdesc:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="mdescLeft"> </td><td class="mdescRight">Internal constructor with ITT instrumentation. <br/></td></tr>
+<tr class="separator:a4ec484f4df6ec5595ec821ef20bd6cd7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8957e40b0781192419d01d28e5205ec4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8957e40b0781192419d01d28e5205ec4"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html#a8957e40b0781192419d01d28e5205ec4">lock</a> ()</td></tr>
+<tr class="memdesc:a8957e40b0781192419d01d28e5205ec4"><td class="mdescLeft"> </td><td class="mdescRight">Acquire lock. <br/></td></tr>
+<tr class="separator:a8957e40b0781192419d01d28e5205ec4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a003ffb196d22bf22ca22142338b7eeab"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html#a003ffb196d22bf22ca22142338b7eeab">try_lock</a> ()</td></tr>
+<tr class="memdesc:a003ffb196d22bf22ca22142338b7eeab"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring lock (non-blocking)  <a href="#a003ffb196d22bf22ca22142338b7eeab">More...</a><br/></td></tr>
+<tr class="separator:a003ffb196d22bf22ca22142338b7eeab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfcf8fe840aa73c08c2cadd570fd48fd"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html#adfcf8fe840aa73c08c2cadd570fd48fd">unlock</a> ()</td></tr>
+<tr class="memdesc:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:adfcf8fe840aa73c08c2cadd570fd48fd"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a7c3354db4bd5cc81bccee9f249abb9e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c3354db4bd5cc81bccee9f249abb9e8"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = false</td></tr>
+<tr class="separator:a7c3354db4bd5cc81bccee9f249abb9e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0cae048c5dc5deffe75464e4a3a2b752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cae048c5dc5deffe75464e4a3a2b752"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:a0cae048c5dc5deffe75464e4a3a2b752"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad00ec9a97f34c9160300950b36deac3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad00ec9a97f34c9160300950b36deac3e"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+<tr class="separator:ad00ec9a97f34c9160300950b36deac3e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcf922650b2fd9d76b7b939d8511bbd8"></a>
+class </td><td class="memItemRight" valign="bottom"><b>scoped_lock</b></td></tr>
+<tr class="separator:afcf922650b2fd9d76b7b939d8511bbd8"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<><br/>
-class tbb::tbb_allocator< void ></h3>
+<div class="textblock"><p>A lock that occupies a single byte. </p>
+<p>A <a class="el" href="a00145.html" title="A lock that occupies a single byte. ">spin_mutex</a> is a spin mutex that fits in a single byte. It should be used only for locking short critical sections (typically less than 20 instructions) when fairness is not an issue. If zero-initialized, the mutex is considered unheld. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a6c96196965bf7df426311d282ad3c378"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::spin_mutex::spin_mutex </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct unacquired lock. </p>
+<p>Equivalent to zero-initialization of *this. </p>
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+<p>References <a class="el" href="a00145.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct()</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a003ffb196d22bf22ca22142338b7eeab"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::spin_mutex::try_lock </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Try acquiring lock (non-blocking) </p>
+<p>Return true if lock acquired; false otherwise. </p>
+
+<p>References <a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N >::begin()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>spin_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00145.png b/doc/html/a00145.png
new file mode 100644
index 0000000..5dfc589
Binary files /dev/null and b/doc/html/a00145.png differ
diff --git a/doc/html/a00146.html b/doc/html/a00146.html
index fd3142d..3cf35c7 100644
--- a/doc/html/a00146.html
+++ b/doc/html/a00146.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_exception Class Reference</title>
+<title>tbb::spin_rw_mutex_v3 Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,63 +33,117 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">tbb_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">spin_rw_mutex_v3</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00302.html">List of all members</a>  </div>
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="#pro-types">Protected Types</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#pro-static-attribs">Static Protected Attributes</a> |
+<a href="a00304.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_exception Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+<div class="title">tbb::spin_rw_mutex_v3 Class Reference<div class="ingroups"><a class="el" href="a00258.html">Synchronization</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  
+<p>Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  
  <a href="a00146.html#details">More...</a></p>
 
-<p><code>#include <tbb_exception.h></code></p>
+<p><code>#include <spin_rw_mutex.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::tbb_exception:</div>
+Inheritance diagram for tbb::spin_rw_mutex_v3:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00146.png" usemap="#tbb::tbb_exception_map" alt=""/>
-  <map id="tbb::tbb_exception_map" name="tbb::tbb_exception_map">
-<area href="a00031.html" title="This class is used by TBB to propagate information about unhandled exceptions into the root thread..." alt="tbb::captured_exception" shape="rect" coords="0,112,248,136"/>
-<area href="a00078.html" title="Template that can be used to implement exception that transfers arbitrary ExceptionData to the root t..." alt="tbb::movable_exception< ExceptionData >" shape="rect" coords="258,112,506,136"/>
+  <img src="a00146.png" usemap="#tbb::spin_rw_mutex_v3_map" alt=""/>
+  <map id="tbb::spin_rw_mutex_v3_map" name="tbb::spin_rw_mutex_v3_map">
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00135.html">scoped_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The scoped locking pattern.  <a href="a00135.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a4bd4ba0d501021013d1473d21b020b69"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00146.html">tbb_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">move</a> ()=0  throw ()</td></tr>
-<tr class="memdesc:a4bd4ba0d501021013d1473d21b020b69"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#a4bd4ba0d501021013d1473d21b020b69">More...</a><br/></td></tr>
-<tr class="separator:a4bd4ba0d501021013d1473d21b020b69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">destroy</a> ()=0  throw ()</td></tr>
-<tr class="memdesc:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#ad3bc09bf78c33f19a0bcdf882fdf9d41">More...</a><br/></td></tr>
-<tr class="separator:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae45c08d36c7ec7ae91785da3515a8828"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">throw_self</a> ()=0</td></tr>
-<tr class="memdesc:ae45c08d36c7ec7ae91785da3515a8828"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#ae45c08d36c7ec7ae91785da3515a8828">More...</a><br/></td></tr>
-<tr class="separator:ae45c08d36c7ec7ae91785da3515a8828"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a282bb7dce5f157d044d14d50cd6ff35c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a282bb7dce5f157d044d14d50cd6ff35c"></a>
-virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a282bb7dce5f157d044d14d50cd6ff35c">name</a> () const =0  throw ()</td></tr>
-<tr class="memdesc:a282bb7dce5f157d044d14d50cd6ff35c"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
-<tr class="separator:a282bb7dce5f157d044d14d50cd6ff35c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0ad81121d4b722ecc466b5d3cc4e919"></a>
-virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ae0ad81121d4b722ecc466b5d3cc4e919">what</a> () const =0  throw ()</td></tr>
-<tr class="memdesc:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00146.html#ae0ad81121d4b722ecc466b5d3cc4e919" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
-<tr class="separator:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
-<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad30fc1ffa0a2b8134e177e02c5821d7f"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ad30fc1ffa0a2b8134e177e02c5821d7f">spin_rw_mutex_v3</a> ()</td></tr>
+<tr class="memdesc:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="mdescLeft"> </td><td class="mdescRight">Construct unacquired mutex. <br/></td></tr>
+<tr class="separator:ad30fc1ffa0a2b8134e177e02c5821d7f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc7cf2e4b14d3a2a591a3552d74ba99d"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#acc7cf2e4b14d3a2a591a3552d74ba99d">~spin_rw_mutex_v3</a> ()</td></tr>
+<tr class="memdesc:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="mdescLeft"> </td><td class="mdescRight">Destructor asserts if the mutex is acquired, i.e. state is zero. <br/></td></tr>
+<tr class="separator:acc7cf2e4b14d3a2a591a3552d74ba99d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a51e207646300a4c242bb4aaa4e04e9b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51e207646300a4c242bb4aaa4e04e9b8"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#a51e207646300a4c242bb4aaa4e04e9b8">lock</a> ()</td></tr>
+<tr class="memdesc:a51e207646300a4c242bb4aaa4e04e9b8"><td class="mdescLeft"> </td><td class="mdescRight">Acquire writer lock. <br/></td></tr>
+<tr class="separator:a51e207646300a4c242bb4aaa4e04e9b8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ab6ec20b1ec43a49c8c2908984e35b5e8">try_lock</a> ()</td></tr>
+<tr class="memdesc:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring writer lock (non-blocking)  <a href="#ab6ec20b1ec43a49c8c2908984e35b5e8">More...</a><br/></td></tr>
+<tr class="separator:ab6ec20b1ec43a49c8c2908984e35b5e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab04321ed2cdf12ac5825c54591028fc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab04321ed2cdf12ac5825c54591028fc0"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ab04321ed2cdf12ac5825c54591028fc0">unlock</a> ()</td></tr>
+<tr class="memdesc:ab04321ed2cdf12ac5825c54591028fc0"><td class="mdescLeft"> </td><td class="mdescRight">Release lock. <br/></td></tr>
+<tr class="separator:ab04321ed2cdf12ac5825c54591028fc0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0e3bb644e9021d0f80ee36b03f228e4"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#aa0e3bb644e9021d0f80ee36b03f228e4">lock_read</a> ()</td></tr>
+<tr class="memdesc:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="mdescLeft"> </td><td class="mdescRight">Acquire reader lock. <br/></td></tr>
+<tr class="separator:aa0e3bb644e9021d0f80ee36b03f228e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac932f65b0b66320688e7957ce9c3e2c1"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#ac932f65b0b66320688e7957ce9c3e2c1">try_lock_read</a> ()</td></tr>
+<tr class="memdesc:ac932f65b0b66320688e7957ce9c3e2c1"><td class="mdescLeft"> </td><td class="mdescRight">Try acquiring reader lock (non-blocking)  <a href="#ac932f65b0b66320688e7957ce9c3e2c1">More...</a><br/></td></tr>
+<tr class="separator:ac932f65b0b66320688e7957ce9c3e2c1"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:addc8223faacc1bb2cc8626b609ab2c49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addc8223faacc1bb2cc8626b609ab2c49"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_rw_mutex</b> = true</td></tr>
+<tr class="separator:addc8223faacc1bb2cc8626b609ab2c49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_recursive_mutex</b> = false</td></tr>
+<tr class="separator:a7f6aa8fe3e9c7c4ee4cdec6d221ffe45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:affd403f6e3822589e985a2c23505fbd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affd403f6e3822589e985a2c23505fbd1"></a>
+static const bool </td><td class="memItemRight" valign="bottom"><b>is_fair_mutex</b> = false</td></tr>
+<tr class="separator:affd403f6e3822589e985a2c23505fbd1"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
+Protected Types</h2></td></tr>
+<tr class="memitem:a27adc7d791dfaa4a60638313b9d1c1f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27adc7d791dfaa4a60638313b9d1c1f4"></a>
+typedef intptr_t </td><td class="memItemRight" valign="bottom"><b>state_t</b></td></tr>
+<tr class="separator:a27adc7d791dfaa4a60638313b9d1c1f4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:aa28625051072472ccd8a2b19405d6fb3"><td class="memItemLeft" align="right" valign="top">state_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html#aa28625051072472ccd8a2b19405d6fb3">state</a></td></tr>
+<tr class="memdesc:aa28625051072472ccd8a2b19405d6fb3"><td class="mdescLeft"> </td><td class="mdescRight">State of lock.  <a href="#aa28625051072472ccd8a2b19405d6fb3">More...</a><br/></td></tr>
+<tr class="separator:aa28625051072472ccd8a2b19405d6fb3"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
+Static Protected Attributes</h2></td></tr>
+<tr class="memitem:aaeec59dde09fe92be196ecddb480777b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeec59dde09fe92be196ecddb480777b"></a>
+static const state_t </td><td class="memItemRight" valign="bottom"><b>WRITER</b> = 1</td></tr>
+<tr class="separator:aaeec59dde09fe92be196ecddb480777b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5b321914828e5e21baf24d58f32c66d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b321914828e5e21baf24d58f32c66d5"></a>
+static const state_t </td><td class="memItemRight" valign="bottom"><b>WRITER_PENDING</b> = 2</td></tr>
+<tr class="separator:a5b321914828e5e21baf24d58f32c66d5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6cc93cdcf4ad43f6bf8b0f76cde66f9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc93cdcf4ad43f6bf8b0f76cde66f9e"></a>
+static const state_t </td><td class="memItemRight" valign="bottom"><b>READERS</b> = ~(WRITER | WRITER_PENDING)</td></tr>
+<tr class="separator:a6cc93cdcf4ad43f6bf8b0f76cde66f9e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af1386a2fa5979432e4a58b94e68db23f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1386a2fa5979432e4a58b94e68db23f"></a>
+static const state_t </td><td class="memItemRight" valign="bottom"><b>ONE_READER</b> = 4</td></tr>
+<tr class="separator:af1386a2fa5979432e4a58b94e68db23f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6a811c72bd7e5ad6a3a9161ee05e298c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a811c72bd7e5ad6a3a9161ee05e298c"></a>
+static const state_t </td><td class="memItemRight" valign="bottom"><b>BUSY</b> = WRITER | READERS</td></tr>
+<tr class="separator:a6a811c72bd7e5ad6a3a9161ee05e298c"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. </p>
-<p>If an unhandled exception of the type derived from <a class="el" href="a00146.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> is intercepted by the TBB scheduler in one of the worker threads, it is delivered to and re-thrown in the root thread. The root thread is the thread that has started the outermost algorithm or root task sharing the same <a class="el" href="a00138.html">task_group_context</a>  [...]
-<p>Note: when documentation mentions workers with respect to exception handling, masters are implied as well, because they are completely equivalent in this context. Consequently a root thread can be master or worker thread.</p>
-<p>NOTE: In case of nested algorithms or complex task hierarchies when the nested levels share (explicitly or by means of implicit inheritance) the task group context of the outermost level, the exception may be (re-)thrown multiple times (ultimately - in each worker on each nesting level) before reaching the root thread at the outermost level. IMPORTANT: if you intercept an exception derived from this class on a nested level, you must re-throw it in the catch block by means of the "thro [...]
-<p>TBB provides two implementations of this interface: <a class="el" href="a00031.html" title="This class is used by TBB to propagate information about unhandled exceptions into the root thread...">tbb::captured_exception</a> and template class <a class="el" href="a00078.html" title="Template that can be used to implement exception that transfers arbitrary ExceptionData to the root t...">tbb::movable_exception</a>. See their declarations for more info. </p>
+<div class="textblock"><p>Fast, unfair, spinning reader-writer lock with backoff and writer-preference. </p>
 </div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ad3bc09bf78c33f19a0bcdf882fdf9d41"></a>
+<a class="anchor" id="ab6ec20b1ec43a49c8c2908984e35b5e8"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -97,33 +151,25 @@ virtual const char * </td><td class="memItemRight" valign="bottom"><a class
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">virtual void tbb::tbb_exception::destroy </td>
+          <td class="memname">bool tbb::spin_rw_mutex_v3::try_lock </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
         </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>Destroys objects created by the <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
-<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
-
-<p>Implemented in <a class="el" href="a00078.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00031.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>.</p>
+<p>Try acquiring writer lock (non-blocking) </p>
+<p>Return true if lock acquired; false otherwise. </p>
 
 </div>
 </div>
-<a class="anchor" id="a4bd4ba0d501021013d1473d21b020b69"></a>
+<a class="anchor" id="ac932f65b0b66320688e7957ce9c3e2c1"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -131,46 +177,11 @@ virtual const char * </td><td class="memItemRight" valign="bottom"><a class
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">virtual <a class="el" href="a00146.html">tbb_exception</a>* tbb::tbb_exception::move </td>
+          <td class="memname">bool tbb::spin_rw_mutex_v3::try_lock_read </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
         </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Creates and returns pointer to the deep copy of this exception object. </p>
-<p>Move semantics is allowed. </p>
-
-<p>Implemented in <a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a6a973c37078afedf7d457ff4704bf8cd"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::tbb_exception::operator delete </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>p</em>)</td><td></td>
-          <td></td>
-        </tr>
       </table>
   </td>
   <td class="mlabels-right">
@@ -178,12 +189,14 @@ virtual const char * </td><td class="memItemRight" valign="bottom"><a class
   </tr>
 </table>
 </div><div class="memdoc">
-<p>Operator delete is provided only to allow using existing smart pointers with TBB exception objects obtained as the result of applying <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> operation on an exception thrown out of TBB scheduler.</p>
-<p>When overriding method <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> make sure to override operator delete as well if memory is allocated not by TBB's scalable allocator. </p>
+
+<p>Try acquiring reader lock (non-blocking) </p>
+<p>Return true if reader lock acquired; false otherwise. </p>
 
 </div>
 </div>
-<a class="anchor" id="ae45c08d36c7ec7ae91785da3515a8828"></a>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="aa28625051072472ccd8a2b19405d6fb3"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -191,33 +204,30 @@ virtual const char * </td><td class="memItemRight" valign="bottom"><a class
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">virtual void tbb::tbb_exception::throw_self </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
+          <td class="memname">state_t tbb::spin_rw_mutex_v3::state</td>
         </tr>
       </table>
   </td>
   <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
   </tr>
 </table>
 </div><div class="memdoc">
 
-<p>Throws this exception object. </p>
-<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
+<p>State of lock. </p>
+<p>Bit 0 = writer is holding lock Bit 1 = request by a writer to acquire lock (hint to readers to wait) Bit 2..N = number of readers holding lock </p>
 
-<p>Implemented in <a class="el" href="a00078.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00031.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>.</p>
+<p>Referenced by <a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock::release()</a>, and <a class="el" href="a00146.html#ab04321ed2cdf12ac5825c54591028fc0">unlock()</a>.</p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<li>spin_rw_mutex.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00146.png b/doc/html/a00146.png
index a067095..ff1efc9 100644
Binary files a/doc/html/a00146.png and b/doc/html/a00146.png differ
diff --git a/doc/html/a00147.html b/doc/html/a00147.html
index 2fa4922..a46251f 100644
--- a/doc/html/a00147.html
+++ b/doc/html/a00147.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::tbb_exception_ptr Class Reference</title>
+<title>tbb::flow::interface7::split_node< TupleType, Allocator > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,82 +33,138 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00147.html">tbb_exception_ptr</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00147.html">split_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="a00375.html">List of all members</a>  </div>
+<a href="a00338.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_exception_ptr Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::split_node< TupleType, Allocator > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Exception container that preserves the exact copy of the original exception.  
+<p><a class="el" href="a00147.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its  
  <a href="a00147.html#details">More...</a></p>
 
-<p><code>#include <tbb_exception.h></code></p>
+<p><code>#include <flow_graph.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::split_node< TupleType, Allocator >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00147.png" usemap="#tbb::flow::interface7::split_node< TupleType, Allocator >_map" alt=""/>
+  <map id="tbb::flow::interface7::split_node< TupleType, Allocator >_map" name="tbb::flow::interface7::split_node< TupleType, Allocator >_map">
+<area href="a00098.html" alt="tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator >" shape="rect" coords="500,112,1490,136"/>
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,990,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a7b30b85d93e3a6cc74eb58a9eccc77e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b30b85d93e3a6cc74eb58a9eccc77e8"></a>
+typedef <br class="typebreak"/>
+base_type::output_ports_type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
+<tr class="separator:a7b30b85d93e3a6cc74eb58a9eccc77e8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afef7f0a3a41fe29685456d5a98d8039f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef7f0a3a41fe29685456d5a98d8039f"></a>
+typedef <a class="el" href="a00103.html">base_type::output_type</a> </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:afef7f0a3a41fe29685456d5a98d8039f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab385733461335acd814fdc501dd1ab90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab385733461335acd814fdc501dd1ab90"></a>
+typedef TupleType </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:ab385733461335acd814fdc501dd1ab90"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abd56f31b5208a5dff21e5ecba2c2902f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd56f31b5208a5dff21e5ecba2c2902f"></a>
+typedef Allocator </td><td class="memItemRight" valign="bottom"><b>allocator_type</b></td></tr>
+<tr class="separator:abd56f31b5208a5dff21e5ecba2c2902f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00098"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00098')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
+<tr class="memitem:a75218ea29a85874581e480fb52914bbd inherit pub_types_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75218ea29a85874581e480fb52914bbd"></a>
+typedef TupleType </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a75218ea29a85874581e480fb52914bbd inherit pub_types_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae51475eb8c4ab433d7db635395cc49a0 inherit pub_types_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae51475eb8c4ab433d7db635395cc49a0"></a>
+typedef <a class="el" href="a00103.html">null_type</a> </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ae51475eb8c4ab433d7db635395cc49a0 inherit pub_types_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a636872cf56c8cad039f608d84350f59d inherit pub_types_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a636872cf56c8cad039f608d84350f59d"></a>
+typedef <br class="typebreak"/>
+internal::wrap_tuple_elements<br class="typebreak"/>
+< N, <br class="typebreak"/>
+internal::multifunction_output, <br class="typebreak"/>
+TupleType >::type </td><td class="memItemRight" valign="bottom"><b>output_ports_type</b></td></tr>
+<tr class="separator:a636872cf56c8cad039f608d84350f59d inherit pub_types_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6ec40f6a47dc70508b18c94fa9e459d inherit pub_types_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6ec40f6a47dc70508b18c94fa9e459d"></a>
+typedef <br class="typebreak"/>
+internal::multifunction_input<br class="typebreak"/>
+< input_type, <br class="typebreak"/>
+output_ports_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>fInput_type</b></td></tr>
+<tr class="separator:aa6ec40f6a47dc70508b18c94fa9e459d inherit pub_types_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5fa37afc331d0c9738dab1f642265f95 inherit pub_types_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fa37afc331d0c9738dab1f642265f95"></a>
+typedef <br class="typebreak"/>
+internal::function_input_queue<br class="typebreak"/>
+< input_type, Allocator > </td><td class="memItemRight" valign="bottom"><b>input_queue_type</b></td></tr>
+<tr class="separator:a5fa37afc331d0c9738dab1f642265f95 inherit pub_types_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a38d3ca480e2758a67bcd7427b156daae"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00147.html#a38d3ca480e2758a67bcd7427b156daae">destroy</a> ()  throw ()</td></tr>
-<tr class="memdesc:a38d3ca480e2758a67bcd7427b156daae"><td class="mdescLeft"> </td><td class="mdescRight">Destroys this objects.  <a href="#a38d3ca480e2758a67bcd7427b156daae">More...</a><br/></td></tr>
-<tr class="separator:a38d3ca480e2758a67bcd7427b156daae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1713aa9a6a3850049d34358397a8ed81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1713aa9a6a3850049d34358397a8ed81"></a>
-void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00147.html#a1713aa9a6a3850049d34358397a8ed81">throw_self</a> ()</td></tr>
-<tr class="memdesc:a1713aa9a6a3850049d34358397a8ed81"><td class="mdescLeft"> </td><td class="mdescRight">Throws the contained exception . <br/></td></tr>
-<tr class="separator:a1713aa9a6a3850049d34358397a8ed81"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a61bb1309f07046df50f2c9ab878c81d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61bb1309f07046df50f2c9ab878c81d4"></a>
+ </td><td class="memItemRight" valign="bottom"><b>split_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a61bb1309f07046df50f2c9ab878c81d4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae9fad205fec699a225969f0391ea133d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9fad205fec699a225969f0391ea133d"></a>
+ </td><td class="memItemRight" valign="bottom"><b>split_node</b> (const <a class="el" href="a00147.html">split_node</a> &other)</td></tr>
+<tr class="separator:ae9fad205fec699a225969f0391ea133d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1550198e198fc858c5619ce1dbd8411a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1550198e198fc858c5619ce1dbd8411a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:a1550198e198fc858c5619ce1dbd8411a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00098"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00098')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
+<tr class="memitem:a809925417689059399b7f2fcbdb21754 inherit pub_methods_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a809925417689059399b7f2fcbdb21754"></a>
+ </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (<a class="el" href="a00070.html">graph</a> &g, size_t concurrency, Body body)</td></tr>
+<tr class="separator:a809925417689059399b7f2fcbdb21754 inherit pub_methods_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac4a12b4da8e8a0e9cd5b3cad770e5b38 inherit pub_methods_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4a12b4da8e8a0e9cd5b3cad770e5b38"></a>
+ </td><td class="memItemRight" valign="bottom"><b>multifunction_node</b> (const <a class="el" href="a00098.html">multifunction_node</a> &other)</td></tr>
+<tr class="separator:ac4a12b4da8e8a0e9cd5b3cad770e5b38 inherit pub_methods_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aab27cfc228b04974c670e0ba2e000b32 inherit pub_methods_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab27cfc228b04974c670e0ba2e000b32"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:aab27cfc228b04974c670e0ba2e000b32 inherit pub_methods_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fe68df8a4081035b0d48743b1329374 inherit pub_methods_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fe68df8a4081035b0d48743b1329374"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a8fe68df8a4081035b0d48743b1329374 inherit pub_methods_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a83d4cb04d89ed11b5e030fe4db2d5e5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83d4cb04d89ed11b5e030fe4db2d5e5f"></a>
-static <a class="el" href="a00147.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><b>allocate</b> ()</td></tr>
-<tr class="separator:a83d4cb04d89ed11b5e030fe4db2d5e5f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae54ded5f55ad39805e6cb967fc710346"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae54ded5f55ad39805e6cb967fc710346"></a>
-static <a class="el" href="a00147.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><b>allocate</b> (const <a class="el" href="a00146.html">tbb_exception</a> &tag)</td></tr>
-<tr class="separator:ae54ded5f55ad39805e6cb967fc710346"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:abfbea91401d2594deb04ea331734171c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfbea91401d2594deb04ea331734171c"></a>
-static <a class="el" href="a00147.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00147.html#abfbea91401d2594deb04ea331734171c">allocate</a> (<a class="el" href="a00031.html">captured_exception</a> &src)</td></tr>
-<tr class="memdesc:abfbea91401d2594deb04ea331734171c"><td class="mdescLeft"> </td><td class="mdescRight">This overload uses move semantics (i.e. it empties src) <br/></td></tr>
-<tr class="separator:abfbea91401d2594deb04ea331734171c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_a00098"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00098')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
+<tr class="memitem:a18b55415057cd0a0a13ce50a10ae114a inherit pro_methods_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18b55415057cd0a0a13ce50a10ae114a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a18b55415057cd0a0a13ce50a10ae114a inherit pro_methods_a00098"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00072')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1caee1c5677047b05d18b1662ca6fdf8"></a>
+<a class="el" href="a00070.html">graph</a> & </td><td class="memItemRight" valign="bottom"><b>my_graph</b></td></tr>
+<tr class="separator:a1caee1c5677047b05d18b1662ca6fdf8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af48cd0cd4f6e44efc3b353adb55f86a8"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>next</b></td></tr>
+<tr class="separator:af48cd0cd4f6e44efc3b353adb55f86a8 inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6917bffc3cb150319679bf2395e68caa"></a>
+<a class="el" href="a00072.html">graph_node</a> * </td><td class="memItemRight" valign="bottom"><b>prev</b></td></tr>
+<tr class="separator:a6917bffc3cb150319679bf2395e68caa inherit pro_attribs_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_static_attribs_a00098"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_a00098')"><img src="closed.png" alt="-"/> Static Protected Attributes inherited from <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td></tr>
+<tr class="memitem:a3fa1db1d966237e6e61e7f36c788bc56 inherit pro_static_attribs_a00098"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fa1db1d966237e6e61e7f36c788bc56"></a>
+static const int </td><td class="memItemRight" valign="bottom"><b>N</b></td></tr>
+<tr class="separator:a3fa1db1d966237e6e61e7f36c788bc56 inherit pro_static_attribs_a00098"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception container that preserves the exact copy of the original exception. </p>
-<p>This class can be used only when the appropriate runtime support (mandated by C++0x) is present </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a38d3ca480e2758a67bcd7427b156daae"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::internal::tbb_exception_ptr::destroy </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-        <tr>
-          <td align="right">throw </td><td>(</td><td colspan="2"></td>
-        </tr>
-        <tr>
-          <td align="right"></td><td>)</td><td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Destroys this objects. </p>
-<p>Note that objects of this type can be created only by the allocate() method. </p>
+<div class="textblock"><h3>template<typename TupleType, typename Allocator = cache_aligned_allocator<TupleType>><br/>
+class tbb::flow::interface7::split_node< TupleType, Allocator ></h3>
 
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<p><a class="el" href="a00147.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00130.png b/doc/html/a00147.png
similarity index 100%
rename from doc/html/a00130.png
rename to doc/html/a00147.png
diff --git a/doc/html/a00148.html b/doc/html/a00148.html
index d8a964f..793859c 100644
--- a/doc/html/a00148.html
+++ b/doc/html/a00148.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tbb_hash_compare< Key > Struct Template Reference</title>
+<title>tbb::structured_task_group Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,44 +33,83 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00148.html">tbb_hash_compare</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00148.html">structured_task_group</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="a00255.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00308.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_hash_compare< Key > Struct Template Reference</div>  </div>
+<div class="title">tbb::structured_task_group Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>hash_compare that is default argument for concurrent_hash_map  
- <a href="a00148.html#details">More...</a></p>
-
-<p><code>#include <concurrent_hash_map.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::structured_task_group:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00148.png" usemap="#tbb::structured_task_group_map" alt=""/>
+  <map id="tbb::structured_task_group_map" name="tbb::structured_task_group_map">
+<area href="a00152.html" alt="tbb::internal::task_group_base" shape="rect" coords="0,56,179,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a525ef96e5015680e43b8e1fecd3a2fb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a525ef96e5015680e43b8e1fecd3a2fb5"></a>
-static size_t </td><td class="memItemRight" valign="bottom"><b>hash</b> (const Key &a)</td></tr>
-<tr class="separator:a525ef96e5015680e43b8e1fecd3a2fb5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdc33dc9b83fb3b0ead4f234eca81c95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdc33dc9b83fb3b0ead4f234eca81c95"></a>
-static bool </td><td class="memItemRight" valign="bottom"><b>equal</b> (const Key &a, const Key &b)</td></tr>
-<tr class="separator:afdc33dc9b83fb3b0ead4f234eca81c95"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab6812c9b682cec4b1a93da169b6fffc7"></a>
+template<typename F > </td></tr>
+<tr class="memitem:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:ab6812c9b682cec4b1a93da169b6fffc7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0578ff577290a108d395ab29a0a04e04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0578ff577290a108d395ab29a0a04e04"></a>
+task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
+<tr class="separator:a0578ff577290a108d395ab29a0a04e04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00152"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00152')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
+ </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
+<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
+template<typename F > </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
+task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
+<tr class="separator:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
+<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
+<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_a00152"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00152')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
+task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
+<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
+template<typename F > </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
+<tr class="separator:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
+template<typename F , typename Task > </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
+<tr class="separator:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00152"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00152')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
+empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
+<tr class="separator:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
+<a class="el" href="a00153.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
+<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00152"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename Key><br/>
-struct tbb::tbb_hash_compare< Key ></h3>
-
-<p>hash_compare that is default argument for concurrent_hash_map </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>concurrent_hash_map.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_group.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00133.png b/doc/html/a00148.png
similarity index 100%
copy from doc/html/a00133.png
copy to doc/html/a00148.png
diff --git a/doc/html/a00149.html b/doc/html/a00149.html
index 3752365..45c92a4 100644
--- a/doc/html/a00149.html
+++ b/doc/html/a00149.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::tbb_thread_v3 Class Reference</title>
+<title>tbb::flow::interface7::internal::successor_cache< T, M > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,138 +33,21 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00149.html">tbb_thread_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00149.html">successor_cache</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00381.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_thread_v3 Class Reference</div>  </div>
+<div class="title">tbb::flow::interface7::internal::successor_cache< T, M > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Versioned thread class.  
- <a href="a00149.html#details">More...</a></p>
-
-<p><code>#include <tbb_thread.h></code></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">id</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:acf81b6411caec392fc62fdfbf72560ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf81b6411caec392fc62fdfbf72560ac"></a>
-typedef HANDLE </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-<tr class="separator:acf81b6411caec392fc62fdfbf72560ac"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a30e64e2a6bef43e2fd847e6c60a31207"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30e64e2a6bef43e2fd847e6c60a31207"></a>
-typedef pthread_t </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
-<tr class="separator:a30e64e2a6bef43e2fd847e6c60a31207"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a644f78d07a6e5ce3b9994fe5b19b1543"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a644f78d07a6e5ce3b9994fe5b19b1543"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#a644f78d07a6e5ce3b9994fe5b19b1543">tbb_thread_v3</a> ()</td></tr>
-<tr class="memdesc:a644f78d07a6e5ce3b9994fe5b19b1543"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a thread object that does not represent a thread of execution. <br/></td></tr>
-<tr class="separator:a644f78d07a6e5ce3b9994fe5b19b1543"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9c5587ab76ca1aa98bae7fe69a459466"></a>
-template<class F > </td></tr>
-<tr class="memitem:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#a9c5587ab76ca1aa98bae7fe69a459466">tbb_thread_v3</a> (F f)</td></tr>
-<tr class="memdesc:a9c5587ab76ca1aa98bae7fe69a459466"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f() in a new thread. <br/></td></tr>
-<tr class="separator:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a672a5367e687635c869926bf8a986296"><td class="memTemplParams" colspan="2"><a class="anchor" id="a672a5367e687635c869926bf8a986296"></a>
-template<class F , class X > </td></tr>
-<tr class="memitem:a672a5367e687635c869926bf8a986296"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#a672a5367e687635c869926bf8a986296">tbb_thread_v3</a> (F f, X x)</td></tr>
-<tr class="memdesc:a672a5367e687635c869926bf8a986296"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x) in a new thread. <br/></td></tr>
-<tr class="separator:a672a5367e687635c869926bf8a986296"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac3f57678f2a289084a6d275f8f8fbc62"></a>
-template<class F , class X , class Y > </td></tr>
-<tr class="memitem:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ac3f57678f2a289084a6d275f8f8fbc62">tbb_thread_v3</a> (F f, X x, Y y)</td></tr>
-<tr class="memdesc:ac3f57678f2a289084a6d275f8f8fbc62"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x,y) in a new thread. <br/></td></tr>
-<tr class="separator:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa4f68564c30ee6f59bab29c3b3216623"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4f68564c30ee6f59bab29c3b3216623"></a>
-<a class="el" href="a00149.html">tbb_thread_v3</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00149.html">tbb_thread_v3</a> &x)</td></tr>
-<tr class="separator:aa4f68564c30ee6f59bab29c3b3216623"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a24419cbdd69c7e072e5f1219202db8b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24419cbdd69c7e072e5f1219202db8b6"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00149.html">tbb_thread_v3</a> &t)</td></tr>
-<tr class="separator:a24419cbdd69c7e072e5f1219202db8b6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a937e61f9f07fd73bd26de0684d0653a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a937e61f9f07fd73bd26de0684d0653a2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>joinable</b> () const </td></tr>
-<tr class="separator:a937e61f9f07fd73bd26de0684d0653a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a044c8727c51e921b0cc43a6b057eb559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a044c8727c51e921b0cc43a6b057eb559"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#a044c8727c51e921b0cc43a6b057eb559">join</a> ()</td></tr>
-<tr class="memdesc:a044c8727c51e921b0cc43a6b057eb559"><td class="mdescLeft"> </td><td class="mdescRight">The completion of the thread represented by *this happens before <a class="el" href="a00149.html#a044c8727c51e921b0cc43a6b057eb559" title="The completion of the thread represented by *this happens before join() returns. ">join()</a> returns. <br/></td></tr>
-<tr class="separator:a044c8727c51e921b0cc43a6b057eb559"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a80a31a41708872af5557b907f129b19b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80a31a41708872af5557b907f129b19b"></a>
-void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#a80a31a41708872af5557b907f129b19b">detach</a> ()</td></tr>
-<tr class="memdesc:a80a31a41708872af5557b907f129b19b"><td class="mdescLeft"> </td><td class="mdescRight">When <a class="el" href="a00149.html#a80a31a41708872af5557b907f129b19b" title="When detach() returns, *this no longer represents the possibly continuing thread of execution...">detach()</a> returns, *this no longer represents the possibly continuing thread of execution. <br/></td></tr>
-<tr class="separator:a80a31a41708872af5557b907f129b19b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8540592d92e4433f70099d66f6c4ced"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8540592d92e4433f70099d66f6c4ced"></a>
-<a class="el" href="a00064.html">id</a> </td><td class="memItemRight" valign="bottom"><b>get_id</b> () const </td></tr>
-<tr class="separator:ab8540592d92e4433f70099d66f6c4ced"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a98e89e22e11fb6cab05f0f7839c79310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98e89e22e11fb6cab05f0f7839c79310"></a>
-native_handle_type </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
-<tr class="separator:a98e89e22e11fb6cab05f0f7839c79310"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a2b761b3d80a7397c645402865e06b1a8"><td class="memItemLeft" align="right" valign="top">static unsigned __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#a2b761b3d80a7397c645402865e06b1a8">hardware_concurrency</a> ()</td></tr>
-<tr class="memdesc:a2b761b3d80a7397c645402865e06b1a8"><td class="mdescLeft"> </td><td class="mdescRight">The number of hardware thread contexts.  <a href="#a2b761b3d80a7397c645402865e06b1a8">More...</a><br/></td></tr>
-<tr class="separator:a2b761b3d80a7397c645402865e06b1a8"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:a9b8a2643aa337c0ec7f68cc2797a10ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b8a2643aa337c0ec7f68cc2797a10ba"></a>
-void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>move_v3</b> (<a class="el" href="a00149.html">tbb_thread_v3</a> &t1, <a class="el" href="a00149.html">tbb_thread_v3</a> &t2)</td></tr>
-<tr class="separator:a9b8a2643aa337c0ec7f68cc2797a10ba"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aec9f484a314b5289f05fbd2c304de911"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec9f484a314b5289f05fbd2c304de911"></a>
-void </td><td class="memItemRight" valign="bottom"><b>tbb::swap</b> (<a class="el" href="a00149.html">tbb_thread_v3</a> &t1, <a class="el" href="a00149.html">tbb_thread_v3</a> &t2)</td></tr>
-<tr class="separator:aec9f484a314b5289f05fbd2c304de911"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Versioned thread class. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a2b761b3d80a7397c645402865e06b1a8"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">static unsigned __TBB_EXPORTED_FUNC tbb::internal::tbb_thread_v3::hardware_concurrency </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>The number of hardware thread contexts. </p>
-<p>Before TBB 3.0 U4 this methods returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.</p>
-<p>NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool. </p>
-
-</div>
-</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00150.html b/doc/html/a00150.html
index 340ee57..b5bf8e3 100644
--- a/doc/html/a00150.html
+++ b/doc/html/a00150.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::thread_bound_filter Class Reference</title>
+<title>tbb::interface7::task_arena Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,125 +33,347 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00150.html">thread_bound_filter</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00150.html">task_arena</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="a00269.html">List of all members</a>  </div>
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00407.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::thread_bound_filter Class Reference<div class="ingroups"><a class="el" href="a00234.html">Algorithms</a></div></div>  </div>
+<div class="title">tbb::interface7::task_arena Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>A stage in a pipeline served by a user thread.  
- <a href="a00150.html#details">More...</a></p>
-
-<p><code>#include <pipeline.h></code></p>
+<p><code>#include <task_arena.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::thread_bound_filter:</div>
+Inheritance diagram for tbb::interface7::task_arena:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00150.png" usemap="#tbb::thread_bound_filter_map" alt=""/>
-  <map id="tbb::thread_bound_filter_map" name="tbb::thread_bound_filter_map">
-<area href="a00053.html" title="A stage in a pipeline. " alt="tbb::filter" shape="rect" coords="0,56,145,80"/>
+  <img src="a00150.png" usemap="#tbb::interface7::task_arena_map" alt=""/>
+  <map id="tbb::interface7::task_arena_map" name="tbb::interface7::task_arena_map">
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:a2425d6944a22a57c906945df57290e9d"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>result_type</b> { <b>success</b>, 
-<b>item_not_available</b>, 
-<b>end_of_stream</b>
- }</td></tr>
-<tr class="separator:a2425d6944a22a57c906945df57290e9d"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a12cfa43c620066a8783529cc8519c6f9"><td class="memItemLeft" align="right" valign="top">result_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a12cfa43c620066a8783529cc8519c6f9">try_process_item</a> ()</td></tr>
-<tr class="memdesc:a12cfa43c620066a8783529cc8519c6f9"><td class="mdescLeft"> </td><td class="mdescRight">If a data item is available, invoke operator() on that item.  <a href="#a12cfa43c620066a8783529cc8519c6f9">More...</a><br/></td></tr>
-<tr class="separator:a12cfa43c620066a8783529cc8519c6f9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac99258407f382d84568a510075074fc7"><td class="memItemLeft" align="right" valign="top">result_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ac99258407f382d84568a510075074fc7">process_item</a> ()</td></tr>
-<tr class="memdesc:ac99258407f382d84568a510075074fc7"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a data item becomes available, and invoke operator() on that item.  <a href="#ac99258407f382d84568a510075074fc7">More...</a><br/></td></tr>
-<tr class="separator:ac99258407f382d84568a510075074fc7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6035737ce1a8db376d06880dae9d0c40"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a6035737ce1a8db376d06880dae9d0c40">task_arena</a> (int max_concurrency=automatic, unsigned reserved_for_masters=1)</td></tr>
+<tr class="memdesc:a6035737ce1a8db376d06880dae9d0c40"><td class="mdescLeft"> </td><td class="mdescRight">Creates <a class="el" href="a00150.html">task_arena</a> with certain concurrency limits.  <a href="#a6035737ce1a8db376d06880dae9d0c40">More...</a><br/></td></tr>
+<tr class="separator:a6035737ce1a8db376d06880dae9d0c40"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a70d122b3e6e4760c6053c5c230c715ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70d122b3e6e4760c6053c5c230c715ef"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a70d122b3e6e4760c6053c5c230c715ef">task_arena</a> (const <a class="el" href="a00150.html">task_arena</a> &s)</td></tr>
+<tr class="memdesc:a70d122b3e6e4760c6053c5c230c715ef"><td class="mdescLeft"> </td><td class="mdescRight">Copies settings from another <a class="el" href="a00150.html">task_arena</a>. <br/></td></tr>
+<tr class="separator:a70d122b3e6e4760c6053c5c230c715ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a955131a79f8dc5a0a5c9ffa66a7e7140"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a955131a79f8dc5a0a5c9ffa66a7e7140">initialize</a> ()</td></tr>
+<tr class="memdesc:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="mdescLeft"> </td><td class="mdescRight">Forces allocation of the resources for the <a class="el" href="a00150.html">task_arena</a> as specified in constructor arguments. <br/></td></tr>
+<tr class="separator:a955131a79f8dc5a0a5c9ffa66a7e7140"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a754d60ba6981461eb7c86afd14d3da2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a754d60ba6981461eb7c86afd14d3da2a"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a754d60ba6981461eb7c86afd14d3da2a">initialize</a> (int max_concurrency, unsigned reserved_for_masters=1)</td></tr>
+<tr class="memdesc:a754d60ba6981461eb7c86afd14d3da2a"><td class="mdescLeft"> </td><td class="mdescRight">Overrides concurrency level and forces initialization of internal representation. <br/></td></tr>
+<tr class="separator:a754d60ba6981461eb7c86afd14d3da2a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aecb3eedeacfe8469a91c17525dae7fc9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#aecb3eedeacfe8469a91c17525dae7fc9">terminate</a> ()</td></tr>
+<tr class="separator:aecb3eedeacfe8469a91c17525dae7fc9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ff5a35a219953a4f3d99b833fa5f683"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a9ff5a35a219953a4f3d99b833fa5f683">~task_arena</a> ()</td></tr>
+<tr class="separator:a9ff5a35a219953a4f3d99b833fa5f683"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad85856cefa30d42155a2b122b03efd8c"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#ad85856cefa30d42155a2b122b03efd8c">is_active</a> () const </td></tr>
+<tr class="separator:ad85856cefa30d42155a2b122b03efd8c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8034275ed2fffa68f70484043b90d406"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
+<tr class="memitem:a8034275ed2fffa68f70484043b90d406"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#a8034275ed2fffa68f70484043b90d406">enqueue</a> (const F &f)</td></tr>
+<tr class="separator:a8034275ed2fffa68f70484043b90d406"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
+<tr class="memitem:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#a9a04ab4afb2d74b0317618f59ab49be7">enqueue</a> (const F &f, priority_t p)</td></tr>
+<tr class="separator:a9a04ab4afb2d74b0317618f59ab49be7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0c96f325b59d567b4c720f2830adde8"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
+<tr class="memitem:af0c96f325b59d567b4c720f2830adde8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#af0c96f325b59d567b4c720f2830adde8">execute</a> (F &f)</td></tr>
+<tr class="separator:af0c96f325b59d567b4c720f2830adde8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memTemplParams" colspan="2">template<typename F > </td></tr>
+<tr class="memitem:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#ab8442c8e9e3e678349409e08cabc7ae2">execute</a> (const F &f)</td></tr>
+<tr class="separator:ab8442c8e9e3e678349409e08cabc7ae2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a07d87dff8c6116ee349684e10f754aeb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#a07d87dff8c6116ee349684e10f754aeb">debug_wait_until_empty</a> ()</td></tr>
+<tr class="separator:a07d87dff8c6116ee349684e10f754aeb"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a5f236956f85f28c783127c949e902610"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f236956f85f28c783127c949e902610"></a>
- </td><td class="memItemRight" valign="bottom"><b>thread_bound_filter</b> (mode filter_mode)</td></tr>
-<tr class="separator:a5f236956f85f28c783127c949e902610"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:af695a8aa3d2a4f498067c662e287dd8f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af695a8aa3d2a4f498067c662e287dd8f"></a>
+static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html#af695a8aa3d2a4f498067c662e287dd8f">current_thread_index</a> ()</td></tr>
+<tr class="memdesc:af695a8aa3d2a4f498067c662e287dd8f"><td class="mdescLeft"> </td><td class="mdescRight">Returns the index, aka slot number, of the calling thread in its current arena. <br/></td></tr>
+<tr class="separator:af695a8aa3d2a4f498067c662e287dd8f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_static_attribs_a00053"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_a00053')"><img src="closed.png" alt="-"/> Static Protected Attributes inherited from <a class="el" href="a00053.html">tbb::filter</a></td></tr>
-<tr class="memitem:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9dab2e01b0963b341ab04b59eec1475"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a> = 0x1</td></tr>
-<tr class="memdesc:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00053"><td class="mdescLeft"> </td><td class="mdescRight">The lowest bit 0 is for parallel vs. serial. <br/></td></tr>
-<tr class="separator:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00053"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00053"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a> = 0x1<<4</td></tr>
-<tr class="memdesc:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00053"><td class="mdescLeft"> </td><td class="mdescRight">4th bit distinguishes ordered vs unordered filters.  <a href="#a091fcf6abc79edfa5c8bf01f742e2392">More...</a><br/></td></tr>
-<tr class="separator:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00053"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1382f216bd094064a18eb48ecc43c86b"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a> = 0x1<<5</td></tr>
-<tr class="memdesc:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00053"><td class="mdescLeft"> </td><td class="mdescRight">5th bit distinguishes thread-bound and regular filters. <br/></td></tr>
-<tr class="separator:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00053"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6645ec56872b6ba2056dcaa467e292f7"></a>
-static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a> = 0x1<<6</td></tr>
-<tr class="memdesc:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00053"><td class="mdescLeft"> </td><td class="mdescRight">6th bit marks input filters emitting small objects <br/></td></tr>
-<tr class="separator:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00053"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00053"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td></tr>
-<tr class="memdesc:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00053"><td class="mdescLeft"> </td><td class="mdescRight">7th bit defines exception propagation mode expected by the application.  <a href="#aab9689e23a96c6c9bf1c8caae74d92ee">More...</a><br/></td></tr>
-<tr class="separator:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00053"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a6887d06dd0f104ab6c06fdddca4d2471"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6887d06dd0f104ab6c06fdddca4d2471"></a>
+class </td><td class="memItemRight" valign="bottom"><b>tbb::internal::task_scheduler_observer_v3</b></td></tr>
+<tr class="separator:a6887d06dd0f104ab6c06fdddca4d2471"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>A stage in a pipeline served by a user thread. </p>
-</div><h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="ac99258407f382d84568a510075074fc7"></a>
+<div class="textblock"><p>1-to-1 proxy representation class of scheduler's arena Constructors set up settings only, real construction is deferred till the first method invocation Destructor only removes one of the references to the inner arena representation. Final destruction happens when all the references (and the work) are gone. </p>
+</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a6035737ce1a8db376d06880dae9d0c40"></a>
 <div class="memitem">
 <div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::process_item </td>
+          <td class="memname">tbb::interface7::task_arena::task_arena </td>
           <td>(</td>
-          <td class="paramname">)</td><td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>max_concurrency</em> = <code>automatic</code>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">unsigned </td>
+          <td class="paramname"><em>reserved_for_masters</em> = <code>1</code> </td>
+        </tr>
+        <tr>
           <td></td>
+          <td>)</td>
+          <td></td><td></td>
         </tr>
       </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
 </div><div class="memdoc">
 
-<p>Wait until a data item becomes available, and invoke operator() on that item. </p>
-<p>This interface is blocking. Returns 'success' if an item was processed. Returns 'end_of_stream' if there are no more items to process. Never returns 'item_not_available', as it blocks until another return condition applies. </p>
+<p>Creates <a class="el" href="a00150.html">task_arena</a> with certain concurrency limits. </p>
+<p>Sets up settings only, real construction is deferred till the first method invocation </p>
+<ul>
+<li>max_concurrency specifies total number of slots in arena where threads work </li>
+<li>reserved_for_masters specifies number of slots to be used by master threads only. Value of 1 is default and reflects behavior of implicit arenas. </li>
+</ul>
 
 </div>
 </div>
-<a class="anchor" id="a12cfa43c620066a8783529cc8519c6f9"></a>
+<a class="anchor" id="a9ff5a35a219953a4f3d99b833fa5f683"></a>
 <div class="memitem">
 <div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::try_process_item </td>
+          <td class="memname">tbb::interface7::task_arena::~task_arena </td>
           <td>(</td>
           <td class="paramname">)</td><td></td>
           <td></td>
         </tr>
       </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Removes the reference to the internal arena representation, and destroys the external object. Not thread safe wrt concurrent invocations of other methods. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a07d87dff8c6116ee349684e10f754aeb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::debug_wait_until_empty </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Wait for all work in the arena to be completed Even submitted by other application threads Joins arena if/when possible (in the same way as <a class="el" href="a00150.html#af0c96f325b59d567b4c720f2830adde8">execute()</a>) </p>
+
+</div>
+</div>
+<a class="anchor" id="a8034275ed2fffa68f70484043b90d406"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename F > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::enqueue </td>
+          <td>(</td>
+          <td class="paramtype">const F & </td>
+          <td class="paramname"><em>f</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Enqueues a task into the arena to process a functor, and immediately returns. Does not require the calling thread to join the arena </p>
+
+</div>
+</div>
+<a class="anchor" id="a9a04ab4afb2d74b0317618f59ab49be7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename F > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::enqueue </td>
+          <td>(</td>
+          <td class="paramtype">const F & </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">priority_t </td>
+          <td class="paramname"><em>p</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Enqueues a task with priority p into the arena to process a functor f, and immediately returns. Does not require the calling thread to join the arena </p>
+
+</div>
+</div>
+<a class="anchor" id="af0c96f325b59d567b4c720f2830adde8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename F > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::execute </td>
+          <td>(</td>
+          <td class="paramtype">F & </td>
+          <td class="paramname"><em>f</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread </p>
+
+</div>
+</div>
+<a class="anchor" id="ab8442c8e9e3e678349409e08cabc7ae2"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename F > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::execute </td>
+          <td>(</td>
+          <td class="paramtype">const F & </td>
+          <td class="paramname"><em>f</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread </p>
+
+</div>
+</div>
+<a class="anchor" id="ad85856cefa30d42155a2b122b03efd8c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool tbb::interface7::task_arena::is_active </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
 </div><div class="memdoc">
+<p>Returns true if the arena is active (initialized); false otherwise. The name was chosen to match a <a class="el" href="a00156.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> method with the same semantics. </p>
 
-<p>If a data item is available, invoke operator() on that item. </p>
-<p>This interface is non-blocking. Returns 'success' if an item was processed. Returns 'item_not_available' if no item can be processed now but more may arrive in the future, or if token limit is reached. Returns 'end_of_stream' if there are no more items to process. </p>
+</div>
+</div>
+<a class="anchor" id="aecb3eedeacfe8469a91c17525dae7fc9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface7::task_arena::terminate </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Removes the reference to the internal arena representation. Not thread safe wrt concurrent invocations of other methods. </p>
 
 </div>
 </div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>pipeline.h</li>
+<li>task_arena.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00150.png b/doc/html/a00150.png
index 7eab1d5..e9685d4 100644
Binary files a/doc/html/a00150.png and b/doc/html/a00150.png differ
diff --git a/doc/html/a00151.html b/doc/html/a00151.html
index d00656f..f37ab7b 100644
--- a/doc/html/a00151.html
+++ b/doc/html/a00151.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::thread_closure_0< F > Struct Template Reference</title>
+<title>tbb::task_group Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,61 +33,92 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00151.html">thread_closure_0</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00151.html">task_group</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00378.html">List of all members</a>  </div>
+<a href="a00307.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_0< F > Struct Template Reference</div>  </div>
+<div class="title">tbb::task_group Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::internal::thread_closure_0< F >:</div>
+Inheritance diagram for tbb::task_group:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00151.png" usemap="#tbb::internal::thread_closure_0< F >_map" alt=""/>
-  <map id="tbb::internal::thread_closure_0< F >_map" name="tbb::internal::thread_closure_0< F >_map">
-<area href="a00154.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,214,24"/>
+  <img src="a00151.png" usemap="#tbb::task_group_map" alt=""/>
+  <map id="tbb::task_group_map" name="tbb::task_group_map">
+<area href="a00152.html" alt="tbb::internal::task_group_base" shape="rect" coords="0,56,179,80"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a538aa9db5b40cf64cdafc0af0649a7f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a538aa9db5b40cf64cdafc0af0649a7f2"></a>
- </td><td class="memItemRight" valign="bottom"><b>thread_closure_0</b> (const F &f)</td></tr>
-<tr class="separator:a538aa9db5b40cf64cdafc0af0649a7f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00154"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00154')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td></tr>
-<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
-<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
-<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe756667c1272f714ad388aa31f2d29e"><td class="memTemplParams" colspan="2"><a class="anchor" id="abe756667c1272f714ad388aa31f2d29e"></a>
+template<typename F > </td></tr>
+<tr class="memitem:abe756667c1272f714ad388aa31f2d29e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:abe756667c1272f714ad388aa31f2d29e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6355cce7750b1367fb98924af151e8b2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6355cce7750b1367fb98924af151e8b2"></a>
+template<typename F > </td></tr>
+<tr class="memitem:a6355cce7750b1367fb98924af151e8b2"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (const F &f)</td></tr>
+<tr class="separator:a6355cce7750b1367fb98924af151e8b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aeef1b473ff0edaf3f356722b13e877b0"><td class="memTemplParams" colspan="2"><a class="anchor" id="aeef1b473ff0edaf3f356722b13e877b0"></a>
+template<typename F > </td></tr>
+<tr class="memitem:aeef1b473ff0edaf3f356722b13e877b0"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (const F &f)</td></tr>
+<tr class="separator:aeef1b473ff0edaf3f356722b13e877b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a543903ef748fd10eb864c27a2e8ac18b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a543903ef748fd10eb864c27a2e8ac18b"></a>
+template<typename F > </td></tr>
+<tr class="memitem:a543903ef748fd10eb864c27a2e8ac18b"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>run_and_wait</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:a543903ef748fd10eb864c27a2e8ac18b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00152"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00152')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
+ </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
+<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
+template<typename F > </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:a8d8398153ad19d83a629aeb46991620b inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
+task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
+<tr class="separator:a9a05d8b3350796df951c701978cec816 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
+<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2 inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
+<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f inherit pub_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a4b9e7370103f473212ccb10e65d676fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b9e7370103f473212ccb10e65d676fb"></a>
-static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><b>start_routine</b> (void *c)</td></tr>
-<tr class="separator:a4b9e7370103f473212ccb10e65d676fb"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:aff55f3266cccfbb2d296aa9b07239ce8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff55f3266cccfbb2d296aa9b07239ce8"></a>
-F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
-<tr class="separator:aff55f3266cccfbb2d296aa9b07239ce8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_a00152"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00152')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
+task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
+<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
+template<typename F > </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
+<tr class="separator:aef3561e83c11cde7299a34db1064f420 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
+template<typename F , typename Task > </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
+<tr class="separator:ab57636e45b436a15c7adefb25f9df090 inherit pro_methods_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_attribs_a00152"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00152')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00152.html">tbb::internal::task_group_base</a></td></tr>
+<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
+empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
+<tr class="separator:a60fb257f34f63428032f93e9b3b50a89 inherit pro_attribs_a00152"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00152"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
+<a class="el" href="a00153.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
+<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d inherit pro_attribs_a00152"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_group.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00151.png b/doc/html/a00151.png
index ca33e7f..d42b601 100644
Binary files a/doc/html/a00151.png and b/doc/html/a00151.png differ
diff --git a/doc/html/a00152.html b/doc/html/a00152.html
index 9c90fe6..41ba472 100644
--- a/doc/html/a00152.html
+++ b/doc/html/a00152.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::thread_closure_1< F, X > Struct Template Reference</title>
+<title>tbb::internal::task_group_base Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,75 +33,79 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00152.html">thread_closure_1</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00152.html">task_group_base</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00379.html">List of all members</a>  </div>
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="a00412.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_1< F, X > Struct Template Reference</div>  </div>
+<div class="title">tbb::internal::task_group_base Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Structure used to pass user function with 1 argument to thread.  
- <a href="a00152.html#details">More...</a></p>
-
-<p><code>#include <tbb_thread.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::internal::thread_closure_1< F, X >:</div>
+Inheritance diagram for tbb::internal::task_group_base:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00152.png" usemap="#tbb::internal::thread_closure_1< F, X >_map" alt=""/>
-  <map id="tbb::internal::thread_closure_1< F, X >_map" name="tbb::internal::thread_closure_1< F, X >_map">
-<area href="a00154.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,232,24"/>
+  <img src="a00152.png" usemap="#tbb::internal::task_group_base_map" alt=""/>
+  <map id="tbb::internal::task_group_base_map" name="tbb::internal::task_group_base_map">
+<area href="a00148.html" alt="tbb::structured_task_group" shape="rect" coords="0,112,179,136"/>
+<area href="a00151.html" alt="tbb::task_group" shape="rect" coords="189,112,368,136"/>
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:afef38584bcf65f3f71700cfec80b8b18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef38584bcf65f3f71700cfec80b8b18"></a>
- </td><td class="memItemRight" valign="bottom"><b>thread_closure_1</b> (const F &f, const X &x)</td></tr>
-<tr class="separator:afef38584bcf65f3f71700cfec80b8b18"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00154"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00154')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td></tr>
-<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
-<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
-<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac846a7be5035e1f5c929bda05e1b4401"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac846a7be5035e1f5c929bda05e1b4401"></a>
+ </td><td class="memItemRight" valign="bottom"><b>task_group_base</b> (uintptr_t traits=0)</td></tr>
+<tr class="separator:ac846a7be5035e1f5c929bda05e1b4401"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8d8398153ad19d83a629aeb46991620b"></a>
+template<typename F > </td></tr>
+<tr class="memitem:a8d8398153ad19d83a629aeb46991620b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>run</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:a8d8398153ad19d83a629aeb46991620b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9a05d8b3350796df951c701978cec816"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a05d8b3350796df951c701978cec816"></a>
+task_group_status </td><td class="memItemRight" valign="bottom"><b>wait</b> ()</td></tr>
+<tr class="separator:a9a05d8b3350796df951c701978cec816"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a91b0943033a9e802cea00ac4af9e4ae2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91b0943033a9e802cea00ac4af9e4ae2"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_canceling</b> ()</td></tr>
+<tr class="separator:a91b0943033a9e802cea00ac4af9e4ae2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2c2b1b967f4d1924cf15c19e3854ff2f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c2b1b967f4d1924cf15c19e3854ff2f"></a>
+void </td><td class="memItemRight" valign="bottom"><b>cancel</b> ()</td></tr>
+<tr class="separator:a2c2b1b967f4d1924cf15c19e3854ff2f"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a33d533b3301c45708c6252d040f855a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33d533b3301c45708c6252d040f855a6"></a>
-static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00152.html#a33d533b3301c45708c6252d040f855a6">start_routine</a> (void *c)</td></tr>
-<tr class="memdesc:a33d533b3301c45708c6252d040f855a6"><td class="mdescLeft"> </td><td class="mdescRight">Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll. <br/></td></tr>
-<tr class="separator:a33d533b3301c45708c6252d040f855a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a4efe5bdeaa3c874a36e7d95d76ad1367"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4efe5bdeaa3c874a36e7d95d76ad1367"></a>
+task & </td><td class="memItemRight" valign="bottom"><b>owner</b> ()</td></tr>
+<tr class="separator:a4efe5bdeaa3c874a36e7d95d76ad1367"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420"><td class="memTemplParams" colspan="2"><a class="anchor" id="aef3561e83c11cde7299a34db1064f420"></a>
+template<typename F > </td></tr>
+<tr class="memitem:aef3561e83c11cde7299a34db1064f420"><td class="memTemplItemLeft" align="right" valign="top">task_group_status </td><td class="memTemplItemRight" valign="bottom"><b>internal_run_and_wait</b> (F &f)</td></tr>
+<tr class="separator:aef3561e83c11cde7299a34db1064f420"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab57636e45b436a15c7adefb25f9df090"></a>
+template<typename F , typename Task > </td></tr>
+<tr class="memitem:ab57636e45b436a15c7adefb25f9df090"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>internal_run</b> (F &f)</td></tr>
+<tr class="separator:ab57636e45b436a15c7adefb25f9df090"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a39a5a39b2a7513868944ffe7ffd89640"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39a5a39b2a7513868944ffe7ffd89640"></a>
-F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
-<tr class="separator:a39a5a39b2a7513868944ffe7ffd89640"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a607886c68ca8bdd984b9b4f6ec744dea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a607886c68ca8bdd984b9b4f6ec744dea"></a>
-X </td><td class="memItemRight" valign="bottom"><b>arg1</b></td></tr>
-<tr class="separator:a607886c68ca8bdd984b9b4f6ec744dea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a60fb257f34f63428032f93e9b3b50a89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60fb257f34f63428032f93e9b3b50a89"></a>
+empty_task * </td><td class="memItemRight" valign="bottom"><b>my_root</b></td></tr>
+<tr class="separator:a60fb257f34f63428032f93e9b3b50a89"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afa2bb3845517c6b2f9e29a4e3b08a62d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa2bb3845517c6b2f9e29a4e3b08a62d"></a>
+<a class="el" href="a00153.html">task_group_context</a> </td><td class="memItemRight" valign="bottom"><b>my_context</b></td></tr>
+<tr class="separator:afa2bb3845517c6b2f9e29a4e3b08a62d"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<class F, class X><br/>
-struct tbb::internal::thread_closure_1< F, X ></h3>
-
-<p>Structure used to pass user function with 1 argument to thread. </p>
-</div><hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_group.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00152.png b/doc/html/a00152.png
index 961925b..e95fec5 100644
Binary files a/doc/html/a00152.png and b/doc/html/a00152.png differ
diff --git a/doc/html/a00153.html b/doc/html/a00153.html
index 67a577c..e8453e1 100644
--- a/doc/html/a00153.html
+++ b/doc/html/a00153.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference</title>
+<title>tbb::task_group_context Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,68 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00153.html">thread_closure_2</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00153.html">task_group_context</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
-  <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#pub-attribs">Public Attributes</a> |
-<a href="a00380.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference</div>  </div>
+<div class="title">tbb::task_group_context Struct Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::internal::thread_closure_2< F, X, Y >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00153.png" usemap="#tbb::internal::thread_closure_2< F, X, Y >_map" alt=""/>
-  <map id="tbb::internal::thread_closure_2< F, X, Y >_map" name="tbb::internal::thread_closure_2< F, X, Y >_map">
-<area href="a00154.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,250,24"/>
-</map>
- </div></div>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:aa5f65ba1d019063487f425021ca2ba59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5f65ba1d019063487f425021ca2ba59"></a>
- </td><td class="memItemRight" valign="bottom"><b>thread_closure_2</b> (const F &f, const X &x, const Y &y)</td></tr>
-<tr class="separator:aa5f65ba1d019063487f425021ca2ba59"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00154"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00154')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td></tr>
-<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
-<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
-<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00154"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a29003179f98d768622c72b9ab5cfe8f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29003179f98d768622c72b9ab5cfe8f6"></a>
-static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00153.html#a29003179f98d768622c72b9ab5cfe8f6">start_routine</a> (void *c)</td></tr>
-<tr class="memdesc:a29003179f98d768622c72b9ab5cfe8f6"><td class="mdescLeft"> </td><td class="mdescRight">Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll. <br/></td></tr>
-<tr class="separator:a29003179f98d768622c72b9ab5cfe8f6"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
-Public Attributes</h2></td></tr>
-<tr class="memitem:a247bf0a01f8a390031b71c9b85fb8b24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a247bf0a01f8a390031b71c9b85fb8b24"></a>
-F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
-<tr class="separator:a247bf0a01f8a390031b71c9b85fb8b24"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a36f694b6dcc91c92b09d3deee24e4732"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f694b6dcc91c92b09d3deee24e4732"></a>
-X </td><td class="memItemRight" valign="bottom"><b>arg1</b></td></tr>
-<tr class="separator:a36f694b6dcc91c92b09d3deee24e4732"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a47f0e53fc6b9026d9529a3bf1cc4fa72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f0e53fc6b9026d9529a3bf1cc4fa72"></a>
-Y </td><td class="memItemRight" valign="bottom"><b>arg2</b></td></tr>
-<tr class="separator:a47f0e53fc6b9026d9529a3bf1cc4fa72"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+
+<p><code>#include <parallel_invoke.h></code></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Dummy to avoid cluttering the bulk of the header with enormous amount of ifdefs. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>parallel_invoke.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00154.html b/doc/html/a00154.html
index 0394695..e7e95b6 100644
--- a/doc/html/a00154.html
+++ b/doc/html/a00154.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::internal::thread_closure_base Struct Reference</title>
+<title>tbb::task_handle< F > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,45 +33,56 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00154.html">thread_closure_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00154.html">task_handle</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00377.html">List of all members</a>  </div>
+<a href="#friends">Friends</a> |
+<a href="a00306.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_base Struct Reference</div>  </div>
+<div class="title">tbb::task_handle< F > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::internal::thread_closure_base:</div>
+Inheritance diagram for tbb::task_handle< F >:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00154.png" usemap="#tbb::internal::thread_closure_base_map" alt=""/>
-  <map id="tbb::internal::thread_closure_base_map" name="tbb::internal::thread_closure_base_map">
-<area href="a00151.html" alt="tbb::internal::thread_closure_0< F >" shape="rect" coords="0,56,250,80"/>
-<area href="a00152.html" title="Structure used to pass user function with 1 argument to thread. " alt="tbb::internal::thread_closure_1< F, X >" shape="rect" coords="260,56,510,80"/>
-<area href="a00153.html" alt="tbb::internal::thread_closure_2< F, X, Y >" shape="rect" coords="520,56,770,80"/>
+  <img src="a00154.png" usemap="#tbb::task_handle< F >_map" alt=""/>
+  <map id="tbb::task_handle< F >_map" name="tbb::task_handle< F >_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
-<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
-void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
-<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1e213e12e1c2d789c22e56901b53b1d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e213e12e1c2d789c22e56901b53b1d2"></a>
+ </td><td class="memItemRight" valign="bottom"><b>task_handle</b> (const F &f)</td></tr>
+<tr class="separator:a1e213e12e1c2d789c22e56901b53b1d2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab09a19aa92286d48cc42d3e9cd60b5d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab09a19aa92286d48cc42d3e9cd60b5d8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator()</b> () const </td></tr>
+<tr class="separator:ab09a19aa92286d48cc42d3e9cd60b5d8"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memTemplParams" colspan="2"><a class="anchor" id="a70a59090420eb9c76bd067b3ed3f1e72"></a>
+template<typename _F > </td></tr>
+<tr class="memitem:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::task_handle_task</b></td></tr>
+<tr class="separator:a70a59090420eb9c76bd067b3ed3f1e72"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe85fe1f158cb2a40cd7203854b9460a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe85fe1f158cb2a40cd7203854b9460a"></a>
+class </td><td class="memItemRight" valign="bottom"><b>task_group</b></td></tr>
+<tr class="separator:abe85fe1f158cb2a40cd7203854b9460a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2913777f78e95f9ea09d788b12db6b62"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2913777f78e95f9ea09d788b12db6b62"></a>
+class </td><td class="memItemRight" valign="bottom"><b>structured_task_group</b></td></tr>
+<tr class="separator:a2913777f78e95f9ea09d788b12db6b62"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>tbb_thread.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_group.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00154.png b/doc/html/a00154.png
index 0324577..5f640e9 100644
Binary files a/doc/html/a00154.png and b/doc/html/a00154.png differ
diff --git a/doc/html/a00155.html b/doc/html/a00155.html
index c0287c1..2f5f141 100644
--- a/doc/html/a00155.html
+++ b/doc/html/a00155.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::tick_count Class Reference</title>
+<title>tbb::internal::task_handle_task< F > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,66 +33,39 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00155.html">tick_count</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00155.html">task_handle_task</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-static-methods">Static Public Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00305.html">List of all members</a>  </div>
+<a href="a00411.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tick_count Class Reference<div class="ingroups"><a class="el" href="a00238.html">Timing</a></div></div>  </div>
+<div class="title">tbb::internal::task_handle_task< F > Class Template Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>Absolute timestamp.  
- <a href="a00155.html#details">More...</a></p>
-
-<p><code>#include <tick_count.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::internal::task_handle_task< F >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00155.png" usemap="#tbb::internal::task_handle_task< F >_map" alt=""/>
+  <map id="tbb::internal::task_handle_task< F >_map" name="tbb::internal::task_handle_task< F >_map">
+</map>
+ </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00066.html">interval_t</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Relative time interval.  <a href="a00066.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f1daa0b7a4feb800f802b4be1f1e497"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#a9f1daa0b7a4feb800f802b4be1f1e497">tick_count</a> ()</td></tr>
-<tr class="memdesc:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="mdescLeft"> </td><td class="mdescRight">Construct an absolute timestamp initialized to zero. <br/></td></tr>
-<tr class="separator:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74dcecde7431ff4591d7c46fc1d50d7e"></a>
-static <a class="el" href="a00155.html">tick_count</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#a74dcecde7431ff4591d7c46fc1d50d7e">now</a> ()</td></tr>
-<tr class="memdesc:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="mdescLeft"> </td><td class="mdescRight">Return current time. <br/></td></tr>
-<tr class="separator:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf6a0d91e7d40f7d68e0ad6b79350e58"></a>
-static double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">resolution</a> ()</td></tr>
-<tr class="memdesc:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="mdescLeft"> </td><td class="mdescRight">Return the resolution of the clock in seconds per tick. <br/></td></tr>
-<tr class="separator:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ceaed3ebf5a0d41088a5bc7c8dc653"></a>
-<a class="el" href="a00066.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a> (const <a class="el" href="a00155.html">tick_count</a> &t1, const <a class="el" href="a00155.html">tick_count</a> &t0)</td></tr>
-<tr class="memdesc:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="mdescLeft"> </td><td class="mdescRight">Subtract two timestamps to get the time interval between. <br/></td></tr>
-<tr class="separator:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abcddb511967aa06d264ac6c06c4fb08b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcddb511967aa06d264ac6c06c4fb08b"></a>
+ </td><td class="memItemRight" valign="bottom"><b>task_handle_task</b> (<a class="el" href="a00154.html">task_handle</a>< F > &h)</td></tr>
+<tr class="separator:abcddb511967aa06d264ac6c06c4fb08b"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Absolute timestamp. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tick_count.h</li>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_group.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00140.png b/doc/html/a00155.png
similarity index 100%
copy from doc/html/a00140.png
copy to doc/html/a00155.png
diff --git a/doc/html/a00156.html b/doc/html/a00156.html
index 56b3424..082d0f4 100644
--- a/doc/html/a00156.html
+++ b/doc/html/a00156.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::user_abort Class Reference</title>
+<title>tbb::task_scheduler_init Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,46 +33,180 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00156.html">user_abort</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00156.html">task_scheduler_init</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="a00299.html">List of all members</a>  </div>
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="#pub-static-attribs">Static Public Attributes</a> |
+<a href="a00309.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::user_abort Class Reference</div>  </div>
+<div class="title">tbb::task_scheduler_init Class Reference<div class="ingroups"><a class="el" href="a00260.html">Task Scheduling</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Exception for user-initiated abort.  
+<p>Class delimiting the scope of task scheduler activity.  
  <a href="a00156.html#details">More...</a></p>
 
-<p><code>#include <tbb_exception.h></code></p>
+<p><code>#include <task_scheduler_init.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::user_abort:</div>
+Inheritance diagram for tbb::task_scheduler_init:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00156.png" usemap="#tbb::user_abort_map" alt=""/>
-  <map id="tbb::user_abort_map" name="tbb::user_abort_map">
+  <img src="a00156.png" usemap="#tbb::task_scheduler_init_map" alt=""/>
+  <map id="tbb::task_scheduler_init_map" name="tbb::task_scheduler_init_map">
 </map>
  </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8e27e7ca7fd8f821c4e5c40266ed16f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e27e7ca7fd8f821c4e5c40266ed16f9"></a>
-const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
-<tr class="separator:a8e27e7ca7fd8f821c4e5c40266ed16f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a485028b867bffef5829209330e79e64c"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c">initialize</a> (int number_of_threads=<a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a>)</td></tr>
+<tr class="memdesc:a485028b867bffef5829209330e79e64c"><td class="mdescLeft"> </td><td class="mdescRight">Ensure that scheduler exists for this thread.  <a href="#a485028b867bffef5829209330e79e64c">More...</a><br/></td></tr>
+<tr class="separator:a485028b867bffef5829209330e79e64c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0f5294f74b123a646a1762c68d11e39a"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a0f5294f74b123a646a1762c68d11e39a">initialize</a> (int number_of_threads, stack_size_type <a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a>)</td></tr>
+<tr class="memdesc:a0f5294f74b123a646a1762c68d11e39a"><td class="mdescLeft"> </td><td class="mdescRight">The overloaded method with stack size parameter.  <a href="#a0f5294f74b123a646a1762c68d11e39a">More...</a><br/></td></tr>
+<tr class="separator:a0f5294f74b123a646a1762c68d11e39a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15d5dca7f79c5769bb96f674e4da0c04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15d5dca7f79c5769bb96f674e4da0c04"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a15d5dca7f79c5769bb96f674e4da0c04">terminate</a> ()</td></tr>
+<tr class="memdesc:a15d5dca7f79c5769bb96f674e4da0c04"><td class="mdescLeft"> </td><td class="mdescRight">Inverse of method initialize. <br/></td></tr>
+<tr class="separator:a15d5dca7f79c5769bb96f674e4da0c04"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa772e5a1bd18b171d335f41b58acd2b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa772e5a1bd18b171d335f41b58acd2b9"></a>
+ </td><td class="memItemRight" valign="bottom"><b>if</b> (wait_workers_in_terminate) my_scheduler</td></tr>
+<tr class="separator:aa772e5a1bd18b171d335f41b58acd2b9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7d748f4a1f99884f081919feb3bca275"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d748f4a1f99884f081919feb3bca275"></a>
+ </td><td class="memItemRight" valign="bottom"><b>initialize</b> (number_of_threads, <a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a>)</td></tr>
+<tr class="separator:a7d748f4a1f99884f081919feb3bca275"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a20b121334ec39c1d91bd4fe9a51892b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20b121334ec39c1d91bd4fe9a51892b0"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a20b121334ec39c1d91bd4fe9a51892b0">~task_scheduler_init</a> ()</td></tr>
+<tr class="memdesc:a20b121334ec39c1d91bd4fe9a51892b0"><td class="mdescLeft"> </td><td class="mdescRight">Destroy scheduler for this thread if thread has no other live task_scheduler_inits. <br/></td></tr>
+<tr class="separator:a20b121334ec39c1d91bd4fe9a51892b0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed5505d7fed9d5493676aa15c176512c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed5505d7fed9d5493676aa15c176512c"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#aed5505d7fed9d5493676aa15c176512c">is_active</a> () const </td></tr>
+<tr class="memdesc:aed5505d7fed9d5493676aa15c176512c"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if scheduler is active (initialized); false otherwise. <br/></td></tr>
+<tr class="separator:aed5505d7fed9d5493676aa15c176512c"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="memItemLeft" align="right" valign="top">static int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">default_num_threads</a> ()</td></tr>
+<tr class="memdesc:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of threads TBB scheduler would create if initialized by default.  <a href="#aa0c0d46ec09bedc1ee876aa8aa87c3d1">More...</a><br/></td></tr>
+<tr class="separator:aa0c0d46ec09bedc1ee876aa8aa87c3d1"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a8310e807e1199d0f23b3a57aeb4fde51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8310e807e1199d0f23b3a57aeb4fde51"></a>
+<a class="el" href="a00156.html">task_scheduler_init</a>(int <br class="typebreak"/>
+number_of_threads=<a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a>, <br class="typebreak"/>
+stack_size_type <br class="typebreak"/>
+thread_stack_size=0, bool <br class="typebreak"/>
+wait_workers_in_terminate=false) </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a> = TBB_USE_CAPTURED_EXCEPTION ? propagation_mode_captured : propagation_mode_exact</td></tr>
+<tr class="memdesc:a8310e807e1199d0f23b3a57aeb4fde51"><td class="mdescLeft"> </td><td class="mdescRight">Shorthand for default constructor followed by call to initialize(number_of_threads). <br/></td></tr>
+<tr class="separator:a8310e807e1199d0f23b3a57aeb4fde51"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:a945886f5ef48300a8ebff2d077c166b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a945886f5ef48300a8ebff2d077c166b1"></a>
+static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a> = -1</td></tr>
+<tr class="memdesc:a945886f5ef48300a8ebff2d077c166b1"><td class="mdescLeft"> </td><td class="mdescRight">Typedef for number of threads that is automatic. <br/></td></tr>
+<tr class="separator:a945886f5ef48300a8ebff2d077c166b1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af0e49ff2f59a4e53c9c07897b57f084d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0e49ff2f59a4e53c9c07897b57f084d"></a>
+static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html#af0e49ff2f59a4e53c9c07897b57f084d">deferred</a> = -2</td></tr>
+<tr class="memdesc:af0e49ff2f59a4e53c9c07897b57f084d"><td class="mdescLeft"> </td><td class="mdescRight">Argument to <a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c" title="Ensure that scheduler exists for this thread. ">initialize()</a> or constructor that causes initialization to be deferred. <br/></td></tr>
+<tr class="separator:af0e49ff2f59a4e53c9c07897b57f084d"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Exception for user-initiated abort. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_exception.h</li>
+<div class="textblock"><p>Class delimiting the scope of task scheduler activity. </p>
+<p>A thread can construct a <a class="el" href="a00156.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> object and keep it alive while it uses TBB's tasking subsystem (including parallel algorithms).</p>
+<p>This class allows to customize properties of the TBB task pool to some extent. For example it can limit concurrency level of parallel work initiated by the given thread. It also can be used to specify stack size of the TBB worker threads, though this setting is not effective if the thread pool has already been created.</p>
+<p>If a parallel construct is used without <a class="el" href="a00156.html" title="Class delimiting the scope of task scheduler activity. ">task_scheduler_init</a> object previously created, the scheduler will be initialized automatically with default settings, and will persist until this thread exits. Default concurrency level is defined as described in <a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c" title="Ensure that scheduler exists for this thread. ">task_schedule [...]
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="aa0c0d46ec09bedc1ee876aa8aa87c3d1"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int __TBB_EXPORTED_FUNC tbb::task_scheduler_init::default_num_threads </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns the number of threads TBB scheduler would create if initialized by default. </p>
+<p>Result returned by this method does not depend on whether the scheduler has already been initialized.</p>
+<p>Because tbb 2.0 does not support blocking tasks yet, you may use this method to boost the number of threads in the tbb's internal pool, if your tasks are doing I/O operations. The optimal number of additional threads depends on how much time your tasks spend in the blocked state.</p>
+<p>Before TBB 3.0 U4 this method returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.</p>
+<p>NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool. </p>
+
+</div>
+</div>
+<a class="anchor" id="a485028b867bffef5829209330e79e64c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>number_of_threads</em> = <code><a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a></code>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Ensure that scheduler exists for this thread. </p>
+<p>A value of -1 lets TBB decide on the number of threads, which is usually maximal hardware concurrency for this process, that is the number of logical CPUs on the machine (possibly limited by the processor affinity mask of this process (Windows) or of this thread (Linux, FreeBSD). It is preferable option for production code because it helps to avoid nasty surprises when several TBB based components run side-by-side or in a nested fashion inside the same process.</p>
+<p>The number_of_threads is ignored if any other task_scheduler_inits currently exist. A thread may construct multiple task_scheduler_inits. Doing so does no harm because the underlying scheduler is reference counted. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0f5294f74b123a646a1762c68d11e39a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>number_of_threads</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">stack_size_type </td>
+          <td class="paramname"><em>thread_stack_size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The overloaded method with stack size parameter. </p>
+<p>Overloading is necessary to preserve ABI compatibility </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>task_scheduler_init.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00156.png b/doc/html/a00156.png
index a1f2334..58550fd 100644
Binary files a/doc/html/a00156.png and b/doc/html/a00156.png differ
diff --git a/doc/html/a00157.html b/doc/html/a00157.html
index 9308951..06e7dbe 100644
--- a/doc/html/a00157.html
+++ b/doc/html/a00157.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference</title>
+<title>tbb::interface6::task_scheduler_observer Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,56 +33,234 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00041.html">concurrent_unordered_map_traits</a></li><li class="navelem"><a class="el" href="a00157.html">value_compare</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00157.html">task_scheduler_observer</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> |
 <a href="#friends">Friends</a> |
-<a href="a00341.html">List of all members</a>  </div>
+<a href="a00403.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference</div>  </div>
+<div class="title">tbb::interface6::task_scheduler_observer Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
 <div class="dynheader">
-Inheritance diagram for tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare:</div>
+Inheritance diagram for tbb::interface6::task_scheduler_observer:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00157.png" usemap="#tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map" alt=""/>
-  <map id="tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map" name="tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map">
+  <img src="a00157.png" usemap="#tbb::interface6::task_scheduler_observer_map" alt=""/>
+  <map id="tbb::interface6::task_scheduler_observer_map" name="tbb::interface6::task_scheduler_observer_map">
+<area href="a00158.html" alt="tbb::internal::task_scheduler_observer_v3" shape="rect" coords="0,0,247,24"/>
 </map>
  </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:aa9b7bf186b995b784ca8ff88e384fca8"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>keep_awake</b> = false, 
+<b>allow_sleep</b> = true
+ }</td></tr>
+<tr class="memdesc:aa9b7bf186b995b784ca8ff88e384fca8"><td class="mdescLeft"> </td><td class="mdescRight">Return commands for <a class="el" href="a00157.html#a2390325945912ee7ce58cd9700664ea4" title="The callback can be invoked by a worker thread before it goes to sleep. ">may_sleep()</a> <br/></td></tr>
+<tr class="separator:aa9b7bf186b995b784ca8ff88e384fca8"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:ab45af27d6a7ce27dfdd5cd86b9e242a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab45af27d6a7ce27dfdd5cd86b9e242a4"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const value_type &left, const value_type &right) const </td></tr>
-<tr class="separator:ab45af27d6a7ce27dfdd5cd86b9e242a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a950d35402dcfda797180cfa504e62696"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a950d35402dcfda797180cfa504e62696"></a>
- </td><td class="memItemRight" valign="bottom"><b>value_compare</b> (const hash_compare &comparator)</td></tr>
-<tr class="separator:a950d35402dcfda797180cfa504e62696"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:a9f3947368607fd396df7f112f79abc1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f3947368607fd396df7f112f79abc1f"></a>
-hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
-<tr class="separator:a9f3947368607fd396df7f112f79abc1f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a89025b1e1d42e97d6fe114c0c331f730"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html#a89025b1e1d42e97d6fe114c0c331f730">task_scheduler_observer</a> (bool local=false)</td></tr>
+<tr class="memdesc:a89025b1e1d42e97d6fe114c0c331f730"><td class="mdescLeft"> </td><td class="mdescRight">Construct local or global observer in inactive state (observation disabled).  <a href="#a89025b1e1d42e97d6fe114c0c331f730">More...</a><br/></td></tr>
+<tr class="separator:a89025b1e1d42e97d6fe114c0c331f730"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a36e7e0c466320029d5a3e50a573e04c1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html#a36e7e0c466320029d5a3e50a573e04c1">task_scheduler_observer</a> (task_arena &a)</td></tr>
+<tr class="memdesc:a36e7e0c466320029d5a3e50a573e04c1"><td class="mdescLeft"> </td><td class="mdescRight">Construct local observer for a given arena in inactive state (observation disabled).  <a href="#a36e7e0c466320029d5a3e50a573e04c1">More...</a><br/></td></tr>
+<tr class="separator:a36e7e0c466320029d5a3e50a573e04c1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9ef3f1853439b46e5a9db7fd1c0f9116"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html#a9ef3f1853439b46e5a9db7fd1c0f9116">~task_scheduler_observer</a> ()</td></tr>
+<tr class="separator:a9ef3f1853439b46e5a9db7fd1c0f9116"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5b33790cea52c61e1fb004a8ed26365"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">observe</a> (bool state=true)</td></tr>
+<tr class="memdesc:ad5b33790cea52c61e1fb004a8ed26365"><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable observation.  <a href="#ad5b33790cea52c61e1fb004a8ed26365">More...</a><br/></td></tr>
+<tr class="separator:ad5b33790cea52c61e1fb004a8ed26365"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2390325945912ee7ce58cd9700664ea4"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00157.html#a2390325945912ee7ce58cd9700664ea4">may_sleep</a> ()</td></tr>
+<tr class="memdesc:a2390325945912ee7ce58cd9700664ea4"><td class="mdescLeft"> </td><td class="mdescRight">The callback can be invoked by a worker thread before it goes to sleep.  <a href="#a2390325945912ee7ce58cd9700664ea4">More...</a><br/></td></tr>
+<tr class="separator:a2390325945912ee7ce58cd9700664ea4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00158"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00158')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td></tr>
+<tr class="memitem:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">observe</a> (bool state=true)</td></tr>
+<tr class="memdesc:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable observation.  <a href="#a40209b347e3c82bb5bfda05941304309">More...</a><br/></td></tr>
+<tr class="separator:a40209b347e3c82bb5bfda05941304309 inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31abaf256f7172f010cfb2259c7787bb"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a> () const </td></tr>
+<tr class="memdesc:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if observation is enabled, false otherwise. <br/></td></tr>
+<tr class="separator:a31abaf256f7172f010cfb2259c7787bb inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25bffb05efaaab36bc58590969e29745"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a> ()</td></tr>
+<tr class="memdesc:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Construct observer with observation disabled. <br/></td></tr>
+<tr class="separator:a25bffb05efaaab36bc58590969e29745 inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a> (bool)</td></tr>
+<tr class="memdesc:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Entry notification.  <a href="#af4282a27725fbe86052bb785bdd9c5d3">More...</a><br/></td></tr>
+<tr class="separator:af4282a27725fbe86052bb785bdd9c5d3 inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a> (bool)</td></tr>
+<tr class="memdesc:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Exit notification.  <a href="#a657e90f833568e217b807d0122fa7668">More...</a><br/></td></tr>
+<tr class="separator:a657e90f833568e217b807d0122fa7668 inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00158"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a151e475ebba39172fcc13f43bed426cc"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a> ()</td></tr>
+<tr class="memdesc:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00158"><td class="mdescLeft"> </td><td class="mdescRight">Destructor automatically switches observation off if it is enabled. <br/></td></tr>
+<tr class="separator:a151e475ebba39172fcc13f43bed426cc inherit pub_methods_a00158"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
-<tr class="memitem:af8b0853dc699e83103d36df2c881aa67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8b0853dc699e83103d36df2c881aa67"></a>
-class </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></b></td></tr>
-<tr class="separator:af8b0853dc699e83103d36df2c881aa67"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a567691ababd2dee2c44d1d6d4b9b093a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a567691ababd2dee2c44d1d6d4b9b093a"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::task_scheduler_observer_v3</b></td></tr>
+<tr class="separator:a567691ababd2dee2c44d1d6d4b9b093a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae3fb165cd890fab10c1d09823dcb0ac9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3fb165cd890fab10c1d09823dcb0ac9"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::observer_proxy</b></td></tr>
+<tr class="separator:ae3fb165cd890fab10c1d09823dcb0ac9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5d0d193bf27a1606466663c68e05e1b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d0d193bf27a1606466663c68e05e1b3"></a>
+class </td><td class="memItemRight" valign="bottom"><b>internal::observer_list</b></td></tr>
+<tr class="separator:a5d0d193bf27a1606466663c68e05e1b3"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<h2 class="groupheader">Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a89025b1e1d42e97d6fe114c0c331f730"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::interface6::task_scheduler_observer::task_scheduler_observer </td>
+          <td>(</td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"><em>local</em> = <code>false</code>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct local or global observer in inactive state (observation disabled). </p>
+<p>For a local observer entry/exit notifications are invoked whenever a worker thread joins/leaves the arena of the observer's owner thread. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task. TODO: Obsolete. Global observer semantics is obsolete as it violates master thread isolation guarantees and is not composable. Thus the current default behavior of the constructor is obsolete too and will be  [...]
+
+</div>
+</div>
+<a class="anchor" id="a36e7e0c466320029d5a3e50a573e04c1"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">tbb::interface6::task_scheduler_observer::task_scheduler_observer </td>
+          <td>(</td>
+          <td class="paramtype">task_arena & </td>
+          <td class="paramname"><em>a</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Construct local observer for a given arena in inactive state (observation disabled). </p>
+<p>entry/exit notifications are invoked whenever a thread joins/leaves arena. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9ef3f1853439b46e5a9db7fd1c0f9116"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual tbb::interface6::task_scheduler_observer::~task_scheduler_observer </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
 </table>
+</div><div class="memdoc">
+<p>Destructor protects instance of the observer from concurrent notification. It is recommended to disable observation before destructor of a derived class starts, otherwise it can lead to concurrent notification callback on partly destroyed object </p>
+
+<p>References <a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">observe()</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a2390325945912ee7ce58cd9700664ea4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual bool tbb::interface6::task_scheduler_observer::may_sleep </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The callback can be invoked by a worker thread before it goes to sleep. </p>
+<p>If it returns false ('keep_awake'), the thread will keep spinning and looking for work. It will not be called for master threads. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad5b33790cea52c61e1fb004a8ed26365"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::interface6::task_scheduler_observer::observe </td>
+          <td>(</td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"><em>state</em> = <code>true</code>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Enable or disable observation. </p>
+<p>Warning: concurrent invocations of this method are not safe. Repeated calls with the same state are no-ops. </p>
+
+<p>References <a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">tbb::internal::task_scheduler_observer_v3::observe()</a>, and <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb::relaxed</a>.</p>
+
+<p>Referenced by <a class="el" href="a00157.html#a9ef3f1853439b46e5a9db7fd1c0f9116">~task_scheduler_observer()</a>.</p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_unordered_map.h</li>
+<li>task_scheduler_observer.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00157.png b/doc/html/a00157.png
index d675463..37496e9 100644
Binary files a/doc/html/a00157.png and b/doc/html/a00157.png differ
diff --git a/doc/html/a00158.html b/doc/html/a00158.html
index e6d2825..d6d0fdf 100644
--- a/doc/html/a00158.html
+++ b/doc/html/a00158.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::vector_iterator< Container, Value > Class Template Reference</title>
+<title>tbb::internal::task_scheduler_observer_v3 Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,21 +33,150 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00158.html">vector_iterator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00158.html">task_scheduler_observer_v3</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00413.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::vector_iterator< Container, Value > Class Template Reference</div>  </div>
+<div class="title">tbb::internal::task_scheduler_observer_v3 Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::internal::task_scheduler_observer_v3:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00158.png" usemap="#tbb::internal::task_scheduler_observer_v3_map" alt=""/>
+  <map id="tbb::internal::task_scheduler_observer_v3_map" name="tbb::internal::task_scheduler_observer_v3_map">
+<area href="a00157.html" alt="tbb::interface6::task_scheduler_observer" shape="rect" coords="0,56,247,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a40209b347e3c82bb5bfda05941304309"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">observe</a> (bool state=true)</td></tr>
+<tr class="memdesc:a40209b347e3c82bb5bfda05941304309"><td class="mdescLeft"> </td><td class="mdescRight">Enable or disable observation.  <a href="#a40209b347e3c82bb5bfda05941304309">More...</a><br/></td></tr>
+<tr class="separator:a40209b347e3c82bb5bfda05941304309"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a31abaf256f7172f010cfb2259c7787bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31abaf256f7172f010cfb2259c7787bb"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a> () const </td></tr>
+<tr class="memdesc:a31abaf256f7172f010cfb2259c7787bb"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if observation is enabled, false otherwise. <br/></td></tr>
+<tr class="separator:a31abaf256f7172f010cfb2259c7787bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a25bffb05efaaab36bc58590969e29745"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25bffb05efaaab36bc58590969e29745"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a> ()</td></tr>
+<tr class="memdesc:a25bffb05efaaab36bc58590969e29745"><td class="mdescLeft"> </td><td class="mdescRight">Construct observer with observation disabled. <br/></td></tr>
+<tr class="separator:a25bffb05efaaab36bc58590969e29745"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af4282a27725fbe86052bb785bdd9c5d3"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a> (bool)</td></tr>
+<tr class="memdesc:af4282a27725fbe86052bb785bdd9c5d3"><td class="mdescLeft"> </td><td class="mdescRight">Entry notification.  <a href="#af4282a27725fbe86052bb785bdd9c5d3">More...</a><br/></td></tr>
+<tr class="separator:af4282a27725fbe86052bb785bdd9c5d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a657e90f833568e217b807d0122fa7668"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a> (bool)</td></tr>
+<tr class="memdesc:a657e90f833568e217b807d0122fa7668"><td class="mdescLeft"> </td><td class="mdescRight">Exit notification.  <a href="#a657e90f833568e217b807d0122fa7668">More...</a><br/></td></tr>
+<tr class="separator:a657e90f833568e217b807d0122fa7668"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a151e475ebba39172fcc13f43bed426cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a151e475ebba39172fcc13f43bed426cc"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a> ()</td></tr>
+<tr class="memdesc:a151e475ebba39172fcc13f43bed426cc"><td class="mdescLeft"> </td><td class="mdescRight">Destructor automatically switches observation off if it is enabled. <br/></td></tr>
+<tr class="separator:a151e475ebba39172fcc13f43bed426cc"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a897b52f8da750f35b9b2ef410eae7181"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a897b52f8da750f35b9b2ef410eae7181"></a>
+class </td><td class="memItemRight" valign="bottom"><b>observer_proxy</b></td></tr>
+<tr class="separator:a897b52f8da750f35b9b2ef410eae7181"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a232d1ae378b2c82f9788c5611429298b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a232d1ae378b2c82f9788c5611429298b"></a>
+class </td><td class="memItemRight" valign="bottom"><b>observer_list</b></td></tr>
+<tr class="separator:a232d1ae378b2c82f9788c5611429298b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad972d2c44eeed885d9df2b75e7231277"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad972d2c44eeed885d9df2b75e7231277"></a>
+class </td><td class="memItemRight" valign="bottom"><b>interface6::task_scheduler_observer</b></td></tr>
+<tr class="separator:ad972d2c44eeed885d9df2b75e7231277"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a40209b347e3c82bb5bfda05941304309"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_METHOD tbb::internal::task_scheduler_observer_v3::observe </td>
+          <td>(</td>
+          <td class="paramtype">bool </td>
+          <td class="paramname"><em>state</em> = <code>true</code>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Enable or disable observation. </p>
+<p>For local observers the method can be used only when the current thread has the task scheduler initialized or is attached to an arena.</p>
+<p>Repeated calls with the same state are no-ops. </p>
+
+<p>Referenced by <a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">tbb::interface6::task_scheduler_observer::observe()</a>, and <a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af4282a27725fbe86052bb785bdd9c5d3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_entry </td>
+          <td>(</td>
+          <td class="paramtype">bool </td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Entry notification. </p>
+<p>Invoked from inside observe(true) call and whenever a worker enters the arena this observer is associated with. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task.</p>
+<p>Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="a657e90f833568e217b807d0122fa7668"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_exit </td>
+          <td>(</td>
+          <td class="paramtype">bool </td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Exit notification. </p>
+<p>Invoked from inside observe(false) call and whenever a worker leaves the arena this observer is associated with.</p>
+<p>Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled. </p>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
-<li>concurrent_vector.h</li>
+<li>task_scheduler_observer.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00143.png b/doc/html/a00158.png
similarity index 100%
copy from doc/html/a00143.png
copy to doc/html/a00158.png
diff --git a/doc/html/a00159.html b/doc/html/a00159.html
index ceb0e2d..34cfd56 100644
--- a/doc/html/a00159.html
+++ b/doc/html/a00159.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::flow::interface7::write_once_node< T > Class Template Reference</title>
+<title>tbb::tbb_allocator< T > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,208 +33,125 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00159.html">write_once_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00159.html">tbb_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
 <a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-methods">Protected Member Functions</a> |
-<a href="#friends">Friends</a> |
-<a href="a00323.html">List of all members</a>  </div>
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00310.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::write_once_node< T > Class Template Reference</div>  </div>
+<div class="title">tbb::tbb_allocator< T > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="dynheader">
-Inheritance diagram for tbb::flow::interface7::write_once_node< T >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00159.png" usemap="#tbb::flow::interface7::write_once_node< T >_map" alt=""/>
-  <map id="tbb::flow::interface7::write_once_node< T >_map" name="tbb::flow::interface7::write_once_node< T >_map">
-<area href="a00086.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="265,112,520,136"/>
-<area href="a00063.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,255,80"/>
-<area href="a00106.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="265,56,520,80"/>
-<area href="a00124.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="530,56,785,80"/>
-</map>
- </div></div>
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+ <a href="a00159.html#details">More...</a></p>
+
+<p><code>#include <tbb_allocator.h></code></p>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00117.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:ab3b6999f46ff4e7c73613eca7139a308"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3b6999f46ff4e7c73613eca7139a308"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:ab3b6999f46ff4e7c73613eca7139a308"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac1228d1cd407e65842465e44ff1a5744"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1228d1cd407e65842465e44ff1a5744"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:ac1228d1cd407e65842465e44ff1a5744"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab22f169f2471c7ed2fdf55b82f48f9de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab22f169f2471c7ed2fdf55b82f48f9de"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:ab22f169f2471c7ed2fdf55b82f48f9de"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4b2f464c97cfdacbfc0ed7caeb426537"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b2f464c97cfdacbfc0ed7caeb426537"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a4b2f464c97cfdacbfc0ed7caeb426537"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00086"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00086')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
-<tr class="memitem:a0a8edb9abd1842cb9a1f00574a85c5c3 inherit pub_types_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a8edb9abd1842cb9a1f00574a85c5c3"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
-<tr class="separator:a0a8edb9abd1842cb9a1f00574a85c5c3 inherit pub_types_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acaa2a72c0275a503c72c59b7b1b107a7 inherit pub_types_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaa2a72c0275a503c72c59b7b1b107a7"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
-<tr class="separator:acaa2a72c0275a503c72c59b7b1b107a7 inherit pub_types_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ae3c9152237c0355406644f8bdd423db9 inherit pub_types_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3c9152237c0355406644f8bdd423db9"></a>
-typedef <a class="el" href="a00124.html">sender</a>< <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
-<tr class="separator:ae3c9152237c0355406644f8bdd423db9 inherit pub_types_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3840465efc064f51b88f55bf12cd8526 inherit pub_types_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3840465efc064f51b88f55bf12cd8526"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
-<tr class="separator:a3840465efc064f51b88f55bf12cd8526 inherit pub_types_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00106')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
-<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
-<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
-typedef <a class="el" href="a00124.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
-<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
-<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
-typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
-<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
-<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
-typedef <a class="el" href="a00106.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
-<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
-<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a60463a571d5c20f7762112367261ad94"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> { <b>scalable</b>, 
+<b>standard</b>
+ }</td></tr>
+<tr class="memdesc:a60463a571d5c20f7762112367261ad94"><td class="mdescLeft"> </td><td class="mdescRight">Specifies current allocator. <br/></td></tr>
+<tr class="separator:a60463a571d5c20f7762112367261ad94"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a26be966de4164e37002247c2c2266df9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26be966de4164e37002247c2c2266df9"></a>
+typedef <br class="typebreak"/>
+internal::allocator_type< T ><br class="typebreak"/>
+::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a26be966de4164e37002247c2c2266df9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a452a6c09408f425c9a005b5f2aad1761"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a452a6c09408f425c9a005b5f2aad1761"></a>
+typedef value_type * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a452a6c09408f425c9a005b5f2aad1761"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63122d559635096a2618aecd1ba6664b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63122d559635096a2618aecd1ba6664b"></a>
+typedef const value_type * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a63122d559635096a2618aecd1ba6664b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5ec6bd5e8cdd5b7abb99f5d72760c7a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ec6bd5e8cdd5b7abb99f5d72760c7a2"></a>
+typedef value_type & </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a5ec6bd5e8cdd5b7abb99f5d72760c7a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a24d98ce3ab908bc4b10d21dad6622364"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24d98ce3ab908bc4b10d21dad6622364"></a>
+typedef const value_type & </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a24d98ce3ab908bc4b10d21dad6622364"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a812817d50e8df15df54998caec9892eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a812817d50e8df15df54998caec9892eb"></a>
+typedef size_t </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a812817d50e8df15df54998caec9892eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acba390757f664df03a15e933e3e34941"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acba390757f664df03a15e933e3e34941"></a>
+typedef ptrdiff_t </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:acba390757f664df03a15e933e3e34941"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
-<tr class="memitem:a8225d7ca0ff9762552413cfb1382d78f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8225d7ca0ff9762552413cfb1382d78f"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#a8225d7ca0ff9762552413cfb1382d78f">write_once_node</a> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="memdesc:a8225d7ca0ff9762552413cfb1382d78f"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
-<tr class="separator:a8225d7ca0ff9762552413cfb1382d78f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a68b94bb09b608522462080fe99125e07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68b94bb09b608522462080fe99125e07"></a>
- </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#a68b94bb09b608522462080fe99125e07">write_once_node</a> (const <a class="el" href="a00159.html">write_once_node</a> &src)</td></tr>
-<tr class="memdesc:a68b94bb09b608522462080fe99125e07"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor: call base class copy constructor. <br/></td></tr>
-<tr class="separator:a68b94bb09b608522462080fe99125e07"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afad8a544e45d1cb510c1e532e6bf3578"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afad8a544e45d1cb510c1e532e6bf3578"></a>
-void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
-<tr class="separator:afad8a544e45d1cb510c1e532e6bf3578"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00086"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00086')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
-<tr class="memitem:a8e0fdb38848772d2e8f93f55e062d148 inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e0fdb38848772d2e8f93f55e062d148"></a>
- </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a8e0fdb38848772d2e8f93f55e062d148 inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2605cf9efc94c3cba2c59cb5c59e8f19 inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2605cf9efc94c3cba2c59cb5c59e8f19"></a>
- </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (const <a class="el" href="a00086.html">overwrite_node</a> &src)</td></tr>
-<tr class="separator:a2605cf9efc94c3cba2c59cb5c59e8f19 inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed811ce5f59a555396c7bcd56316b4da"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
-<tr class="memdesc:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00086"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
-<tr class="separator:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ff89d56e2e3c3848d84a09c88b1d52"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a> (<a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
-<tr class="memdesc:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00086"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
-<tr class="separator:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a575642eb611ca4e2012df5604634d341 inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575642eb611ca4e2012df5604634d341"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">try_get</a> (T &v)</td></tr>
-<tr class="memdesc:a575642eb611ca4e2012df5604634d341 inherit pub_methods_a00086"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
-<tr class="separator:a575642eb611ca4e2012df5604634d341 inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3bf01d9c754667474fdb47e47df470a9 inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bf01d9c754667474fdb47e47df470a9"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_valid</b> ()</td></tr>
-<tr class="separator:a3bf01d9c754667474fdb47e47df470a9 inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4d950320406a8c819882ea50d918678a inherit pub_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d950320406a8c819882ea50d918678a"></a>
-void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
-<tr class="separator:a4d950320406a8c819882ea50d918678a inherit pub_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00063"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00063')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
- </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00061.html">graph</a> &g)</td></tr>
-<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00063"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00106')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
-virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
-<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
-<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
-bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
-<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
-<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
-<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
-<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
-<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
-<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
-<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
-<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
-<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
-<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
-<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
-Protected Member Functions</h2></td></tr>
-<tr class="memitem:a6f03bc8ba1bc382978ce230c489c93be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f03bc8ba1bc382978ce230c489c93be"></a>
-task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const T &v)</td></tr>
-<tr class="separator:a6f03bc8ba1bc382978ce230c489c93be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00086"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00086')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
-<tr class="memitem:a465ce685bc8c468389442a9aaef3f7d0 inherit pro_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a465ce685bc8c468389442a9aaef3f7d0"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
-<tr class="separator:a465ce685bc8c468389442a9aaef3f7d0 inherit pro_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a953be19f0623ad2e5a4e52707cba00da inherit pro_methods_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a953be19f0623ad2e5a4e52707cba00da"></a>
-void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
-<tr class="separator:a953be19f0623ad2e5a4e52707cba00da inherit pro_methods_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="inherit_header pro_methods_a00106"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00106')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
-virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
-<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00106"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
-Friends</h2></td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
-template<typename R , typename B > </td></tr>
-<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
-<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
-<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
-template<typename X , typename Y > </td></tr>
-<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
-<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8371538bc959f41f342012e363564aed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8371538bc959f41f342012e363564aed"></a>
+ </td><td class="memItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00159.html">tbb_allocator</a> &)  throw ()</td></tr>
+<tr class="separator:a8371538bc959f41f342012e363564aed"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9faff9ae2c2cd3ed2ca064b562224974"></a>
+template<typename U > </td></tr>
+<tr class="memitem:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>tbb_allocator</b> (const <a class="el" href="a00159.html">tbb_allocator</a>< U > &)  throw ()</td></tr>
+<tr class="separator:a9faff9ae2c2cd3ed2ca064b562224974"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1370dbb1f06fed57273bddcae688255"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1370dbb1f06fed57273bddcae688255"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (reference x) const </td></tr>
+<tr class="separator:ac1370dbb1f06fed57273bddcae688255"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb9c91d548d4a5affe3ec1de1c1b9327"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb9c91d548d4a5affe3ec1de1c1b9327"></a>
+const_pointer </td><td class="memItemRight" valign="bottom"><b>address</b> (const_reference x) const </td></tr>
+<tr class="separator:afb9c91d548d4a5affe3ec1de1c1b9327"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afedd8a64eed9692083c708f419338e0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afedd8a64eed9692083c708f419338e0c"></a>
+pointer </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#afedd8a64eed9692083c708f419338e0c">allocate</a> (size_type n, const void *=0)</td></tr>
+<tr class="memdesc:afedd8a64eed9692083c708f419338e0c"><td class="mdescLeft"> </td><td class="mdescRight">Allocate space for n objects. <br/></td></tr>
+<tr class="separator:afedd8a64eed9692083c708f419338e0c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28e333e0fff56dd53c20b82cfee430ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28e333e0fff56dd53c20b82cfee430ab"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#a28e333e0fff56dd53c20b82cfee430ab">deallocate</a> (pointer p, size_type)</td></tr>
+<tr class="memdesc:a28e333e0fff56dd53c20b82cfee430ab"><td class="mdescLeft"> </td><td class="mdescRight">Free previously allocated block of memory. <br/></td></tr>
+<tr class="separator:a28e333e0fff56dd53c20b82cfee430ab"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0a2676fb8a2f931961d373b88848c93e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a2676fb8a2f931961d373b88848c93e"></a>
+size_type </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#a0a2676fb8a2f931961d373b88848c93e">max_size</a> () const   throw ()</td></tr>
+<tr class="memdesc:a0a2676fb8a2f931961d373b88848c93e"><td class="mdescLeft"> </td><td class="mdescRight">Largest value for which method allocate might succeed. <br/></td></tr>
+<tr class="separator:a0a2676fb8a2f931961d373b88848c93e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af54fa3029e33cebe5ba64a8538306fdf"><td class="memTemplParams" colspan="2"><a class="anchor" id="af54fa3029e33cebe5ba64a8538306fdf"></a>
+template<typename U , typename... Args> </td></tr>
+<tr class="memitem:af54fa3029e33cebe5ba64a8538306fdf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00159.html#af54fa3029e33cebe5ba64a8538306fdf">construct</a> (U *p, Args &&...args)</td></tr>
+<tr class="memdesc:af54fa3029e33cebe5ba64a8538306fdf"><td class="mdescLeft"> </td><td class="mdescRight">Copy-construct value at location pointed to by p. <br/></td></tr>
+<tr class="separator:af54fa3029e33cebe5ba64a8538306fdf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aefbb273663853a665e51dcfa053d12a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefbb273663853a665e51dcfa053d12a0"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, value_type &&value)</td></tr>
+<tr class="separator:aefbb273663853a665e51dcfa053d12a0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a694e266db657afba34ecb60111b2e2d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a694e266db657afba34ecb60111b2e2d3"></a>
+void </td><td class="memItemRight" valign="bottom"><b>construct</b> (pointer p, const value_type &value)</td></tr>
+<tr class="separator:a694e266db657afba34ecb60111b2e2d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac7b1b393a8ff3399079328c0971c1996"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7b1b393a8ff3399079328c0971c1996"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#ac7b1b393a8ff3399079328c0971c1996">destroy</a> (pointer p)</td></tr>
+<tr class="memdesc:ac7b1b393a8ff3399079328c0971c1996"><td class="mdescLeft"> </td><td class="mdescRight">Destroy value at location pointed to by p. <br/></td></tr>
+<tr class="separator:ac7b1b393a8ff3399079328c0971c1996"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
-Additional Inherited Members</h2></td></tr>
-<tr class="inherit_header pro_attribs_a00086"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00086')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
-<tr class="memitem:ad8d534d5d059f91b82c4aef9235aa9f6 inherit pro_attribs_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8d534d5d059f91b82c4aef9235aa9f6"></a>
-<a class="el" href="a00127.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
-<tr class="separator:ad8d534d5d059f91b82c4aef9235aa9f6 inherit pro_attribs_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a024db18a1019452d3d715e9913fb2deb inherit pro_attribs_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a024db18a1019452d3d715e9913fb2deb"></a>
-<a class="el" href="a00024.html">internal::broadcast_cache</a>< T, <br class="typebreak"/>
-<a class="el" href="a00084.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
-<tr class="separator:a024db18a1019452d3d715e9913fb2deb inherit pro_attribs_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a01a061a8c4938ce031017a57935db54b inherit pro_attribs_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01a061a8c4938ce031017a57935db54b"></a>
-T </td><td class="memItemRight" valign="bottom"><b>my_buffer</b></td></tr>
-<tr class="separator:a01a061a8c4938ce031017a57935db54b inherit pro_attribs_a00086"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afbf79aaedd9459ed382823d8d85d0bfc inherit pro_attribs_a00086"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbf79aaedd9459ed382823d8d85d0bfc"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>my_buffer_is_valid</b></td></tr>
-<tr class="separator:afbf79aaedd9459ed382823d8d85d0bfc inherit pro_attribs_a00086"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:aa4606cff0156ec4237c1571204851bfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4606cff0156ec4237c1571204851bfb"></a>
+static <a class="el" href="a00159.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html#aa4606cff0156ec4237c1571204851bfb">allocator_type</a> ()</td></tr>
+<tr class="memdesc:aa4606cff0156ec4237c1571204851bfb"><td class="mdescLeft"> </td><td class="mdescRight">Returns current allocator. <br/></td></tr>
+<tr class="separator:aa4606cff0156ec4237c1571204851bfb"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li><a class="el" href="a00179.html">flow_graph.h</a></li>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T><br/>
+class tbb::tbb_allocator< T ></h3>
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
+<p>The class selects the best memory allocation mechanism available from scalable_malloc and standard malloc. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00160.html b/doc/html/a00160.html
index 57f7cf6..7d8fac8 100644
--- a/doc/html/a00160.html
+++ b/doc/html/a00160.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::zero_allocator< T, Allocator > Class Template Reference</title>
+<title>tbb::tbb_allocator< void > Class Template Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,98 +33,53 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">zero_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">tbb_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
 <a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="a00293.html">List of all members</a>  </div>
+<a href="a00312.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< T, Allocator > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::tbb_allocator< void > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
  <a href="a00160.html#details">More...</a></p>
 
 <p><code>#include <tbb_allocator.h></code></p>
-<div class="dynheader">
-Inheritance diagram for tbb::zero_allocator< T, Allocator >:</div>
-<div class="dyncontent">
- <div class="center">
-  <img src="a00160.png" usemap="#tbb::zero_allocator< T, Allocator >_map" alt=""/>
-  <map id="tbb::zero_allocator< T, Allocator >_map" name="tbb::zero_allocator< T, Allocator >_map">
-</map>
- </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00100.html">rebind</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00118.html">rebind</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
 Public Types</h2></td></tr>
-<tr class="memitem:a62f27899a40c4bfaa6ba4313ffc833ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62f27899a40c4bfaa6ba4313ffc833ef"></a>
-typedef Allocator< T > </td><td class="memItemRight" valign="bottom"><b>base_allocator_type</b></td></tr>
-<tr class="separator:a62f27899a40c4bfaa6ba4313ffc833ef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a906f5c2d47fff1bf4fd868a2441752d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a906f5c2d47fff1bf4fd868a2441752d1"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a906f5c2d47fff1bf4fd868a2441752d1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afb9458462ffca5d8734968862c9c4e6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb9458462ffca5d8734968862c9c4e6b"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:afb9458462ffca5d8734968862c9c4e6b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a2a08548bf83e153b40029de72738b60f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a08548bf83e153b40029de72738b60f"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a2a08548bf83e153b40029de72738b60f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0afb88e128fc595c62f24e34f445d834"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0afb88e128fc595c62f24e34f445d834"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
-<tr class="separator:a0afb88e128fc595c62f24e34f445d834"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a28180fc12dc69c275983f6400526ba01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28180fc12dc69c275983f6400526ba01"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
-<tr class="separator:a28180fc12dc69c275983f6400526ba01"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8e741b3db82dfdce3f68cfd6d66901ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e741b3db82dfdce3f68cfd6d66901ce"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
-<tr class="separator:a8e741b3db82dfdce3f68cfd6d66901ce"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aba68dc670e813a0c5c7f06e262b66187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba68dc670e813a0c5c7f06e262b66187"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
-<tr class="separator:aba68dc670e813a0c5c7f06e262b66187"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a9080a874dd20d0ca8e404683113990f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9080a874dd20d0ca8e404683113990f2"></a>
- </td><td class="memItemRight" valign="bottom"><b>zero_allocator</b> (const <a class="el" href="a00160.html">zero_allocator</a> &a)  throw ()</td></tr>
-<tr class="separator:a9080a874dd20d0ca8e404683113990f2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab417c217e597c6f412c5a630ba18bc32"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab417c217e597c6f412c5a630ba18bc32"></a>
-template<typename U > </td></tr>
-<tr class="memitem:ab417c217e597c6f412c5a630ba18bc32"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>zero_allocator</b> (const <a class="el" href="a00160.html">zero_allocator</a>< U > &a)  throw ()</td></tr>
-<tr class="separator:ab417c217e597c6f412c5a630ba18bc32"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1b9fe1273c2332e3c0b571d7bf1ba615"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b9fe1273c2332e3c0b571d7bf1ba615"></a>
-pointer </td><td class="memItemRight" valign="bottom"><b>allocate</b> (const size_type n, const void *hint=0)</td></tr>
-<tr class="separator:a1b9fe1273c2332e3c0b571d7bf1ba615"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8fda536620d85d53caa82c45ffa49dd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fda536620d85d53caa82c45ffa49dd8"></a>
+typedef void * </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:a8fda536620d85d53caa82c45ffa49dd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a401d3c91a38b09410a20fe69d4d9745d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a401d3c91a38b09410a20fe69d4d9745d"></a>
+typedef const void * </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a401d3c91a38b09410a20fe69d4d9745d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afef43ed21663982050fbae7b970e33f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef43ed21663982050fbae7b970e33f6"></a>
+typedef void </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:afef43ed21663982050fbae7b970e33f6"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<typename T, template< typename X > class Allocator = tbb_allocator><br/>
-class tbb::zero_allocator< T, Allocator ></h3>
+<div class="textblock"><h3>template<><br/>
+class tbb::tbb_allocator< void ></h3>
 
-<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
-<p>The class is an adapter over an actual allocator that fills the allocation using memset function with template argument C as the value. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
 </div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>tbb_allocator.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00161.html b/doc/html/a00161.html
index b0d0bc5..54e8f50 100644
--- a/doc/html/a00161.html
+++ b/doc/html/a00161.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb::zero_allocator< void, Allocator > Class Template Reference</title>
+<title>tbb::tbb_exception Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -33,67 +33,191 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">tbb_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#pub-types">Public Types</a> |
-<a href="a00295.html">List of all members</a>  </div>
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00323.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< void, Allocator > Class Template Reference<div class="ingroups"><a class="el" href="a00236.html">Memory Allocation</a></div></div>  </div>
+<div class="title">tbb::tbb_exception Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+<p>Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  
  <a href="a00161.html#details">More...</a></p>
 
-<p><code>#include <tbb_allocator.h></code></p>
+<p><code>#include <tbb_exception.h></code></p>
 <div class="dynheader">
-Inheritance diagram for tbb::zero_allocator< void, Allocator >:</div>
+Inheritance diagram for tbb::tbb_exception:</div>
 <div class="dyncontent">
  <div class="center">
-  <img src="a00161.png" usemap="#tbb::zero_allocator< void, Allocator >_map" alt=""/>
-  <map id="tbb::zero_allocator< void, Allocator >_map" name="tbb::zero_allocator< void, Allocator >_map">
+  <img src="a00161.png" usemap="#tbb::tbb_exception_map" alt=""/>
+  <map id="tbb::tbb_exception_map" name="tbb::tbb_exception_map">
+<area href="a00035.html" title="This class is used by TBB to propagate information about unhandled exceptions into the root thread..." alt="tbb::captured_exception" shape="rect" coords="0,112,248,136"/>
+<area href="a00097.html" title="Template that can be used to implement exception that transfers arbitrary ExceptionData to the root t..." alt="tbb::movable_exception< ExceptionData >" shape="rect" coords="258,112,506,136"/>
 </map>
  </div></div>
 <table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html">rebind</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr class="memitem:ad760fbbdefc95c096c94521316e9e091"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad760fbbdefc95c096c94521316e9e091"></a>
-typedef Allocator< void > </td><td class="memItemRight" valign="bottom"><b>base_allocator_type</b></td></tr>
-<tr class="separator:ad760fbbdefc95c096c94521316e9e091"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a392c9d2f51594e7372e5e73e4bf805ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a392c9d2f51594e7372e5e73e4bf805ff"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
-<tr class="separator:a392c9d2f51594e7372e5e73e4bf805ff"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa6c02215a540d3f5dd4cb4739bd05bcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6c02215a540d3f5dd4cb4739bd05bcf"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
-<tr class="separator:aa6c02215a540d3f5dd4cb4739bd05bcf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0f2fa4e1a995d60f763595ef4b91dd9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f2fa4e1a995d60f763595ef4b91dd9a"></a>
-typedef <br class="typebreak"/>
-base_allocator_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
-<tr class="separator:a0f2fa4e1a995d60f763595ef4b91dd9a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a4bd4ba0d501021013d1473d21b020b69"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="a00161.html">tbb_exception</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">move</a> ()=0  throw ()</td></tr>
+<tr class="memdesc:a4bd4ba0d501021013d1473d21b020b69"><td class="mdescLeft"> </td><td class="mdescRight">Creates and returns pointer to the deep copy of this exception object.  <a href="#a4bd4ba0d501021013d1473d21b020b69">More...</a><br/></td></tr>
+<tr class="separator:a4bd4ba0d501021013d1473d21b020b69"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">destroy</a> ()=0  throw ()</td></tr>
+<tr class="memdesc:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="mdescLeft"> </td><td class="mdescRight">Destroys objects created by the <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method.  <a href="#ad3bc09bf78c33f19a0bcdf882fdf9d41">More...</a><br/></td></tr>
+<tr class="separator:ad3bc09bf78c33f19a0bcdf882fdf9d41"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae45c08d36c7ec7ae91785da3515a8828"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">throw_self</a> ()=0</td></tr>
+<tr class="memdesc:ae45c08d36c7ec7ae91785da3515a8828"><td class="mdescLeft"> </td><td class="mdescRight">Throws this exception object.  <a href="#ae45c08d36c7ec7ae91785da3515a8828">More...</a><br/></td></tr>
+<tr class="separator:ae45c08d36c7ec7ae91785da3515a8828"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a282bb7dce5f157d044d14d50cd6ff35c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a282bb7dce5f157d044d14d50cd6ff35c"></a>
+virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#a282bb7dce5f157d044d14d50cd6ff35c">name</a> () const =0  throw ()</td></tr>
+<tr class="memdesc:a282bb7dce5f157d044d14d50cd6ff35c"><td class="mdescLeft"> </td><td class="mdescRight">Returns RTTI name of the originally intercepted exception. <br/></td></tr>
+<tr class="separator:a282bb7dce5f157d044d14d50cd6ff35c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0ad81121d4b722ecc466b5d3cc4e919"></a>
+virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#ae0ad81121d4b722ecc466b5d3cc4e919">what</a> () const =0  throw ()</td></tr>
+<tr class="memdesc:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="mdescLeft"> </td><td class="mdescRight">Returns the result of originally intercepted exception's <a class="el" href="a00161.html#ae0ad81121d4b722ecc466b5d3cc4e919" title="Returns the result of originally intercepted exception's what() method. ">what()</a> method. <br/></td></tr>
+<tr class="separator:ae0ad81121d4b722ecc466b5d3cc4e919"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6a973c37078afedf7d457ff4704bf8cd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a> (void *p)</td></tr>
+<tr class="separator:a6a973c37078afedf7d457ff4704bf8cd"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><h3>template<template< typename T > class Allocator><br/>
-class tbb::zero_allocator< void, Allocator ></h3>
+<div class="textblock"><p>Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. </p>
+<p>If an unhandled exception of the type derived from <a class="el" href="a00161.html" title="Interface to be implemented by all exceptions TBB recognizes and propagates across the threads...">tbb::tbb_exception</a> is intercepted by the TBB scheduler in one of the worker threads, it is delivered to and re-thrown in the root thread. The root thread is the thread that has started the outermost algorithm or root task sharing the same <a class="el" href="a00153.html">task_group_context</a>  [...]
+<p>Note: when documentation mentions workers with respect to exception handling, masters are implied as well, because they are completely equivalent in this context. Consequently a root thread can be master or worker thread.</p>
+<p>NOTE: In case of nested algorithms or complex task hierarchies when the nested levels share (explicitly or by means of implicit inheritance) the task group context of the outermost level, the exception may be (re-)thrown multiple times (ultimately - in each worker on each nesting level) before reaching the root thread at the outermost level. IMPORTANT: if you intercept an exception derived from this class on a nested level, you must re-throw it in the catch block by means of the "thro [...]
+<p>TBB provides two implementations of this interface: <a class="el" href="a00035.html" title="This class is used by TBB to propagate information about unhandled exceptions into the root thread...">tbb::captured_exception</a> and template class <a class="el" href="a00097.html" title="Template that can be used to implement exception that transfers arbitrary ExceptionData to the root t...">tbb::movable_exception</a>. See their declarations for more info. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ad3bc09bf78c33f19a0bcdf882fdf9d41"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::tbb_exception::destroy </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
+        </tr>
+        <tr>
+          <td align="right"></td><td>)</td><td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Destroys objects created by the <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> method. </p>
+<p>Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method. </p>
+
+<p>Implemented in <a class="el" href="a00097.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00035.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>.</p>
 
-<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
-</div><hr/>The documentation for this class was generated from the following file:<ul>
-<li>tbb_allocator.h</li>
+</div>
+</div>
+<a class="anchor" id="a4bd4ba0d501021013d1473d21b020b69"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual <a class="el" href="a00161.html">tbb_exception</a>* tbb::tbb_exception::move </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
+        </tr>
+        <tr>
+          <td align="right"></td><td>)</td><td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Creates and returns pointer to the deep copy of this exception object. </p>
+<p>Move semantics is allowed. </p>
+
+<p>Implemented in <a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6a973c37078afedf7d457ff4704bf8cd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::tbb_exception::operator delete </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>p</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Operator delete is provided only to allow using existing smart pointers with TBB exception objects obtained as the result of applying <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> operation on an exception thrown out of TBB scheduler.</p>
+<p>When overriding method <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69" title="Creates and returns pointer to the deep copy of this exception object. ">move()</a> make sure to override operator delete as well if memory is allocated not by TBB's scalable allocator. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae45c08d36c7ec7ae91785da3515a8828"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void tbb::tbb_exception::throw_self </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Throws this exception object. </p>
+<p>Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown. </p>
+
+<p>Implemented in <a class="el" href="a00097.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>, and <a class="el" href="a00035.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00161.png b/doc/html/a00161.png
index f97e606..a067095 100644
Binary files a/doc/html/a00161.png and b/doc/html/a00161.png differ
diff --git a/doc/html/a00162.html b/doc/html/a00162.html
new file mode 100644
index 0000000..e38bee0
--- /dev/null
+++ b/doc/html/a00162.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::tbb_exception_ptr Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00162.html">tbb_exception_ptr</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00414.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::tbb_exception_ptr Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Exception container that preserves the exact copy of the original exception.  
+ <a href="a00162.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a38d3ca480e2758a67bcd7427b156daae"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00162.html#a38d3ca480e2758a67bcd7427b156daae">destroy</a> ()  throw ()</td></tr>
+<tr class="memdesc:a38d3ca480e2758a67bcd7427b156daae"><td class="mdescLeft"> </td><td class="mdescRight">Destroys this objects.  <a href="#a38d3ca480e2758a67bcd7427b156daae">More...</a><br/></td></tr>
+<tr class="separator:a38d3ca480e2758a67bcd7427b156daae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1713aa9a6a3850049d34358397a8ed81"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1713aa9a6a3850049d34358397a8ed81"></a>
+void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00162.html#a1713aa9a6a3850049d34358397a8ed81">throw_self</a> ()</td></tr>
+<tr class="memdesc:a1713aa9a6a3850049d34358397a8ed81"><td class="mdescLeft"> </td><td class="mdescRight">Throws the contained exception . <br/></td></tr>
+<tr class="separator:a1713aa9a6a3850049d34358397a8ed81"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a83d4cb04d89ed11b5e030fe4db2d5e5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83d4cb04d89ed11b5e030fe4db2d5e5f"></a>
+static <a class="el" href="a00162.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><b>allocate</b> ()</td></tr>
+<tr class="separator:a83d4cb04d89ed11b5e030fe4db2d5e5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae54ded5f55ad39805e6cb967fc710346"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae54ded5f55ad39805e6cb967fc710346"></a>
+static <a class="el" href="a00162.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><b>allocate</b> (const <a class="el" href="a00161.html">tbb_exception</a> &tag)</td></tr>
+<tr class="separator:ae54ded5f55ad39805e6cb967fc710346"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abfbea91401d2594deb04ea331734171c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abfbea91401d2594deb04ea331734171c"></a>
+static <a class="el" href="a00162.html">tbb_exception_ptr</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00162.html#abfbea91401d2594deb04ea331734171c">allocate</a> (<a class="el" href="a00035.html">captured_exception</a> &src)</td></tr>
+<tr class="memdesc:abfbea91401d2594deb04ea331734171c"><td class="mdescLeft"> </td><td class="mdescRight">This overload uses move semantics (i.e. it empties src) <br/></td></tr>
+<tr class="separator:abfbea91401d2594deb04ea331734171c"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception container that preserves the exact copy of the original exception. </p>
+<p>This class can be used only when the appropriate runtime support (mandated by C++0x) is present </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a38d3ca480e2758a67bcd7427b156daae"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::internal::tbb_exception_ptr::destroy </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+        <tr>
+          <td align="right">throw </td><td>(</td><td colspan="2"></td>
+        </tr>
+        <tr>
+          <td align="right"></td><td>)</td><td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Destroys this objects. </p>
+<p>Note that objects of this type can be created only by the allocate() method. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00163.html b/doc/html/a00163.html
new file mode 100644
index 0000000..6a17fa6
--- /dev/null
+++ b/doc/html/a00163.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::tbb_hash_compare< Key > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00163.html">tbb_hash_compare</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="a00275.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::tbb_hash_compare< Key > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>hash_compare that is default argument for concurrent_hash_map  
+ <a href="a00163.html#details">More...</a></p>
+
+<p><code>#include <concurrent_hash_map.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a525ef96e5015680e43b8e1fecd3a2fb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a525ef96e5015680e43b8e1fecd3a2fb5"></a>
+static size_t </td><td class="memItemRight" valign="bottom"><b>hash</b> (const Key &a)</td></tr>
+<tr class="separator:a525ef96e5015680e43b8e1fecd3a2fb5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afdc33dc9b83fb3b0ead4f234eca81c95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdc33dc9b83fb3b0ead4f234eca81c95"></a>
+static bool </td><td class="memItemRight" valign="bottom"><b>equal</b> (const Key &a, const Key &b)</td></tr>
+<tr class="separator:afdc33dc9b83fb3b0ead4f234eca81c95"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename Key><br/>
+struct tbb::tbb_hash_compare< Key ></h3>
+
+<p>hash_compare that is default argument for concurrent_hash_map </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_hash_map.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00164.html b/doc/html/a00164.html
new file mode 100644
index 0000000..ef3050a
--- /dev/null
+++ b/doc/html/a00164.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::tbb_thread_v3 Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00164.html">tbb_thread_v3</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00419.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::tbb_thread_v3 Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Versioned thread class.  
+ <a href="a00164.html#details">More...</a></p>
+
+<p><code>#include <tbb_thread.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00073.html">id</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:acf81b6411caec392fc62fdfbf72560ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf81b6411caec392fc62fdfbf72560ac"></a>
+typedef HANDLE </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
+<tr class="separator:acf81b6411caec392fc62fdfbf72560ac"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a30e64e2a6bef43e2fd847e6c60a31207"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30e64e2a6bef43e2fd847e6c60a31207"></a>
+typedef pthread_t </td><td class="memItemRight" valign="bottom"><b>native_handle_type</b></td></tr>
+<tr class="separator:a30e64e2a6bef43e2fd847e6c60a31207"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ad9acae61c47fad5cf88869061ead3022"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9acae61c47fad5cf88869061ead3022"></a>
+ </td><td class="memItemRight" valign="bottom"><b>tbb_thread_v3</b> (const <a class="el" href="a00164.html">tbb_thread_v3</a> &)</td></tr>
+<tr class="separator:ad9acae61c47fad5cf88869061ead3022"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a15b84e454eb0179e010b90a88baa0933"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15b84e454eb0179e010b90a88baa0933"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00164.html#a15b84e454eb0179e010b90a88baa0933">tbb_thread_v3</a> () __TBB_NOEXCEPT(true)</td></tr>
+<tr class="memdesc:a15b84e454eb0179e010b90a88baa0933"><td class="mdescLeft"> </td><td class="mdescRight">Constructs a thread object that does not represent a thread of execution. <br/></td></tr>
+<tr class="separator:a15b84e454eb0179e010b90a88baa0933"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9c5587ab76ca1aa98bae7fe69a459466"></a>
+template<class F > </td></tr>
+<tr class="memitem:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00164.html#a9c5587ab76ca1aa98bae7fe69a459466">tbb_thread_v3</a> (F f)</td></tr>
+<tr class="memdesc:a9c5587ab76ca1aa98bae7fe69a459466"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f() in a new thread. <br/></td></tr>
+<tr class="separator:a9c5587ab76ca1aa98bae7fe69a459466"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a672a5367e687635c869926bf8a986296"><td class="memTemplParams" colspan="2"><a class="anchor" id="a672a5367e687635c869926bf8a986296"></a>
+template<class F , class X > </td></tr>
+<tr class="memitem:a672a5367e687635c869926bf8a986296"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00164.html#a672a5367e687635c869926bf8a986296">tbb_thread_v3</a> (F f, X x)</td></tr>
+<tr class="memdesc:a672a5367e687635c869926bf8a986296"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x) in a new thread. <br/></td></tr>
+<tr class="separator:a672a5367e687635c869926bf8a986296"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac3f57678f2a289084a6d275f8f8fbc62"></a>
+template<class F , class X , class Y > </td></tr>
+<tr class="memitem:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00164.html#ac3f57678f2a289084a6d275f8f8fbc62">tbb_thread_v3</a> (F f, X x, Y y)</td></tr>
+<tr class="memdesc:ac3f57678f2a289084a6d275f8f8fbc62"><td class="mdescLeft"> </td><td class="mdescRight">Constructs an object and executes f(x,y) in a new thread. <br/></td></tr>
+<tr class="separator:ac3f57678f2a289084a6d275f8f8fbc62"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa4f68564c30ee6f59bab29c3b3216623"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4f68564c30ee6f59bab29c3b3216623"></a>
+<a class="el" href="a00164.html">tbb_thread_v3</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00164.html">tbb_thread_v3</a> &x)</td></tr>
+<tr class="separator:aa4f68564c30ee6f59bab29c3b3216623"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab2e10af48f3f2482e9e7236f2e05714c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2e10af48f3f2482e9e7236f2e05714c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00164.html">tbb_thread_v3</a> &t) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:ab2e10af48f3f2482e9e7236f2e05714c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4ddee0e2030f8fa947fd93f403178104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ddee0e2030f8fa947fd93f403178104"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>joinable</b> () const __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a4ddee0e2030f8fa947fd93f403178104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a044c8727c51e921b0cc43a6b057eb559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a044c8727c51e921b0cc43a6b057eb559"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00164.html#a044c8727c51e921b0cc43a6b057eb559">join</a> ()</td></tr>
+<tr class="memdesc:a044c8727c51e921b0cc43a6b057eb559"><td class="mdescLeft"> </td><td class="mdescRight">The completion of the thread represented by *this happens before <a class="el" href="a00164.html#a044c8727c51e921b0cc43a6b057eb559" title="The completion of the thread represented by *this happens before join() returns. ">join()</a> returns. <br/></td></tr>
+<tr class="separator:a044c8727c51e921b0cc43a6b057eb559"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a80a31a41708872af5557b907f129b19b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80a31a41708872af5557b907f129b19b"></a>
+void __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00164.html#a80a31a41708872af5557b907f129b19b">detach</a> ()</td></tr>
+<tr class="memdesc:a80a31a41708872af5557b907f129b19b"><td class="mdescLeft"> </td><td class="mdescRight">When <a class="el" href="a00164.html#a80a31a41708872af5557b907f129b19b" title="When detach() returns, *this no longer represents the possibly continuing thread of execution...">detach()</a> returns, *this no longer represents the possibly continuing thread of execution. <br/></td></tr>
+<tr class="separator:a80a31a41708872af5557b907f129b19b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae98915bfeccaa90d6f13add0ee1ab33a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae98915bfeccaa90d6f13add0ee1ab33a"></a>
+<a class="el" href="a00073.html">id</a> </td><td class="memItemRight" valign="bottom"><b>get_id</b> () const __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:ae98915bfeccaa90d6f13add0ee1ab33a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a98e89e22e11fb6cab05f0f7839c79310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98e89e22e11fb6cab05f0f7839c79310"></a>
+native_handle_type </td><td class="memItemRight" valign="bottom"><b>native_handle</b> ()</td></tr>
+<tr class="separator:a98e89e22e11fb6cab05f0f7839c79310"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a23d7a420709b2e2b29b42dea897bd8bc"><td class="memItemLeft" align="right" valign="top">static unsigned __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00164.html#a23d7a420709b2e2b29b42dea897bd8bc">hardware_concurrency</a> () __TBB_NOEXCEPT(true)</td></tr>
+<tr class="memdesc:a23d7a420709b2e2b29b42dea897bd8bc"><td class="mdescLeft"> </td><td class="mdescRight">The number of hardware thread contexts.  <a href="#a23d7a420709b2e2b29b42dea897bd8bc">More...</a><br/></td></tr>
+<tr class="separator:a23d7a420709b2e2b29b42dea897bd8bc"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a7646cb0b0cc070a6dd962afbaaec3ec8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7646cb0b0cc070a6dd962afbaaec3ec8"></a>
+<a class="el" href="a00164.html">tbb_thread_v3</a>(<a class="el" href="a00164.html">tbb_thread_v3</a> <br class="typebreak"/>
+&&x) __TBB_NOEXCEPT(true) <br class="typebreak"/>
+<a class="el" href="a00164.html">tbb_thread_v3</a> & </td><td class="memItemRight" valign="bottom"><b>operator=</b> (<a class="el" href="a00164.html">tbb_thread_v3</a> &&x) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a7646cb0b0cc070a6dd962afbaaec3ec8"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a9b8a2643aa337c0ec7f68cc2797a10ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9b8a2643aa337c0ec7f68cc2797a10ba"></a>
+void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><b>move_v3</b> (<a class="el" href="a00164.html">tbb_thread_v3</a> &t1, <a class="el" href="a00164.html">tbb_thread_v3</a> &t2)</td></tr>
+<tr class="separator:a9b8a2643aa337c0ec7f68cc2797a10ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a190e47ee761e8647e79cdd3cccff618c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a190e47ee761e8647e79cdd3cccff618c"></a>
+void </td><td class="memItemRight" valign="bottom"><b>tbb::swap</b> (<a class="el" href="a00164.html">tbb_thread_v3</a> &t1, <a class="el" href="a00164.html">tbb_thread_v3</a> &t2) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a190e47ee761e8647e79cdd3cccff618c"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Versioned thread class. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a23d7a420709b2e2b29b42dea897bd8bc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">static unsigned __TBB_EXPORTED_FUNC tbb::internal::tbb_thread_v3::hardware_concurrency </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The number of hardware thread contexts. </p>
+<p>Before TBB 3.0 U4 this methods returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.</p>
+<p>NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_thread.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00165.html b/doc/html/a00165.html
new file mode 100644
index 0000000..687461d
--- /dev/null
+++ b/doc/html/a00165.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::thread_bound_filter Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00165.html">thread_bound_filter</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="a00290.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::thread_bound_filter Class Reference<div class="ingroups"><a class="el" href="a00255.html">Algorithms</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A stage in a pipeline served by a user thread.  
+ <a href="a00165.html#details">More...</a></p>
+
+<p><code>#include <pipeline.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::thread_bound_filter:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00165.png" usemap="#tbb::thread_bound_filter_map" alt=""/>
+  <map id="tbb::thread_bound_filter_map" name="tbb::thread_bound_filter_map">
+<area href="a00062.html" title="A stage in a pipeline. " alt="tbb::filter" shape="rect" coords="0,56,145,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a2425d6944a22a57c906945df57290e9d"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>result_type</b> { <b>success</b>, 
+<b>item_not_available</b>, 
+<b>end_of_stream</b>
+ }</td></tr>
+<tr class="separator:a2425d6944a22a57c906945df57290e9d"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a12cfa43c620066a8783529cc8519c6f9"><td class="memItemLeft" align="right" valign="top">result_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00165.html#a12cfa43c620066a8783529cc8519c6f9">try_process_item</a> ()</td></tr>
+<tr class="memdesc:a12cfa43c620066a8783529cc8519c6f9"><td class="mdescLeft"> </td><td class="mdescRight">If a data item is available, invoke operator() on that item.  <a href="#a12cfa43c620066a8783529cc8519c6f9">More...</a><br/></td></tr>
+<tr class="separator:a12cfa43c620066a8783529cc8519c6f9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac99258407f382d84568a510075074fc7"><td class="memItemLeft" align="right" valign="top">result_type __TBB_EXPORTED_METHOD </td><td class="memItemRight" valign="bottom"><a class="el" href="a00165.html#ac99258407f382d84568a510075074fc7">process_item</a> ()</td></tr>
+<tr class="memdesc:ac99258407f382d84568a510075074fc7"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a data item becomes available, and invoke operator() on that item.  <a href="#ac99258407f382d84568a510075074fc7">More...</a><br/></td></tr>
+<tr class="separator:ac99258407f382d84568a510075074fc7"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a5f236956f85f28c783127c949e902610"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f236956f85f28c783127c949e902610"></a>
+ </td><td class="memItemRight" valign="bottom"><b>thread_bound_filter</b> (mode filter_mode)</td></tr>
+<tr class="separator:a5f236956f85f28c783127c949e902610"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_static_attribs_a00062"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_a00062')"><img src="closed.png" alt="-"/> Static Protected Attributes inherited from <a class="el" href="a00062.html">tbb::filter</a></td></tr>
+<tr class="memitem:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00062"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9dab2e01b0963b341ab04b59eec1475"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a> = 0x1</td></tr>
+<tr class="memdesc:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00062"><td class="mdescLeft"> </td><td class="mdescRight">The lowest bit 0 is for parallel vs. serial. <br/></td></tr>
+<tr class="separator:ae9dab2e01b0963b341ab04b59eec1475 inherit pro_static_attribs_a00062"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00062"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a> = 0x1<<4</td></tr>
+<tr class="memdesc:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00062"><td class="mdescLeft"> </td><td class="mdescRight">4th bit distinguishes ordered vs unordered filters.  <a href="#a091fcf6abc79edfa5c8bf01f742e2392">More...</a><br/></td></tr>
+<tr class="separator:a091fcf6abc79edfa5c8bf01f742e2392 inherit pro_static_attribs_a00062"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00062"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1382f216bd094064a18eb48ecc43c86b"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a> = 0x1<<5</td></tr>
+<tr class="memdesc:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00062"><td class="mdescLeft"> </td><td class="mdescRight">5th bit distinguishes thread-bound and regular filters. <br/></td></tr>
+<tr class="separator:a1382f216bd094064a18eb48ecc43c86b inherit pro_static_attribs_a00062"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00062"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6645ec56872b6ba2056dcaa467e292f7"></a>
+static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a> = 0x1<<6</td></tr>
+<tr class="memdesc:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00062"><td class="mdescLeft"> </td><td class="mdescRight">6th bit marks input filters emitting small objects <br/></td></tr>
+<tr class="separator:a6645ec56872b6ba2056dcaa467e292f7 inherit pro_static_attribs_a00062"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00062"><td class="memItemLeft" align="right" valign="top">static const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td></tr>
+<tr class="memdesc:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00062"><td class="mdescLeft"> </td><td class="mdescRight">7th bit defines exception propagation mode expected by the application.  <a href="#aab9689e23a96c6c9bf1c8caae74d92ee">More...</a><br/></td></tr>
+<tr class="separator:aab9689e23a96c6c9bf1c8caae74d92ee inherit pro_static_attribs_a00062"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A stage in a pipeline served by a user thread. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ac99258407f382d84568a510075074fc7"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::process_item </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Wait until a data item becomes available, and invoke operator() on that item. </p>
+<p>This interface is blocking. Returns 'success' if an item was processed. Returns 'end_of_stream' if there are no more items to process. Never returns 'item_not_available', as it blocks until another return condition applies. </p>
+
+</div>
+</div>
+<a class="anchor" id="a12cfa43c620066a8783529cc8519c6f9"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::try_process_item </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>If a data item is available, invoke operator() on that item. </p>
+<p>This interface is non-blocking. Returns 'success' if an item was processed. Returns 'item_not_available' if no item can be processed now but more may arrive in the future, or if token limit is reached. Returns 'end_of_stream' if there are no more items to process. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>pipeline.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00150.png b/doc/html/a00165.png
similarity index 100%
copy from doc/html/a00150.png
copy to doc/html/a00165.png
diff --git a/doc/html/a00166.html b/doc/html/a00166.html
new file mode 100644
index 0000000..0678f9c
--- /dev/null
+++ b/doc/html/a00166.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::thread_closure_0< F > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00166.html">thread_closure_0</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00416.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_0< F > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::internal::thread_closure_0< F >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00166.png" usemap="#tbb::internal::thread_closure_0< F >_map" alt=""/>
+  <map id="tbb::internal::thread_closure_0< F >_map" name="tbb::internal::thread_closure_0< F >_map">
+<area href="a00169.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,214,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a538aa9db5b40cf64cdafc0af0649a7f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a538aa9db5b40cf64cdafc0af0649a7f2"></a>
+ </td><td class="memItemRight" valign="bottom"><b>thread_closure_0</b> (const F &f)</td></tr>
+<tr class="separator:a538aa9db5b40cf64cdafc0af0649a7f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00169"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00169')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td></tr>
+<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
+<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
+<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a4b9e7370103f473212ccb10e65d676fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b9e7370103f473212ccb10e65d676fb"></a>
+static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><b>start_routine</b> (void *c)</td></tr>
+<tr class="separator:a4b9e7370103f473212ccb10e65d676fb"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:aff55f3266cccfbb2d296aa9b07239ce8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff55f3266cccfbb2d296aa9b07239ce8"></a>
+F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
+<tr class="separator:aff55f3266cccfbb2d296aa9b07239ce8"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_thread.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00151.png b/doc/html/a00166.png
similarity index 100%
copy from doc/html/a00151.png
copy to doc/html/a00166.png
diff --git a/doc/html/a00167.html b/doc/html/a00167.html
new file mode 100644
index 0000000..d8272be
--- /dev/null
+++ b/doc/html/a00167.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::thread_closure_1< F, X > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00167.html">thread_closure_1</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00417.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_1< F, X > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Structure used to pass user function with 1 argument to thread.  
+ <a href="a00167.html#details">More...</a></p>
+
+<p><code>#include <tbb_thread.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::internal::thread_closure_1< F, X >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00167.png" usemap="#tbb::internal::thread_closure_1< F, X >_map" alt=""/>
+  <map id="tbb::internal::thread_closure_1< F, X >_map" name="tbb::internal::thread_closure_1< F, X >_map">
+<area href="a00169.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,232,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:afef38584bcf65f3f71700cfec80b8b18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afef38584bcf65f3f71700cfec80b8b18"></a>
+ </td><td class="memItemRight" valign="bottom"><b>thread_closure_1</b> (const F &f, const X &x)</td></tr>
+<tr class="separator:afef38584bcf65f3f71700cfec80b8b18"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00169"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00169')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td></tr>
+<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
+<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
+<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a33d533b3301c45708c6252d040f855a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33d533b3301c45708c6252d040f855a6"></a>
+static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00167.html#a33d533b3301c45708c6252d040f855a6">start_routine</a> (void *c)</td></tr>
+<tr class="memdesc:a33d533b3301c45708c6252d040f855a6"><td class="mdescLeft"> </td><td class="mdescRight">Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll. <br/></td></tr>
+<tr class="separator:a33d533b3301c45708c6252d040f855a6"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a39a5a39b2a7513868944ffe7ffd89640"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39a5a39b2a7513868944ffe7ffd89640"></a>
+F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
+<tr class="separator:a39a5a39b2a7513868944ffe7ffd89640"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a607886c68ca8bdd984b9b4f6ec744dea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a607886c68ca8bdd984b9b4f6ec744dea"></a>
+X </td><td class="memItemRight" valign="bottom"><b>arg1</b></td></tr>
+<tr class="separator:a607886c68ca8bdd984b9b4f6ec744dea"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<class F, class X><br/>
+struct tbb::internal::thread_closure_1< F, X ></h3>
+
+<p>Structure used to pass user function with 1 argument to thread. </p>
+</div><hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_thread.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00152.png b/doc/html/a00167.png
similarity index 100%
copy from doc/html/a00152.png
copy to doc/html/a00167.png
diff --git a/doc/html/a00168.html b/doc/html/a00168.html
new file mode 100644
index 0000000..51080a1
--- /dev/null
+++ b/doc/html/a00168.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00168.html">thread_closure_2</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#pub-attribs">Public Attributes</a> |
+<a href="a00418.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::internal::thread_closure_2< F, X, Y >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00168.png" usemap="#tbb::internal::thread_closure_2< F, X, Y >_map" alt=""/>
+  <map id="tbb::internal::thread_closure_2< F, X, Y >_map" name="tbb::internal::thread_closure_2< F, X, Y >_map">
+<area href="a00169.html" alt="tbb::internal::thread_closure_base" shape="rect" coords="0,0,250,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aa5f65ba1d019063487f425021ca2ba59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5f65ba1d019063487f425021ca2ba59"></a>
+ </td><td class="memItemRight" valign="bottom"><b>thread_closure_2</b> (const F &f, const X &x, const Y &y)</td></tr>
+<tr class="separator:aa5f65ba1d019063487f425021ca2ba59"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00169"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00169')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td></tr>
+<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
+<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5 inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
+<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d inherit pub_methods_a00169"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a29003179f98d768622c72b9ab5cfe8f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29003179f98d768622c72b9ab5cfe8f6"></a>
+static __TBB_NATIVE_THREAD_ROUTINE </td><td class="memItemRight" valign="bottom"><a class="el" href="a00168.html#a29003179f98d768622c72b9ab5cfe8f6">start_routine</a> (void *c)</td></tr>
+<tr class="memdesc:a29003179f98d768622c72b9ab5cfe8f6"><td class="mdescLeft"> </td><td class="mdescRight">Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll. <br/></td></tr>
+<tr class="separator:a29003179f98d768622c72b9ab5cfe8f6"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a247bf0a01f8a390031b71c9b85fb8b24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a247bf0a01f8a390031b71c9b85fb8b24"></a>
+F </td><td class="memItemRight" valign="bottom"><b>function</b></td></tr>
+<tr class="separator:a247bf0a01f8a390031b71c9b85fb8b24"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a36f694b6dcc91c92b09d3deee24e4732"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36f694b6dcc91c92b09d3deee24e4732"></a>
+X </td><td class="memItemRight" valign="bottom"><b>arg1</b></td></tr>
+<tr class="separator:a36f694b6dcc91c92b09d3deee24e4732"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a47f0e53fc6b9026d9529a3bf1cc4fa72"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f0e53fc6b9026d9529a3bf1cc4fa72"></a>
+Y </td><td class="memItemRight" valign="bottom"><b>arg2</b></td></tr>
+<tr class="separator:a47f0e53fc6b9026d9529a3bf1cc4fa72"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_thread.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00153.png b/doc/html/a00168.png
similarity index 100%
rename from doc/html/a00153.png
rename to doc/html/a00168.png
diff --git a/doc/html/a00169.html b/doc/html/a00169.html
new file mode 100644
index 0000000..3c15612
--- /dev/null
+++ b/doc/html/a00169.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::internal::thread_closure_base Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00169.html">thread_closure_base</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00415.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_base Struct Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::internal::thread_closure_base:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00169.png" usemap="#tbb::internal::thread_closure_base_map" alt=""/>
+  <map id="tbb::internal::thread_closure_base_map" name="tbb::internal::thread_closure_base_map">
+<area href="a00166.html" alt="tbb::internal::thread_closure_0< F >" shape="rect" coords="0,56,250,80"/>
+<area href="a00167.html" title="Structure used to pass user function with 1 argument to thread. " alt="tbb::internal::thread_closure_1< F, X >" shape="rect" coords="260,56,510,80"/>
+<area href="a00168.html" alt="tbb::internal::thread_closure_2< F, X, Y >" shape="rect" coords="520,56,770,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a624f5a5a40051faf39444ad3a9f36df5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a624f5a5a40051faf39444ad3a9f36df5"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>operator new</b> (size_t size)</td></tr>
+<tr class="separator:a624f5a5a40051faf39444ad3a9f36df5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a56e1bfd2ca46abcc3c3f265eff10360d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56e1bfd2ca46abcc3c3f265eff10360d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *ptr)</td></tr>
+<tr class="separator:a56e1bfd2ca46abcc3c3f265eff10360d"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>tbb_thread.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00154.png b/doc/html/a00169.png
similarity index 100%
copy from doc/html/a00154.png
copy to doc/html/a00169.png
diff --git a/doc/html/a00170.html b/doc/html/a00170.html
new file mode 100644
index 0000000..b41d500
--- /dev/null
+++ b/doc/html/a00170.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::tick_count Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00170.html">tick_count</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pub-static-methods">Static Public Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00326.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::tick_count Class Reference<div class="ingroups"><a class="el" href="a00259.html">Timing</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Absolute timestamp.  
+ <a href="a00170.html#details">More...</a></p>
+
+<p><code>#include <tick_count.h></code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html">interval_t</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Relative time interval.  <a href="a00085.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f1daa0b7a4feb800f802b4be1f1e497"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html#a9f1daa0b7a4feb800f802b4be1f1e497">tick_count</a> ()</td></tr>
+<tr class="memdesc:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="mdescLeft"> </td><td class="mdescRight">Construct an absolute timestamp initialized to zero. <br/></td></tr>
+<tr class="separator:a9f1daa0b7a4feb800f802b4be1f1e497"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74dcecde7431ff4591d7c46fc1d50d7e"></a>
+static <a class="el" href="a00170.html">tick_count</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html#a74dcecde7431ff4591d7c46fc1d50d7e">now</a> ()</td></tr>
+<tr class="memdesc:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="mdescLeft"> </td><td class="mdescRight">Return current time. <br/></td></tr>
+<tr class="separator:a74dcecde7431ff4591d7c46fc1d50d7e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf6a0d91e7d40f7d68e0ad6b79350e58"></a>
+static double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">resolution</a> ()</td></tr>
+<tr class="memdesc:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="mdescLeft"> </td><td class="mdescRight">Return the resolution of the clock in seconds per tick. <br/></td></tr>
+<tr class="separator:aaf6a0d91e7d40f7d68e0ad6b79350e58"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ceaed3ebf5a0d41088a5bc7c8dc653"></a>
+<a class="el" href="a00085.html">interval_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a> (const <a class="el" href="a00170.html">tick_count</a> &t1, const <a class="el" href="a00170.html">tick_count</a> &t0)</td></tr>
+<tr class="memdesc:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="mdescLeft"> </td><td class="mdescRight">Subtract two timestamps to get the time interval between. <br/></td></tr>
+<tr class="separator:ab5ceaed3ebf5a0d41088a5bc7c8dc653"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Absolute timestamp. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tick_count.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00171.html b/doc/html/a00171.html
new file mode 100644
index 0000000..f659998
--- /dev/null
+++ b/doc/html/a00171.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::interface5::internal::use_element_copy_constructor< T, C > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00171.html">use_element_copy_constructor</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="a00386.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::interface5::internal::use_element_copy_constructor< T, C > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a25d9b19a018725ea8696ac4124a1780b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25d9b19a018725ea8696ac4124a1780b"></a>
+typedef tbb::internal::true_type </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+<tr class="separator:a25d9b19a018725ea8696ac4124a1780b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a25d9b19a018725ea8696ac4124a1780b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25d9b19a018725ea8696ac4124a1780b"></a>
+typedef tbb::internal::true_type </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+<tr class="separator:a25d9b19a018725ea8696ac4124a1780b"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_priority_queue.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00172.html b/doc/html/a00172.html
new file mode 100644
index 0000000..2dc6f10
--- /dev/null
+++ b/doc/html/a00172.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::interface5::internal::use_element_copy_constructor< T, false > Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00172.html">use_element_copy_constructor< T, false ></a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="a00387.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::interface5::internal::use_element_copy_constructor< T, false > Struct Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a9e9ba0ae863e93a1e02e6a98d5ad4865"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e9ba0ae863e93a1e02e6a98d5ad4865"></a>
+typedef tbb::internal::false_type </td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>
+<tr class="separator:a9e9ba0ae863e93a1e02e6a98d5ad4865"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li>concurrent_priority_queue.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00173.html b/doc/html/a00173.html
new file mode 100644
index 0000000..8b487c6
--- /dev/null
+++ b/doc/html/a00173.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::user_abort Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00173.html">user_abort</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00320.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::user_abort Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Exception for user-initiated abort.  
+ <a href="a00173.html#details">More...</a></p>
+
+<p><code>#include <tbb_exception.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::user_abort:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00173.png" usemap="#tbb::user_abort_map" alt=""/>
+  <map id="tbb::user_abort_map" name="tbb::user_abort_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8e27e7ca7fd8f821c4e5c40266ed16f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e27e7ca7fd8f821c4e5c40266ed16f9"></a>
+const char * </td><td class="memItemRight" valign="bottom"><b>what</b> () const   throw ()</td></tr>
+<tr class="separator:a8e27e7ca7fd8f821c4e5c40266ed16f9"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Exception for user-initiated abort. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_exception.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00156.png b/doc/html/a00173.png
similarity index 100%
copy from doc/html/a00156.png
copy to doc/html/a00173.png
diff --git a/doc/html/a00174.html b/doc/html/a00174.html
new file mode 100644
index 0000000..512a3f0
--- /dev/null
+++ b/doc/html/a00174.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00048.html">concurrent_unordered_map_traits</a></li><li class="navelem"><a class="el" href="a00174.html">value_compare</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-attribs">Protected Attributes</a> |
+<a href="#friends">Friends</a> |
+<a href="a00377.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00174.png" usemap="#tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map" alt=""/>
+  <map id="tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map" name="tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab45af27d6a7ce27dfdd5cd86b9e242a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab45af27d6a7ce27dfdd5cd86b9e242a4"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>operator()</b> (const value_type &left, const value_type &right) const </td></tr>
+<tr class="separator:ab45af27d6a7ce27dfdd5cd86b9e242a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a950d35402dcfda797180cfa504e62696"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a950d35402dcfda797180cfa504e62696"></a>
+ </td><td class="memItemRight" valign="bottom"><b>value_compare</b> (const hash_compare &comparator)</td></tr>
+<tr class="separator:a950d35402dcfda797180cfa504e62696"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a9f3947368607fd396df7f112f79abc1f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f3947368607fd396df7f112f79abc1f"></a>
+hash_compare </td><td class="memItemRight" valign="bottom"><b>my_hash_compare</b></td></tr>
+<tr class="separator:a9f3947368607fd396df7f112f79abc1f"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:af8b0853dc699e83103d36df2c881aa67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8b0853dc699e83103d36df2c881aa67"></a>
+class </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></b></td></tr>
+<tr class="separator:af8b0853dc699e83103d36df2c881aa67"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_unordered_map.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00157.png b/doc/html/a00174.png
similarity index 100%
copy from doc/html/a00157.png
copy to doc/html/a00174.png
diff --git a/doc/html/a00175.html b/doc/html/a00175.html
new file mode 100644
index 0000000..01cef5d
--- /dev/null
+++ b/doc/html/a00175.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::vector_iterator< Container, Value > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00175.html">vector_iterator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::vector_iterator< Container, Value > Class Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>concurrent_vector.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00176.html b/doc/html/a00176.html
new file mode 100644
index 0000000..fc1ab01
--- /dev/null
+++ b/doc/html/a00176.html
@@ -0,0 +1,325 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::flow::interface7::write_once_node< T > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00176.html">write_once_node</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="#pro-methods">Protected Member Functions</a> |
+<a href="#friends">Friends</a> |
+<a href="a00341.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::flow::interface7::write_once_node< T > Class Template Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for tbb::flow::interface7::write_once_node< T >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00176.png" usemap="#tbb::flow::interface7::write_once_node< T >_map" alt=""/>
+  <map id="tbb::flow::interface7::write_once_node< T >_map" name="tbb::flow::interface7::write_once_node< T >_map">
+<area href="a00104.html" alt="tbb::flow::interface7::overwrite_node< T >" shape="rect" coords="265,112,520,136"/>
+<area href="a00072.html" title="The base of all graph nodes. " alt="tbb::flow::interface7::graph_node" shape="rect" coords="0,56,255,80"/>
+<area href="a00124.html" title="Pure virtual template class that defines a receiver of messages of type T. " alt="tbb::flow::interface7::receiver< T >" shape="rect" coords="265,56,520,80"/>
+<area href="a00142.html" title="Pure virtual template class that defines a sender of messages of type T. " alt="tbb::flow::interface7::sender< T >" shape="rect" coords="530,56,785,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ab3b6999f46ff4e7c73613eca7139a308"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab3b6999f46ff4e7c73613eca7139a308"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:ab3b6999f46ff4e7c73613eca7139a308"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac1228d1cd407e65842465e44ff1a5744"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1228d1cd407e65842465e44ff1a5744"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:ac1228d1cd407e65842465e44ff1a5744"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab22f169f2471c7ed2fdf55b82f48f9de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab22f169f2471c7ed2fdf55b82f48f9de"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:ab22f169f2471c7ed2fdf55b82f48f9de"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4b2f464c97cfdacbfc0ed7caeb426537"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b2f464c97cfdacbfc0ed7caeb426537"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a4b2f464c97cfdacbfc0ed7caeb426537"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00104"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00104')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
+<tr class="memitem:a0a8edb9abd1842cb9a1f00574a85c5c3 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a8edb9abd1842cb9a1f00574a85c5c3"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>input_type</b></td></tr>
+<tr class="separator:a0a8edb9abd1842cb9a1f00574a85c5c3 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acaa2a72c0275a503c72c59b7b1b107a7 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acaa2a72c0275a503c72c59b7b1b107a7"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><b>output_type</b></td></tr>
+<tr class="separator:acaa2a72c0275a503c72c59b7b1b107a7 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae3c9152237c0355406644f8bdd423db9 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3c9152237c0355406644f8bdd423db9"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> > </td><td class="memItemRight" valign="bottom"><b>predecessor_type</b></td></tr>
+<tr class="separator:ae3c9152237c0355406644f8bdd423db9 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3840465efc064f51b88f55bf12cd8526 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3840465efc064f51b88f55bf12cd8526"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> > </td><td class="memItemRight" valign="bottom"><b>successor_type</b></td></tr>
+<tr class="separator:a3840465efc064f51b88f55bf12cd8526 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af2038834cf5718d675a5e89c798ba9b6 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2038834cf5718d675a5e89c798ba9b6"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00059.html">built_predecessors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:af2038834cf5718d675a5e89c798ba9b6 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a39c66daf12b89510476a440941ec338b inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39c66daf12b89510476a440941ec338b"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> </td><td class="memItemRight" valign="bottom"><b>built_successors_type</b></td></tr>
+<tr class="separator:a39c66daf12b89510476a440941ec338b inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0418696834321ec04abcee449d860ed7 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0418696834321ec04abcee449d860ed7"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> ><br class="typebreak"/>
+::predecessor_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a0418696834321ec04abcee449d860ed7 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2c89dfa3dc30f0ac869926f714c80d42 inherit pub_types_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c89dfa3dc30f0ac869926f714c80d42"></a>
+typedef <a class="el" href="a00142.html">sender</a>< <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> ><br class="typebreak"/>
+::successor_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:a2c89dfa3dc30f0ac869926f714c80d42 inherit pub_types_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00124')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16eccc851b858604344bb8f1bb9eedc8"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a></td></tr>
+<tr class="memdesc:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The input type of this receiver. <br/></td></tr>
+<tr class="separator:a16eccc851b858604344bb8f1bb9eedc8 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbadf5511bd568d283040cd88bd4e81e"></a>
+typedef <a class="el" href="a00142.html">sender</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a></td></tr>
+<tr class="memdesc:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="mdescLeft"> </td><td class="mdescRight">The predecessor type for this node. <br/></td></tr>
+<tr class="separator:afbadf5511bd568d283040cd88bd4e81e inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00d44512fd61d416e6f615e88063d038"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>built_predecessors_type</b></td></tr>
+<tr class="separator:a00d44512fd61d416e6f615e88063d038 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cc119d6dff16073fc5f0d4855a9e4b7"></a>
+typedef <br class="typebreak"/>
+built_predecessors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>predecessor_list_type</b></td></tr>
+<tr class="separator:a2cc119d6dff16073fc5f0d4855a9e4b7 inherit pub_types_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_types_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_types_a00142')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add86fddf72758d8e5b05b07650c6eeed"></a>
+typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a></td></tr>
+<tr class="memdesc:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The output type of this sender. <br/></td></tr>
+<tr class="separator:add86fddf72758d8e5b05b07650c6eeed inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7779627063a29d4d2a1fc905a5cae8db"></a>
+typedef <a class="el" href="a00124.html">receiver</a>< T > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a></td></tr>
+<tr class="memdesc:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">The successor type for this node. <br/></td></tr>
+<tr class="separator:a7779627063a29d4d2a1fc905a5cae8db inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aba8b2c5950f113a88f43a97c2207f5"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a></td></tr>
+<tr class="memdesc:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="mdescLeft"> </td><td class="mdescRight">interface to record edges for traversal & deletion <br/></td></tr>
+<tr class="separator:a8aba8b2c5950f113a88f43a97c2207f5 inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6c01f7a39a61f6a25f1129e53047b2b"></a>
+typedef <br class="typebreak"/>
+built_successors_type::edge_list_type </td><td class="memItemRight" valign="bottom"><b>successor_list_type</b></td></tr>
+<tr class="separator:ae6c01f7a39a61f6a25f1129e53047b2b inherit pub_types_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8225d7ca0ff9762552413cfb1382d78f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8225d7ca0ff9762552413cfb1382d78f"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#a8225d7ca0ff9762552413cfb1382d78f">write_once_node</a> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="memdesc:a8225d7ca0ff9762552413cfb1382d78f"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <br/></td></tr>
+<tr class="separator:a8225d7ca0ff9762552413cfb1382d78f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a68b94bb09b608522462080fe99125e07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68b94bb09b608522462080fe99125e07"></a>
+ </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#a68b94bb09b608522462080fe99125e07">write_once_node</a> (const <a class="el" href="a00176.html">write_once_node</a> &src)</td></tr>
+<tr class="memdesc:a68b94bb09b608522462080fe99125e07"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor: call base class copy constructor. <br/></td></tr>
+<tr class="separator:a68b94bb09b608522462080fe99125e07"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afad8a544e45d1cb510c1e532e6bf3578"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afad8a544e45d1cb510c1e532e6bf3578"></a>
+void </td><td class="memItemRight" valign="bottom"><b>set_name</b> (const char *name)</td></tr>
+<tr class="separator:afad8a544e45d1cb510c1e532e6bf3578"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00104"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00104')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
+<tr class="memitem:a8e0fdb38848772d2e8f93f55e062d148 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e0fdb38848772d2e8f93f55e062d148"></a>
+ </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a8e0fdb38848772d2e8f93f55e062d148 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2605cf9efc94c3cba2c59cb5c59e8f19 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2605cf9efc94c3cba2c59cb5c59e8f19"></a>
+ </td><td class="memItemRight" valign="bottom"><b>overwrite_node</b> (const <a class="el" href="a00104.html">overwrite_node</a> &src)</td></tr>
+<tr class="separator:a2605cf9efc94c3cba2c59cb5c59e8f19 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed811ce5f59a555396c7bcd56316b4da"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="memdesc:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00104"><td class="mdescLeft"> </td><td class="mdescRight">Add a new successor to this node. <br/></td></tr>
+<tr class="separator:aed811ce5f59a555396c7bcd56316b4da inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5ff89d56e2e3c3848d84a09c88b1d52"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="memdesc:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00104"><td class="mdescLeft"> </td><td class="mdescRight">Removes a successor from this node. <br/></td></tr>
+<tr class="separator:ab5ff89d56e2e3c3848d84a09c88b1d52 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:addc54b82dc4d29e97d08cdefb9450925 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addc54b82dc4d29e97d08cdefb9450925"></a>
+<a class="el" href="a00059.html">built_predecessors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_predecessors</b> ()</td></tr>
+<tr class="separator:addc54b82dc4d29e97d08cdefb9450925 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8dbd8828713f56fa055b9e29e3039b3f inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8dbd8828713f56fa055b9e29e3039b3f"></a>
+<a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> & </td><td class="memItemRight" valign="bottom"><b>built_successors</b> ()</td></tr>
+<tr class="separator:a8dbd8828713f56fa055b9e29e3039b3f inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad5a38fedbe469b39d142b045afe85e91 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5a38fedbe469b39d142b045afe85e91"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="separator:ad5a38fedbe469b39d142b045afe85e91 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af44826566f279170bba1d9d9bbcfc8f3 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af44826566f279170bba1d9d9bbcfc8f3"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_successor</b> (<a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> &s)</td></tr>
+<tr class="separator:af44826566f279170bba1d9d9bbcfc8f3 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:adbf5f11e221cc7cd547cf01a0806514a inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbf5f11e221cc7cd547cf01a0806514a"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>successor_count</b> ()</td></tr>
+<tr class="separator:adbf5f11e221cc7cd547cf01a0806514a inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcac4e4c70d42a3a1709dc068c448540 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcac4e4c70d42a3a1709dc068c448540"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_successors</b> (successor_list_type &v)</td></tr>
+<tr class="separator:afcac4e4c70d42a3a1709dc068c448540 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a631ef156f3443dfcf811c2fb0efec1eb inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a631ef156f3443dfcf811c2fb0efec1eb"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_add_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a631ef156f3443dfcf811c2fb0efec1eb inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7923c0aebb36198316da10587b367d77 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7923c0aebb36198316da10587b367d77"></a>
+void </td><td class="memItemRight" valign="bottom"><b>internal_delete_built_predecessor</b> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &p)</td></tr>
+<tr class="separator:a7923c0aebb36198316da10587b367d77 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1459dabd54dc411e4f39a10f9a590a0b inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1459dabd54dc411e4f39a10f9a590a0b"></a>
+size_t </td><td class="memItemRight" valign="bottom"><b>predecessor_count</b> ()</td></tr>
+<tr class="separator:a1459dabd54dc411e4f39a10f9a590a0b inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a69f8b5478bf681d575c825fdeeb05f53 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69f8b5478bf681d575c825fdeeb05f53"></a>
+void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &v)</td></tr>
+<tr class="separator:a69f8b5478bf681d575c825fdeeb05f53 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a9e835759164978cd1d3b15c11248da67 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e835759164978cd1d3b15c11248da67"></a>
+void </td><td class="memItemRight" valign="bottom"><b>extract</b> ()</td></tr>
+<tr class="separator:a9e835759164978cd1d3b15c11248da67 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa655eef6671b35f99dfbddd0f3cf2309 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa655eef6671b35f99dfbddd0f3cf2309"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">try_get</a> (<a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> &v)</td></tr>
+<tr class="memdesc:aa655eef6671b35f99dfbddd0f3cf2309 inherit pub_methods_a00104"><td class="mdescLeft"> </td><td class="mdescRight">Request an item from the sender. <br/></td></tr>
+<tr class="separator:aa655eef6671b35f99dfbddd0f3cf2309 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3bf01d9c754667474fdb47e47df470a9 inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bf01d9c754667474fdb47e47df470a9"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_valid</b> ()</td></tr>
+<tr class="separator:a3bf01d9c754667474fdb47e47df470a9 inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4d950320406a8c819882ea50d918678a inherit pub_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d950320406a8c819882ea50d918678a"></a>
+void </td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
+<tr class="separator:a4d950320406a8c819882ea50d918678a inherit pub_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00072')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4badd313105e30f539882276353dcb8e"></a>
+ </td><td class="memItemRight" valign="bottom"><b>graph_node</b> (<a class="el" href="a00070.html">graph</a> &g)</td></tr>
+<tr class="separator:a4badd313105e30f539882276353dcb8e inherit pub_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00124')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a733889a9053478ef2fb2528e2205bf07"></a>
+virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a> ()</td></tr>
+<tr class="memdesc:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br/></td></tr>
+<tr class="separator:a733889a9053478ef2fb2528e2205bf07 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee5067bb4f4b71ffa786c1b33cb9aa6a"></a>
+bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a> (const T &t)</td></tr>
+<tr class="memdesc:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Put an item to the receiver. <br/></td></tr>
+<tr class="separator:aee5067bb4f4b71ffa786c1b33cb9aa6a inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16427aa709505de93ffe0d79136e4251"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Add a predecessor to the node. <br/></td></tr>
+<tr class="separator:a16427aa709505de93ffe0d79136e4251 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55adae6228bbdc1539695e1ec20e9762"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a> (<a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> &)</td></tr>
+<tr class="memdesc:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="mdescLeft"> </td><td class="mdescRight">Remove a predecessor from the node. <br/></td></tr>
+<tr class="separator:a55adae6228bbdc1539695e1ec20e9762 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63273d246d9dd8d259f9cc1eead42eb2"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>copy_predecessors</b> (predecessor_list_type &)=0</td></tr>
+<tr class="separator:a63273d246d9dd8d259f9cc1eead42eb2 inherit pub_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pub_methods_a00142"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_a00142')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memitem:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1b9dcf77ab558530ff93a706b4c4b5d"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a> (T &)</td></tr>
+<tr class="memdesc:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Reserves an item in the sender. <br/></td></tr>
+<tr class="separator:aa1b9dcf77ab558530ff93a706b4c4b5d inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97ac316ddfb6bd7c7f2f56e3e819a30a"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a> ()</td></tr>
+<tr class="memdesc:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Releases the reserved item. <br/></td></tr>
+<tr class="separator:a97ac316ddfb6bd7c7f2f56e3e819a30a inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad404d5218c7ae2556261ffa880cdf804"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a> ()</td></tr>
+<tr class="memdesc:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="mdescLeft"> </td><td class="mdescRight">Consumes the reserved item. <br/></td></tr>
+<tr class="separator:ad404d5218c7ae2556261ffa880cdf804 inherit pub_methods_a00142"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a6f03bc8ba1bc382978ce230c489c93be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f03bc8ba1bc382978ce230c489c93be"></a>
+task * </td><td class="memItemRight" valign="bottom"><b>try_put_task</b> (const T &v)</td></tr>
+<tr class="separator:a6f03bc8ba1bc382978ce230c489c93be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00104"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00104')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
+<tr class="memitem:a48f960dd752b18dc2f0767619461ecb8 inherit pro_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48f960dd752b18dc2f0767619461ecb8"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags))</td></tr>
+<tr class="separator:a48f960dd752b18dc2f0767619461ecb8 inherit pro_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a13b0e23bd0b9f4a1769d2760ead04719 inherit pro_methods_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13b0e23bd0b9f4a1769d2760ead04719"></a>
+void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f))</td></tr>
+<tr class="separator:a13b0e23bd0b9f4a1769d2760ead04719 inherit pro_methods_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00072"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00072')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memitem:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25a4633873c052047b1dd568824d055"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_node</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac25a4633873c052047b1dd568824d055 inherit pro_methods_a00072"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="inherit_header pro_methods_a00124"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_a00124')"><img src="closed.png" alt="-"/> Protected Member Functions inherited from <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memitem:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac902b1e09eea9748223eb50dc38d3575"></a>
+virtual void </td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> (__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0</td></tr>
+<tr class="separator:ac902b1e09eea9748223eb50dc38d3575 inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae91eab3e06d4139ac38f143c74fe9eab"></a>
+virtual bool </td><td class="memItemRight" valign="bottom"><b>is_continue_receiver</b> ()</td></tr>
+<tr class="separator:ae91eab3e06d4139ac38f143c74fe9eab inherit pro_methods_a00124"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplParams" colspan="2"><a class="anchor" id="abaf9bf74ca5f2854d09f5f07337280eb"></a>
+template<typename R , typename B > </td></tr>
+<tr class="memitem:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
+<tr class="separator:abaf9bf74ca5f2854d09f5f07337280eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1360e38efe396058978cf3754ad620f5"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:a1360e38efe396058978cf3754ad620f5"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
+<tr class="separator:a1360e38efe396058978cf3754ad620f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplParams" colspan="2"><a class="anchor" id="acbd9ac2610587a99cd7d43344297cc49"></a>
+template<typename X , typename Y > </td></tr>
+<tr class="memitem:acbd9ac2610587a99cd7d43344297cc49"><td class="memTemplItemLeft" align="right" valign="top">class </td><td class="memTemplItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
+<tr class="separator:acbd9ac2610587a99cd7d43344297cc49"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_a00104"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_a00104')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
+<tr class="memitem:ad8d534d5d059f91b82c4aef9235aa9f6 inherit pro_attribs_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8d534d5d059f91b82c4aef9235aa9f6"></a>
+<a class="el" href="a00145.html">spin_mutex</a> </td><td class="memItemRight" valign="bottom"><b>my_mutex</b></td></tr>
+<tr class="separator:ad8d534d5d059f91b82c4aef9235aa9f6 inherit pro_attribs_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6fdd59fdffd500a1508fd7e42e6cabf8 inherit pro_attribs_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fdd59fdffd500a1508fd7e42e6cabf8"></a>
+<a class="el" href="a00027.html">internal::broadcast_cache</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a>, <a class="el" href="a00102.html">null_rw_mutex</a> > </td><td class="memItemRight" valign="bottom"><b>my_successors</b></td></tr>
+<tr class="separator:a6fdd59fdffd500a1508fd7e42e6cabf8 inherit pro_attribs_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af82a3ea91b6770c1ccd4d04dc417d088 inherit pro_attribs_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af82a3ea91b6770c1ccd4d04dc417d088"></a>
+<a class="el" href="a00059.html">internal::edge_container</a><br class="typebreak"/>
+< <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> > </td><td class="memItemRight" valign="bottom"><b>my_built_predecessors</b></td></tr>
+<tr class="separator:af82a3ea91b6770c1ccd4d04dc417d088 inherit pro_attribs_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1d6538f03750446febcdc570fa41bc23 inherit pro_attribs_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d6538f03750446febcdc570fa41bc23"></a>
+<a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> </td><td class="memItemRight" valign="bottom"><b>my_buffer</b></td></tr>
+<tr class="separator:a1d6538f03750446febcdc570fa41bc23 inherit pro_attribs_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afbf79aaedd9459ed382823d8d85d0bfc inherit pro_attribs_a00104"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afbf79aaedd9459ed382823d8d85d0bfc"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>my_buffer_is_valid</b></td></tr>
+<tr class="separator:afbf79aaedd9459ed382823d8d85d0bfc inherit pro_attribs_a00104"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="a00196.html">flow_graph.h</a></li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00159.png b/doc/html/a00176.png
similarity index 100%
rename from doc/html/a00159.png
rename to doc/html/a00176.png
diff --git a/doc/html/a00177.html b/doc/html/a00177.html
new file mode 100644
index 0000000..bc349d6
--- /dev/null
+++ b/doc/html/a00177.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::zero_allocator< T, Allocator > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00177.html">zero_allocator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="#pub-methods">Public Member Functions</a> |
+<a href="a00314.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::zero_allocator< T, Allocator > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  
+ <a href="a00177.html#details">More...</a></p>
+
+<p><code>#include <tbb_allocator.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::zero_allocator< T, Allocator >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00177.png" usemap="#tbb::zero_allocator< T, Allocator >_map" alt=""/>
+  <map id="tbb::zero_allocator< T, Allocator >_map" name="tbb::zero_allocator< T, Allocator >_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00119.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:a62f27899a40c4bfaa6ba4313ffc833ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a62f27899a40c4bfaa6ba4313ffc833ef"></a>
+typedef Allocator< T > </td><td class="memItemRight" valign="bottom"><b>base_allocator_type</b></td></tr>
+<tr class="separator:a62f27899a40c4bfaa6ba4313ffc833ef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a906f5c2d47fff1bf4fd868a2441752d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a906f5c2d47fff1bf4fd868a2441752d1"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a906f5c2d47fff1bf4fd868a2441752d1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afb9458462ffca5d8734968862c9c4e6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb9458462ffca5d8734968862c9c4e6b"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:afb9458462ffca5d8734968862c9c4e6b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a2a08548bf83e153b40029de72738b60f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a08548bf83e153b40029de72738b60f"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a2a08548bf83e153b40029de72738b60f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0afb88e128fc595c62f24e34f445d834"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0afb88e128fc595c62f24e34f445d834"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::reference </td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
+<tr class="separator:a0afb88e128fc595c62f24e34f445d834"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a28180fc12dc69c275983f6400526ba01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28180fc12dc69c275983f6400526ba01"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::const_reference </td><td class="memItemRight" valign="bottom"><b>const_reference</b></td></tr>
+<tr class="separator:a28180fc12dc69c275983f6400526ba01"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8e741b3db82dfdce3f68cfd6d66901ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e741b3db82dfdce3f68cfd6d66901ce"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::size_type </td><td class="memItemRight" valign="bottom"><b>size_type</b></td></tr>
+<tr class="separator:a8e741b3db82dfdce3f68cfd6d66901ce"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aba68dc670e813a0c5c7f06e262b66187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba68dc670e813a0c5c7f06e262b66187"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::difference_type </td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
+<tr class="separator:aba68dc670e813a0c5c7f06e262b66187"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a9080a874dd20d0ca8e404683113990f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9080a874dd20d0ca8e404683113990f2"></a>
+ </td><td class="memItemRight" valign="bottom"><b>zero_allocator</b> (const <a class="el" href="a00177.html">zero_allocator</a> &a)  throw ()</td></tr>
+<tr class="separator:a9080a874dd20d0ca8e404683113990f2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab417c217e597c6f412c5a630ba18bc32"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab417c217e597c6f412c5a630ba18bc32"></a>
+template<typename U > </td></tr>
+<tr class="memitem:ab417c217e597c6f412c5a630ba18bc32"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><b>zero_allocator</b> (const <a class="el" href="a00177.html">zero_allocator</a>< U > &a)  throw ()</td></tr>
+<tr class="separator:ab417c217e597c6f412c5a630ba18bc32"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1b9fe1273c2332e3c0b571d7bf1ba615"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b9fe1273c2332e3c0b571d7bf1ba615"></a>
+pointer </td><td class="memItemRight" valign="bottom"><b>allocate</b> (const size_type n, const void *hint=0)</td></tr>
+<tr class="separator:a1b9fe1273c2332e3c0b571d7bf1ba615"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<typename T, template< typename X > class Allocator = tbb_allocator><br/>
+class tbb::zero_allocator< T, Allocator ></h3>
+
+<p>Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. </p>
+<p>The class is an adapter over an actual allocator that fills the allocation using memset function with template argument C as the value. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00160.png b/doc/html/a00177.png
similarity index 100%
rename from doc/html/a00160.png
rename to doc/html/a00177.png
diff --git a/doc/html/a00178.html b/doc/html/a00178.html
new file mode 100644
index 0000000..991bae9
--- /dev/null
+++ b/doc/html/a00178.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>tbb::zero_allocator< void, Allocator > Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00178.html">zero_allocator< void, Allocator ></a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#pub-types">Public Types</a> |
+<a href="a00316.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">tbb::zero_allocator< void, Allocator > Class Template Reference<div class="ingroups"><a class="el" href="a00257.html">Memory Allocation</a></div></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  
+ <a href="a00178.html#details">More...</a></p>
+
+<p><code>#include <tbb_allocator.h></code></p>
+<div class="dynheader">
+Inheritance diagram for tbb::zero_allocator< void, Allocator >:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="a00178.png" usemap="#tbb::zero_allocator< void, Allocator >_map" alt=""/>
+  <map id="tbb::zero_allocator< void, Allocator >_map" name="tbb::zero_allocator< void, Allocator >_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00120.html">rebind</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
+Public Types</h2></td></tr>
+<tr class="memitem:ad760fbbdefc95c096c94521316e9e091"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad760fbbdefc95c096c94521316e9e091"></a>
+typedef Allocator< void > </td><td class="memItemRight" valign="bottom"><b>base_allocator_type</b></td></tr>
+<tr class="separator:ad760fbbdefc95c096c94521316e9e091"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a392c9d2f51594e7372e5e73e4bf805ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a392c9d2f51594e7372e5e73e4bf805ff"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::value_type </td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
+<tr class="separator:a392c9d2f51594e7372e5e73e4bf805ff"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa6c02215a540d3f5dd4cb4739bd05bcf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6c02215a540d3f5dd4cb4739bd05bcf"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::pointer </td><td class="memItemRight" valign="bottom"><b>pointer</b></td></tr>
+<tr class="separator:aa6c02215a540d3f5dd4cb4739bd05bcf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a0f2fa4e1a995d60f763595ef4b91dd9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f2fa4e1a995d60f763595ef4b91dd9a"></a>
+typedef <br class="typebreak"/>
+base_allocator_type::const_pointer </td><td class="memItemRight" valign="bottom"><b>const_pointer</b></td></tr>
+<tr class="separator:a0f2fa4e1a995d60f763595ef4b91dd9a"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><h3>template<template< typename T > class Allocator><br/>
+class tbb::zero_allocator< void, Allocator ></h3>
+
+<p>Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
+<li>tbb_allocator.h</li>
+</ul>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00161.png b/doc/html/a00178.png
similarity index 100%
copy from doc/html/a00161.png
copy to doc/html/a00178.png
diff --git a/doc/html/a00179.html b/doc/html/a00179.html
deleted file mode 100644
index ee88809..0000000
--- a/doc/html/a00179.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>flow_graph.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>File Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#namespaces">Constant Groups</a> |
-<a href="#enum-members">Enumerations</a> |
-<a href="#func-members">Functions</a> |
-<a href="#var-members">Variables</a>  </div>
-  <div class="headertitle">
-<div class="title">flow_graph.h File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>The graph related classes and functions.  
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00134.html">tbb::flow::interface7::internal::successor_cache< T, M ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html">tbb::flow::interface7::internal::broadcast_cache< T, M ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00108.html">tbb::flow::interface7::internal::round_robin_cache< T, M ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00048.html">tbb::flow::interface7::continue_msg</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An empty class used for messages that mean "I'm done".  <a href="a00048.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a sender of messages of type T.  <a href="a00124.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a receiver of messages of type T.  <a href="a00106.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a sender of messages of type T.  <a href="a00124.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages only if the threshold has not been reached.  <a href="a00072.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html">tbb::flow::interface7::run_and_put_task< R, B ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a receiver of messages of type T.  <a href="a00106.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class for receivers of completion messages.  <a href="a00050.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The graph class.  <a href="a00061.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The base of all graph nodes.  <a href="a00063.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An executable node that acts as a source, i.e. it has no predecessors.  <a href="a00126.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements a function node that supports Input -> Output.  <a href="a00059.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements a function node that supports Input -> Output.  <a href="a00060.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">implements a function node that supports Input -> (set of outputs)  <a href="a00079.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00130.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its  <a href="a00130.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements an executable node that supports <a class="el" href="a00048.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output.  <a href="a00049.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages of type T to all successors.  <a href="a00025.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in arbitrary order.  <a href="a00027.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in FIFO order.  <a href="a00092.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in sequence order.  <a href="a00125.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in priority order.  <a href="a00091.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages only if the threshold has not been reached.  <a href="a00072.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00068.html">tbb::flow::interface7::join_node< OutputTuple, JP ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Constant Groups</h2></td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a7bec4a3445fea3cd5974119730dea98f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>concurrency</b> { <b>unlimited</b> = 0, 
-<b>serial</b> = 1
- }</td></tr>
-<tr class="memdesc:a7bec4a3445fea3cd5974119730dea98f"><td class="mdescLeft"> </td><td class="mdescRight">An enumeration the provides the two most common concurrency levels: unlimited and serial. <br/></td></tr>
-<tr class="separator:a7bec4a3445fea3cd5974119730dea98f"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:aba7c4b74c28d9c7afcfa7b3b7f92c4a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba7c4b74c28d9c7afcfa7b3b7f92c4a2"></a>
-static tbb::task * </td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface7::combine_tasks</b> (tbb::task *left, tbb::task *right)</td></tr>
-<tr class="separator:aba7c4b74c28d9c7afcfa7b3b7f92c4a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab8165a6d22fd39f043aaf5ebe60a1ee7"></a>
-template<typename T > </td></tr>
-<tr class="memitem:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::make_edge</b> (sender< T > &p, receiver< T > &s)</td></tr>
-<tr class="memdesc:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="mdescLeft"> </td><td class="mdescRight">Makes an edge between a single predecessor and a single successor. <br/></td></tr>
-<tr class="separator:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memTemplParams" colspan="2"><a class="anchor" id="a604efbfc6e5a5889bd73b7a0924b3675"></a>
-template<typename T > </td></tr>
-<tr class="memitem:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::remove_edge</b> (sender< T > &p, receiver< T > &s)</td></tr>
-<tr class="memdesc:a604efbfc6e5a5889bd73b7a0924b3675"><td class="mdescLeft"> </td><td class="mdescRight">Makes an edge between a single predecessor and a single successor. <br/></td></tr>
-<tr class="separator:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afcbf2abcb561437eba15eda6df743420"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcbf2abcb561437eba15eda6df743420"></a>
-template<typename Body , typename Node > </td></tr>
-<tr class="memitem:afcbf2abcb561437eba15eda6df743420"><td class="memTemplItemLeft" align="right" valign="top">Body </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::copy_body</b> (Node &n)</td></tr>
-<tr class="memdesc:afcbf2abcb561437eba15eda6df743420"><td class="mdescLeft"> </td><td class="mdescRight">Returns a copy of the body from a function or continue node. <br/></td></tr>
-<tr class="separator:afcbf2abcb561437eba15eda6df743420"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr class="memitem:ad438065c0420375007de860eb0bcd037"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad438065c0420375007de860eb0bcd037"></a>
-static tbb::task *const </td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface7::SUCCESSFULLY_ENQUEUED</b> = (task *)-1</td></tr>
-<tr class="separator:ad438065c0420375007de860eb0bcd037"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The graph related classes and functions. </p>
-<p>There are some applications that best express dependencies as messages passed between nodes in a graph. These messages may contain data or simply act as signals that a predecessors has completed. The graph class and its associated node classes can be used to express such applcations. </p>
-</div></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00180.html b/doc/html/a00180.html
deleted file mode 100644
index efd8e4d..0000000
--- a/doc/html/a00180.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>memory_pool.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>File Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#namespaces">Constant Groups</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">memory_pool.h File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00074.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00075.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00073.html">tbb::interface6::memory_pool< Alloc ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-safe growable pool allocator for variable-size requests.  <a href="a00073.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html">tbb::interface6::fixed_pool</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Constant Groups</h2></td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a21dc513d4407872bb3b257870c6d77b2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a21dc513d4407872bb3b257870c6d77b2"></a>
-template<typename T , typename U , typename P > </td></tr>
-<tr class="memitem:a21dc513d4407872bb3b257870c6d77b2"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::interface6::operator==</b> (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)</td></tr>
-<tr class="separator:a21dc513d4407872bb3b257870c6d77b2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed6a6d87d04444c2619b6f0136ab0702"><td class="memTemplParams" colspan="2"><a class="anchor" id="aed6a6d87d04444c2619b6f0136ab0702"></a>
-template<typename T , typename U , typename P > </td></tr>
-<tr class="memitem:aed6a6d87d04444c2619b6f0136ab0702"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::interface6::operator!=</b> (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)</td></tr>
-<tr class="separator:aed6a6d87d04444c2619b6f0136ab0702"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00196.html b/doc/html/a00196.html
new file mode 100644
index 0000000..76b5f46
--- /dev/null
+++ b/doc/html/a00196.html
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>flow_graph.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#namespaces">Constant Groups</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">flow_graph.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>The graph related classes and functions.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html">tbb::flow::interface7::internal::successor_cache< T, M ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html">tbb::flow::interface7::internal::broadcast_cache< T, M ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00126.html">tbb::flow::interface7::internal::round_robin_cache< T, M ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00103.html">tbb::flow::interface7::null_type</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00055.html">tbb::flow::interface7::continue_msg</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An empty class used for messages that mean "I'm done".  <a href="a00055.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a sender of messages of type T.  <a href="a00142.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a receiver of messages of type T.  <a href="a00124.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a sender of messages of type T.  <a href="a00142.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages only if the threshold has not been reached.  <a href="a00091.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html">tbb::flow::interface7::run_and_put_task< R, B ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines a receiver of messages of type T.  <a href="a00124.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class for receivers of completion messages.  <a href="a00057.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The graph class.  <a href="a00070.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The base of all graph nodes.  <a href="a00072.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">An executable node that acts as a source, i.e. it has no predecessors.  <a href="a00144.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements a function node that supports Input -> Output.  <a href="a00068.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">implements a function node that supports Input -> (set of outputs)  <a href="a00098.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00147.html" title="split_node: accepts a tuple as input, forwards each element of the tuple to its ">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its  <a href="a00147.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements an executable node that supports <a class="el" href="a00055.html" title="An empty class used for messages that mean "I'm done". ">continue_msg</a> -> Output.  <a href="a00056.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages of type T to all successors.  <a href="a00028.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in arbitrary order.  <a href="a00030.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in FIFO order.  <a href="a00110.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in sequence order.  <a href="a00143.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages in priority order.  <a href="a00109.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Forwards messages only if the threshold has not been reached.  <a href="a00091.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00087.html">tbb::flow::interface7::join_node< OutputTuple, JP ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00037.html">tbb::flow::interface7::composite_node< InputTuple, OutputTuple ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Pure virtual template class that defines interface for async communication.  <a href="a00016.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Implements a async node.  <a href="a00017.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Constant Groups</h2></td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a7bec4a3445fea3cd5974119730dea98f"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>concurrency</b> { <b>unlimited</b> = 0, 
+<b>serial</b> = 1
+ }</td></tr>
+<tr class="memdesc:a7bec4a3445fea3cd5974119730dea98f"><td class="mdescLeft"> </td><td class="mdescRight">An enumeration the provides the two most common concurrency levels: unlimited and serial. <br/></td></tr>
+<tr class="separator:a7bec4a3445fea3cd5974119730dea98f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abe1d7719e70a4b130e6ca01246ac58a4"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>reset_flags</b> { <b>rf_reset_protocol</b> = 0, 
+<b>rf_reset_bodies</b> = 1<<0, 
+<b>rf_clear_edges</b> = 1<<1
+ }</td></tr>
+<tr class="separator:abe1d7719e70a4b130e6ca01246ac58a4"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aba7c4b74c28d9c7afcfa7b3b7f92c4a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba7c4b74c28d9c7afcfa7b3b7f92c4a2"></a>
+static tbb::task * </td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface7::combine_tasks</b> (tbb::task *left, tbb::task *right)</td></tr>
+<tr class="separator:aba7c4b74c28d9c7afcfa7b3b7f92c4a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab8165a6d22fd39f043aaf5ebe60a1ee7"></a>
+template<typename T > </td></tr>
+<tr class="memitem:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::make_edge</b> (sender< T > &p, receiver< T > &s)</td></tr>
+<tr class="memdesc:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="mdescLeft"> </td><td class="mdescRight">Makes an edge between a single predecessor and a single successor. <br/></td></tr>
+<tr class="separator:ab8165a6d22fd39f043aaf5ebe60a1ee7"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3c39412566d3bac0c3bcdb4f490d1372"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3c39412566d3bac0c3bcdb4f490d1372"></a>
+template<typename T , typename V , bool  = tbb::internal::is_same_type< typename tuple_element<0,typename T::output_ports_type>::type,                                              typename tuple_element<0,typename V::input_ports_type>::type                                            >::value> </td></tr>
+<tr class="memitem:a3c39412566d3bac0c3bcdb4f490d1372"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::make_edge</b> (T &output, V &input)</td></tr>
+<tr class="separator:a3c39412566d3bac0c3bcdb4f490d1372"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aae9ce84d0165c025f0ff761226c4560d"><td class="memTemplParams" colspan="2"><a class="anchor" id="aae9ce84d0165c025f0ff761226c4560d"></a>
+template<typename T , typename R , bool  = tbb::internal::is_same_type<typename tuple_element<0,typename T::output_ports_type>::type, receiver<R> >::value> </td></tr>
+<tr class="memitem:aae9ce84d0165c025f0ff761226c4560d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::make_edge</b> (T &output, receiver< R > &input)</td></tr>
+<tr class="separator:aae9ce84d0165c025f0ff761226c4560d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:abb554add65af239e2e9f3958d408176c"><td class="memTemplParams" colspan="2"><a class="anchor" id="abb554add65af239e2e9f3958d408176c"></a>
+template<typename S , typename V , bool  = tbb::internal::is_same_type<sender<S>, typename tuple_element<0,typename V::input_ports_type>::type >::value> </td></tr>
+<tr class="memitem:abb554add65af239e2e9f3958d408176c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::make_edge</b> (sender< S > &output, V &input)</td></tr>
+<tr class="separator:abb554add65af239e2e9f3958d408176c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memTemplParams" colspan="2"><a class="anchor" id="a604efbfc6e5a5889bd73b7a0924b3675"></a>
+template<typename T > </td></tr>
+<tr class="memitem:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::remove_edge</b> (sender< T > &p, receiver< T > &s)</td></tr>
+<tr class="memdesc:a604efbfc6e5a5889bd73b7a0924b3675"><td class="mdescLeft"> </td><td class="mdescRight">Removes an edge between a single predecessor and a single successor. <br/></td></tr>
+<tr class="separator:a604efbfc6e5a5889bd73b7a0924b3675"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af6e5d45f958a098c8a0b683d003c511b"><td class="memTemplParams" colspan="2"><a class="anchor" id="af6e5d45f958a098c8a0b683d003c511b"></a>
+template<typename T , typename V , bool  = tbb::internal::is_same_type< typename tuple_element<0,typename T::output_ports_type>::type,                                              typename tuple_element<0,typename V::input_ports_type>::type                                            >::value> </td></tr>
+<tr class="memitem:af6e5d45f958a098c8a0b683d003c511b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::remove_edge</b> (T &output, V &input)</td></tr>
+<tr class="separator:af6e5d45f958a098c8a0b683d003c511b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a24a01b1298679b5572316b157edc54da"><td class="memTemplParams" colspan="2"><a class="anchor" id="a24a01b1298679b5572316b157edc54da"></a>
+template<typename T , typename R , bool  = tbb::internal::is_same_type<typename tuple_element<0,typename T::output_ports_type>::type, receiver<R> >::value> </td></tr>
+<tr class="memitem:a24a01b1298679b5572316b157edc54da"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::remove_edge</b> (T &output, receiver< R > &input)</td></tr>
+<tr class="separator:a24a01b1298679b5572316b157edc54da"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab56d97ab72ac99c0136ad463e9c2286e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab56d97ab72ac99c0136ad463e9c2286e"></a>
+template<typename S , typename V , bool  = tbb::internal::is_same_type<sender<S>, typename tuple_element<0,typename V::input_ports_type>::type >::value> </td></tr>
+<tr class="memitem:ab56d97ab72ac99c0136ad463e9c2286e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::remove_edge</b> (sender< S > &output, V &input)</td></tr>
+<tr class="separator:ab56d97ab72ac99c0136ad463e9c2286e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afcbf2abcb561437eba15eda6df743420"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcbf2abcb561437eba15eda6df743420"></a>
+template<typename Body , typename Node > </td></tr>
+<tr class="memitem:afcbf2abcb561437eba15eda6df743420"><td class="memTemplItemLeft" align="right" valign="top">Body </td><td class="memTemplItemRight" valign="bottom"><b>tbb::flow::interface7::copy_body</b> (Node &n)</td></tr>
+<tr class="memdesc:afcbf2abcb561437eba15eda6df743420"><td class="mdescLeft"> </td><td class="mdescRight">Returns a copy of the body from a function or continue node. <br/></td></tr>
+<tr class="separator:afcbf2abcb561437eba15eda6df743420"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:ad438065c0420375007de860eb0bcd037"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad438065c0420375007de860eb0bcd037"></a>
+static tbb::task *const </td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface7::SUCCESSFULLY_ENQUEUED</b> = (task *)-1</td></tr>
+<tr class="separator:ad438065c0420375007de860eb0bcd037"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The graph related classes and functions. </p>
+<p>There are some applications that best express dependencies as messages passed between nodes in a graph. These messages may contain data or simply act as signals that a predecessors has completed. The graph class and its associated node classes can be used to express such applications. </p>
+</div></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00198.html b/doc/html/a00198.html
new file mode 100644
index 0000000..a374a98
--- /dev/null
+++ b/doc/html/a00198.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>memory_pool.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#namespaces">Constant Groups</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">memory_pool.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00093.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00122.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00094.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00092.html">tbb::interface6::memory_pool< Alloc ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-safe growable pool allocator for variable-size requests.  <a href="a00092.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00065.html">tbb::interface6::fixed_pool</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Constant Groups</h2></td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a21dc513d4407872bb3b257870c6d77b2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a21dc513d4407872bb3b257870c6d77b2"></a>
+template<typename T , typename U , typename P > </td></tr>
+<tr class="memitem:a21dc513d4407872bb3b257870c6d77b2"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::interface6::operator==</b> (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)</td></tr>
+<tr class="separator:a21dc513d4407872bb3b257870c6d77b2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed6a6d87d04444c2619b6f0136ab0702"><td class="memTemplParams" colspan="2"><a class="anchor" id="aed6a6d87d04444c2619b6f0136ab0702"></a>
+template<typename T , typename U , typename P > </td></tr>
+<tr class="memitem:aed6a6d87d04444c2619b6f0136ab0702"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::interface6::operator!=</b> (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)</td></tr>
+<tr class="separator:aed6a6d87d04444c2619b6f0136ab0702"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00199.html b/doc/html/a00199.html
deleted file mode 100644
index 9c3a40d..0000000
--- a/doc/html/a00199.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>scalable_allocator.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File List</span></a></li>
-      <li><a href="globals.html"><span>File Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#namespaces">Constant Groups</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#enum-members">Enumerations</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">scalable_allocator.h File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00111.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html">tbb::scalable_allocator< T >::rebind< U ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">tbb::scalable_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00112.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html">tbb::scalable_allocator< void >::rebind< U ></a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr class="memitem:a00219"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00219.html">rml</a></td></tr>
-<tr class="memdesc:a00219"><td class="mdescLeft"> </td><td class="mdescRight">The namespace rml contains components of low-level memory pool interface. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
-Constant Groups</h2></td></tr>
-<tr class="memitem:a00219"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00219.html">rml</a></td></tr>
-<tr class="memdesc:a00219"><td class="mdescLeft"> </td><td class="mdescRight">The namespace rml contains components of low-level memory pool interface. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html">tbb</a></td></tr>
-<tr class="memdesc:a00222"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:ae13d09a0a00d9cae537655207c8560a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae13d09a0a00d9cae537655207c8560a2"></a>
-typedef void *(* </td><td class="memItemRight" valign="bottom"><b>rml::rawAllocType</b> )(intptr_t pool_id, size_t &bytes)</td></tr>
-<tr class="separator:ae13d09a0a00d9cae537655207c8560a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44f982f3478d462e81a1300dd516cb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44f982f3478d462e81a1300dd516cb8e"></a>
-typedef int(* </td><td class="memItemRight" valign="bottom"><b>rml::rawFreeType</b> )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)</td></tr>
-<tr class="separator:a44f982f3478d462e81a1300dd516cb8e"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:abd5aafe33a307bbbe334f0049e625cd1"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>ScalableAllocationResult</b> { <br/>
-  <b>TBBMALLOC_OK</b>, 
-<b>TBBMALLOC_INVALID_PARAM</b>, 
-<b>TBBMALLOC_UNSUPPORTED</b>, 
-<b>TBBMALLOC_NO_MEMORY</b>, 
-<br/>
-  <b>TBBMALLOC_NO_EFFECT</b>
-<br/>
- }</td></tr>
-<tr class="separator:abd5aafe33a307bbbe334f0049e625cd1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a75085058c147f85d8897858363b6e99c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>AllocationModeParam</b> { <b>TBBMALLOC_USE_HUGE_PAGES</b>, 
-<b>USE_HUGE_PAGES</b> = TBBMALLOC_USE_HUGE_PAGES, 
-<b>TBBMALLOC_SET_SOFT_HEAP_LIMIT</b>
- }</td></tr>
-<tr class="separator:a75085058c147f85d8897858363b6e99c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a57dd71201713941030ef626baa8fa0eb"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>ScalableAllocationCmd</b> { <b>TBBMALLOC_CLEAN_ALL_BUFFERS</b>, 
-<b>TBBMALLOC_CLEAN_THREAD_BUFFERS</b>
- }</td></tr>
-<tr class="separator:a57dd71201713941030ef626baa8fa0eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>MemPoolError</b> { <br/>
-  <b>POOL_OK</b> = TBBMALLOC_OK, 
-<b>INVALID_POLICY</b> = TBBMALLOC_INVALID_PARAM, 
-<b>UNSUPPORTED_POLICY</b> = TBBMALLOC_UNSUPPORTED, 
-<b>NO_MEMORY</b> = TBBMALLOC_NO_MEMORY, 
-<br/>
-  <b>NO_EFFECT</b> = TBBMALLOC_NO_EFFECT
-<br/>
- }</td></tr>
-<tr class="separator:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_malloc</a> (size_t size)</td></tr>
-<tr class="separator:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_free</a> (void *ptr)</td></tr>
-<tr class="separator:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
-<tr class="separator:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
-<tr class="separator:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaf117b4994f719d539804da8dd115e28c"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gaf117b4994f719d539804da8dd115e28c">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
-<tr class="separator:gaf117b4994f719d539804da8dd115e28c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga903307de17bc1611515f8e6ae782a3d6"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
-<tr class="separator:ga903307de17bc1611515f8e6ae782a3d6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
-<tr class="separator:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_aligned_free</a> (void *ptr)</td></tr>
-<tr class="separator:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga2b718206e50acb6392b86e4877d98213"><td class="memItemLeft" align="right" valign="top">size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2b718206e50acb6392b86e4877d98213">scalable_msize</a> (void *ptr)</td></tr>
-<tr class="separator:ga2b718206e50acb6392b86e4877d98213"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7f5029970f72ebbffee896c46a23958e"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocation_mode</a> (int param, intptr_t value)</td></tr>
-<tr class="separator:ga7f5029970f72ebbffee896c46a23958e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gabe5acd876b4d89bf89787c4e779c2518"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocation_command</a> (int cmd, void *param)</td></tr>
-<tr class="separator:gabe5acd876b4d89bf89787c4e779c2518"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a152cad3c009030ad9364bc1f3ff0c648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152cad3c009030ad9364bc1f3ff0c648"></a>
-MemPoolError </td><td class="memItemRight" valign="bottom"><b>rml::pool_create_v1</b> (intptr_t pool_id, const MemPoolPolicy *policy, rml::MemoryPool **pool)</td></tr>
-<tr class="separator:a152cad3c009030ad9364bc1f3ff0c648"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19a32c0a2ff3a0d8c3eeba0ac894f887"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_destroy</b> (MemoryPool *memPool)</td></tr>
-<tr class="separator:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e8b6e757a521a8f2a186b8577aefb98"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_malloc</b> (MemoryPool *memPool, size_t size)</td></tr>
-<tr class="separator:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ac1381bacb2cbe1f4bca08e99dd2ee"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_realloc</b> (MemoryPool *memPool, void *object, size_t size)</td></tr>
-<tr class="separator:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ac1e82af435d8bef5f7c21506c5f831"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_aligned_malloc</b> (MemoryPool *mPool, size_t size, size_t alignment)</td></tr>
-<tr class="separator:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b2c69d3eae3f7bdcf36df5af9b2eb2e"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_aligned_realloc</b> (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)</td></tr>
-<tr class="separator:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61700754fe0ba9d761fab34ad51e3bc2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_reset</b> (MemoryPool *memPool)</td></tr>
-<tr class="separator:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a06eff2efabb77248f880b86eecc08c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eff2efabb77248f880b86eecc08c6e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_free</b> (MemoryPool *memPool, void *object)</td></tr>
-<tr class="separator:a06eff2efabb77248f880b86eecc08c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a17323bcd620e6e3e4091e2e5568f97d3"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator==</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
-<tr class="separator:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplParams" colspan="2"><a class="anchor" id="af3fb987bb18adf8384db9c9713b81588"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator!=</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
-<tr class="separator:af3fb987bb18adf8384db9c9713b81588"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00217.html b/doc/html/a00217.html
new file mode 100644
index 0000000..acb9944
--- /dev/null
+++ b/doc/html/a00217.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>scalable_allocator.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_525f2cc589630bacbdc3bb450847427e.html">tbb</a></li><li class="navelem"><a class="el" href="dir_b9976680b2be72d2d0b8fca1c31202a2.html">1.0</a></li><li class="navelem"><a class="el" href="dir_63fb2cc293d133785b96e521fa051167.html">include</a></li><li class="navelem"><a class="el" href="dir_87119f26c7695cbc270003e99bc7f49f.html">tbb</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#namespaces">Constant Groups</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">scalable_allocator.h File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00129.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00115.html">tbb::scalable_allocator< T >::rebind< U ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">tbb::scalable_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00130.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00116.html">tbb::scalable_allocator< void >::rebind< U ></a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:a00237"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html">rml</a></td></tr>
+<tr class="memdesc:a00237"><td class="mdescLeft"> </td><td class="mdescRight">The namespace rml contains components of low-level memory pool interface. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Constant Groups</h2></td></tr>
+<tr class="memitem:a00237"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html">rml</a></td></tr>
+<tr class="memdesc:a00237"><td class="mdescLeft"> </td><td class="mdescRight">The namespace rml contains components of low-level memory pool interface. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00240"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html">tbb</a></td></tr>
+<tr class="memdesc:a00240"><td class="mdescLeft"> </td><td class="mdescRight">The namespace tbb contains all components of the library. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ae13d09a0a00d9cae537655207c8560a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae13d09a0a00d9cae537655207c8560a2"></a>
+typedef void *(* </td><td class="memItemRight" valign="bottom"><b>rml::rawAllocType</b> )(intptr_t pool_id, size_t &bytes)</td></tr>
+<tr class="separator:ae13d09a0a00d9cae537655207c8560a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a44f982f3478d462e81a1300dd516cb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44f982f3478d462e81a1300dd516cb8e"></a>
+typedef int(* </td><td class="memItemRight" valign="bottom"><b>rml::rawFreeType</b> )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)</td></tr>
+<tr class="separator:a44f982f3478d462e81a1300dd516cb8e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:abd5aafe33a307bbbe334f0049e625cd1"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>ScalableAllocationResult</b> { <br/>
+  <b>TBBMALLOC_OK</b>, 
+<b>TBBMALLOC_INVALID_PARAM</b>, 
+<b>TBBMALLOC_UNSUPPORTED</b>, 
+<b>TBBMALLOC_NO_MEMORY</b>, 
+<br/>
+  <b>TBBMALLOC_NO_EFFECT</b>
+<br/>
+ }</td></tr>
+<tr class="separator:abd5aafe33a307bbbe334f0049e625cd1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a75085058c147f85d8897858363b6e99c"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>AllocationModeParam</b> { <b>TBBMALLOC_USE_HUGE_PAGES</b>, 
+<b>USE_HUGE_PAGES</b> = TBBMALLOC_USE_HUGE_PAGES, 
+<b>TBBMALLOC_SET_SOFT_HEAP_LIMIT</b>
+ }</td></tr>
+<tr class="separator:a75085058c147f85d8897858363b6e99c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a57dd71201713941030ef626baa8fa0eb"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>ScalableAllocationCmd</b> { <b>TBBMALLOC_CLEAN_ALL_BUFFERS</b>, 
+<b>TBBMALLOC_CLEAN_THREAD_BUFFERS</b>
+ }</td></tr>
+<tr class="separator:a57dd71201713941030ef626baa8fa0eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>MemPoolError</b> { <br/>
+  <b>POOL_OK</b> = TBBMALLOC_OK, 
+<b>INVALID_POLICY</b> = TBBMALLOC_INVALID_PARAM, 
+<b>UNSUPPORTED_POLICY</b> = TBBMALLOC_UNSUPPORTED, 
+<b>NO_MEMORY</b> = TBBMALLOC_NO_MEMORY, 
+<br/>
+  <b>NO_EFFECT</b> = TBBMALLOC_NO_EFFECT
+<br/>
+ }</td></tr>
+<tr class="separator:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_malloc</a> (size_t size)</td></tr>
+<tr class="separator:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_free</a> (void *ptr)</td></tr>
+<tr class="separator:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
+<tr class="separator:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
+<tr class="separator:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf117b4994f719d539804da8dd115e28c"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gaf117b4994f719d539804da8dd115e28c">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
+<tr class="separator:gaf117b4994f719d539804da8dd115e28c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga903307de17bc1611515f8e6ae782a3d6"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
+<tr class="separator:ga903307de17bc1611515f8e6ae782a3d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
+<tr class="separator:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_aligned_free</a> (void *ptr)</td></tr>
+<tr class="separator:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2b718206e50acb6392b86e4877d98213"><td class="memItemLeft" align="right" valign="top">size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2b718206e50acb6392b86e4877d98213">scalable_msize</a> (void *ptr)</td></tr>
+<tr class="separator:ga2b718206e50acb6392b86e4877d98213"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7f5029970f72ebbffee896c46a23958e"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocation_mode</a> (int param, intptr_t value)</td></tr>
+<tr class="separator:ga7f5029970f72ebbffee896c46a23958e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabe5acd876b4d89bf89787c4e779c2518"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocation_command</a> (int cmd, void *param)</td></tr>
+<tr class="separator:gabe5acd876b4d89bf89787c4e779c2518"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a152cad3c009030ad9364bc1f3ff0c648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152cad3c009030ad9364bc1f3ff0c648"></a>
+MemPoolError </td><td class="memItemRight" valign="bottom"><b>rml::pool_create_v1</b> (intptr_t pool_id, const MemPoolPolicy *policy, rml::MemoryPool **pool)</td></tr>
+<tr class="separator:a152cad3c009030ad9364bc1f3ff0c648"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19a32c0a2ff3a0d8c3eeba0ac894f887"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_destroy</b> (MemoryPool *memPool)</td></tr>
+<tr class="separator:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e8b6e757a521a8f2a186b8577aefb98"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_malloc</b> (MemoryPool *memPool, size_t size)</td></tr>
+<tr class="separator:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ac1381bacb2cbe1f4bca08e99dd2ee"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_realloc</b> (MemoryPool *memPool, void *object, size_t size)</td></tr>
+<tr class="separator:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ac1e82af435d8bef5f7c21506c5f831"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_aligned_malloc</b> (MemoryPool *mPool, size_t size, size_t alignment)</td></tr>
+<tr class="separator:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b2c69d3eae3f7bdcf36df5af9b2eb2e"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>rml::pool_aligned_realloc</b> (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)</td></tr>
+<tr class="separator:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61700754fe0ba9d761fab34ad51e3bc2"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_reset</b> (MemoryPool *memPool)</td></tr>
+<tr class="separator:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a06eff2efabb77248f880b86eecc08c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eff2efabb77248f880b86eecc08c6e"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>rml::pool_free</b> (MemoryPool *memPool, void *object)</td></tr>
+<tr class="separator:a06eff2efabb77248f880b86eecc08c6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a17323bcd620e6e3e4091e2e5568f97d3"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator==</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
+<tr class="separator:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplParams" colspan="2"><a class="anchor" id="af3fb987bb18adf8384db9c9713b81588"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>tbb::operator!=</b> (const scalable_allocator< T > &, const scalable_allocator< U > &)</td></tr>
+<tr class="separator:af3fb987bb18adf8384db9c9713b81588"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+</div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00219.html b/doc/html/a00219.html
deleted file mode 100644
index 1924159..0000000
--- a/doc/html/a00219.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>rml Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#enum-members">Enumerations</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">rml Namespace Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>The namespace rml contains components of low-level memory pool interface.  
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00076.html">MemPoolPolicy</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:ae13d09a0a00d9cae537655207c8560a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae13d09a0a00d9cae537655207c8560a2"></a>
-typedef void *(* </td><td class="memItemRight" valign="bottom"><b>rawAllocType</b> )(intptr_t pool_id, size_t &bytes)</td></tr>
-<tr class="separator:ae13d09a0a00d9cae537655207c8560a2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a44f982f3478d462e81a1300dd516cb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44f982f3478d462e81a1300dd516cb8e"></a>
-typedef int(* </td><td class="memItemRight" valign="bottom"><b>rawFreeType</b> )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)</td></tr>
-<tr class="separator:a44f982f3478d462e81a1300dd516cb8e"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>MemPoolError</b> { <br/>
-  <b>POOL_OK</b> = TBBMALLOC_OK, 
-<b>INVALID_POLICY</b> = TBBMALLOC_INVALID_PARAM, 
-<b>UNSUPPORTED_POLICY</b> = TBBMALLOC_UNSUPPORTED, 
-<b>NO_MEMORY</b> = TBBMALLOC_NO_MEMORY, 
-<br/>
-  <b>NO_EFFECT</b> = TBBMALLOC_NO_EFFECT
-<br/>
- }</td></tr>
-<tr class="separator:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a152cad3c009030ad9364bc1f3ff0c648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152cad3c009030ad9364bc1f3ff0c648"></a>
-MemPoolError </td><td class="memItemRight" valign="bottom"><b>pool_create_v1</b> (intptr_t pool_id, const <a class="el" href="a00076.html">MemPoolPolicy</a> *policy, rml::MemoryPool **pool)</td></tr>
-<tr class="separator:a152cad3c009030ad9364bc1f3ff0c648"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19a32c0a2ff3a0d8c3eeba0ac894f887"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>pool_destroy</b> (MemoryPool *memPool)</td></tr>
-<tr class="separator:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e8b6e757a521a8f2a186b8577aefb98"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>pool_malloc</b> (MemoryPool *memPool, size_t size)</td></tr>
-<tr class="separator:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ac1381bacb2cbe1f4bca08e99dd2ee"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>pool_realloc</b> (MemoryPool *memPool, void *object, size_t size)</td></tr>
-<tr class="separator:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ac1e82af435d8bef5f7c21506c5f831"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>pool_aligned_malloc</b> (MemoryPool *mPool, size_t size, size_t alignment)</td></tr>
-<tr class="separator:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b2c69d3eae3f7bdcf36df5af9b2eb2e"></a>
-void * </td><td class="memItemRight" valign="bottom"><b>pool_aligned_realloc</b> (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)</td></tr>
-<tr class="separator:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61700754fe0ba9d761fab34ad51e3bc2"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>pool_reset</b> (MemoryPool *memPool)</td></tr>
-<tr class="separator:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a06eff2efabb77248f880b86eecc08c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eff2efabb77248f880b86eecc08c6e"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>pool_free</b> (MemoryPool *memPool, void *object)</td></tr>
-<tr class="separator:a06eff2efabb77248f880b86eecc08c6e"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The namespace rml contains components of low-level memory pool interface. </p>
-<p>Assert that x is true.</p>
-<p>If x is false, print assertion failure message. If the comment argument is not NULL, it is printed as part of the failure message. The comment argument has no other effect. </p>
-</div></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00222.html b/doc/html/a00222.html
deleted file mode 100644
index 49f68d0..0000000
--- a/doc/html/a00222.html
+++ /dev/null
@@ -1,641 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>tbb Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
-      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#enum-members">Enumerations</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">tbb Namespace Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>The namespace tbb contains all components of the library.  
-<a href="#details">More...</a></p>
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html">aligned_space</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00014.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html">atomic</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00015.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00016.html">atomic< void * ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->.  <a href="a00016.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html">blocked_range</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00021.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html">blocked_range2d</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00022.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html">blocked_range3d</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00023.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html">cache_aligned_allocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00029.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00030.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html">combinable</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-local storage with optional reduction.  <a href="a00032.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html">tbb_hash_compare</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">hash_compare that is default argument for concurrent_hash_map  <a href="a00148.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html">concurrent_bounded_queue</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe blocking concurrent bounded queue.  <a href="a00034.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html">concurrent_vector</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00046.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00158.html">vector_iterator</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html">mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00081.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00083.html">null_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A mutex which does nothing.  <a href="a00083.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00084.html">null_rw_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A rw mutex which does nothing.  <a href="a00084.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00087.html">parallel_do_feeder</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class the user supplied algorithm body uses to add new tasks.  <a href="a00087.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00138.html">task_group_context</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html">pre_scan_tag</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00090.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00055.html">final_scan_tag</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00055.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html">parallel_while</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00088.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html">filter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00053.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html">thread_bound_filter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline served by a user thread.  <a href="a00150.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html">pipeline</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeline that applies filters to items.  <a href="a00089.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">queuing_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing mutex with local-only spinning.  <a href="a00093.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html">queuing_rw_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing reader-writer mutex with local-only spinning.  <a href="a00094.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">recursive_mutex</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">scalable_allocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00111.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">scalable_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00112.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html">spin_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00127.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html">spin_rw_mutex_v3</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00128.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00139.html">task_handle</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00136.html">task_group</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html">structured_task_group</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html">task_scheduler_init</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class delimiting the scope of task scheduler activity.  <a href="a00141.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html">tbb_allocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00144.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html">tbb_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00145.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html">zero_allocator</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00160.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00161.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html">bad_last_alloc</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for concurrent containers.  <a href="a00017.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00065.html">improper_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for PPL locks.  <a href="a00065.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html">user_abort</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for user-initiated abort.  <a href="a00156.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html">missing_wait</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for missing wait on <a class="el" href="a00133.html">structured_task_group</a>.  <a href="a00077.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00067.html">invalid_multiple_scheduling</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for repeated scheduling of the same <a class="el" href="a00139.html">task_handle</a>.  <a href="a00067.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html">tbb_exception</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  <a href="a00146.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00031.html">captured_exception</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class is used by TBB to propagate information about unhandled exceptions into the root thread.  <a href="a00031.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00078.html">movable_exception</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  <a href="a00078.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">split</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00129.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html">tick_count</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00155.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr class="memitem:a889d8f126388fdc24c597d195a4d7028"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a889d8f126388fdc24c597d195a4d7028"></a>
-typedef <br class="typebreak"/>
-<a class="el" href="a00051.html">internal::critical_section_v4</a> </td><td class="memItemRight" valign="bottom"><b>critical_section</b></td></tr>
-<tr class="separator:a889d8f126388fdc24c597d195a4d7028"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga69722571e9e4406693c4a1379f0b47eb"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-interface7::internal::padded_mutex<br class="typebreak"/>
-< interface7::internal::x86_eliding_mutex, <br class="typebreak"/>
-false > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">speculative_spin_mutex</a></td></tr>
-<tr class="memdesc:ga69722571e9e4406693c4a1379f0b47eb"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin mutex with speculative lock acquisition.  <a href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">More...</a><br/></td></tr>
-<tr class="separator:ga69722571e9e4406693c4a1379f0b47eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6cc3d02744cab8ac389919806d47e417"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc3d02744cab8ac389919806d47e417"></a>
-typedef <a class="el" href="a00128.html">spin_rw_mutex_v3</a> </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex</b></td></tr>
-<tr class="separator:a6cc3d02744cab8ac389919806d47e417"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1a268320974a3357e9609a2f98be5090"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a268320974a3357e9609a2f98be5090"></a>
-typedef std::size_t </td><td class="memItemRight" valign="bottom"><b>stack_size_type</b></td></tr>
-<tr class="separator:a1a268320974a3357e9609a2f98be5090"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af58de4ab3200dd2bd621f052c6f677e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af58de4ab3200dd2bd621f052c6f677e4"></a>
-typedef <br class="typebreak"/>
-<a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a> </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer</b></td></tr>
-<tr class="separator:af58de4ab3200dd2bd621f052c6f677e4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7805ca254302ff88b566f7dcde7e56b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7805ca254302ff88b566f7dcde7e56b0"></a>
-typedef <a class="el" href="a00149.html">internal::tbb_thread_v3</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a></td></tr>
-<tr class="memdesc:a7805ca254302ff88b566f7dcde7e56b0"><td class="mdescLeft"> </td><td class="mdescRight">Users reference thread class by name tbb_thread. <br/></td></tr>
-<tr class="separator:a7805ca254302ff88b566f7dcde7e56b0"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
-Enumerations</h2></td></tr>
-<tr class="memitem:adb86d08473679d6fe0eabcdc766ffe3a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3a">memory_semantics</a> { <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">full_fence</a>, 
-<a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">acquire</a>, 
-<a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">release</a>, 
-<a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">relaxed</a>
- }</td></tr>
-<tr class="memdesc:adb86d08473679d6fe0eabcdc766ffe3a"><td class="mdescLeft"> </td><td class="mdescRight">Specifies memory semantics.  <a href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3a">More...</a><br/></td></tr>
-<tr class="separator:adb86d08473679d6fe0eabcdc766ffe3a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac5bcb6154c8307fa9f97806afddf2288"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#ac5bcb6154c8307fa9f97806afddf2288">ets_key_usage_type</a> { <b>ets_key_per_instance</b>, 
-<b>ets_no_key</b>
- }</td></tr>
-<tr class="memdesc:ac5bcb6154c8307fa9f97806afddf2288"><td class="mdescLeft"> </td><td class="mdescRight">enum for selecting between single key and key-per-instance versions <br/></td></tr>
-<tr class="separator:ac5bcb6154c8307fa9f97806afddf2288"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4454db821441ca68bad263d82c40fb7a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>task_group_status</b> { <b>not_complete</b>, 
-<b>complete</b>, 
-<b>canceled</b>
- }</td></tr>
-<tr class="separator:a4454db821441ca68bad263d82c40fb7a"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a5fefe7ed201b920d3fd6c390849c1ccf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fefe7ed201b920d3fd6c390849c1ccf"></a>
- </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC</b> (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) <a class="el" href="a00222.html#a59425abdcb421136e9f5954cfb975e5f">__TBB_DECL_ATOMIC_ALT</a>(unsigned</td></tr>
-<tr class="separator:a5fefe7ed201b920d3fd6c390849c1ccf"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a59425abdcb421136e9f5954cfb975e5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59425abdcb421136e9f5954cfb975e5f"></a>
-size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#a59425abdcb421136e9f5954cfb975e5f">__TBB_DECL_ATOMIC_ALT</a> (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct <a class="el" href="a00015.html">atomic</a>< T * ></td></tr>
-<tr class="memdesc:a59425abdcb421136e9f5954cfb975e5f"><td class="mdescLeft"> </td><td class="mdescRight">Specialization for atomic<T*> with arithmetic and operator->. <br/></td></tr>
-<tr class="separator:a59425abdcb421136e9f5954cfb975e5f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memTemplParams" colspan="2"><a class="anchor" id="aed82c77b389b208a1c27012a2fc0b5fd"></a>
-template<memory_semantics M, typename T > </td></tr>
-<tr class="memitem:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>load</b> (const <a class="el" href="a00015.html">atomic</a>< T > &a)</td></tr>
-<tr class="separator:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a219b97248f55c909aa3d84e43934b105"><td class="memTemplParams" colspan="2"><a class="anchor" id="a219b97248f55c909aa3d84e43934b105"></a>
-template<memory_semantics M, typename T > </td></tr>
-<tr class="memitem:a219b97248f55c909aa3d84e43934b105"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>store</b> (<a class="el" href="a00015.html">atomic</a>< T > &a, T value)</td></tr>
-<tr class="separator:a219b97248f55c909aa3d84e43934b105"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memTemplParams" colspan="2"><a class="anchor" id="a49a6826cf4fb8845d26d8d1f1ad0b5fa"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00029.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00029.html">cache_aligned_allocator</a>< U > &)</td></tr>
-<tr class="separator:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:afdaaf3f3248efc804c6f6fe35855704d"><td class="memTemplParams" colspan="2"><a class="anchor" id="afdaaf3f3248efc804c6f6fe35855704d"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:afdaaf3f3248efc804c6f6fe35855704d"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00029.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00029.html">cache_aligned_allocator</a>< U > &)</td></tr>
-<tr class="separator:afdaaf3f3248efc804c6f6fe35855704d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1db9470dd2871cb7394ab262dca2051a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1db9470dd2871cb7394ab262dca2051a"></a>
-template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 > </td></tr>
-<tr class="memitem:a1db9470dd2871cb7394ab262dca2051a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)</td></tr>
-<tr class="separator:a1db9470dd2871cb7394ab262dca2051a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a05667bcb12f763124fcda402d3720c6a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05667bcb12f763124fcda402d3720c6a"></a>
-template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 > </td></tr>
-<tr class="memitem:a05667bcb12f763124fcda402d3720c6a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)</td></tr>
-<tr class="separator:a05667bcb12f763124fcda402d3720c6a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memTemplParams" colspan="2"><a class="anchor" id="a16dc40ac2badc8b36b8cc70f92801b76"></a>
-template<typename Key , typename T , typename HashCompare , typename A > </td></tr>
-<tr class="memitem:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (concurrent_hash_map< Key, T, HashCompare, A > &a, concurrent_hash_map< Key, T, HashCompare, A > &b)</td></tr>
-<tr class="separator:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a79ecee2d23f2486c03e720ab9e3ac36c"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab7258c4acabadf94d03dc62e29396ea0"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab7258c4acabadf94d03dc62e29396ea0"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:ab7258c4acabadf94d03dc62e29396ea0"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:ab7258c4acabadf94d03dc62e29396ea0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1523d0389a8cbda80c17ae4f45caa3a6"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a78cfed58bfde865b68859beb54805019"><td class="memTemplParams" colspan="2"><a class="anchor" id="a78cfed58bfde865b68859beb54805019"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:a78cfed58bfde865b68859beb54805019"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator></b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:a78cfed58bfde865b68859beb54805019"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac6009f009cd331952d8944bcc9733375"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac6009f009cd331952d8944bcc9733375"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:ac6009f009cd331952d8944bcc9733375"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<=</b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:ac6009f009cd331952d8944bcc9733375"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa0d82e59919a1f2c7caa06d061b2480f"></a>
-template<typename T , class A1 , class A2 > </td></tr>
-<tr class="memitem:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator>=</b> (const <a class="el" href="a00046.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00046.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
-<tr class="separator:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4cd91084f08db8c2d23c6a0362e0c441"></a>
-template<typename T , class A > </td></tr>
-<tr class="memitem:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00046.html">concurrent_vector</a>< T, A > &a, <a class="el" href="a00046.html">concurrent_vector</a>< T, A > &b)</td></tr>
-<tr class="separator:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a17323bcd620e6e3e4091e2e5568f97d3"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00111.html">scalable_allocator</a>< T > &, const <a class="el" href="a00111.html">scalable_allocator</a>< U > &)</td></tr>
-<tr class="separator:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplParams" colspan="2"><a class="anchor" id="af3fb987bb18adf8384db9c9713b81588"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00111.html">scalable_allocator</a>< T > &, const <a class="el" href="a00111.html">scalable_allocator</a>< U > &)</td></tr>
-<tr class="separator:af3fb987bb18adf8384db9c9713b81588"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aaef1698b222ba9312ab24dcdcd98bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaef1698b222ba9312ab24dcdcd98bbd8"></a>
-bool </td><td class="memItemRight" valign="bottom"><b>is_current_task_group_canceling</b> ()</td></tr>
-<tr class="separator:aaef1698b222ba9312ab24dcdcd98bbd8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c291402bcc0ba9263cf08b76faf7a2c"></a>
-template<class F > </td></tr>
-<tr class="memitem:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00139.html">task_handle</a>< F > </td><td class="memTemplItemRight" valign="bottom"><b>make_task</b> (const F &f)</td></tr>
-<tr class="separator:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memTemplParams" colspan="2"><a class="anchor" id="af1595d1bfc4f7be923c17b4ee5c556ae"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00144.html">tbb_allocator</a>< T > &, const <a class="el" href="a00144.html">tbb_allocator</a>< U > &)</td></tr>
-<tr class="separator:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a82ff968904aaa1bb0e2152f590c47be6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a82ff968904aaa1bb0e2152f590c47be6"></a>
-template<typename T , typename U > </td></tr>
-<tr class="memitem:a82ff968904aaa1bb0e2152f590c47be6"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00144.html">tbb_allocator</a>< T > &, const <a class="el" href="a00144.html">tbb_allocator</a>< U > &)</td></tr>
-<tr class="separator:a82ff968904aaa1bb0e2152f590c47be6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bf465e2f6730e2cea0c9531bec9fb2f"></a>
-template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2> </td></tr>
-<tr class="memitem:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00160.html">zero_allocator</a>< T1, B1 > &a, const <a class="el" href="a00160.html">zero_allocator</a>< T2, B2 > &b)</td></tr>
-<tr class="separator:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a606762cf7c614cb5a1631955938737cd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a606762cf7c614cb5a1631955938737cd"></a>
-template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2> </td></tr>
-<tr class="memitem:a606762cf7c614cb5a1631955938737cd"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00160.html">zero_allocator</a>< T1, B1 > &a, const <a class="el" href="a00160.html">zero_allocator</a>< T2, B2 > &b)</td></tr>
-<tr class="separator:a606762cf7c614cb5a1631955938737cd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00222.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">TBB_runtime_interface_version</a> ()</td></tr>
-<tr class="memdesc:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="mdescLeft"> </td><td class="mdescRight">The function returns the interface version of the TBB shared library being used.  <a href="#ade8a8bc300d5ef09d38cbfb8baff5cd2">More...</a><br/></td></tr>
-<tr class="separator:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ab7f020856fee5ecb5d8e3946bf2160f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7f020856fee5ecb5d8e3946bf2160f8"></a>
-void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00149.html">internal::tbb_thread_v3</a> &t1, <a class="el" href="a00149.html">internal::tbb_thread_v3</a> &t2)</td></tr>
-<tr class="separator:ab7f020856fee5ecb5d8e3946bf2160f8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ac41903d6b80e61bd6c605412e7820e08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac41903d6b80e61bd6c605412e7820e08"></a>
-void </td><td class="memItemRight" valign="bottom"><b>move</b> (<a class="el" href="a00222.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a> &t1, <a class="el" href="a00222.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a> &t2)</td></tr>
-<tr class="separator:ac41903d6b80e61bd6c605412e7820e08"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:aa037c1f149250d61cd2fad4541a5e6cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa037c1f149250d61cd2fad4541a5e6cb"></a>
-<a class="el" href="a00066.html">tick_count::interval_t</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00155.html">tick_count</a> &t1, const <a class="el" href="a00155.html">tick_count</a> &t0)</td></tr>
-<tr class="separator:aa037c1f149250d61cd2fad4541a5e6cb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_do</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00002.html">parallel_do Body</a>. </p>
-</div></td></tr>
-<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
-<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga533f6732498ade8634a9470cbf89192d">parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
-<tr class="memdesc:ga533f6732498ade8634a9470cbf89192d"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work.  <a href="a00234.html#ga533f6732498ade8634a9470cbf89192d">More...</a><br/></td></tr>
-<tr class="separator:ga533f6732498ade8634a9470cbf89192d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
-<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7db29bc10d81eddc85854256ffc723c0">parallel_do</a> (Iterator first, Iterator last, const Body &body, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga7db29bc10d81eddc85854256ffc723c0"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context.  <a href="a00234.html#ga7db29bc10d81eddc85854256ffc723c0">More...</a><br/></td></tr>
-<tr class="separator:ga7db29bc10d81eddc85854256ffc723c0"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_for</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00003.html">parallel_for Body</a>. </p>
-</div></td></tr>
-<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaa8444c29dc4d2e527a1036717d109aef">parallel_for</a> (const Range &range, const Body &body)</td></tr>
-<tr class="memdesc:gaa8444c29dc4d2e527a1036717d109aef"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner.  <a href="a00234.html#gaa8444c29dc4d2e527a1036717d109aef">More...</a><br/></td></tr>
-<tr class="separator:gaa8444c29dc4d2e527a1036717d109aef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner.  <a href="a00234.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">More...</a><br/></td></tr>
-<tr class="separator:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gad6c4b06f96ae33cefe78235841791902">parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gad6c4b06f96ae33cefe78235841791902"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner.  <a href="a00234.html#gad6c4b06f96ae33cefe78235841791902">More...</a><br/></td></tr>
-<tr class="separator:gad6c4b06f96ae33cefe78235841791902"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaf3d39e372d825bf54283b5ceafa90057">parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gaf3d39e372d825bf54283b5ceafa90057"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner.  <a href="a00234.html#gaf3d39e372d825bf54283b5ceafa90057">More...</a><br/></td></tr>
-<tr class="separator:gaf3d39e372d825bf54283b5ceafa90057"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga93a621202db94665144de38c0b09bdad">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga93a621202db94665144de38c0b09bdad"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner and user-supplied context.  <a href="a00234.html#ga93a621202db94665144de38c0b09bdad">More...</a><br/></td></tr>
-<tr class="separator:ga93a621202db94665144de38c0b09bdad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context.  <a href="a00234.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">More...</a><br/></td></tr>
-<tr class="separator:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga4c9935d8710a5cf786a92f3522ab2976">parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga4c9935d8710a5cf786a92f3522ab2976"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner and user-supplied context.  <a href="a00234.html#ga4c9935d8710a5cf786a92f3522ab2976">More...</a><br/></td></tr>
-<tr class="separator:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner and user-supplied context.  <a href="a00234.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">More...</a><br/></td></tr>
-<tr class="separator:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_for_each</div></td></tr>
-<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplParams" colspan="2">template<typename InputIterator , typename Function > </td></tr>
-<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga96bf42caaec779e413e5a2396c1e301c">parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga96bf42caaec779e413e5a2396c1e301c"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from [first, last) interval using user-supplied context.  <a href="a00234.html#ga96bf42caaec779e413e5a2396c1e301c">More...</a><br/></td></tr>
-<tr class="separator:ga96bf42caaec779e413e5a2396c1e301c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaef59e9baf9141a19c99a291e4532bd98"></a>
-template<typename InputIterator , typename Function > </td></tr>
-<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaef59e9baf9141a19c99a291e4532bd98">parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f)</td></tr>
-<tr class="memdesc:gaef59e9baf9141a19c99a291e4532bd98"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
-<tr class="separator:gaef59e9baf9141a19c99a291e4532bd98"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_invoke</div></td></tr>
-<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplParams" colspan="2">template<typename F0 , typename F1 > </td></tr>
-<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga14459dcbcd631194df803b155a7f610b">parallel_invoke</a> (const F0 &f0, const F1 &f1, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga14459dcbcd631194df803b155a7f610b"><td class="mdescLeft"> </td><td class="mdescRight">Executes a list of tasks in parallel and waits for all tasks to complete.  <a href="a00234.html#ga14459dcbcd631194df803b155a7f610b">More...</a><br/></td></tr>
-<tr class="separator:ga14459dcbcd631194df803b155a7f610b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaea3f3a8883128afb596a963e856277f"></a>
-template<typename F0 , typename F1 , typename F2 > </td></tr>
-<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gaaea3f3a8883128afb596a963e856277f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga74932e64ede5047387108fa45f1af96f"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
-<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga74932e64ede5047387108fa45f1af96f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaefc1ba8f73cbdd094575f6db454fc6b5"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
-<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga3f02dfbb94238b2cf2ef8f20844b03af"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
-<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad8c1220bbd59e3b8e7bbcdcfdda8047e"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
-<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5ee83a66397ee0b15c77756cb5e5168e"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
-<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1af92ebd06f6cdf5ee668b1fe62657bd"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
-<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga65846bc3b2f63ed1448b6cdfea9e1c80"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
-<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga6b1c36ece1d3950677dd01ef0863648c"></a>
-template<typename F0 , typename F1 > </td></tr>
-<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1)</td></tr>
-<tr class="separator:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaa979656a4c207782b74800c6c42982f5"></a>
-template<typename F0 , typename F1 , typename F2 > </td></tr>
-<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2)</td></tr>
-<tr class="separator:gaa979656a4c207782b74800c6c42982f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga219cb8061b7cf5454c0bc4d67cff1e34"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
-<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)</td></tr>
-<tr class="separator:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8319ee980cd7cfb03f12ffc2a5ea4895"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
-<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)</td></tr>
-<tr class="separator:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga295daf6f7394fba29a979b914be09fc6"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
-<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)</td></tr>
-<tr class="separator:ga295daf6f7394fba29a979b914be09fc6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7652a01622a2f28df1e0edf40b691190"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
-<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)</td></tr>
-<tr class="separator:ga7652a01622a2f28df1e0edf40b691190"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="gadd8826371866c58e41dee3546c35d2c8"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
-<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)</td></tr>
-<tr class="separator:gadd8826371866c58e41dee3546c35d2c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaeca8b72507d67dd023dae728bdc89896"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
-<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)</td></tr>
-<tr class="separator:gaeca8b72507d67dd023dae728bdc89896"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga17c9f95fac24b2b7b62f325f511ee7be"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
-<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)</td></tr>
-<tr class="separator:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_reduce</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00004.html">parallel_reduce Body</a>. </p>
-</div></td></tr>
-<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">parallel_reduce</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="a00234.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">More...</a><br/></td></tr>
-<tr class="separator:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="a00234.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">More...</a><br/></td></tr>
-<tr class="separator:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga3011e7266fb1e43d307060fe75be2c6e">parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga3011e7266fb1e43d307060fe75be2c6e"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="a00234.html#ga3011e7266fb1e43d307060fe75be2c6e">More...</a><br/></td></tr>
-<tr class="separator:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga6e83e121490df24fa5893b14e68f5e2a">parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga6e83e121490df24fa5893b14e68f5e2a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="a00234.html#ga6e83e121490df24fa5893b14e68f5e2a">More...</a><br/></td></tr>
-<tr class="separator:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gac57281bea03450ccb2d098ee8c7ab697">parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:gac57281bea03450ccb2d098ee8c7ab697"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="a00234.html#gac57281bea03450ccb2d098ee8c7ab697">More...</a><br/></td></tr>
-<tr class="separator:gac57281bea03450ccb2d098ee8c7ab697"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5f3ebf50ab7f5e53fd936817c866f7be">parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="a00234.html#ga5f3ebf50ab7f5e53fd936817c866f7be">More...</a><br/></td></tr>
-<tr class="separator:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5df3f3a9618fd35931107819cb43fce6">parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga5df3f3a9618fd35931107819cb43fce6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="a00234.html#ga5df3f3a9618fd35931107819cb43fce6">More...</a><br/></td></tr>
-<tr class="separator:ga5df3f3a9618fd35931107819cb43fce6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga1c9b66fa25cadee9ca3bff75a6609b05">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
-<tr class="memdesc:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="a00234.html#ga1c9b66fa25cadee9ca3bff75a6609b05">More...</a><br/></td></tr>
-<tr class="separator:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="a00234.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">More...</a><br/></td></tr>
-<tr class="separator:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga56e6b6e2eee521f532c00d855280be69">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga56e6b6e2eee521f532c00d855280be69"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="a00234.html#ga56e6b6e2eee521f532c00d855280be69">More...</a><br/></td></tr>
-<tr class="separator:ga56e6b6e2eee521f532c00d855280be69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="a00234.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">More...</a><br/></td></tr>
-<tr class="separator:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga518ef2653004d60319bdfc1c6bce86b6">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga518ef2653004d60319bdfc1c6bce86b6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="a00234.html#ga518ef2653004d60319bdfc1c6bce86b6">More...</a><br/></td></tr>
-<tr class="separator:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga24ba50caf5a7c32cbd38912508cb69a4">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="a00234.html#ga24ba50caf5a7c32cbd38912508cb69a4">More...</a><br/></td></tr>
-<tr class="separator:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga367a8e77c4dac3f8764785afdc6c9299">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga367a8e77c4dac3f8764785afdc6c9299"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="a00234.html#ga367a8e77c4dac3f8764785afdc6c9299">More...</a><br/></td></tr>
-<tr class="separator:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">parallel_deterministic_reduce</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="a00234.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">More...</a><br/></td></tr>
-<tr class="separator:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga361201f81b4ec7b86f81b579d2db647a">parallel_deterministic_reduce</a> (const Range &range, Body &body, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga361201f81b4ec7b86f81b579d2db647a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="a00234.html#ga361201f81b4ec7b86f81b579d2db647a">More...</a><br/></td></tr>
-<tr class="separator:ga361201f81b4ec7b86f81b579d2db647a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7f69e6a632acb51ed26a43ebd331f349">parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
-<tr class="memdesc:ga7f69e6a632acb51ed26a43ebd331f349"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="a00234.html#ga7f69e6a632acb51ed26a43ebd331f349">More...</a><br/></td></tr>
-<tr class="separator:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga69b4eea059a62cbbf409cbad02b70bfa">parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00138.html">task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="a00234.html#ga69b4eea059a62cbbf409cbad02b70bfa">More...</a><br/></td></tr>
-<tr class="separator:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_scan</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00006.html">parallel_scan Body</a>. </p>
-</div></td></tr>
-<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gae7eaaf124471a6c603b28fc925e8fbbb">parallel_scan</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with default partitioner.  <a href="a00234.html#gae7eaaf124471a6c603b28fc925e8fbbb">More...</a><br/></td></tr>
-<tr class="separator:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7ddacf5e49f1bea9b67803f2d0f57531">parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with simple_partitioner.  <a href="a00234.html#ga7ddacf5e49f1bea9b67803f2d0f57531">More...</a><br/></td></tr>
-<tr class="separator:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga3548041731b7fa14f30f155541ceebb9">parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga3548041731b7fa14f30f155541ceebb9"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with auto_partitioner.  <a href="a00234.html#ga3548041731b7fa14f30f155541ceebb9">More...</a><br/></td></tr>
-<tr class="separator:ga3548041731b7fa14f30f155541ceebb9"><td class="memSeparator" colspan="2"> </td></tr>
-<tr><td colspan="2"><div class="groupHeader">parallel_sort</div></td></tr>
-<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00007.html">iterators for parallel_sort</a>. </p>
-</div></td></tr>
-<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator , typename Compare > </td></tr>
-<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-<tr class="memdesc:gabdc90813499f91d3e32298cd6dc2fe45"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">More...</a><br/></td></tr>
-<tr class="separator:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator > </td></tr>
-<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga73b58ac9249f49587d0b081c152af551">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
-<tr class="memdesc:ga73b58ac9249f49587d0b081c152af551"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="a00234.html#ga73b58ac9249f49587d0b081c152af551">More...</a><br/></td></tr>
-<tr class="separator:ga73b58ac9249f49587d0b081c152af551"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga8f176cdc232a6e5907456656a24983a8">parallel_sort</a> (T *begin, T *end)</td></tr>
-<tr class="memdesc:ga8f176cdc232a6e5907456656a24983a8"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>  <a href="a00234.html#ga8f176cdc232a6e5907456656a24983a8">More...</a><br/></td></tr>
-<tr class="separator:ga8f176cdc232a6e5907456656a24983a8"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>The namespace tbb contains all components of the library. </p>
-</div><h2 class="groupheader">Enumeration Type Documentation</h2>
-<a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3a"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">enum <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb::memory_semantics</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Specifies memory semantics. </p>
-<table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a"></a>full_fence</em> </td><td class="fielddoc">
-<p>Sequential consistency. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418"></a>acquire</em> </td><td class="fielddoc">
-<p>Acquire. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632"></a>release</em> </td><td class="fielddoc">
-<p>Release. </p>
-</td></tr>
-<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5"></a>relaxed</em> </td><td class="fielddoc">
-<p>No ordering. </p>
-</td></tr>
-</table>
-
-</div>
-</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ade8a8bc300d5ef09d38cbfb8baff5cd2"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int __TBB_EXPORTED_FUNC tbb::TBB_runtime_interface_version </td>
-          <td>(</td>
-          <td class="paramname">)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>The function returns the interface version of the TBB shared library being used. </p>
-<p>The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time. </p>
-
-</div>
-</div>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00234.html b/doc/html/a00234.html
deleted file mode 100644
index d3ff781..0000000
--- a/doc/html/a00234.html
+++ /dev/null
@@ -1,1779 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Algorithms</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a>  </div>
-  <div class="headertitle">
-<div class="title">Algorithms</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00021.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00022.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00023.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00090.html">tbb::pre_scan_tag</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00090.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00055.html">tbb::final_scan_tag</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00055.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00088.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html">tbb::filter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00053.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline served by a user thread.  <a href="a00150.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00089.html">tbb::pipeline</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeline that applies filters to items.  <a href="a00089.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">tbb::split</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Dummy type that distinguishes splitting constructor from copy constructor.  <a href="a00129.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_do</h2></td></tr>
-<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp751e5e5b1749802e9339f8ae6e071bc7"></a>See also requirements on <a class="el" href="a00002.html">parallel_do Body</a>. </p>
-</td></tr>
-<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
-<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga533f6732498ade8634a9470cbf89192d">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
-<tr class="memdesc:ga533f6732498ade8634a9470cbf89192d"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work.  <a href="#ga533f6732498ade8634a9470cbf89192d">More...</a><br/></td></tr>
-<tr class="separator:ga533f6732498ade8634a9470cbf89192d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
-<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7db29bc10d81eddc85854256ffc723c0">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body, task_group_context &context)</td></tr>
-<tr class="memdesc:ga7db29bc10d81eddc85854256ffc723c0"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context.  <a href="#ga7db29bc10d81eddc85854256ffc723c0">More...</a><br/></td></tr>
-<tr class="separator:ga7db29bc10d81eddc85854256ffc723c0"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_for</h2></td></tr>
-<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp020f371880777e82219a69f8a512e874"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00003.html">parallel_for Body</a>. </p>
-</td></tr>
-<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaa8444c29dc4d2e527a1036717d109aef">tbb::parallel_for</a> (const Range &range, const Body &body)</td></tr>
-<tr class="memdesc:gaa8444c29dc4d2e527a1036717d109aef"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner.  <a href="#gaa8444c29dc4d2e527a1036717d109aef">More...</a><br/></td></tr>
-<tr class="separator:gaa8444c29dc4d2e527a1036717d109aef"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner.  <a href="#ga9722d2bc7e5edb4fae9f3b55268a1ecc">More...</a><br/></td></tr>
-<tr class="separator:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gad6c4b06f96ae33cefe78235841791902">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gad6c4b06f96ae33cefe78235841791902"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner.  <a href="#gad6c4b06f96ae33cefe78235841791902">More...</a><br/></td></tr>
-<tr class="separator:gad6c4b06f96ae33cefe78235841791902"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaf3d39e372d825bf54283b5ceafa90057">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gaf3d39e372d825bf54283b5ceafa90057"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner.  <a href="#gaf3d39e372d825bf54283b5ceafa90057">More...</a><br/></td></tr>
-<tr class="separator:gaf3d39e372d825bf54283b5ceafa90057"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga93a621202db94665144de38c0b09bdad">tbb::parallel_for</a> (const Range &range, const Body &body, task_group_context &context)</td></tr>
-<tr class="memdesc:ga93a621202db94665144de38c0b09bdad"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner and user-supplied context.  <a href="#ga93a621202db94665144de38c0b09bdad">More...</a><br/></td></tr>
-<tr class="separator:ga93a621202db94665144de38c0b09bdad"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context.  <a href="#ga5b7fab9d6ffe7a9345e9349a5a007bd4">More...</a><br/></td></tr>
-<tr class="separator:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga4c9935d8710a5cf786a92f3522ab2976">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga4c9935d8710a5cf786a92f3522ab2976"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner and user-supplied context.  <a href="#ga4c9935d8710a5cf786a92f3522ab2976">More...</a><br/></td></tr>
-<tr class="separator:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner and user-supplied context.  <a href="#ga62b1a9ac304ba1eb4f87ab8cc18dd281">More...</a><br/></td></tr>
-<tr class="separator:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_for_each</h2></td></tr>
-<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplParams" colspan="2">template<typename InputIterator , typename Function > </td></tr>
-<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f, task_group_context &context)</td></tr>
-<tr class="memdesc:ga96bf42caaec779e413e5a2396c1e301c"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from [first, last) interval using user-supplied context.  <a href="#ga96bf42caaec779e413e5a2396c1e301c">More...</a><br/></td></tr>
-<tr class="separator:ga96bf42caaec779e413e5a2396c1e301c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaef59e9baf9141a19c99a291e4532bd98"></a>
-template<typename InputIterator , typename Function > </td></tr>
-<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaef59e9baf9141a19c99a291e4532bd98">tbb::parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f)</td></tr>
-<tr class="memdesc:gaef59e9baf9141a19c99a291e4532bd98"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
-<tr class="separator:gaef59e9baf9141a19c99a291e4532bd98"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_invoke</h2></td></tr>
-<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplParams" colspan="2">template<typename F0 , typename F1 > </td></tr>
-<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga14459dcbcd631194df803b155a7f610b">tbb::parallel_invoke</a> (const F0 &f0, const F1 &f1, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="memdesc:ga14459dcbcd631194df803b155a7f610b"><td class="mdescLeft"> </td><td class="mdescRight">Executes a list of tasks in parallel and waits for all tasks to complete.  <a href="#ga14459dcbcd631194df803b155a7f610b">More...</a><br/></td></tr>
-<tr class="separator:ga14459dcbcd631194df803b155a7f610b"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaea3f3a8883128afb596a963e856277f"></a>
-template<typename F0 , typename F1 , typename F2 > </td></tr>
-<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gaaea3f3a8883128afb596a963e856277f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga74932e64ede5047387108fa45f1af96f"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
-<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga74932e64ede5047387108fa45f1af96f"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaefc1ba8f73cbdd094575f6db454fc6b5"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
-<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga3f02dfbb94238b2cf2ef8f20844b03af"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
-<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad8c1220bbd59e3b8e7bbcdcfdda8047e"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
-<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5ee83a66397ee0b15c77756cb5e5168e"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
-<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1af92ebd06f6cdf5ee668b1fe62657bd"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
-<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga65846bc3b2f63ed1448b6cdfea9e1c80"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
-<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, <a class="el" href="a00138.html">tbb::task_group_context</a> &context)</td></tr>
-<tr class="separator:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga6b1c36ece1d3950677dd01ef0863648c"></a>
-template<typename F0 , typename F1 > </td></tr>
-<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1)</td></tr>
-<tr class="separator:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaa979656a4c207782b74800c6c42982f5"></a>
-template<typename F0 , typename F1 , typename F2 > </td></tr>
-<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2)</td></tr>
-<tr class="separator:gaa979656a4c207782b74800c6c42982f5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga219cb8061b7cf5454c0bc4d67cff1e34"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
-<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)</td></tr>
-<tr class="separator:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8319ee980cd7cfb03f12ffc2a5ea4895"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
-<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)</td></tr>
-<tr class="separator:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga295daf6f7394fba29a979b914be09fc6"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
-<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)</td></tr>
-<tr class="separator:ga295daf6f7394fba29a979b914be09fc6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7652a01622a2f28df1e0edf40b691190"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
-<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)</td></tr>
-<tr class="separator:ga7652a01622a2f28df1e0edf40b691190"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="gadd8826371866c58e41dee3546c35d2c8"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
-<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)</td></tr>
-<tr class="separator:gadd8826371866c58e41dee3546c35d2c8"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaeca8b72507d67dd023dae728bdc89896"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
-<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)</td></tr>
-<tr class="separator:gaeca8b72507d67dd023dae728bdc89896"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga17c9f95fac24b2b7b62f325f511ee7be"></a>
-template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
-<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)</td></tr>
-<tr class="separator:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_reduce</h2></td></tr>
-<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp949e4773fffd16cb2d32f76af48627d2"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00004.html">parallel_reduce Body</a>. </p>
-</td></tr>
-<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">tbb::parallel_reduce</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="#ga7b1ce9568e0a0efe1bd2d55677bc6687">More...</a><br/></td></tr>
-<tr class="separator:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="#gaebb92b593827f9c3f5e1f8ee2f7d5f82">More...</a><br/></td></tr>
-<tr class="separator:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga3011e7266fb1e43d307060fe75be2c6e">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga3011e7266fb1e43d307060fe75be2c6e"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="#ga3011e7266fb1e43d307060fe75be2c6e">More...</a><br/></td></tr>
-<tr class="separator:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga6e83e121490df24fa5893b14e68f5e2a">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga6e83e121490df24fa5893b14e68f5e2a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="#ga6e83e121490df24fa5893b14e68f5e2a">More...</a><br/></td></tr>
-<tr class="separator:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gac57281bea03450ccb2d098ee8c7ab697">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:gac57281bea03450ccb2d098ee8c7ab697"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="#gac57281bea03450ccb2d098ee8c7ab697">More...</a><br/></td></tr>
-<tr class="separator:gac57281bea03450ccb2d098ee8c7ab697"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5f3ebf50ab7f5e53fd936817c866f7be">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="#ga5f3ebf50ab7f5e53fd936817c866f7be">More...</a><br/></td></tr>
-<tr class="separator:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga5df3f3a9618fd35931107819cb43fce6">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga5df3f3a9618fd35931107819cb43fce6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="#ga5df3f3a9618fd35931107819cb43fce6">More...</a><br/></td></tr>
-<tr class="separator:ga5df3f3a9618fd35931107819cb43fce6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga1c9b66fa25cadee9ca3bff75a6609b05">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
-<tr class="memdesc:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="#ga1c9b66fa25cadee9ca3bff75a6609b05">More...</a><br/></td></tr>
-<tr class="separator:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="#ga0b22fd1de0e8bbaf46587d3c63a1ed93">More...</a><br/></td></tr>
-<tr class="separator:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga56e6b6e2eee521f532c00d855280be69">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga56e6b6e2eee521f532c00d855280be69"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="#ga56e6b6e2eee521f532c00d855280be69">More...</a><br/></td></tr>
-<tr class="separator:ga56e6b6e2eee521f532c00d855280be69"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
-<tr class="memdesc:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="#gac26c35d1983e7ac2ab003cc8e49dd7e6">More...</a><br/></td></tr>
-<tr class="separator:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga518ef2653004d60319bdfc1c6bce86b6">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga518ef2653004d60319bdfc1c6bce86b6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="#ga518ef2653004d60319bdfc1c6bce86b6">More...</a><br/></td></tr>
-<tr class="separator:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga24ba50caf5a7c32cbd38912508cb69a4">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="#ga24ba50caf5a7c32cbd38912508cb69a4">More...</a><br/></td></tr>
-<tr class="separator:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga367a8e77c4dac3f8764785afdc6c9299">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
-<tr class="memdesc:ga367a8e77c4dac3f8764785afdc6c9299"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="#ga367a8e77c4dac3f8764785afdc6c9299">More...</a><br/></td></tr>
-<tr class="separator:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb::parallel_deterministic_reduce</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">More...</a><br/></td></tr>
-<tr class="separator:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga361201f81b4ec7b86f81b579d2db647a">tbb::parallel_deterministic_reduce</a> (const Range &range, Body &body, task_group_context &context)</td></tr>
-<tr class="memdesc:ga361201f81b4ec7b86f81b579d2db647a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="#ga361201f81b4ec7b86f81b579d2db647a">More...</a><br/></td></tr>
-<tr class="separator:ga361201f81b4ec7b86f81b579d2db647a"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7f69e6a632acb51ed26a43ebd331f349">tbb::parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
-<tr class="memdesc:ga7f69e6a632acb51ed26a43ebd331f349"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="#ga7f69e6a632acb51ed26a43ebd331f349">More...</a><br/></td></tr>
-<tr class="separator:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
-<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga69b4eea059a62cbbf409cbad02b70bfa">tbb::parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)</td></tr>
-<tr class="memdesc:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="#ga69b4eea059a62cbbf409cbad02b70bfa">More...</a><br/></td></tr>
-<tr class="separator:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_scan</h2></td></tr>
-<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpea856f699c9d234ea9f5ed535b0b16bb"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00006.html">parallel_scan Body</a>. </p>
-</td></tr>
-<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gae7eaaf124471a6c603b28fc925e8fbbb">tbb::parallel_scan</a> (const Range &range, Body &body)</td></tr>
-<tr class="memdesc:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with default partitioner.  <a href="#gae7eaaf124471a6c603b28fc925e8fbbb">More...</a><br/></td></tr>
-<tr class="separator:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga7ddacf5e49f1bea9b67803f2d0f57531">tbb::parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with simple_partitioner.  <a href="#ga7ddacf5e49f1bea9b67803f2d0f57531">More...</a><br/></td></tr>
-<tr class="separator:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
-<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga3548041731b7fa14f30f155541ceebb9">tbb::parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
-<tr class="memdesc:ga3548041731b7fa14f30f155541ceebb9"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with auto_partitioner.  <a href="#ga3548041731b7fa14f30f155541ceebb9">More...</a><br/></td></tr>
-<tr class="separator:ga3548041731b7fa14f30f155541ceebb9"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
-parallel_sort</h2></td></tr>
-<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp507087c4dcfb051fe7d24227c3a34024"></a>See also requirements on <a class="el" href="a00007.html">iterators for parallel_sort</a>. </p>
-</td></tr>
-<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator , typename Compare > </td></tr>
-<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
-<tr class="memdesc:gabdc90813499f91d3e32298cd6dc2fe45"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="#gabdc90813499f91d3e32298cd6dc2fe45">More...</a><br/></td></tr>
-<tr class="separator:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator > </td></tr>
-<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga73b58ac9249f49587d0b081c152af551">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
-<tr class="memdesc:ga73b58ac9249f49587d0b081c152af551"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="#ga73b58ac9249f49587d0b081c152af551">More...</a><br/></td></tr>
-<tr class="separator:ga73b58ac9249f49587d0b081c152af551"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00234.html#ga8f176cdc232a6e5907456656a24983a8">tbb::parallel_sort</a> (T *begin, T *end)</td></tr>
-<tr class="memdesc:ga8f176cdc232a6e5907456656a24983a8"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>  <a href="#ga8f176cdc232a6e5907456656a24983a8">More...</a><br/></td></tr>
-<tr class="separator:ga8f176cdc232a6e5907456656a24983a8"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ga1fd7e3c43592dfe1ae3e3572bd80d4f6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_deterministic_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with deterministic reduction and default partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga361201f81b4ec7b86f81b579d2db647a"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_deterministic_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga7f69e6a632acb51ed26a43ebd331f349"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_deterministic_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with deterministic reduction and default partitioner. </p>
-<p>parallel_reduce overloads that work with anonymous function objects (see also <a class="el" href="a00005.html">requirements on parallel_reduce anonymous function objects</a>). </p>
-
-</div>
-</div>
-<a class="anchor" id="ga69b4eea059a62cbbf409cbad02b70bfa"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_deterministic_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga533f6732498ade8634a9470cbf89192d"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Iterator , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_do </td>
-          <td>(</td>
-          <td class="paramtype">Iterator </td>
-          <td class="paramname"><em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Iterator </td>
-          <td class="paramname"><em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over a range, with optional addition of more work. </p>
-
-<p>Referenced by <a class="el" href="a00234.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga7db29bc10d81eddc85854256ffc723c0"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Iterator , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_do </td>
-          <td>(</td>
-          <td class="paramtype">Iterator </td>
-          <td class="paramname"><em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Iterator </td>
-          <td class="paramname"><em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over a range, with optional addition of more work and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaa8444c29dc4d2e527a1036717d109aef"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with default partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga9722d2bc7e5edb4fae9f3b55268a1ecc"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with simple partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gad6c4b06f96ae33cefe78235841791902"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with auto_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaf3d39e372d825bf54283b5ceafa90057"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with affinity_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga93a621202db94665144de38c0b09bdad"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with default partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga5b7fab9d6ffe7a9345e9349a5a007bd4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with simple partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga4c9935d8710a5cf786a92f3522ab2976"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with auto_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga62b1a9ac304ba1eb4f87ab8cc18dd281"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration over range with affinity_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga96bf42caaec779e413e5a2396c1e301c"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename InputIterator , typename Function > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_for_each </td>
-          <td>(</td>
-          <td class="paramtype">InputIterator </td>
-          <td class="paramname"><em>first</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">InputIterator </td>
-          <td class="paramname"><em>last</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Function & </td>
-          <td class="paramname"><em>f</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Calls function f for all items from [first, last) interval using user-supplied context. </p>
-
-<p>References <a class="el" href="a00234.html#ga533f6732498ade8634a9470cbf89192d">tbb::parallel_do()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga14459dcbcd631194df803b155a7f610b"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename F0 , typename F1 > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_invoke </td>
-          <td>(</td>
-          <td class="paramtype">const F0 & </td>
-          <td class="paramname"><em>f0</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const F1 & </td>
-          <td class="paramname"><em>f1</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype"><a class="el" href="a00138.html">tbb::task_group_context</a> & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Executes a list of tasks in parallel and waits for all tasks to complete. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga7b1ce9568e0a0efe1bd2d55677bc6687"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and default partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaebb92b593827f9c3f5e1f8ee2f7d5f82"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and simple_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga3011e7266fb1e43d307060fe75be2c6e"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and auto_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga6e83e121490df24fa5893b14e68f5e2a"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and affinity_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gac57281bea03450ccb2d098ee8c7ab697"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, simple partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga5f3ebf50ab7f5e53fd936817c866f7be"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, auto_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga5df3f3a9618fd35931107819cb43fce6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, affinity_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga1c9b66fa25cadee9ca3bff75a6609b05"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and default partitioner. </p>
-<p>parallel_reduce overloads that work with anonymous function objects (see also <a class="el" href="a00005.html">requirements on parallel_reduce anonymous function objects</a>). </p>
-
-</div>
-</div>
-<a class="anchor" id="ga0b22fd1de0e8bbaf46587d3c63a1ed93"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and simple_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga56e6b6e2eee521f532c00d855280be69"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and auto_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gac26c35d1983e7ac2ab003cc8e49dd7e6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction and affinity_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga518ef2653004d60319bdfc1c6bce86b6"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, simple partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga24ba50caf5a7c32cbd38912508cb69a4"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, auto_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga367a8e77c4dac3f8764785afdc6c9299"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">Value tbb::parallel_reduce </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Value & </td>
-          <td class="paramname"><em>identity</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const RealBody & </td>
-          <td class="paramname"><em>real_body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Reduction & </td>
-          <td class="paramname"><em>reduction</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">affinity_partitioner & </td>
-          <td class="paramname"><em>partitioner</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">task_group_context & </td>
-          <td class="paramname"><em>context</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel iteration with reduction, affinity_partitioner and user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="gae7eaaf124471a6c603b28fc925e8fbbb"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_scan </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel prefix with default partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga7ddacf5e49f1bea9b67803f2d0f57531"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_scan </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const simple_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel prefix with simple_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga3548041731b7fa14f30f155541ceebb9"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename Range , typename Body > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_scan </td>
-          <td>(</td>
-          <td class="paramtype">const Range & </td>
-          <td class="paramname"><em>range</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">Body & </td>
-          <td class="paramname"><em>body</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const auto_partitioner & </td>
-          <td class="paramname"><em>partitioner</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Parallel prefix with auto_partitioner. </p>
-
-</div>
-</div>
-<a class="anchor" id="gabdc90813499f91d3e32298cd6dc2fe45"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename RandomAccessIterator , typename Compare > </div>
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_sort </td>
-          <td>(</td>
-          <td class="paramtype">RandomAccessIterator </td>
-          <td class="paramname"><em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RandomAccessIterator </td>
-          <td class="paramname"><em>end</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">const Compare & </td>
-          <td class="paramname"><em>comp</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>Sorts the data in [begin,end) using the given comparator. </p>
-<p>The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function. </p>
-
-<p>Referenced by <a class="el" href="a00234.html#ga73b58ac9249f49587d0b081c152af551">tbb::parallel_sort()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga73b58ac9249f49587d0b081c152af551"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename RandomAccessIterator > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_sort </td>
-          <td>(</td>
-          <td class="paramtype">RandomAccessIterator </td>
-          <td class="paramname"><em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">RandomAccessIterator </td>
-          <td class="paramname"><em>end</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code> </p>
-
-<p>References <a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga8f176cdc232a6e5907456656a24983a8"></a>
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
-<table class="mlabels">
-  <tr>
-  <td class="mlabels-left">
-      <table class="memname">
-        <tr>
-          <td class="memname">void tbb::parallel_sort </td>
-          <td>(</td>
-          <td class="paramtype">T * </td>
-          <td class="paramname"><em>begin</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">T * </td>
-          <td class="paramname"><em>end</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-  </td>
-  <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
-  </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code> </p>
-
-<p>References <a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
-
-</div>
-</div>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00235.html b/doc/html/a00235.html
deleted file mode 100644
index 67399fa..0000000
--- a/doc/html/a00235.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Containers</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a>  </div>
-  <div class="headertitle">
-<div class="title">Containers</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html">tbb::combinable< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-local storage with optional reduction.  <a href="a00032.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Unordered map from Key to T.  <a href="a00035.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe non-blocking concurrent queue.  <a href="a00038.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe blocking concurrent bounded queue.  <a href="a00034.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00046.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container.  <a href="a00052.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00236.html b/doc/html/a00236.html
deleted file mode 100644
index 8efb9b7..0000000
--- a/doc/html/a00236.html
+++ /dev/null
@@ -1,382 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Memory Allocation</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a> |
-<a href="#func-members">Functions</a>  </div>
-  <div class="headertitle">
-<div class="title">Memory Allocation</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html">tbb::aligned_space< T, N ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00014.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00029.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00030.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00074.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00075.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00111.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">tbb::scalable_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00112.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00144.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html">tbb::tbb_allocator< void ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00145.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00160.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00161.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_malloc</a> (size_t size)</td></tr>
-<tr class="separator:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_free</a> (void *ptr)</td></tr>
-<tr class="separator:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
-<tr class="separator:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
-<tr class="separator:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaf117b4994f719d539804da8dd115e28c"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gaf117b4994f719d539804da8dd115e28c">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
-<tr class="separator:gaf117b4994f719d539804da8dd115e28c"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga903307de17bc1611515f8e6ae782a3d6"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
-<tr class="separator:ga903307de17bc1611515f8e6ae782a3d6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
-<tr class="separator:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_aligned_free</a> (void *ptr)</td></tr>
-<tr class="separator:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga2b718206e50acb6392b86e4877d98213"><td class="memItemLeft" align="right" valign="top">size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga2b718206e50acb6392b86e4877d98213">scalable_msize</a> (void *ptr)</td></tr>
-<tr class="separator:ga2b718206e50acb6392b86e4877d98213"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:ga7f5029970f72ebbffee896c46a23958e"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocation_mode</a> (int param, intptr_t value)</td></tr>
-<tr class="separator:ga7f5029970f72ebbffee896c46a23958e"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gabe5acd876b4d89bf89787c4e779c2518"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00236.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocation_command</a> (int cmd, void *param)</td></tr>
-<tr class="separator:gabe5acd876b4d89bf89787c4e779c2518"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="gad9aa7595581a7bc5be193d7e034c8f61"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_FUNC scalable_aligned_free </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>ptr</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "_aligned_free" analogue. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga903307de17bc1611515f8e6ae782a3d6"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_malloc </td>
-          <td>(</td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>alignment</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "_aligned_malloc" analogue. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaa07391c54330b2e4dd1743ae9c9c4f2d"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_realloc </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>alignment</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "_aligned_realloc" analogue. </p>
-
-</div>
-</div>
-<a class="anchor" id="gabe5acd876b4d89bf89787c4e779c2518"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int __TBB_EXPORTED_FUNC scalable_allocation_command </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>cmd</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>param</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>Call TBB allocator-specific commands. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga7f5029970f72ebbffee896c46a23958e"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int __TBB_EXPORTED_FUNC scalable_allocation_mode </td>
-          <td>(</td>
-          <td class="paramtype">int </td>
-          <td class="paramname"><em>param</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">intptr_t </td>
-          <td class="paramname"><em>value</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>Set TBB allocator-specific allocation modes. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga3b4ff39555cd9e929fce2958325cd8ea"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_calloc </td>
-          <td>(</td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>nobj</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "calloc" analogue complementing scalable_malloc. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga2ad3952b8c4dd7d293e02ae18fc37b84"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void __TBB_EXPORTED_FUNC scalable_free </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>ptr</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "free" analogue to discard a previously allocated piece of memory. </p>
-
-<p>Referenced by <a class="el" href="a00111.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T >::deallocate()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga2a5bdc71439a70b20f2eadf6e1a489e1"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_malloc </td>
-          <td>(</td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "malloc" analogue to allocate block of memory of size bytes. </p>
-
-<p>Referenced by <a class="el" href="a00111.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T >::allocate()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ga2b718206e50acb6392b86e4877d98213"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">size_t __TBB_EXPORTED_FUNC scalable_msize </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>ptr</em>)</td><td></td>
-          <td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The analogue of <em>msize/malloc_size/malloc_usable_size. Returns the usable size of a memory block previously allocated by scalable</em>*, or 0 (zero) if ptr does not point to such a block. </p>
-
-</div>
-</div>
-<a class="anchor" id="gaf117b4994f719d539804da8dd115e28c"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">int __TBB_EXPORTED_FUNC scalable_posix_memalign </td>
-          <td>(</td>
-          <td class="paramtype">void ** </td>
-          <td class="paramname"><em>memptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>alignment</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "posix_memalign" analogue. </p>
-
-</div>
-</div>
-<a class="anchor" id="ga40d6e0bc19cdfa3005b2b935c62077a1"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_realloc </td>
-          <td>(</td>
-          <td class="paramtype">void * </td>
-          <td class="paramname"><em>ptr</em>, </td>
-        </tr>
-        <tr>
-          <td class="paramkey"></td>
-          <td></td>
-          <td class="paramtype">size_t </td>
-          <td class="paramname"><em>size</em> </td>
-        </tr>
-        <tr>
-          <td></td>
-          <td>)</td>
-          <td></td><td></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-<p>The "realloc" analogue complementing scalable_malloc. </p>
-
-</div>
-</div>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00237.html b/doc/html/a00237.html
index 416ea18..cde3d23 100644
--- a/doc/html/a00237.html
+++ b/doc/html/a00237.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Synchronization</title>
+<title>rml Namespace Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -19,104 +19,92 @@
       <li><a href="index.html"><span>Main Page</span></a></li>
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
       <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
 <a href="#nested-classes">Classes</a> |
-<a href="#typedef-members">Typedefs</a>  </div>
+<a href="#typedef-members">Typedefs</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">Synchronization</div>  </div>
+<div class="title">rml Namespace Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p>The namespace rml contains components of low-level memory pool interface.  
+<a href="#details">More...</a></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html">tbb::atomic< T ></a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00015.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00081.html">tbb::mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00081.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00083.html">tbb::null_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A mutex which does nothing.  <a href="a00083.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00084.html">tbb::null_rw_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A rw mutex which does nothing.  <a href="a00084.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing mutex with local-only spinning.  <a href="a00093.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing reader-writer mutex with local-only spinning.  <a href="a00094.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Writer-preference reader-writer lock with local-only spinning on readers.  <a href="a00095.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00127.html">tbb::spin_mutex</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00127.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00128.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00095.html">MemPoolPolicy</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr class="memitem:ga69722571e9e4406693c4a1379f0b47eb"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-interface7::internal::padded_mutex<br class="typebreak"/>
-< interface7::internal::x86_eliding_mutex, <br class="typebreak"/>
-false > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">tbb::speculative_spin_mutex</a></td></tr>
-<tr class="memdesc:ga69722571e9e4406693c4a1379f0b47eb"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin mutex with speculative lock acquisition.  <a href="#ga69722571e9e4406693c4a1379f0b47eb">More...</a><br/></td></tr>
-<tr class="separator:ga69722571e9e4406693c4a1379f0b47eb"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:gab65b7be4fb11293e9ff104d8ead4e65b"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-interface7::internal::padded_mutex<br class="typebreak"/>
-< tbb::interface7::internal::x86_rtm_rw_mutex, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00237.html#gab65b7be4fb11293e9ff104d8ead4e65b">tbb::interface7::speculative_spin_rw_mutex</a></td></tr>
-<tr class="memdesc:gab65b7be4fb11293e9ff104d8ead4e65b"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin reader/writer mutex with speculative lock acquisition.  <a href="#gab65b7be4fb11293e9ff104d8ead4e65b">More...</a><br/></td></tr>
-<tr class="separator:gab65b7be4fb11293e9ff104d8ead4e65b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ae13d09a0a00d9cae537655207c8560a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae13d09a0a00d9cae537655207c8560a2"></a>
+typedef void *(* </td><td class="memItemRight" valign="bottom"><b>rawAllocType</b> )(intptr_t pool_id, size_t &bytes)</td></tr>
+<tr class="separator:ae13d09a0a00d9cae537655207c8560a2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a44f982f3478d462e81a1300dd516cb8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a44f982f3478d462e81a1300dd516cb8e"></a>
+typedef int(* </td><td class="memItemRight" valign="bottom"><b>rawFreeType</b> )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)</td></tr>
+<tr class="separator:a44f982f3478d462e81a1300dd516cb8e"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>MemPoolError</b> { <br/>
+  <b>POOL_OK</b> = TBBMALLOC_OK, 
+<b>INVALID_POLICY</b> = TBBMALLOC_INVALID_PARAM, 
+<b>UNSUPPORTED_POLICY</b> = TBBMALLOC_UNSUPPORTED, 
+<b>NO_MEMORY</b> = TBBMALLOC_NO_MEMORY, 
+<br/>
+  <b>NO_EFFECT</b> = TBBMALLOC_NO_EFFECT
+<br/>
+ }</td></tr>
+<tr class="separator:a09eea006328e62aac7cbbbd9a3fb7958"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a152cad3c009030ad9364bc1f3ff0c648"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a152cad3c009030ad9364bc1f3ff0c648"></a>
+MemPoolError </td><td class="memItemRight" valign="bottom"><b>pool_create_v1</b> (intptr_t pool_id, const <a class="el" href="a00095.html">MemPoolPolicy</a> *policy, rml::MemoryPool **pool)</td></tr>
+<tr class="separator:a152cad3c009030ad9364bc1f3ff0c648"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a19a32c0a2ff3a0d8c3eeba0ac894f887"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>pool_destroy</b> (MemoryPool *memPool)</td></tr>
+<tr class="separator:a19a32c0a2ff3a0d8c3eeba0ac894f887"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e8b6e757a521a8f2a186b8577aefb98"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>pool_malloc</b> (MemoryPool *memPool, size_t size)</td></tr>
+<tr class="separator:a5e8b6e757a521a8f2a186b8577aefb98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9ac1381bacb2cbe1f4bca08e99dd2ee"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>pool_realloc</b> (MemoryPool *memPool, void *object, size_t size)</td></tr>
+<tr class="separator:af9ac1381bacb2cbe1f4bca08e99dd2ee"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ac1e82af435d8bef5f7c21506c5f831"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>pool_aligned_malloc</b> (MemoryPool *mPool, size_t size, size_t alignment)</td></tr>
+<tr class="separator:a8ac1e82af435d8bef5f7c21506c5f831"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b2c69d3eae3f7bdcf36df5af9b2eb2e"></a>
+void * </td><td class="memItemRight" valign="bottom"><b>pool_aligned_realloc</b> (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)</td></tr>
+<tr class="separator:a3b2c69d3eae3f7bdcf36df5af9b2eb2e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61700754fe0ba9d761fab34ad51e3bc2"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>pool_reset</b> (MemoryPool *memPool)</td></tr>
+<tr class="separator:a61700754fe0ba9d761fab34ad51e3bc2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a06eff2efabb77248f880b86eecc08c6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06eff2efabb77248f880b86eecc08c6e"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>pool_free</b> (MemoryPool *memPool, void *object)</td></tr>
+<tr class="separator:a06eff2efabb77248f880b86eecc08c6e"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="ga69722571e9e4406693c4a1379f0b47eb"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef interface7::internal::padded_mutex< spin_mutex, false > <a class="el" href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">tbb::speculative_spin_mutex</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>A cross-platform spin mutex with speculative lock acquisition. </p>
-<p>On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a <a class="el" href="a00127.html" title="A lock that occupies a single byte. ">spin_mutex</a>. It should be used for locking short critical sections where the lock is co [...]
-
-</div>
-</div>
-<a class="anchor" id="gab65b7be4fb11293e9ff104d8ead4e65b"></a>
-<div class="memitem">
-<div class="memproto">
-      <table class="memname">
-        <tr>
-          <td class="memname">typedef interface7::internal::padded_mutex< <a class="el" href="a00128.html">tbb::spin_rw_mutex</a>, true > <a class="el" href="a00237.html#gab65b7be4fb11293e9ff104d8ead4e65b">tbb::interface7::speculative_spin_rw_mutex</a></td>
-        </tr>
-      </table>
-</div><div class="memdoc">
-
-<p>A cross-platform spin reader/writer mutex with speculative lock acquisition. </p>
-<p>On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a spin_rw_mutex. It should be used for locking short critical sections where the lock is contended but the data it protects are not. </p>
-
-</div>
-</div>
-</div><!-- contents -->
+<div class="textblock"><p>The namespace rml contains components of low-level memory pool interface. </p>
+</div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00238.html b/doc/html/a00238.html
deleted file mode 100644
index ac7208b..0000000
--- a/doc/html/a00238.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Timing</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a>  </div>
-  <div class="headertitle">
-<div class="title">Timing</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html">tbb::tick_count</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00155.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00239.html b/doc/html/a00239.html
deleted file mode 100644
index 4ff11ee..0000000
--- a/doc/html/a00239.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Task Scheduling</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="summary">
-<a href="#nested-classes">Classes</a>  </div>
-  <div class="headertitle">
-<div class="title">Task Scheduling</div>  </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class delimiting the scope of task scheduler activity.  <a href="a00141.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-</table>
-<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-</div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00240.html b/doc/html/a00240.html
index 12c13fc..6f7ef12 100644
--- a/doc/html/a00240.html
+++ b/doc/html/a00240.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Deprecated List</title>
+<title>tbb Namespace Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -17,27 +17,673 @@
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
-      <li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
       <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="namespaces.html"><span>Namespace List</span></a></li>
+      <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
+    </ul>
+  </div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">Deprecated List </div>  </div>
+<div class="title">tbb Namespace Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="textblock"><dl class="reflist">
-<dt><a class="anchor" id="_deprecated000001"></a>Member <a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">tbb::deprecated::concurrent_queue< T, A >::pop_if_present</a>  (T &destination)</dt>
-<dd>Use try_pop() </dd>
-</dl>
-</div></div><!-- contents -->
+
+<p>The namespace tbb contains all components of the library.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html">aligned_space</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00015.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html">atomic</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00018.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00019.html">atomic< void * ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Specialization for <a class="el" href="a00019.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*></a>, for sake of not allowing arithmetic or operator->.  <a href="a00019.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html">blocked_range</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00024.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html">blocked_range2d</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00025.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html">blocked_range3d</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00026.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html">cache_aligned_allocator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00032.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00033.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html">combinable</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-local storage with optional reduction.  <a href="a00036.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00163.html">tbb_hash_compare</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">hash_compare that is default argument for concurrent_hash_map  <a href="a00163.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html">concurrent_bounded_queue</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe blocking concurrent bounded queue.  <a href="a00042.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html">concurrent_vector</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00053.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00175.html">vector_iterator</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html">mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00099.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">null_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A mutex which does nothing.  <a href="a00101.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">null_rw_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A rw mutex which does nothing.  <a href="a00102.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00105.html">parallel_do_feeder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class the user supplied algorithm body uses to add new tasks.  <a href="a00105.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00153.html">task_group_context</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00108.html">pre_scan_tag</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00108.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">final_scan_tag</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00064.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">parallel_while</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00106.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html">filter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00062.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00165.html">thread_bound_filter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline served by a user thread.  <a href="a00165.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">pipeline</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeline that applies filters to items.  <a href="a00107.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">queuing_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing mutex with local-only spinning.  <a href="a00111.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">queuing_rw_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing reader-writer mutex with local-only spinning.  <a href="a00112.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">recursive_mutex</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">scalable_allocator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00129.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">scalable_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00130.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html">spin_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00145.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html">spin_rw_mutex_v3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00146.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00154.html">task_handle</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00151.html">task_group</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00148.html">structured_task_group</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html">task_scheduler_init</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class delimiting the scope of task scheduler activity.  <a href="a00156.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html">tbb_allocator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00159.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html">tbb_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00160.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00177.html">zero_allocator</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00177.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00178.html">zero_allocator< void, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00178.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00020.html">bad_last_alloc</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for concurrent containers.  <a href="a00020.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00074.html">improper_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for PPL locks.  <a href="a00074.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00173.html">user_abort</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for user-initiated abort.  <a href="a00173.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00096.html">missing_wait</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for missing wait on <a class="el" href="a00148.html">structured_task_group</a>.  <a href="a00096.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00086.html">invalid_multiple_scheduling</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Exception for repeated scheduling of the same <a class="el" href="a00154.html">task_handle</a>.  <a href="a00086.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00161.html">tbb_exception</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.  <a href="a00161.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00035.html">captured_exception</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class is used by TBB to propagate information about unhandled exceptions into the root thread.  <a href="a00035.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00097.html">movable_exception</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.  <a href="a00097.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html">tick_count</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00170.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a889d8f126388fdc24c597d195a4d7028"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a889d8f126388fdc24c597d195a4d7028"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00058.html">internal::critical_section_v4</a> </td><td class="memItemRight" valign="bottom"><b>critical_section</b></td></tr>
+<tr class="separator:a889d8f126388fdc24c597d195a4d7028"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga69722571e9e4406693c4a1379f0b47eb"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
+interface7::internal::padded_mutex<br class="typebreak"/>
+< interface7::internal::x86_eliding_mutex, <br class="typebreak"/>
+false > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">speculative_spin_mutex</a></td></tr>
+<tr class="memdesc:ga69722571e9e4406693c4a1379f0b47eb"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin mutex with speculative lock acquisition.  <a href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">More...</a><br/></td></tr>
+<tr class="separator:ga69722571e9e4406693c4a1379f0b47eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6cc3d02744cab8ac389919806d47e417"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cc3d02744cab8ac389919806d47e417"></a>
+typedef <a class="el" href="a00146.html">spin_rw_mutex_v3</a> </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex</b></td></tr>
+<tr class="separator:a6cc3d02744cab8ac389919806d47e417"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1a268320974a3357e9609a2f98be5090"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a268320974a3357e9609a2f98be5090"></a>
+typedef std::size_t </td><td class="memItemRight" valign="bottom"><b>stack_size_type</b></td></tr>
+<tr class="separator:a1a268320974a3357e9609a2f98be5090"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af58de4ab3200dd2bd621f052c6f677e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af58de4ab3200dd2bd621f052c6f677e4"></a>
+typedef <br class="typebreak"/>
+<a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a> </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer</b></td></tr>
+<tr class="separator:af58de4ab3200dd2bd621f052c6f677e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7805ca254302ff88b566f7dcde7e56b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7805ca254302ff88b566f7dcde7e56b0"></a>
+typedef <a class="el" href="a00164.html">internal::tbb_thread_v3</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a></td></tr>
+<tr class="memdesc:a7805ca254302ff88b566f7dcde7e56b0"><td class="mdescLeft"> </td><td class="mdescRight">Users reference thread class by name tbb_thread. <br/></td></tr>
+<tr class="separator:a7805ca254302ff88b566f7dcde7e56b0"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:adb86d08473679d6fe0eabcdc766ffe3a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3a">memory_semantics</a> { <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">full_fence</a>, 
+<a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">acquire</a>, 
+<a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">release</a>, 
+<a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">relaxed</a>
+ }</td></tr>
+<tr class="memdesc:adb86d08473679d6fe0eabcdc766ffe3a"><td class="mdescLeft"> </td><td class="mdescRight">Specifies memory semantics.  <a href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3a">More...</a><br/></td></tr>
+<tr class="separator:adb86d08473679d6fe0eabcdc766ffe3a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac5bcb6154c8307fa9f97806afddf2288"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#ac5bcb6154c8307fa9f97806afddf2288">ets_key_usage_type</a> { <b>ets_key_per_instance</b>, 
+<b>ets_no_key</b>
+ }</td></tr>
+<tr class="memdesc:ac5bcb6154c8307fa9f97806afddf2288"><td class="mdescLeft"> </td><td class="mdescRight">enum for selecting between single key and key-per-instance versions <br/></td></tr>
+<tr class="separator:ac5bcb6154c8307fa9f97806afddf2288"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4454db821441ca68bad263d82c40fb7a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><b>task_group_status</b> { <b>not_complete</b>, 
+<b>complete</b>, 
+<b>canceled</b>
+ }</td></tr>
+<tr class="separator:a4454db821441ca68bad263d82c40fb7a"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a5fefe7ed201b920d3fd6c390849c1ccf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fefe7ed201b920d3fd6c390849c1ccf"></a>
+ </td><td class="memItemRight" valign="bottom"><b>__TBB_DECL_ATOMIC</b> (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) <a class="el" href="a00240.html#a59425abdcb421136e9f5954cfb975e5f">__TBB_DECL_ATOMIC_ALT</a>(unsigned</td></tr>
+<tr class="separator:a5fefe7ed201b920d3fd6c390849c1ccf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a59425abdcb421136e9f5954cfb975e5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59425abdcb421136e9f5954cfb975e5f"></a>
+size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a59425abdcb421136e9f5954cfb975e5f">__TBB_DECL_ATOMIC_ALT</a> (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct <a class="el" href="a00018.html">atomic</a>< T * ></td></tr>
+<tr class="memdesc:a59425abdcb421136e9f5954cfb975e5f"><td class="mdescLeft"> </td><td class="mdescRight">Specialization for atomic<T*> with arithmetic and operator->. <br/></td></tr>
+<tr class="separator:a59425abdcb421136e9f5954cfb975e5f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memTemplParams" colspan="2"><a class="anchor" id="aed82c77b389b208a1c27012a2fc0b5fd"></a>
+template<memory_semantics M, typename T > </td></tr>
+<tr class="memitem:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memTemplItemLeft" align="right" valign="top">T </td><td class="memTemplItemRight" valign="bottom"><b>load</b> (const <a class="el" href="a00018.html">atomic</a>< T > &a)</td></tr>
+<tr class="separator:aed82c77b389b208a1c27012a2fc0b5fd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a219b97248f55c909aa3d84e43934b105"><td class="memTemplParams" colspan="2"><a class="anchor" id="a219b97248f55c909aa3d84e43934b105"></a>
+template<memory_semantics M, typename T > </td></tr>
+<tr class="memitem:a219b97248f55c909aa3d84e43934b105"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>store</b> (<a class="el" href="a00018.html">atomic</a>< T > &a, T value)</td></tr>
+<tr class="separator:a219b97248f55c909aa3d84e43934b105"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memTemplParams" colspan="2"><a class="anchor" id="a49a6826cf4fb8845d26d8d1f1ad0b5fa"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00032.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00032.html">cache_aligned_allocator</a>< U > &)</td></tr>
+<tr class="separator:a49a6826cf4fb8845d26d8d1f1ad0b5fa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:afdaaf3f3248efc804c6f6fe35855704d"><td class="memTemplParams" colspan="2"><a class="anchor" id="afdaaf3f3248efc804c6f6fe35855704d"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:afdaaf3f3248efc804c6f6fe35855704d"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00032.html">cache_aligned_allocator</a>< T > &, const <a class="el" href="a00032.html">cache_aligned_allocator</a>< U > &)</td></tr>
+<tr class="separator:afdaaf3f3248efc804c6f6fe35855704d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1db9470dd2871cb7394ab262dca2051a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1db9470dd2871cb7394ab262dca2051a"></a>
+template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 > </td></tr>
+<tr class="memitem:a1db9470dd2871cb7394ab262dca2051a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)</td></tr>
+<tr class="separator:a1db9470dd2871cb7394ab262dca2051a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a05667bcb12f763124fcda402d3720c6a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a05667bcb12f763124fcda402d3720c6a"></a>
+template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 > </td></tr>
+<tr class="memitem:a05667bcb12f763124fcda402d3720c6a"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)</td></tr>
+<tr class="separator:a05667bcb12f763124fcda402d3720c6a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memTemplParams" colspan="2"><a class="anchor" id="a16dc40ac2badc8b36b8cc70f92801b76"></a>
+template<typename Key , typename T , typename HashCompare , typename A > </td></tr>
+<tr class="memitem:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (concurrent_hash_map< Key, T, HashCompare, A > &a, concurrent_hash_map< Key, T, HashCompare, A > &b)</td></tr>
+<tr class="separator:a16dc40ac2badc8b36b8cc70f92801b76"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a79ecee2d23f2486c03e720ab9e3ac36c"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:a79ecee2d23f2486c03e720ab9e3ac36c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ab7258c4acabadf94d03dc62e29396ea0"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab7258c4acabadf94d03dc62e29396ea0"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:ab7258c4acabadf94d03dc62e29396ea0"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:ab7258c4acabadf94d03dc62e29396ea0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1523d0389a8cbda80c17ae4f45caa3a6"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<</b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:a1523d0389a8cbda80c17ae4f45caa3a6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a78cfed58bfde865b68859beb54805019"><td class="memTemplParams" colspan="2"><a class="anchor" id="a78cfed58bfde865b68859beb54805019"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:a78cfed58bfde865b68859beb54805019"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator></b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:a78cfed58bfde865b68859beb54805019"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac6009f009cd331952d8944bcc9733375"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac6009f009cd331952d8944bcc9733375"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:ac6009f009cd331952d8944bcc9733375"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator<=</b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:ac6009f009cd331952d8944bcc9733375"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa0d82e59919a1f2c7caa06d061b2480f"></a>
+template<typename T , class A1 , class A2 > </td></tr>
+<tr class="memitem:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator>=</b> (const <a class="el" href="a00053.html">concurrent_vector</a>< T, A1 > &a, const <a class="el" href="a00053.html">concurrent_vector</a>< T, A2 > &b)</td></tr>
+<tr class="separator:aa0d82e59919a1f2c7caa06d061b2480f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4cd91084f08db8c2d23c6a0362e0c441"></a>
+template<typename T , class A > </td></tr>
+<tr class="memitem:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00053.html">concurrent_vector</a>< T, A > &a, <a class="el" href="a00053.html">concurrent_vector</a>< T, A > &b)</td></tr>
+<tr class="separator:a4cd91084f08db8c2d23c6a0362e0c441"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a17323bcd620e6e3e4091e2e5568f97d3"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00129.html">scalable_allocator</a>< T > &, const <a class="el" href="a00129.html">scalable_allocator</a>< U > &)</td></tr>
+<tr class="separator:a17323bcd620e6e3e4091e2e5568f97d3"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplParams" colspan="2"><a class="anchor" id="af3fb987bb18adf8384db9c9713b81588"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:af3fb987bb18adf8384db9c9713b81588"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00129.html">scalable_allocator</a>< T > &, const <a class="el" href="a00129.html">scalable_allocator</a>< U > &)</td></tr>
+<tr class="separator:af3fb987bb18adf8384db9c9713b81588"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aaef1698b222ba9312ab24dcdcd98bbd8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaef1698b222ba9312ab24dcdcd98bbd8"></a>
+bool </td><td class="memItemRight" valign="bottom"><b>is_current_task_group_canceling</b> ()</td></tr>
+<tr class="separator:aaef1698b222ba9312ab24dcdcd98bbd8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6c291402bcc0ba9263cf08b76faf7a2c"></a>
+template<class F > </td></tr>
+<tr class="memitem:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="a00154.html">task_handle</a>< F > </td><td class="memTemplItemRight" valign="bottom"><b>make_task</b> (const F &f)</td></tr>
+<tr class="separator:a6c291402bcc0ba9263cf08b76faf7a2c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memTemplParams" colspan="2"><a class="anchor" id="af1595d1bfc4f7be923c17b4ee5c556ae"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00159.html">tbb_allocator</a>< T > &, const <a class="el" href="a00159.html">tbb_allocator</a>< U > &)</td></tr>
+<tr class="separator:af1595d1bfc4f7be923c17b4ee5c556ae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a82ff968904aaa1bb0e2152f590c47be6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a82ff968904aaa1bb0e2152f590c47be6"></a>
+template<typename T , typename U > </td></tr>
+<tr class="memitem:a82ff968904aaa1bb0e2152f590c47be6"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00159.html">tbb_allocator</a>< T > &, const <a class="el" href="a00159.html">tbb_allocator</a>< U > &)</td></tr>
+<tr class="separator:a82ff968904aaa1bb0e2152f590c47be6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bf465e2f6730e2cea0c9531bec9fb2f"></a>
+template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2> </td></tr>
+<tr class="memitem:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="a00177.html">zero_allocator</a>< T1, B1 > &a, const <a class="el" href="a00177.html">zero_allocator</a>< T2, B2 > &b)</td></tr>
+<tr class="separator:a7bf465e2f6730e2cea0c9531bec9fb2f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a606762cf7c614cb5a1631955938737cd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a606762cf7c614cb5a1631955938737cd"></a>
+template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2> </td></tr>
+<tr class="memitem:a606762cf7c614cb5a1631955938737cd"><td class="memTemplItemLeft" align="right" valign="top">bool </td><td class="memTemplItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="a00177.html">zero_allocator</a>< T1, B1 > &a, const <a class="el" href="a00177.html">zero_allocator</a>< T2, B2 > &b)</td></tr>
+<tr class="separator:a606762cf7c614cb5a1631955938737cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">TBB_runtime_interface_version</a> ()</td></tr>
+<tr class="memdesc:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="mdescLeft"> </td><td class="mdescRight">The function returns the interface version of the TBB shared library being used.  <a href="#ade8a8bc300d5ef09d38cbfb8baff5cd2">More...</a><br/></td></tr>
+<tr class="separator:ade8a8bc300d5ef09d38cbfb8baff5cd2"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a467930903ce9b7c240c4ad8f0fb8ae3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a467930903ce9b7c240c4ad8f0fb8ae3d"></a>
+void </td><td class="memItemRight" valign="bottom"><b>swap</b> (<a class="el" href="a00164.html">internal::tbb_thread_v3</a> &t1, <a class="el" href="a00164.html">internal::tbb_thread_v3</a> &t2) __TBB_NOEXCEPT(true)</td></tr>
+<tr class="separator:a467930903ce9b7c240c4ad8f0fb8ae3d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ac41903d6b80e61bd6c605412e7820e08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac41903d6b80e61bd6c605412e7820e08"></a>
+void </td><td class="memItemRight" valign="bottom"><b>move</b> (<a class="el" href="a00240.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a> &t1, <a class="el" href="a00240.html#a7805ca254302ff88b566f7dcde7e56b0">tbb_thread</a> &t2)</td></tr>
+<tr class="separator:ac41903d6b80e61bd6c605412e7820e08"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa037c1f149250d61cd2fad4541a5e6cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa037c1f149250d61cd2fad4541a5e6cb"></a>
+<a class="el" href="a00085.html">tick_count::interval_t</a> </td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="a00170.html">tick_count</a> &t1, const <a class="el" href="a00170.html">tick_count</a> &t0)</td></tr>
+<tr class="separator:aa037c1f149250d61cd2fad4541a5e6cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_do</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00002.html">parallel_do Body</a>. </p>
+</div></td></tr>
+<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
+<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga533f6732498ade8634a9470cbf89192d">parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
+<tr class="memdesc:ga533f6732498ade8634a9470cbf89192d"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work.  <a href="a00255.html#ga533f6732498ade8634a9470cbf89192d">More...</a><br/></td></tr>
+<tr class="separator:ga533f6732498ade8634a9470cbf89192d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga135f72b966cd78a14f6aa1ddf0480701"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_do</b> (Range &rng, const Body &body)</td></tr>
+<tr class="separator:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaaf7a7c53d20fef24acaa2fe5cc36b45"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_do</b> (const Range &rng, const Body &body)</td></tr>
+<tr class="separator:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
+<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7db29bc10d81eddc85854256ffc723c0">parallel_do</a> (Iterator first, Iterator last, const Body &body, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga7db29bc10d81eddc85854256ffc723c0"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context.  <a href="a00255.html#ga7db29bc10d81eddc85854256ffc723c0">More...</a><br/></td></tr>
+<tr class="separator:ga7db29bc10d81eddc85854256ffc723c0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga137e8ff95a0c69e747f4f4f1383a2677"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_do</b> (Range &rng, const Body &body, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="separator:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga40258ae16882a49d5d579407c88b3281"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga40258ae16882a49d5d579407c88b3281"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga40258ae16882a49d5d579407c88b3281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_do</b> (const Range &rng, const Body &body, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="separator:ga40258ae16882a49d5d579407c88b3281"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_for</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00003.html">parallel_for Body</a>. </p>
+</div></td></tr>
+<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaa8444c29dc4d2e527a1036717d109aef">parallel_for</a> (const Range &range, const Body &body)</td></tr>
+<tr class="memdesc:gaa8444c29dc4d2e527a1036717d109aef"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner.  <a href="a00255.html#gaa8444c29dc4d2e527a1036717d109aef">More...</a><br/></td></tr>
+<tr class="separator:gaa8444c29dc4d2e527a1036717d109aef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner.  <a href="a00255.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">More...</a><br/></td></tr>
+<tr class="separator:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gad6c4b06f96ae33cefe78235841791902">parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gad6c4b06f96ae33cefe78235841791902"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner.  <a href="a00255.html#gad6c4b06f96ae33cefe78235841791902">More...</a><br/></td></tr>
+<tr class="separator:gad6c4b06f96ae33cefe78235841791902"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaf3d39e372d825bf54283b5ceafa90057">parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gaf3d39e372d825bf54283b5ceafa90057"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner.  <a href="a00255.html#gaf3d39e372d825bf54283b5ceafa90057">More...</a><br/></td></tr>
+<tr class="separator:gaf3d39e372d825bf54283b5ceafa90057"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga93a621202db94665144de38c0b09bdad">parallel_for</a> (const Range &range, const Body &body, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga93a621202db94665144de38c0b09bdad"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner and user-supplied context.  <a href="a00255.html#ga93a621202db94665144de38c0b09bdad">More...</a><br/></td></tr>
+<tr class="separator:ga93a621202db94665144de38c0b09bdad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context.  <a href="a00255.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">More...</a><br/></td></tr>
+<tr class="separator:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga4c9935d8710a5cf786a92f3522ab2976">parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga4c9935d8710a5cf786a92f3522ab2976"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner and user-supplied context.  <a href="a00255.html#ga4c9935d8710a5cf786a92f3522ab2976">More...</a><br/></td></tr>
+<tr class="separator:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner and user-supplied context.  <a href="a00255.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">More...</a><br/></td></tr>
+<tr class="separator:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_for_each</div></td></tr>
+<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplParams" colspan="2">template<typename InputIterator , typename Function > </td></tr>
+<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga96bf42caaec779e413e5a2396c1e301c"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from [first, last) interval using user-supplied context.  <a href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">More...</a><br/></td></tr>
+<tr class="separator:ga96bf42caaec779e413e5a2396c1e301c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga72131543fd218b67dbb048b768d534e4"><td class="memTemplParams" colspan="2">template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga72131543fd218b67dbb048b768d534e4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga72131543fd218b67dbb048b768d534e4">parallel_for_each</a> (Range &rng, const Function &f, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga72131543fd218b67dbb048b768d534e4"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from rng using user-supplied context.  <a href="a00255.html#ga72131543fd218b67dbb048b768d534e4">More...</a><br/></td></tr>
+<tr class="separator:ga72131543fd218b67dbb048b768d534e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad7d0702d16fbd7554584ab735eed39ba"><td class="memTemplParams" colspan="2">template<typename Range , typename Function > </td></tr>
+<tr class="memitem:gad7d0702d16fbd7554584ab735eed39ba"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gad7d0702d16fbd7554584ab735eed39ba">parallel_for_each</a> (const Range &rng, const Function &f, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:gad7d0702d16fbd7554584ab735eed39ba"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from const rng user-supplied context.  <a href="a00255.html#gad7d0702d16fbd7554584ab735eed39ba">More...</a><br/></td></tr>
+<tr class="separator:gad7d0702d16fbd7554584ab735eed39ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaef59e9baf9141a19c99a291e4532bd98"></a>
+template<typename InputIterator , typename Function > </td></tr>
+<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaef59e9baf9141a19c99a291e4532bd98">parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f)</td></tr>
+<tr class="memdesc:gaef59e9baf9141a19c99a291e4532bd98"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:gaef59e9baf9141a19c99a291e4532bd98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5868cd01f2126b139ab5809f64632db1"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5868cd01f2126b139ab5809f64632db1"></a>
+template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga5868cd01f2126b139ab5809f64632db1"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5868cd01f2126b139ab5809f64632db1">parallel_for_each</a> (Range &rng, const Function &f)</td></tr>
+<tr class="memdesc:ga5868cd01f2126b139ab5809f64632db1"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:ga5868cd01f2126b139ab5809f64632db1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga33463c8b0d0104cf9d9e0f9cb3c0b26b"></a>
+template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga33463c8b0d0104cf9d9e0f9cb3c0b26b">parallel_for_each</a> (const Range &rng, const Function &f)</td></tr>
+<tr class="memdesc:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_invoke</div></td></tr>
+<tr class="memitem:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memTemplParams" colspan="2">template<typename F0 , typename F1 , typename... F> </td></tr>
+<tr class="memitem:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3c6fe4bf1076c82132e666fb545451cd">parallel_invoke</a> (F0 &&f0, F1 &&f1, F &&...f)</td></tr>
+<tr class="memdesc:ga3c6fe4bf1076c82132e666fb545451cd"><td class="mdescLeft"> </td><td class="mdescRight">Executes a list of tasks in parallel and waits for all tasks to complete.  <a href="a00255.html#ga3c6fe4bf1076c82132e666fb545451cd">More...</a><br/></td></tr>
+<tr class="separator:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga14459dcbcd631194df803b155a7f610b"></a>
+template<typename F0 , typename F1 > </td></tr>
+<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga14459dcbcd631194df803b155a7f610b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaea3f3a8883128afb596a963e856277f"></a>
+template<typename F0 , typename F1 , typename F2 > </td></tr>
+<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gaaea3f3a8883128afb596a963e856277f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga74932e64ede5047387108fa45f1af96f"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
+<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga74932e64ede5047387108fa45f1af96f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaefc1ba8f73cbdd094575f6db454fc6b5"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
+<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga3f02dfbb94238b2cf2ef8f20844b03af"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
+<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad8c1220bbd59e3b8e7bbcdcfdda8047e"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
+<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5ee83a66397ee0b15c77756cb5e5168e"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
+<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1af92ebd06f6cdf5ee668b1fe62657bd"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
+<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga65846bc3b2f63ed1448b6cdfea9e1c80"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
+<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga6b1c36ece1d3950677dd01ef0863648c"></a>
+template<typename F0 , typename F1 > </td></tr>
+<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1)</td></tr>
+<tr class="separator:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaa979656a4c207782b74800c6c42982f5"></a>
+template<typename F0 , typename F1 , typename F2 > </td></tr>
+<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2)</td></tr>
+<tr class="separator:gaa979656a4c207782b74800c6c42982f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga219cb8061b7cf5454c0bc4d67cff1e34"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
+<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)</td></tr>
+<tr class="separator:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8319ee980cd7cfb03f12ffc2a5ea4895"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
+<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)</td></tr>
+<tr class="separator:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga295daf6f7394fba29a979b914be09fc6"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
+<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)</td></tr>
+<tr class="separator:ga295daf6f7394fba29a979b914be09fc6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7652a01622a2f28df1e0edf40b691190"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
+<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)</td></tr>
+<tr class="separator:ga7652a01622a2f28df1e0edf40b691190"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="gadd8826371866c58e41dee3546c35d2c8"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
+<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)</td></tr>
+<tr class="separator:gadd8826371866c58e41dee3546c35d2c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaeca8b72507d67dd023dae728bdc89896"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
+<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)</td></tr>
+<tr class="separator:gaeca8b72507d67dd023dae728bdc89896"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga17c9f95fac24b2b7b62f325f511ee7be"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
+<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)</td></tr>
+<tr class="separator:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_reduce</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00004.html">parallel_reduce Body</a>. </p>
+</div></td></tr>
+<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">parallel_reduce</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="a00255.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">More...</a><br/></td></tr>
+<tr class="separator:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="a00255.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">More...</a><br/></td></tr>
+<tr class="separator:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3011e7266fb1e43d307060fe75be2c6e">parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga3011e7266fb1e43d307060fe75be2c6e"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="a00255.html#ga3011e7266fb1e43d307060fe75be2c6e">More...</a><br/></td></tr>
+<tr class="separator:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga6e83e121490df24fa5893b14e68f5e2a">parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga6e83e121490df24fa5893b14e68f5e2a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="a00255.html#ga6e83e121490df24fa5893b14e68f5e2a">More...</a><br/></td></tr>
+<tr class="separator:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gac57281bea03450ccb2d098ee8c7ab697">parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:gac57281bea03450ccb2d098ee8c7ab697"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="a00255.html#gac57281bea03450ccb2d098ee8c7ab697">More...</a><br/></td></tr>
+<tr class="separator:gac57281bea03450ccb2d098ee8c7ab697"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5f3ebf50ab7f5e53fd936817c866f7be">parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="a00255.html#ga5f3ebf50ab7f5e53fd936817c866f7be">More...</a><br/></td></tr>
+<tr class="separator:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5df3f3a9618fd35931107819cb43fce6">parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga5df3f3a9618fd35931107819cb43fce6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="a00255.html#ga5df3f3a9618fd35931107819cb43fce6">More...</a><br/></td></tr>
+<tr class="separator:ga5df3f3a9618fd35931107819cb43fce6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga1c9b66fa25cadee9ca3bff75a6609b05">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
+<tr class="memdesc:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="a00255.html#ga1c9b66fa25cadee9ca3bff75a6609b05">More...</a><br/></td></tr>
+<tr class="separator:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="a00255.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">More...</a><br/></td></tr>
+<tr class="separator:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga56e6b6e2eee521f532c00d855280be69">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga56e6b6e2eee521f532c00d855280be69"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="a00255.html#ga56e6b6e2eee521f532c00d855280be69">More...</a><br/></td></tr>
+<tr class="separator:ga56e6b6e2eee521f532c00d855280be69"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="a00255.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">More...</a><br/></td></tr>
+<tr class="separator:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga518ef2653004d60319bdfc1c6bce86b6">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga518ef2653004d60319bdfc1c6bce86b6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="a00255.html#ga518ef2653004d60319bdfc1c6bce86b6">More...</a><br/></td></tr>
+<tr class="separator:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga24ba50caf5a7c32cbd38912508cb69a4">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="a00255.html#ga24ba50caf5a7c32cbd38912508cb69a4">More...</a><br/></td></tr>
+<tr class="separator:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga367a8e77c4dac3f8764785afdc6c9299">parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga367a8e77c4dac3f8764785afdc6c9299"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="a00255.html#ga367a8e77c4dac3f8764785afdc6c9299">More...</a><br/></td></tr>
+<tr class="separator:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">parallel_deterministic_reduce</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="a00255.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">More...</a><br/></td></tr>
+<tr class="separator:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga361201f81b4ec7b86f81b579d2db647a">parallel_deterministic_reduce</a> (const Range &range, Body &body, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga361201f81b4ec7b86f81b579d2db647a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="a00255.html#ga361201f81b4ec7b86f81b579d2db647a">More...</a><br/></td></tr>
+<tr class="separator:ga361201f81b4ec7b86f81b579d2db647a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7f69e6a632acb51ed26a43ebd331f349">parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
+<tr class="memdesc:ga7f69e6a632acb51ed26a43ebd331f349"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="a00255.html#ga7f69e6a632acb51ed26a43ebd331f349">More...</a><br/></td></tr>
+<tr class="separator:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga69b4eea059a62cbbf409cbad02b70bfa">parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, <a class="el" href="a00153.html">task_group_context</a> &context)</td></tr>
+<tr class="memdesc:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="a00255.html#ga69b4eea059a62cbbf409cbad02b70bfa">More...</a><br/></td></tr>
+<tr class="separator:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_scan</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00006.html">parallel_scan Body</a>. </p>
+</div></td></tr>
+<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gae7eaaf124471a6c603b28fc925e8fbbb">parallel_scan</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with default partitioner.  <a href="a00255.html#gae7eaaf124471a6c603b28fc925e8fbbb">More...</a><br/></td></tr>
+<tr class="separator:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7ddacf5e49f1bea9b67803f2d0f57531">parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with simple_partitioner.  <a href="a00255.html#ga7ddacf5e49f1bea9b67803f2d0f57531">More...</a><br/></td></tr>
+<tr class="separator:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3548041731b7fa14f30f155541ceebb9">parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga3548041731b7fa14f30f155541ceebb9"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with auto_partitioner.  <a href="a00255.html#ga3548041731b7fa14f30f155541ceebb9">More...</a><br/></td></tr>
+<tr class="separator:ga3548041731b7fa14f30f155541ceebb9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr><td colspan="2"><div class="groupHeader">parallel_sort</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p>See also requirements on <a class="el" href="a00007.html">iterators for parallel_sort</a>. </p>
+</div></td></tr>
+<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator , typename Compare > </td></tr>
+<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
+<tr class="memdesc:gabdc90813499f91d3e32298cd6dc2fe45"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">More...</a><br/></td></tr>
+<tr class="separator:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator > </td></tr>
+<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga73b58ac9249f49587d0b081c152af551">parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
+<tr class="memdesc:ga73b58ac9249f49587d0b081c152af551"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="a00255.html#ga73b58ac9249f49587d0b081c152af551">More...</a><br/></td></tr>
+<tr class="separator:ga73b58ac9249f49587d0b081c152af551"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memTemplParams" colspan="2">template<typename Range , typename Compare > </td></tr>
+<tr class="memitem:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga61ce8ba64868c5c15f9d98840193b9bf">parallel_sort</a> (Range &rng, const Compare &comp)</td></tr>
+<tr class="memdesc:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in rng using the given comparator.  <a href="a00255.html#ga61ce8ba64868c5c15f9d98840193b9bf">More...</a><br/></td></tr>
+<tr class="separator:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga541b2fd91e88842a7b823161107779e9"><td class="memTemplParams" colspan="2">template<typename Range , typename Compare > </td></tr>
+<tr class="memitem:ga541b2fd91e88842a7b823161107779e9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga541b2fd91e88842a7b823161107779e9">parallel_sort</a> (const Range &rng, const Compare &comp)</td></tr>
+<tr class="memdesc:ga541b2fd91e88842a7b823161107779e9"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in const rng using the given comparator.  <a href="a00255.html#ga541b2fd91e88842a7b823161107779e9">More...</a><br/></td></tr>
+<tr class="separator:ga541b2fd91e88842a7b823161107779e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memTemplParams" colspan="2">template<typename Range > </td></tr>
+<tr class="memitem:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaf1fb3ae3aab1213cb9bcf56e30c164bb">parallel_sort</a> (Range &rng)</td></tr>
+<tr class="memdesc:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in rng with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="a00255.html#gaf1fb3ae3aab1213cb9bcf56e30c164bb">More...</a><br/></td></tr>
+<tr class="separator:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memTemplParams" colspan="2">template<typename Range > </td></tr>
+<tr class="memitem:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga60bbc3d7699f09618bd8b5114e4277cb">parallel_sort</a> (const Range &rng)</td></tr>
+<tr class="memdesc:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in const rng with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="a00255.html#ga60bbc3d7699f09618bd8b5114e4277cb">More...</a><br/></td></tr>
+<tr class="separator:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga8f176cdc232a6e5907456656a24983a8">parallel_sort</a> (T *begin, T *end)</td></tr>
+<tr class="memdesc:ga8f176cdc232a6e5907456656a24983a8"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>  <a href="a00255.html#ga8f176cdc232a6e5907456656a24983a8">More...</a><br/></td></tr>
+<tr class="separator:ga8f176cdc232a6e5907456656a24983a8"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The namespace tbb contains all components of the library. </p>
+</div><h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3a"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb::memory_semantics</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Specifies memory semantics. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a"></a>full_fence</em> </td><td class="fielddoc">
+<p>Sequential consistency. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418"></a>acquire</em> </td><td class="fielddoc">
+<p>Acquire. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632"></a>release</em> </td><td class="fielddoc">
+<p>Release. </p>
+</td></tr>
+<tr><td class="fieldname"><em><a class="anchor" id="adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5"></a>relaxed</em> </td><td class="fielddoc">
+<p>No ordering. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ade8a8bc300d5ef09d38cbfb8baff5cd2"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC tbb::TBB_runtime_interface_version </td>
+          <td>(</td>
+          <td class="paramname">)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The function returns the interface version of the TBB shared library being used. </p>
+<p>The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time. </p>
+
+</div>
+</div>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00242.html b/doc/html/a00242.html
deleted file mode 100644
index 58862db..0000000
--- a/doc/html/a00242.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">__TBB_malloc_proxy_caller Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__TBB_malloc_proxy_caller</b>() (defined in <a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a>)</td><td class="entry"><a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00243.html b/doc/html/a00243.html
deleted file mode 100644
index 5579f71..0000000
--- a/doc/html/a00243.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00219.html">rml</a></li><li class="navelem"><a class="el" href="a00076.html">MemPoolPolicy</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">rml::MemPoolPolicy Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00076.html">rml::MemPoolPolicy</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fixedPool</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>granularity</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>keepAllMemory</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>MemPoolPolicy</b>(rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false) (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pAlloc</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pFree</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reserved</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>TBBMALLOC_POOL_VERSION</b> enum value (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>version</b> (defined in <a class="el" href="a00076.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00076.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00244.html b/doc/html/a00244.html
deleted file mode 100644
index 0ab255f..0000000
--- a/doc/html/a00244.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00014.html">aligned_space</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::aligned_space< T, N > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00014.html">tbb::aligned_space< T, N ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">begin</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::aligned_space< T, N ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00014.html#ae95620e1159984a2670bd418ed4748d0">end</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::aligned_space< T, N ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00245.html b/doc/html/a00245.html
deleted file mode 100644
index c157538..0000000
--- a/doc/html/a00245.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00015.html">atomic</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::atomic< T > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00015.html">tbb::atomic< T ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>atomic</b>()=default (defined in <a class="el" href="a00015.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00015.html">tbb::atomic< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>atomic</b>(T arg) (defined in <a class="el" href="a00015.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00015.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(T rhs) (defined in <a class="el" href="a00015.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00015.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const atomic< T > &rhs) (defined in <a class="el" href="a00015.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00015.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00246.html b/doc/html/a00246.html
deleted file mode 100644
index 3ab7f20..0000000
--- a/doc/html/a00246.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00016.html">atomic< void * ></a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::atomic< void * > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00016.html">tbb::atomic< void * ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>atomic</b>()=default (defined in <a class="el" href="a00016.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::atomic< void * ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>atomic</b>(void *arg) (defined in <a class="el" href="a00016.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(void *rhs) (defined in <a class="el" href="a00016.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const atomic< void * > &rhs) (defined in <a class="el" href="a00016.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00247.html b/doc/html/a00247.html
deleted file mode 100644
index 247397d..0000000
--- a/doc/html/a00247.html
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00021.html">blocked_range</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::blocked_range< Value > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00021.html">tbb::blocked_range< Value ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2">begin</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00021.html#aad176ab2cbd0bd73c3c2065761af3ccc">blocked_range</a>()</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#a49a97576004711b7159170fcaf488e4e">blocked_range</a>(Value begin_, Value end_, size_type grainsize_=1)</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00021.html#a75cae12286f4d5492970ea630a9783b9">blocked_range</a>(blocked_range &r, split)</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range2d</b> (defined in <a class="el" href="a00021.html">tbb::blocked_range< Value ></a>)</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range3d</b> (defined in <a class="el" href="a00021.html">tbb::blocked_range< Value ></a>)</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> typedef</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00021.html#a59dec03416b3fefbf69600f798177710">empty</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6">end</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00021.html#ab408f3cf90c85fa9203df5641a2f9bb1">grainsize</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00021.html#a347ef8caa40edca3b7f475f182281140">size</a>() const </td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> typedef</td><td class="entry"><a class="el" href="a00021.html">tbb::blocked_range< Value ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00248.html b/doc/html/a00248.html
deleted file mode 100644
index e79e50d..0000000
--- a/doc/html/a00248.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00022.html">blocked_range2d</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::blocked_range2d< RowValue, ColValue > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span cla [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range2d</b>(blocked_range2d &r, split) (defined in <a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>col_range_type</b> typedef (defined in <a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00022.html#af3bccfaf90126b285491096f78ca9473">cols</a>() const </td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00022.html#a5805972c8c41b2681d286f9c9771cf52">empty</a>() const </td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00022.html#ac84c6cc2ff8b0974ffa719fed804f586">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00022.html#ada609b296a9af0591cc34761b8538100">row_range_type</a> typedef</td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00022.html#a4f7299e74c40df57dee2433c07ce65ae">rows</a>() const </td><td class="entry"><a class="el" href="a00022.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00249.html b/doc/html/a00249.html
deleted file mode 100644
index 7e2d4af..0000000
--- a/doc/html/a00249.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00023.html">blocked_range3d</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::blocked_range3d< PageValue, RowValue, ColValue > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a0002 [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range3d</b>(blocked_range3d &r, split) (defined in <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>col_range_type</b> typedef (defined in <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00023.html#a308d7089a1d53ff26770a7040ed817cd">cols</a>() const </td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00023.html#aea992e0cd3d105f964a633b1a0a1a05f">empty</a>() const </td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00023.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00023.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a> typedef</td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00023.html#a5b794fd53ba92106aeafa4eed85731d4">pages</a>() const </td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>row_range_type</b> typedef (defined in <a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00023.html#aeac1def585af81467573f30ebb42cb4f">rows</a>() const </td><td class="entry"><a class="el" href="a00023.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00250.html b/doc/html/a00250.html
deleted file mode 100644
index 12ffe68..0000000
--- a/doc/html/a00250.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00029.html">cache_aligned_allocator</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< T > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00029.html#a99d05096f80877849cb31d80247e0f85">allocate</a>(size_type n, const void *hint=0)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cache_aligned_allocator</b>() (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cache_aligned_allocator</b>(const cache_aligned_allocator &) (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>cache_aligned_allocator</b>(const cache_aligned_allocator< U > &) (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00029.html#ab316f80a66b991801b4ec4ea88b852d9">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00029.html#a7f7310e046c4b6b8618864de8e27a471">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00029.html#af2fd054d055403d4ea669fd3af661cc8">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00029.html#a4b945b3180ea3dfe16dfa048f4591c6d">max_size</a>() const </td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00251.html b/doc/html/a00251.html
deleted file mode 100644
index 2dc21d3..0000000
--- a/doc/html/a00251.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00029.html">cache_aligned_allocator</a></li><li class="navelem"><a class="el" href="a00104.html">rebind</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< T >::rebind< U > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00104.html">tbb::cache_aligned_allocator< T >::rebind< U ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00104.html">tbb::cache_aligned_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::cache_aligned_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00252.html b/doc/html/a00252.html
deleted file mode 100644
index 78321c1..0000000
--- a/doc/html/a00252.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< void > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00253.html b/doc/html/a00253.html
deleted file mode 100644
index c8b1fe2..0000000
--- a/doc/html/a00253.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a></li><li class="navelem"><a class="el" href="a00096.html">rebind</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::cache_aligned_allocator< void >::rebind< U > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00096.html">tbb::cache_aligned_allocator< void >::rebind< U ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00096.html">tbb::cache_aligned_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00096.html">tbb::cache_aligned_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00254.html b/doc/html/a00254.html
deleted file mode 100644
index 795138c..0000000
--- a/doc/html/a00254.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">combinable</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::combinable< T > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00032.html">tbb::combinable< T ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>combinable</b>() (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combinable</b>(finit _finit) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>combinable</b>(const combinable &other) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combine</b>(combine_func_t f_combine) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>combine_each</b>(combine_func_t f_combine) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>local</b>() (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>local</b>(bool &exists) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const combinable &other) (defined in <a class="el" href="a00032.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00032.html#a52f00cf262d768048db72ab73c8f3ca4">~combinable</a>()</td><td class="entry"><a class="el" href="a00032.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00255.html b/doc/html/a00255.html
index b077bd2..05cb2a4 100644
--- a/doc/html/a00255.html
+++ b/doc/html/a00255.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Algorithms</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,36 +20,1994 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00148.html">tbb_hash_compare</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::tbb_hash_compare< Key > Member List</div>  </div>
+<div class="title">Algorithms</div>  </div>
 </div><!--header-->
 <div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A range over which to iterate.  <a href="a00024.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 2-dimensional range that models the Range concept.  <a href="a00025.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A 3-dimensional range that models the Range concept.  <a href="a00026.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00108.html">tbb::pre_scan_tag</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the initial scan is being performed.  <a href="a00108.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00064.html">tbb::final_scan_tag</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Used to indicate that the final scan is being performed.  <a href="a00064.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a stream, with optional addition of more work.  <a href="a00106.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00062.html">tbb::filter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline.  <a href="a00062.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A stage in a pipeline served by a user thread.  <a href="a00165.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00107.html">tbb::pipeline</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A processing pipeline that applies filters to items.  <a href="a00107.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_do</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp751e5e5b1749802e9339f8ae6e071bc7"></a>See also requirements on <a class="el" href="a00002.html">parallel_do Body</a>. </p>
+</td></tr>
+<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
+<tr class="memitem:ga533f6732498ade8634a9470cbf89192d"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga533f6732498ade8634a9470cbf89192d">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body)</td></tr>
+<tr class="memdesc:ga533f6732498ade8634a9470cbf89192d"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work.  <a href="#ga533f6732498ade8634a9470cbf89192d">More...</a><br/></td></tr>
+<tr class="separator:ga533f6732498ade8634a9470cbf89192d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplParams" colspan="2">template<typename Iterator , typename Body > </td></tr>
+<tr class="memitem:ga7db29bc10d81eddc85854256ffc723c0"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7db29bc10d81eddc85854256ffc723c0">tbb::parallel_do</a> (Iterator first, Iterator last, const Body &body, task_group_context &context)</td></tr>
+<tr class="memdesc:ga7db29bc10d81eddc85854256ffc723c0"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over a range, with optional addition of more work and user-supplied context.  <a href="#ga7db29bc10d81eddc85854256ffc723c0">More...</a><br/></td></tr>
+<tr class="separator:ga7db29bc10d81eddc85854256ffc723c0"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga135f72b966cd78a14f6aa1ddf0480701"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_do</b> (Range &rng, const Body &body)</td></tr>
+<tr class="separator:ga135f72b966cd78a14f6aa1ddf0480701"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaaf7a7c53d20fef24acaa2fe5cc36b45"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_do</b> (const Range &rng, const Body &body)</td></tr>
+<tr class="separator:gaaaf7a7c53d20fef24acaa2fe5cc36b45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga137e8ff95a0c69e747f4f4f1383a2677"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_do</b> (Range &rng, const Body &body, task_group_context &context)</td></tr>
+<tr class="separator:ga137e8ff95a0c69e747f4f4f1383a2677"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga40258ae16882a49d5d579407c88b3281"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga40258ae16882a49d5d579407c88b3281"></a>
+template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga40258ae16882a49d5d579407c88b3281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_do</b> (const Range &rng, const Body &body, task_group_context &context)</td></tr>
+<tr class="separator:ga40258ae16882a49d5d579407c88b3281"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_for</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp020f371880777e82219a69f8a512e874"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00003.html">parallel_for Body</a>. </p>
+</td></tr>
+<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaa8444c29dc4d2e527a1036717d109aef"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaa8444c29dc4d2e527a1036717d109aef">tbb::parallel_for</a> (const Range &range, const Body &body)</td></tr>
+<tr class="memdesc:gaa8444c29dc4d2e527a1036717d109aef"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner.  <a href="#gaa8444c29dc4d2e527a1036717d109aef">More...</a><br/></td></tr>
+<tr class="separator:gaa8444c29dc4d2e527a1036717d109aef"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner.  <a href="#ga9722d2bc7e5edb4fae9f3b55268a1ecc">More...</a><br/></td></tr>
+<tr class="separator:ga9722d2bc7e5edb4fae9f3b55268a1ecc"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gad6c4b06f96ae33cefe78235841791902"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gad6c4b06f96ae33cefe78235841791902">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gad6c4b06f96ae33cefe78235841791902"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner.  <a href="#gad6c4b06f96ae33cefe78235841791902">More...</a><br/></td></tr>
+<tr class="separator:gad6c4b06f96ae33cefe78235841791902"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaf3d39e372d825bf54283b5ceafa90057"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaf3d39e372d825bf54283b5ceafa90057">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gaf3d39e372d825bf54283b5ceafa90057"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner.  <a href="#gaf3d39e372d825bf54283b5ceafa90057">More...</a><br/></td></tr>
+<tr class="separator:gaf3d39e372d825bf54283b5ceafa90057"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga93a621202db94665144de38c0b09bdad"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga93a621202db94665144de38c0b09bdad">tbb::parallel_for</a> (const Range &range, const Body &body, task_group_context &context)</td></tr>
+<tr class="memdesc:ga93a621202db94665144de38c0b09bdad"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with default partitioner and user-supplied context.  <a href="#ga93a621202db94665144de38c0b09bdad">More...</a><br/></td></tr>
+<tr class="separator:ga93a621202db94665144de38c0b09bdad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5b7fab9d6ffe7a9345e9349a5a007bd4">tbb::parallel_for</a> (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with simple partitioner and user-supplied context.  <a href="#ga5b7fab9d6ffe7a9345e9349a5a007bd4">More...</a><br/></td></tr>
+<tr class="separator:ga5b7fab9d6ffe7a9345e9349a5a007bd4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga4c9935d8710a5cf786a92f3522ab2976">tbb::parallel_for</a> (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga4c9935d8710a5cf786a92f3522ab2976"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with auto_partitioner and user-supplied context.  <a href="#ga4c9935d8710a5cf786a92f3522ab2976">More...</a><br/></td></tr>
+<tr class="separator:ga4c9935d8710a5cf786a92f3522ab2976"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga62b1a9ac304ba1eb4f87ab8cc18dd281">tbb::parallel_for</a> (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration over range with affinity_partitioner and user-supplied context.  <a href="#ga62b1a9ac304ba1eb4f87ab8cc18dd281">More...</a><br/></td></tr>
+<tr class="separator:ga62b1a9ac304ba1eb4f87ab8cc18dd281"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_for_each</h2></td></tr>
+<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplParams" colspan="2">template<typename InputIterator , typename Function > </td></tr>
+<tr class="memitem:ga96bf42caaec779e413e5a2396c1e301c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f, task_group_context &context)</td></tr>
+<tr class="memdesc:ga96bf42caaec779e413e5a2396c1e301c"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from [first, last) interval using user-supplied context.  <a href="#ga96bf42caaec779e413e5a2396c1e301c">More...</a><br/></td></tr>
+<tr class="separator:ga96bf42caaec779e413e5a2396c1e301c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga72131543fd218b67dbb048b768d534e4"><td class="memTemplParams" colspan="2">template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga72131543fd218b67dbb048b768d534e4"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga72131543fd218b67dbb048b768d534e4">tbb::parallel_for_each</a> (Range &rng, const Function &f, task_group_context &context)</td></tr>
+<tr class="memdesc:ga72131543fd218b67dbb048b768d534e4"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from rng using user-supplied context.  <a href="#ga72131543fd218b67dbb048b768d534e4">More...</a><br/></td></tr>
+<tr class="separator:ga72131543fd218b67dbb048b768d534e4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad7d0702d16fbd7554584ab735eed39ba"><td class="memTemplParams" colspan="2">template<typename Range , typename Function > </td></tr>
+<tr class="memitem:gad7d0702d16fbd7554584ab735eed39ba"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gad7d0702d16fbd7554584ab735eed39ba">tbb::parallel_for_each</a> (const Range &rng, const Function &f, task_group_context &context)</td></tr>
+<tr class="memdesc:gad7d0702d16fbd7554584ab735eed39ba"><td class="mdescLeft"> </td><td class="mdescRight">Calls function f for all items from const rng user-supplied context.  <a href="#gad7d0702d16fbd7554584ab735eed39ba">More...</a><br/></td></tr>
+<tr class="separator:gad7d0702d16fbd7554584ab735eed39ba"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaef59e9baf9141a19c99a291e4532bd98"></a>
+template<typename InputIterator , typename Function > </td></tr>
+<tr class="memitem:gaef59e9baf9141a19c99a291e4532bd98"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaef59e9baf9141a19c99a291e4532bd98">tbb::parallel_for_each</a> (InputIterator first, InputIterator last, const Function &f)</td></tr>
+<tr class="memdesc:gaef59e9baf9141a19c99a291e4532bd98"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:gaef59e9baf9141a19c99a291e4532bd98"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5868cd01f2126b139ab5809f64632db1"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5868cd01f2126b139ab5809f64632db1"></a>
+template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga5868cd01f2126b139ab5809f64632db1"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5868cd01f2126b139ab5809f64632db1">tbb::parallel_for_each</a> (Range &rng, const Function &f)</td></tr>
+<tr class="memdesc:ga5868cd01f2126b139ab5809f64632db1"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:ga5868cd01f2126b139ab5809f64632db1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga33463c8b0d0104cf9d9e0f9cb3c0b26b"></a>
+template<typename Range , typename Function > </td></tr>
+<tr class="memitem:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga33463c8b0d0104cf9d9e0f9cb3c0b26b">tbb::parallel_for_each</a> (const Range &rng, const Function &f)</td></tr>
+<tr class="memdesc:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="mdescLeft"> </td><td class="mdescRight">Uses default context. <br/></td></tr>
+<tr class="separator:ga33463c8b0d0104cf9d9e0f9cb3c0b26b"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_invoke</h2></td></tr>
+<tr class="memitem:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memTemplParams" colspan="2">template<typename F0 , typename F1 , typename... F> </td></tr>
+<tr class="memitem:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3c6fe4bf1076c82132e666fb545451cd">tbb::parallel_invoke</a> (F0 &&f0, F1 &&f1, F &&...f)</td></tr>
+<tr class="memdesc:ga3c6fe4bf1076c82132e666fb545451cd"><td class="mdescLeft"> </td><td class="mdescRight">Executes a list of tasks in parallel and waits for all tasks to complete.  <a href="#ga3c6fe4bf1076c82132e666fb545451cd">More...</a><br/></td></tr>
+<tr class="separator:ga3c6fe4bf1076c82132e666fb545451cd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga14459dcbcd631194df803b155a7f610b"></a>
+template<typename F0 , typename F1 > </td></tr>
+<tr class="memitem:ga14459dcbcd631194df803b155a7f610b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga14459dcbcd631194df803b155a7f610b"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaaea3f3a8883128afb596a963e856277f"></a>
+template<typename F0 , typename F1 , typename F2 > </td></tr>
+<tr class="memitem:gaaea3f3a8883128afb596a963e856277f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gaaea3f3a8883128afb596a963e856277f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga74932e64ede5047387108fa45f1af96f"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
+<tr class="memitem:ga74932e64ede5047387108fa45f1af96f"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga74932e64ede5047387108fa45f1af96f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaefc1ba8f73cbdd094575f6db454fc6b5"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
+<tr class="memitem:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gaefc1ba8f73cbdd094575f6db454fc6b5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga3f02dfbb94238b2cf2ef8f20844b03af"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
+<tr class="memitem:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga3f02dfbb94238b2cf2ef8f20844b03af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad8c1220bbd59e3b8e7bbcdcfdda8047e"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
+<tr class="memitem:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:gad8c1220bbd59e3b8e7bbcdcfdda8047e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5ee83a66397ee0b15c77756cb5e5168e"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
+<tr class="memitem:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga5ee83a66397ee0b15c77756cb5e5168e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1af92ebd06f6cdf5ee668b1fe62657bd"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
+<tr class="memitem:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga1af92ebd06f6cdf5ee668b1fe62657bd"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga65846bc3b2f63ed1448b6cdfea9e1c80"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
+<tr class="memitem:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, <a class="el" href="a00153.html">tbb::task_group_context</a> &context)</td></tr>
+<tr class="separator:ga65846bc3b2f63ed1448b6cdfea9e1c80"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga6b1c36ece1d3950677dd01ef0863648c"></a>
+template<typename F0 , typename F1 > </td></tr>
+<tr class="memitem:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1)</td></tr>
+<tr class="separator:ga6b1c36ece1d3950677dd01ef0863648c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaa979656a4c207782b74800c6c42982f5"></a>
+template<typename F0 , typename F1 , typename F2 > </td></tr>
+<tr class="memitem:gaa979656a4c207782b74800c6c42982f5"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2)</td></tr>
+<tr class="separator:gaa979656a4c207782b74800c6c42982f5"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga219cb8061b7cf5454c0bc4d67cff1e34"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 > </td></tr>
+<tr class="memitem:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)</td></tr>
+<tr class="separator:ga219cb8061b7cf5454c0bc4d67cff1e34"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8319ee980cd7cfb03f12ffc2a5ea4895"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 > </td></tr>
+<tr class="memitem:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)</td></tr>
+<tr class="separator:ga8319ee980cd7cfb03f12ffc2a5ea4895"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga295daf6f7394fba29a979b914be09fc6"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 > </td></tr>
+<tr class="memitem:ga295daf6f7394fba29a979b914be09fc6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)</td></tr>
+<tr class="separator:ga295daf6f7394fba29a979b914be09fc6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7652a01622a2f28df1e0edf40b691190"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 > </td></tr>
+<tr class="memitem:ga7652a01622a2f28df1e0edf40b691190"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)</td></tr>
+<tr class="separator:ga7652a01622a2f28df1e0edf40b691190"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="gadd8826371866c58e41dee3546c35d2c8"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 > </td></tr>
+<tr class="memitem:gadd8826371866c58e41dee3546c35d2c8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)</td></tr>
+<tr class="separator:gadd8826371866c58e41dee3546c35d2c8"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaeca8b72507d67dd023dae728bdc89896"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 > </td></tr>
+<tr class="memitem:gaeca8b72507d67dd023dae728bdc89896"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)</td></tr>
+<tr class="separator:gaeca8b72507d67dd023dae728bdc89896"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga17c9f95fac24b2b7b62f325f511ee7be"></a>
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 > </td></tr>
+<tr class="memitem:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><b>tbb::parallel_invoke</b> (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)</td></tr>
+<tr class="separator:ga17c9f95fac24b2b7b62f325f511ee7be"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_reduce</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp949e4773fffd16cb2d32f76af48627d2"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00004.html">parallel_reduce Body</a>. </p>
+</td></tr>
+<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7b1ce9568e0a0efe1bd2d55677bc6687">tbb::parallel_reduce</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="#ga7b1ce9568e0a0efe1bd2d55677bc6687">More...</a><br/></td></tr>
+<tr class="separator:ga7b1ce9568e0a0efe1bd2d55677bc6687"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaebb92b593827f9c3f5e1f8ee2f7d5f82">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="#gaebb92b593827f9c3f5e1f8ee2f7d5f82">More...</a><br/></td></tr>
+<tr class="separator:gaebb92b593827f9c3f5e1f8ee2f7d5f82"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3011e7266fb1e43d307060fe75be2c6e">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga3011e7266fb1e43d307060fe75be2c6e"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="#ga3011e7266fb1e43d307060fe75be2c6e">More...</a><br/></td></tr>
+<tr class="separator:ga3011e7266fb1e43d307060fe75be2c6e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga6e83e121490df24fa5893b14e68f5e2a">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga6e83e121490df24fa5893b14e68f5e2a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="#ga6e83e121490df24fa5893b14e68f5e2a">More...</a><br/></td></tr>
+<tr class="separator:ga6e83e121490df24fa5893b14e68f5e2a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gac57281bea03450ccb2d098ee8c7ab697"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gac57281bea03450ccb2d098ee8c7ab697">tbb::parallel_reduce</a> (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:gac57281bea03450ccb2d098ee8c7ab697"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="#gac57281bea03450ccb2d098ee8c7ab697">More...</a><br/></td></tr>
+<tr class="separator:gac57281bea03450ccb2d098ee8c7ab697"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5f3ebf50ab7f5e53fd936817c866f7be">tbb::parallel_reduce</a> (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="#ga5f3ebf50ab7f5e53fd936817c866f7be">More...</a><br/></td></tr>
+<tr class="separator:ga5f3ebf50ab7f5e53fd936817c866f7be"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga5df3f3a9618fd35931107819cb43fce6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga5df3f3a9618fd35931107819cb43fce6">tbb::parallel_reduce</a> (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga5df3f3a9618fd35931107819cb43fce6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="#ga5df3f3a9618fd35931107819cb43fce6">More...</a><br/></td></tr>
+<tr class="separator:ga5df3f3a9618fd35931107819cb43fce6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga1c9b66fa25cadee9ca3bff75a6609b05">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
+<tr class="memdesc:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and default partitioner.  <a href="#ga1c9b66fa25cadee9ca3bff75a6609b05">More...</a><br/></td></tr>
+<tr class="separator:ga1c9b66fa25cadee9ca3bff75a6609b05"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga0b22fd1de0e8bbaf46587d3c63a1ed93">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and simple_partitioner.  <a href="#ga0b22fd1de0e8bbaf46587d3c63a1ed93">More...</a><br/></td></tr>
+<tr class="separator:ga0b22fd1de0e8bbaf46587d3c63a1ed93"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga56e6b6e2eee521f532c00d855280be69"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga56e6b6e2eee521f532c00d855280be69">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga56e6b6e2eee521f532c00d855280be69"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and auto_partitioner.  <a href="#ga56e6b6e2eee521f532c00d855280be69">More...</a><br/></td></tr>
+<tr class="separator:ga56e6b6e2eee521f532c00d855280be69"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)</td></tr>
+<tr class="memdesc:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction and affinity_partitioner.  <a href="#gac26c35d1983e7ac2ab003cc8e49dd7e6">More...</a><br/></td></tr>
+<tr class="separator:gac26c35d1983e7ac2ab003cc8e49dd7e6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga518ef2653004d60319bdfc1c6bce86b6">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga518ef2653004d60319bdfc1c6bce86b6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, simple partitioner and user-supplied context.  <a href="#ga518ef2653004d60319bdfc1c6bce86b6">More...</a><br/></td></tr>
+<tr class="separator:ga518ef2653004d60319bdfc1c6bce86b6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga24ba50caf5a7c32cbd38912508cb69a4">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, auto_partitioner and user-supplied context.  <a href="#ga24ba50caf5a7c32cbd38912508cb69a4">More...</a><br/></td></tr>
+<tr class="separator:ga24ba50caf5a7c32cbd38912508cb69a4"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga367a8e77c4dac3f8764785afdc6c9299">tbb::parallel_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)</td></tr>
+<tr class="memdesc:ga367a8e77c4dac3f8764785afdc6c9299"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with reduction, affinity_partitioner and user-supplied context.  <a href="#ga367a8e77c4dac3f8764785afdc6c9299">More...</a><br/></td></tr>
+<tr class="separator:ga367a8e77c4dac3f8764785afdc6c9299"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb::parallel_deterministic_reduce</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">More...</a><br/></td></tr>
+<tr class="separator:ga1fd7e3c43592dfe1ae3e3572bd80d4f6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga361201f81b4ec7b86f81b579d2db647a"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga361201f81b4ec7b86f81b579d2db647a">tbb::parallel_deterministic_reduce</a> (const Range &range, Body &body, task_group_context &context)</td></tr>
+<tr class="memdesc:ga361201f81b4ec7b86f81b579d2db647a"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="#ga361201f81b4ec7b86f81b579d2db647a">More...</a><br/></td></tr>
+<tr class="separator:ga361201f81b4ec7b86f81b579d2db647a"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7f69e6a632acb51ed26a43ebd331f349">tbb::parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)</td></tr>
+<tr class="memdesc:ga7f69e6a632acb51ed26a43ebd331f349"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction and default partitioner.  <a href="#ga7f69e6a632acb51ed26a43ebd331f349">More...</a><br/></td></tr>
+<tr class="separator:ga7f69e6a632acb51ed26a43ebd331f349"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplParams" colspan="2">template<typename Range , typename Value , typename RealBody , typename Reduction > </td></tr>
+<tr class="memitem:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memTemplItemLeft" align="right" valign="top">Value </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga69b4eea059a62cbbf409cbad02b70bfa">tbb::parallel_deterministic_reduce</a> (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)</td></tr>
+<tr class="memdesc:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="mdescLeft"> </td><td class="mdescRight">Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.  <a href="#ga69b4eea059a62cbbf409cbad02b70bfa">More...</a><br/></td></tr>
+<tr class="separator:ga69b4eea059a62cbbf409cbad02b70bfa"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_scan</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpea856f699c9d234ea9f5ed535b0b16bb"></a>See also requirements on <a class="el" href="a00001.html">Range</a> and <a class="el" href="a00006.html">parallel_scan Body</a>. </p>
+</td></tr>
+<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gae7eaaf124471a6c603b28fc925e8fbbb">tbb::parallel_scan</a> (const Range &range, Body &body)</td></tr>
+<tr class="memdesc:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with default partitioner.  <a href="#gae7eaaf124471a6c603b28fc925e8fbbb">More...</a><br/></td></tr>
+<tr class="separator:gae7eaaf124471a6c603b28fc925e8fbbb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga7ddacf5e49f1bea9b67803f2d0f57531">tbb::parallel_scan</a> (const Range &range, Body &body, const simple_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with simple_partitioner.  <a href="#ga7ddacf5e49f1bea9b67803f2d0f57531">More...</a><br/></td></tr>
+<tr class="separator:ga7ddacf5e49f1bea9b67803f2d0f57531"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplParams" colspan="2">template<typename Range , typename Body > </td></tr>
+<tr class="memitem:ga3548041731b7fa14f30f155541ceebb9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga3548041731b7fa14f30f155541ceebb9">tbb::parallel_scan</a> (const Range &range, Body &body, const auto_partitioner &partitioner)</td></tr>
+<tr class="memdesc:ga3548041731b7fa14f30f155541ceebb9"><td class="mdescLeft"> </td><td class="mdescRight">Parallel prefix with auto_partitioner.  <a href="#ga3548041731b7fa14f30f155541ceebb9">More...</a><br/></td></tr>
+<tr class="separator:ga3548041731b7fa14f30f155541ceebb9"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
+parallel_sort</h2></td></tr>
+<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp507087c4dcfb051fe7d24227c3a34024"></a>See also requirements on <a class="el" href="a00007.html">iterators for parallel_sort</a>. </p>
+</td></tr>
+<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator , typename Compare > </td></tr>
+<tr class="memitem:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)</td></tr>
+<tr class="memdesc:gabdc90813499f91d3e32298cd6dc2fe45"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) using the given comparator.  <a href="#gabdc90813499f91d3e32298cd6dc2fe45">More...</a><br/></td></tr>
+<tr class="separator:gabdc90813499f91d3e32298cd6dc2fe45"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplParams" colspan="2">template<typename RandomAccessIterator > </td></tr>
+<tr class="memitem:ga73b58ac9249f49587d0b081c152af551"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga73b58ac9249f49587d0b081c152af551">tbb::parallel_sort</a> (RandomAccessIterator begin, RandomAccessIterator end)</td></tr>
+<tr class="memdesc:ga73b58ac9249f49587d0b081c152af551"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="#ga73b58ac9249f49587d0b081c152af551">More...</a><br/></td></tr>
+<tr class="separator:ga73b58ac9249f49587d0b081c152af551"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memTemplParams" colspan="2">template<typename Range , typename Compare > </td></tr>
+<tr class="memitem:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga61ce8ba64868c5c15f9d98840193b9bf">tbb::parallel_sort</a> (Range &rng, const Compare &comp)</td></tr>
+<tr class="memdesc:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in rng using the given comparator.  <a href="#ga61ce8ba64868c5c15f9d98840193b9bf">More...</a><br/></td></tr>
+<tr class="separator:ga61ce8ba64868c5c15f9d98840193b9bf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga541b2fd91e88842a7b823161107779e9"><td class="memTemplParams" colspan="2">template<typename Range , typename Compare > </td></tr>
+<tr class="memitem:ga541b2fd91e88842a7b823161107779e9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga541b2fd91e88842a7b823161107779e9">tbb::parallel_sort</a> (const Range &rng, const Compare &comp)</td></tr>
+<tr class="memdesc:ga541b2fd91e88842a7b823161107779e9"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in const rng using the given comparator.  <a href="#ga541b2fd91e88842a7b823161107779e9">More...</a><br/></td></tr>
+<tr class="separator:ga541b2fd91e88842a7b823161107779e9"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memTemplParams" colspan="2">template<typename Range > </td></tr>
+<tr class="memitem:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#gaf1fb3ae3aab1213cb9bcf56e30c164bb">tbb::parallel_sort</a> (Range &rng)</td></tr>
+<tr class="memdesc:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in rng with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="#gaf1fb3ae3aab1213cb9bcf56e30c164bb">More...</a><br/></td></tr>
+<tr class="separator:gaf1fb3ae3aab1213cb9bcf56e30c164bb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memTemplParams" colspan="2">template<typename Range > </td></tr>
+<tr class="memitem:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga60bbc3d7699f09618bd8b5114e4277cb">tbb::parallel_sort</a> (const Range &rng)</td></tr>
+<tr class="memdesc:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in const rng with a default comparator <code>std::less<RandomAccessIterator></code>  <a href="#ga60bbc3d7699f09618bd8b5114e4277cb">More...</a><br/></td></tr>
+<tr class="separator:ga60bbc3d7699f09618bd8b5114e4277cb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr class="memitem:ga8f176cdc232a6e5907456656a24983a8"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00255.html#ga8f176cdc232a6e5907456656a24983a8">tbb::parallel_sort</a> (T *begin, T *end)</td></tr>
+<tr class="memdesc:ga8f176cdc232a6e5907456656a24983a8"><td class="mdescLeft"> </td><td class="mdescRight">Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code>  <a href="#ga8f176cdc232a6e5907456656a24983a8">More...</a><br/></td></tr>
+<tr class="separator:ga8f176cdc232a6e5907456656a24983a8"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ga1fd7e3c43592dfe1ae3e3572bd80d4f6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_deterministic_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with deterministic reduction and default partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga361201f81b4ec7b86f81b579d2db647a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_deterministic_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga7f69e6a632acb51ed26a43ebd331f349"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_deterministic_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with deterministic reduction and default partitioner. </p>
+<p>parallel_reduce overloads that work with anonymous function objects (see also <a class="el" href="a00005.html">requirements on parallel_reduce anonymous function objects</a>). </p>
+
+</div>
+</div>
+<a class="anchor" id="ga69b4eea059a62cbbf409cbad02b70bfa"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_deterministic_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga533f6732498ade8634a9470cbf89192d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Iterator , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_do </td>
+          <td>(</td>
+          <td class="paramtype">Iterator </td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Iterator </td>
+          <td class="paramname"><em>last</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over a range, with optional addition of more work. </p>
+
+<p>Referenced by <a class="el" href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga7db29bc10d81eddc85854256ffc723c0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Iterator , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_do </td>
+          <td>(</td>
+          <td class="paramtype">Iterator </td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Iterator </td>
+          <td class="paramname"><em>last</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over a range, with optional addition of more work and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa8444c29dc4d2e527a1036717d109aef"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with default partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga9722d2bc7e5edb4fae9f3b55268a1ecc"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with simple partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad6c4b06f96ae33cefe78235841791902"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with auto_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf3d39e372d825bf54283b5ceafa90057"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with affinity_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga93a621202db94665144de38c0b09bdad"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with default partitioner and user-supplied context. </p>
 
-<p>This is the complete list of members for <a class="el" href="a00148.html">tbb::tbb_hash_compare< Key ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>equal</b>(const Key &a, const Key &b) (defined in <a class="el" href="a00148.html">tbb::tbb_hash_compare< Key ></a>)</td><td class="entry"><a class="el" href="a00148.html">tbb::tbb_hash_compare< Key ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash</b>(const Key &a) (defined in <a class="el" href="a00148.html">tbb::tbb_hash_compare< Key ></a>)</td><td class="entry"><a class="el" href="a00148.html">tbb::tbb_hash_compare< Key ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-</table></div><!-- contents -->
+</div>
+</div>
+<a class="anchor" id="ga5b7fab9d6ffe7a9345e9349a5a007bd4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with simple partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4c9935d8710a5cf786a92f3522ab2976"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with auto_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga62b1a9ac304ba1eb4f87ab8cc18dd281"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration over range with affinity_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga96bf42caaec779e413e5a2396c1e301c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename InputIterator , typename Function > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for_each </td>
+          <td>(</td>
+          <td class="paramtype">InputIterator </td>
+          <td class="paramname"><em>first</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">InputIterator </td>
+          <td class="paramname"><em>last</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Function & </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calls function f for all items from [first, last) interval using user-supplied context. </p>
+
+<p>References <a class="el" href="a00255.html#ga533f6732498ade8634a9470cbf89192d">tbb::parallel_do()</a>.</p>
+
+<p>Referenced by <a class="el" href="a00255.html#ga72131543fd218b67dbb048b768d534e4">tbb::parallel_for_each()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga72131543fd218b67dbb048b768d534e4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Function > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for_each </td>
+          <td>(</td>
+          <td class="paramtype">Range & </td>
+          <td class="paramname"><em>rng</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Function & </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calls function f for all items from rng using user-supplied context. </p>
+
+<p>References <a class="el" href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gad7d0702d16fbd7554584ab735eed39ba"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Function > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_for_each </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>rng</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Function & </td>
+          <td class="paramname"><em>f</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Calls function f for all items from const rng user-supplied context. </p>
+
+<p>References <a class="el" href="a00255.html#ga96bf42caaec779e413e5a2396c1e301c">tbb::parallel_for_each()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga3c6fe4bf1076c82132e666fb545451cd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename F0 , typename F1 , typename... F> </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_invoke </td>
+          <td>(</td>
+          <td class="paramtype">F0 && </td>
+          <td class="paramname"><em>f0</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">F1 && </td>
+          <td class="paramname"><em>f1</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">F &&... </td>
+          <td class="paramname"><em>f</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Executes a list of tasks in parallel and waits for all tasks to complete. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga7b1ce9568e0a0efe1bd2d55677bc6687"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and default partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaebb92b593827f9c3f5e1f8ee2f7d5f82"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and simple_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga3011e7266fb1e43d307060fe75be2c6e"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and auto_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga6e83e121490df24fa5893b14e68f5e2a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and affinity_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac57281bea03450ccb2d098ee8c7ab697"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, simple partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga5f3ebf50ab7f5e53fd936817c866f7be"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, auto_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga5df3f3a9618fd35931107819cb43fce6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, affinity_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga1c9b66fa25cadee9ca3bff75a6609b05"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and default partitioner. </p>
+<p>parallel_reduce overloads that work with anonymous function objects (see also <a class="el" href="a00005.html">requirements on parallel_reduce anonymous function objects</a>). </p>
+
+</div>
+</div>
+<a class="anchor" id="ga0b22fd1de0e8bbaf46587d3c63a1ed93"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and simple_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga56e6b6e2eee521f532c00d855280be69"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and auto_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gac26c35d1983e7ac2ab003cc8e49dd7e6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction and affinity_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga518ef2653004d60319bdfc1c6bce86b6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, simple partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga24ba50caf5a7c32cbd38912508cb69a4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, auto_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga367a8e77c4dac3f8764785afdc6c9299"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Value , typename RealBody , typename Reduction > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">Value tbb::parallel_reduce </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Value & </td>
+          <td class="paramname"><em>identity</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const RealBody & </td>
+          <td class="paramname"><em>real_body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Reduction & </td>
+          <td class="paramname"><em>reduction</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">affinity_partitioner & </td>
+          <td class="paramname"><em>partitioner</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">task_group_context & </td>
+          <td class="paramname"><em>context</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel iteration with reduction, affinity_partitioner and user-supplied context. </p>
+
+</div>
+</div>
+<a class="anchor" id="gae7eaaf124471a6c603b28fc925e8fbbb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_scan </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel prefix with default partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga7ddacf5e49f1bea9b67803f2d0f57531"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_scan </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const simple_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel prefix with simple_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga3548041731b7fa14f30f155541ceebb9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Body > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_scan </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>range</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">Body & </td>
+          <td class="paramname"><em>body</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const auto_partitioner & </td>
+          <td class="paramname"><em>partitioner</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Parallel prefix with auto_partitioner. </p>
+
+</div>
+</div>
+<a class="anchor" id="gabdc90813499f91d3e32298cd6dc2fe45"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename RandomAccessIterator , typename Compare > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"><em>begin</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"><em>end</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Compare & </td>
+          <td class="paramname"><em>comp</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sorts the data in [begin,end) using the given comparator. </p>
+<p>The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function. </p>
+
+<p>Referenced by <a class="el" href="a00255.html#ga73b58ac9249f49587d0b081c152af551">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga73b58ac9249f49587d0b081c152af551"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename RandomAccessIterator > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"><em>begin</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">RandomAccessIterator </td>
+          <td class="paramname"><em>end</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Sorts the data in [begin,end) with a default comparator <code>std::less<RandomAccessIterator></code> </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga61ce8ba64868c5c15f9d98840193b9bf"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Compare > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">Range & </td>
+          <td class="paramname"><em>rng</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Compare & </td>
+          <td class="paramname"><em>comp</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sorts the data in rng using the given comparator. </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga541b2fd91e88842a7b823161107779e9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range , typename Compare > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>rng</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const Compare & </td>
+          <td class="paramname"><em>comp</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sorts the data in const rng using the given comparator. </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="gaf1fb3ae3aab1213cb9bcf56e30c164bb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">Range & </td>
+          <td class="paramname"><em>rng</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sorts the data in rng with a default comparator <code>std::less<RandomAccessIterator></code> </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga60bbc3d7699f09618bd8b5114e4277cb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename Range > </div>
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">const Range & </td>
+          <td class="paramname"><em>rng</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sorts the data in const rng with a default comparator <code>std::less<RandomAccessIterator></code> </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga8f176cdc232a6e5907456656a24983a8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename T > </div>
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void tbb::parallel_sort </td>
+          <td>(</td>
+          <td class="paramtype">T * </td>
+          <td class="paramname"><em>begin</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">T * </td>
+          <td class="paramname"><em>end</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Sorts the data in the range <code></code>[begin,end) with a default comparator <code>std::less<T></code> </p>
+
+<p>References <a class="el" href="a00255.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb::parallel_sort()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00256.html b/doc/html/a00256.html
index 5f987bb..7fce7ad 100644
--- a/doc/html/a00256.html
+++ b/doc/html/a00256.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Containers</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,62 +20,45 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00034.html">concurrent_bounded_queue</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::concurrent_bounded_queue< T, A > Member List</div>  </div>
+<div class="title">Containers</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">abort</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">capacity</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">clear</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a>(const concurrent_bounded_queue &src, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">empty</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a>(const T &source)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">set_capacity</a>(size_type new_capacity)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">try_push</a>(const T &source)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_begin</b>() (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_begin</b>() const  (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_end</b>() (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_end</b>() const  (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00036.html">tbb::combinable< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread-local storage with optional reduction.  <a href="a00036.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Unordered map from Key to T.  <a href="a00043.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe non-blocking concurrent queue.  <a href="a00046.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A high-performance thread-safe blocking concurrent bounded queue.  <a href="a00042.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Concurrent vector container.  <a href="a00053.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="a00061.html" title="The enumerable_thread_specific container. ">enumerable_thread_specific</a> container.  <a href="a00061.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00257.html b/doc/html/a00257.html
index beeddb5..b729671 100644
--- a/doc/html/a00257.html
+++ b/doc/html/a00257.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Memory Allocation</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,107 +20,360 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00046.html">concurrent_vector</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#func-members">Functions</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::concurrent_vector< T, A > Member List</div>  </div>
+<div class="title">Memory Allocation</div>  </div>
 </div><!--header-->
 <div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00015.html">tbb::aligned_space< T, N ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Block of space aligned sufficiently to construct an array T with N elements.  <a href="a00015.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00032.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00033.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00093.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00094.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00129.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00130.html">tbb::scalable_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00130.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00159.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html">tbb::tbb_allocator< void ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00160.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.  <a href="a00177.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.  <a href="a00178.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_malloc</a> (size_t size)</td></tr>
+<tr class="separator:ga2a5bdc71439a70b20f2eadf6e1a489e1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_free</a> (void *ptr)</td></tr>
+<tr class="separator:ga2ad3952b8c4dd7d293e02ae18fc37b84"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_realloc</a> (void *ptr, size_t size)</td></tr>
+<tr class="separator:ga40d6e0bc19cdfa3005b2b935c62077a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_calloc</a> (size_t nobj, size_t size)</td></tr>
+<tr class="separator:ga3b4ff39555cd9e929fce2958325cd8ea"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaf117b4994f719d539804da8dd115e28c"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gaf117b4994f719d539804da8dd115e28c">scalable_posix_memalign</a> (void **memptr, size_t alignment, size_t size)</td></tr>
+<tr class="separator:gaf117b4994f719d539804da8dd115e28c"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga903307de17bc1611515f8e6ae782a3d6"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_aligned_malloc</a> (size_t size, size_t alignment)</td></tr>
+<tr class="separator:ga903307de17bc1611515f8e6ae782a3d6"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memItemLeft" align="right" valign="top">void *__TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_aligned_realloc</a> (void *ptr, size_t size, size_t alignment)</td></tr>
+<tr class="separator:gaa07391c54330b2e4dd1743ae9c9c4f2d"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memItemLeft" align="right" valign="top">void __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_aligned_free</a> (void *ptr)</td></tr>
+<tr class="separator:gad9aa7595581a7bc5be193d7e034c8f61"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga2b718206e50acb6392b86e4877d98213"><td class="memItemLeft" align="right" valign="top">size_t __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga2b718206e50acb6392b86e4877d98213">scalable_msize</a> (void *ptr)</td></tr>
+<tr class="separator:ga2b718206e50acb6392b86e4877d98213"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga7f5029970f72ebbffee896c46a23958e"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocation_mode</a> (int param, intptr_t value)</td></tr>
+<tr class="separator:ga7f5029970f72ebbffee896c46a23958e"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:gabe5acd876b4d89bf89787c4e779c2518"><td class="memItemLeft" align="right" valign="top">int __TBB_EXPORTED_FUNC </td><td class="memItemRight" valign="bottom"><a class="el" href="a00257.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocation_command</a> (int cmd, void *param)</td></tr>
+<tr class="separator:gabe5acd876b4d89bf89787c4e779c2518"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="gad9aa7595581a7bc5be193d7e034c8f61"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_FUNC scalable_aligned_free </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>ptr</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "_aligned_free" analogue. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga903307de17bc1611515f8e6ae782a3d6"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_malloc </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>alignment</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "_aligned_malloc" analogue. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa07391c54330b2e4dd1743ae9c9c4f2d"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_aligned_realloc </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>ptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>alignment</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "_aligned_realloc" analogue. </p>
+
+</div>
+</div>
+<a class="anchor" id="gabe5acd876b4d89bf89787c4e779c2518"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC scalable_allocation_command </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>cmd</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>param</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Call TBB allocator-specific commands. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga7f5029970f72ebbffee896c46a23958e"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC scalable_allocation_mode </td>
+          <td>(</td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>param</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">intptr_t </td>
+          <td class="paramname"><em>value</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Set TBB allocator-specific allocation modes. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga3b4ff39555cd9e929fce2958325cd8ea"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_calloc </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>nobj</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "calloc" analogue complementing scalable_malloc. </p>
 
-<p>This is the complete list of members for <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a87355dce93d0882aa73333a35c9b367c">assign</a>(size_type n, const_reference t)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a7bb5399a8499f88cf859eab39f0ed9e0">assign</a>(I first, I last)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a584d6cda5794441b19d4f02bde399dff">assign</a>(std::initializer_list< T > init_list)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a629a29eb21e528414b9d5c9becfe05cd">at</a>(size_type index)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#ae4dc6c1b55c0e0b73f0a8675ef2b60a4">at</a>(size_type index) const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aaee3ddf1d05238a8a6887f6d824b76f8">back</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#acf66eb1e82dbcb430d9926a23711c720">back</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#ab55636c80368ad7d400f3200313fcf5f">begin</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#ad3eb33d1b10a988a87cc708ceb08f3a9">begin</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a96c2ae9dfedc24d62554feb627df76c3">capacity</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a7a1c5441fa480c07ef37d9206b6260cc">cbegin</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a9ea80faf139feb54d6576c036e4ba898">cend</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a526ba408fb3064ef846940d633b8f365">clear</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3">compact</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a5bd95c2241653c760704a92b2c887a48">concurrent_vector</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aa25dccd2f65fbfa148e92d01a11c20ff">concurrent_vector</a>(std::initializer_list< T > init_list, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">concurrent_vector</a>(const concurrent_vector &vector, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#abb0e376a31c3fdb91beaaa98441735f5">concurrent_vector</a>(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#aa898a39aad73711ceca70cd465dc0b4f">concurrent_vector</a>(size_type n)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a736c6e35f1df11625636968ea546e21f">concurrent_vector</a>(size_type n, const_reference t, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#ae0d384ec56032d18f63e26960029d3ce">concurrent_vector</a>(I first, I last, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a2627db4a7949522ea4727320b23a6348">crbegin</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#ad097225c529dbb24cc0e13a444ab4752">crend</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#aa3f6774107e65642f73c0dcc9a962fe7">empty</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aad2c07653375e4a5f89c33b375eda610">end</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a6a4ad0795a19d94df24595e748f0b193">end</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a9bfc6d733cf543280b691ed8d7b7908a">front</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a9067259572c2c41d014840d0f9d3cdce">front</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a9c8452b88bc79c3c88d47c455064c012">grow_by</a>(size_type delta)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#ab89c2db5358048debdc282ff995caffb">grow_by</a>(size_type delta)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a9dae5d9368fd852426552b21d67beb86">grow_by</a>(size_type delta, const_reference t)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aa11fc991cda82cf93789fce31b37a16c">grow_by</a>(size_type delta, const_reference t)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#af52b603dd76a99dffe5760f0db4747f1">grow_to_at_least</a>(size_type n)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#ae9ef9895e88f9bf036b379035c18f035">grow_to_at_least</a>(size_type n)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::vector_iterator</b> (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_vector_base</b>() const  (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a0ec9c3ab3360e04bdaa5174956a3206d">max_size</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a920384aece0eb8beea3049956320ec91">operator=</a>(const concurrent_vector &vector)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a1fe7f0b60bbf304890a9293a35e6819d">operator=</a>(const concurrent_vector< T, M > &vector)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a6e57d73b199ccd03922898e9da4888fb">operator=</a>(const std::initializer_list< T > &init_list)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a3097cb46511504acfc9de7da5235f4a6">operator[]</a>(size_type index)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#abd6ca67f2f97fafca48395af2e693e73">operator[]</a>(size_type index) const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a4a5c85a9e6ff82e15c18da47a95b518f">push_back</a>(const_reference item) iterator push_back(const _reference item)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a8201f65735edcc28aeec95b6e73d75b6">range</a>(size_t grainsize=1)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a8fcc32ec9ccb48c3327a88fe288c7538">range</a>(size_t grainsize=1) const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a9a2f8dce0adcbef8e29273c23723a78e">rbegin</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a976b0bed19de9ab93f78c10184a4e38f">rbegin</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a618f38279a370c18f73ea2c29ded9cb9">rend</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#abdb98e17cb65d9c445d7fd1e662c2699">rend</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a0b3284684328c58c0228c9a697ef3594">reserve</a>(size_type n)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#a65e53a98a1e1fdb515fdc2b84e2314e8">resize</a>(size_type n)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a941917a8a840ff08ce8810ca9476ff46">resize</a>(size_type n, const_reference t)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00046.html#aba805b5225ad3399550f78ea15e51e93">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7">size</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a8603bd57324fb6b60ba006884c95279d">swap</a>(concurrent_vector &vector)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00046.html#ab5bcaededc9a00e7aaecd6c262fd0b38">~concurrent_vector</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
+</div>
+</div>
+<a class="anchor" id="ga2ad3952b8c4dd7d293e02ae18fc37b84"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void __TBB_EXPORTED_FUNC scalable_free </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>ptr</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "free" analogue to discard a previously allocated piece of memory. </p>
+
+<p>Referenced by <a class="el" href="a00129.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T >::deallocate()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga2a5bdc71439a70b20f2eadf6e1a489e1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_malloc </td>
+          <td>(</td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "malloc" analogue to allocate block of memory of size bytes. </p>
+
+<p>Referenced by <a class="el" href="a00129.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T >::allocate()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ga2b718206e50acb6392b86e4877d98213"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">size_t __TBB_EXPORTED_FUNC scalable_msize </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>ptr</em>)</td><td></td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The analogue of <em>msize/malloc_size/malloc_usable_size. Returns the usable size of a memory block previously allocated by scalable</em>*, or 0 (zero) if ptr does not point to such a block. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaf117b4994f719d539804da8dd115e28c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int __TBB_EXPORTED_FUNC scalable_posix_memalign </td>
+          <td>(</td>
+          <td class="paramtype">void ** </td>
+          <td class="paramname"><em>memptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>alignment</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "posix_memalign" analogue. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga40d6e0bc19cdfa3005b2b935c62077a1"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* __TBB_EXPORTED_FUNC scalable_realloc </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>ptr</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t </td>
+          <td class="paramname"><em>size</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>The "realloc" analogue complementing scalable_malloc. </p>
+
+</div>
+</div>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00258.html b/doc/html/a00258.html
index 6c2db24..5a6de93 100644
--- a/doc/html/a00258.html
+++ b/doc/html/a00258.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Synchronization</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,51 +20,103 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00081.html">mutex</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#typedef-members">Typedefs</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::mutex Member List</div>  </div>
+<div class="title">Synchronization</div>  </div>
 </div><!--header-->
 <div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00018.html">tbb::atomic< T ></a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Primary template for atomic.  <a href="a00018.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00099.html">tbb::mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Wrapper around the platform's native reader-writer lock.  <a href="a00099.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00101.html">tbb::null_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A mutex which does nothing.  <a href="a00101.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00102.html">tbb::null_rw_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A rw mutex which does nothing.  <a href="a00102.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing mutex with local-only spinning.  <a href="a00111.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Queuing reader-writer mutex with local-only spinning.  <a href="a00112.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Writer-preference reader-writer lock with local-only spinning on readers.  <a href="a00113.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00145.html">tbb::spin_mutex</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A lock that occupies a single byte.  <a href="a00145.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Fast, unfair, spinning reader-writer lock with backoff and writer-preference.  <a href="a00146.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga69722571e9e4406693c4a1379f0b47eb"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
+interface7::internal::padded_mutex<br class="typebreak"/>
+< interface7::internal::x86_eliding_mutex, <br class="typebreak"/>
+false > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">tbb::speculative_spin_mutex</a></td></tr>
+<tr class="memdesc:ga69722571e9e4406693c4a1379f0b47eb"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin mutex with speculative lock acquisition.  <a href="#ga69722571e9e4406693c4a1379f0b47eb">More...</a><br/></td></tr>
+<tr class="separator:ga69722571e9e4406693c4a1379f0b47eb"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ga97d0da95fd4f92af12de15e1a8b5c780"><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
+interface7::internal::padded_mutex<br class="typebreak"/>
+< tbb::interface8::internal::x86_rtm_rw_mutex, <br class="typebreak"/>
+true > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00258.html#ga97d0da95fd4f92af12de15e1a8b5c780">tbb::interface8::speculative_spin_rw_mutex</a></td></tr>
+<tr class="memdesc:ga97d0da95fd4f92af12de15e1a8b5c780"><td class="mdescLeft"> </td><td class="mdescRight">A cross-platform spin reader/writer mutex with speculative lock acquisition.  <a href="#ga97d0da95fd4f92af12de15e1a8b5c780">More...</a><br/></td></tr>
+<tr class="separator:ga97d0da95fd4f92af12de15e1a8b5c780"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="ga69722571e9e4406693c4a1379f0b47eb"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef interface7::internal::padded_mutex< spin_mutex, false > <a class="el" href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">tbb::speculative_spin_mutex</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>A cross-platform spin mutex with speculative lock acquisition. </p>
+<p>On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a <a class="el" href="a00145.html" title="A lock that occupies a single byte. ">spin_mutex</a>. It should be used for locking short critical sections where the lock is co [...]
 
-<p>This is the complete list of members for <a class="el" href="a00081.html">tbb::mutex</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DESTROYED</b> enum value (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>HELD</b> enum value (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INITIALIZED</b> enum value (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00081.html#a95ff02ee699b34696001db4003c11a3a">lock</a>()</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00081.html#ad1b280c954ffc8b8b3e63e4ee4144035">mutex</a>()</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00081.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a> typedef</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00081.html#a0857c4596d7d5de09fe402ccd41d3e42">set_state</a>(state_t to)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>state_t</b> enum name (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00081.html#a480283933106941125717499f9c5ad42">try_lock</a>()</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00081.html#a721eeae7ba16f8b92535f4534b583874">unlock</a>()</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~mutex</b>() (defined in <a class="el" href="a00081.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
+</div>
+</div>
+<a class="anchor" id="ga97d0da95fd4f92af12de15e1a8b5c780"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef interface7::internal::padded_mutex< <a class="el" href="a00146.html">tbb::spin_rw_mutex</a>, true > <a class="el" href="a00258.html#ga97d0da95fd4f92af12de15e1a8b5c780">tbb::interface8::speculative_spin_rw_mutex</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>A cross-platform spin reader/writer mutex with speculative lock acquisition. </p>
+<p>On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a spin_rw_mutex. It should be used for locking short critical sections where the lock is contended but the data it protects are not. </p>
+
+</div>
+</div>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00259.html b/doc/html/a00259.html
index f303b5d..7b28d89 100644
--- a/doc/html/a00259.html
+++ b/doc/html/a00259.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Timing</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,41 +20,30 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00081.html">mutex</a></li><li class="navelem"><a class="el" href="a00116.html">scoped_lock</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::mutex::scoped_lock Member List</div>  </div>
+<div class="title">Timing</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00116.html">tbb::mutex::scoped_lock</a>, including all inherited members.</p>
-<table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00116.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">acquire</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutex</b> (defined in <a class="el" href="a00116.html">tbb::mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00116.html#a1a1590281ccca912229a689d920fd78a">release</a>()</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00116.html#a23122745ccd5fc2498fcbbd5ced09e06">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00116.html#ab7c2074543443824790433d3d6c3fece">scoped_lock</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00116.html#a46f983371aa852d2427ce69f9a571f78">try_acquire</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00116.html#a08c399ee0bb9762039b29e570ec46fe9">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00116.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00170.html">tbb::tick_count</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Absolute timestamp.  <a href="a00170.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00260.html b/doc/html/a00260.html
index 34ab65c..b0755da 100644
--- a/doc/html/a00260.html
+++ b/doc/html/a00260.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
+<title>Task Scheduling</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -20,38 +20,30 @@
       <li><a href="pages.html"><span>Related Pages</span></a></li>
       <li><a href="modules.html"><span>Modules</span></a></li>
       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
       <li><a href="files.html"><span>Files</span></a></li>
     </ul>
   </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00083.html">null_mutex</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
   <div class="headertitle">
-<div class="title">tbb::null_mutex Member List</div>  </div>
+<div class="title">Task Scheduling</div>  </div>
 </div><!--header-->
 <div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00083.html">tbb::null_mutex</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00083.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00083.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00083.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>null_mutex</b>() (defined in <a class="el" href="a00083.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class delimiting the scope of task scheduler activity.  <a href="a00156.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+</div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00261.html b/doc/html/a00261.html
deleted file mode 100644
index 3717aaf..0000000
--- a/doc/html/a00261.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00083.html">null_mutex</a></li><li class="navelem"><a class="el" href="a00115.html">scoped_lock</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::null_mutex::scoped_lock Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>acquire</b>(null_mutex &) (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>release</b>() (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>() (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b>(null_mutex &) (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_acquire</b>(null_mutex &) (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00262.html b/doc/html/a00262.html
index 430a033..98f187f 100644
--- a/doc/html/a00262.html
+++ b/doc/html/a00262.html
@@ -31,27 +31,20 @@
       <li><a href="functions.html"><span>Class Members</span></a></li>
     </ul>
   </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00084.html">null_rw_mutex</a></li>  </ul>
-</div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::null_rw_mutex Member List</div>  </div>
+<div class="title">__TBB_malloc_proxy_caller Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00084.html">tbb::null_rw_mutex</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00084.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00084.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00084.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>null_rw_mutex</b>() (defined in <a class="el" href="a00084.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__TBB_malloc_proxy_caller</b>() (defined in <a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a>)</td><td class="entry"><a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00263.html b/doc/html/a00263.html
index b4975a0..3c9cde8 100644
--- a/doc/html/a00263.html
+++ b/doc/html/a00263.html
@@ -33,29 +33,30 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00084.html">null_rw_mutex</a></li><li class="navelem"><a class="el" href="a00117.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00237.html">rml</a></li><li class="navelem"><a class="el" href="a00095.html">MemPoolPolicy</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::null_rw_mutex::scoped_lock Member List</div>  </div>
+<div class="title">rml::MemPoolPolicy Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00095.html">rml::MemPoolPolicy</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>acquire</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>downgrade_to_reader</b>() (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>release</b>() (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b>() (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_acquire</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>upgrade_to_writer</b>() (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fixedPool</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>granularity</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>keepAllMemory</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>MemPoolPolicy</b>(rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false) (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pAlloc</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pFree</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reserved</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>TBBMALLOC_POOL_VERSION</b> enum value (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>version</b> (defined in <a class="el" href="a00095.html">rml::MemPoolPolicy</a>)</td><td class="entry"><a class="el" href="a00095.html">rml::MemPoolPolicy</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00264.html b/doc/html/a00264.html
index 77fe792..39f0ccd 100644
--- a/doc/html/a00264.html
+++ b/doc/html/a00264.html
@@ -33,23 +33,23 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00087.html">parallel_do_feeder</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00015.html">aligned_space</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::parallel_do_feeder< Item > Member List</div>  </div>
+<div class="title">tbb::aligned_space< T, N > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00087.html">tbb::parallel_do_feeder< Item ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00015.html">tbb::aligned_space< T, N ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00087.html#ac095c6b1a32e9c0be010aa32875d7a63">add</a>(const Item &item)</td><td class="entry"><a class="el" href="a00087.html">tbb::parallel_do_feeder< Item ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::parallel_do_feeder_impl</b> (defined in <a class="el" href="a00087.html">tbb::parallel_do_feeder< Item ></a>)</td><td class="entry"><a class="el" href="a00087.html">tbb::parallel_do_feeder< Item ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">begin</a>()</td><td class="entry"><a class="el" href="a00015.html">tbb::aligned_space< T, N ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00015.html#ae95620e1159984a2670bd418ed4748d0">end</a>()</td><td class="entry"><a class="el" href="a00015.html">tbb::aligned_space< T, N ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00265.html b/doc/html/a00265.html
index ddd9975..43b9cd0 100644
--- a/doc/html/a00265.html
+++ b/doc/html/a00265.html
@@ -33,22 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00090.html">pre_scan_tag</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00018.html">atomic</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::pre_scan_tag Member List</div>  </div>
+<div class="title">tbb::atomic< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00090.html">tbb::pre_scan_tag</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00018.html">tbb::atomic< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_final_scan</b>() (defined in <a class="el" href="a00090.html">tbb::pre_scan_tag</a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::pre_scan_tag</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>atomic</b>()=default (defined in <a class="el" href="a00018.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::atomic< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>atomic</b>(T arg) (defined in <a class="el" href="a00018.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(T rhs) (defined in <a class="el" href="a00018.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const atomic< T > &rhs) (defined in <a class="el" href="a00018.html">tbb::atomic< T ></a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::atomic< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00266.html b/doc/html/a00266.html
index 0b9a2e8..eee1a56 100644
--- a/doc/html/a00266.html
+++ b/doc/html/a00266.html
@@ -33,22 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00055.html">final_scan_tag</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00019.html">atomic< void * ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::final_scan_tag Member List</div>  </div>
+<div class="title">tbb::atomic< void * > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00055.html">tbb::final_scan_tag</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00019.html">tbb::atomic< void * ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_final_scan</b>() (defined in <a class="el" href="a00055.html">tbb::final_scan_tag</a>)</td><td class="entry"><a class="el" href="a00055.html">tbb::final_scan_tag</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>atomic</b>()=default (defined in <a class="el" href="a00019.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00019.html">tbb::atomic< void * ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>atomic</b>(void *arg) (defined in <a class="el" href="a00019.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00019.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(void *rhs) (defined in <a class="el" href="a00019.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00019.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const atomic< void * > &rhs) (defined in <a class="el" href="a00019.html">tbb::atomic< void * ></a>)</td><td class="entry"><a class="el" href="a00019.html">tbb::atomic< void * ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00267.html b/doc/html/a00267.html
index bd64130..c288e98 100644
--- a/doc/html/a00267.html
+++ b/doc/html/a00267.html
@@ -33,26 +33,36 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00088.html">parallel_while</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00024.html">blocked_range</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::parallel_while< Body > Member List</div>  </div>
+<div class="title">tbb::blocked_range< Value > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00088.html">tbb::parallel_while< Body ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00024.html">tbb::blocked_range< Value ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00088.html#a4861989d7f5e3111d264d4d6013e8fe1">add</a>(const value_type &item)</td><td class="entry"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00088.html#a220a7307358aa36802c8754ea45ca385">parallel_while</a>()</td><td class="entry"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00088.html#a20607ba5faa958144787d980aa850c16">run</a>(Stream &stream, const Body &body)</td><td class="entry"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">value_type</a> typedef</td><td class="entry"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00088.html#ac2fd559c8a38639fa1ba97a0d5639ca8">~parallel_while</a>()</td><td class="entry"><a class="el" href="a00088.html">tbb::parallel_while< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2">begin</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#aad176ab2cbd0bd73c3c2065761af3ccc">blocked_range</a>()</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#a49a97576004711b7159170fcaf488e4e">blocked_range</a>(Value begin_, Value end_, size_type grainsize_=1)</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#a75cae12286f4d5492970ea630a9783b9">blocked_range</a>(blocked_range &r, split)</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#a1f53fbb10b8b04a515f382704b00ed14">blocked_range</a>(blocked_range &r, proportional_split &proportion)</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range2d</b> (defined in <a class="el" href="a00024.html">tbb::blocked_range< Value ></a>)</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range3d</b> (defined in <a class="el" href="a00024.html">tbb::blocked_range< Value ></a>)</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">const_iterator</a> typedef</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#a59dec03416b3fefbf69600f798177710">empty</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6">end</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#ab408f3cf90c85fa9203df5641a2f9bb1">grainsize</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#ae2b0210e2468092b408123adeb54b01c">is_splittable_in_proportion</a></td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00024.html#a347ef8caa40edca3b7f475f182281140">size</a>() const </td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">size_type</a> typedef</td><td class="entry"><a class="el" href="a00024.html">tbb::blocked_range< Value ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00268.html b/doc/html/a00268.html
index 239d68c..bb7e23c 100644
--- a/doc/html/a00268.html
+++ b/doc/html/a00268.html
@@ -33,26 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">filter</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00025.html">blocked_range2d</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::filter Member List</div>  </div>
+<div class="title">tbb::blocked_range2d< RowValue, ColValue > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00053.html">tbb::filter</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span cla [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range2d</b>(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range2d</b>(blocked_range2d &r, split) (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range2d</b>(blocked_range2d &r, proportional_split &proportion) (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>col_range_type</b> typedef (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00025.html#af3bccfaf90126b285491096f78ca9473">cols</a>() const </td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_split</b>(blocked_range2d &r, Split &split_obj) (defined in <a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00025.html#a5805972c8c41b2681d286f9c9771cf52">empty</a>() const </td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00025.html#ac84c6cc2ff8b0974ffa719fed804f586">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00025.html#aa0519760654368000f7ebc87d9bfe898">is_splittable_in_proportion</a></td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00025.html#ada609b296a9af0591cc34761b8538100">row_range_type</a> typedef</td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00025.html#a4f7299e74c40df57dee2433c07ce65ae">rows</a>() const </td><td class="entry"><a class="el" href="a00025.html">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00269.html b/doc/html/a00269.html
index 1fc4e64..242503b 100644
--- a/doc/html/a00269.html
+++ b/doc/html/a00269.html
@@ -33,33 +33,35 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00150.html">thread_bound_filter</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00026.html">blocked_range3d</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::thread_bound_filter Member List</div>  </div>
+<div class="title">tbb::blocked_range3d< PageValue, RowValue, ColValue > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00150.html">tbb::thread_bound_filter</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end_of_stream</b> enum value (defined in <a class="el" href="a00150.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a></td><td class="entry"><a class="el" href="a00053.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>item_not_available</b> enum value (defined in <a class="el" href="a00150.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00150.html#ac99258407f382d84568a510075074fc7">process_item</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>result_type</b> enum name (defined in <a class="el" href="a00150.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>success</b> enum value (defined in <a class="el" href="a00150.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_bound_filter</b>(mode filter_mode) (defined in <a class="el" href="a00150.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00150.html#a12cfa43c620066a8783529cc8519c6f9">try_process_item</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range3d</b>(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a0002 [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blocked_range3d</b>(blocked_range3d &r, split) (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blocked_range3d</b>(blocked_range3d &r, proportional_split &proportion) (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>col_range_type</b> typedef (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00026.html#a308d7089a1d53ff26770a7040ed817cd">cols</a>() const </td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_split</b>(blocked_range3d &r, Split &split_obj) (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00026.html#aea992e0cd3d105f964a633b1a0a1a05f">empty</a>() const </td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00026.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">is_divisible</a>() const </td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00026.html#a5940c1bd6ba0e8184ef83dea0ae56884">is_splittable_in_proportion</a></td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00026.html#a8cdc866378a12ce198da870d0439676f">page_range_type</a> typedef</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00026.html#a5b794fd53ba92106aeafa4eed85731d4">pages</a>() const </td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>row_range_type</b> typedef (defined in <a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00026.html#aeac1def585af81467573f30ebb42cb4f">rows</a>() const </td><td class="entry"><a class="el" href="a00026.html">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00270.html b/doc/html/a00270.html
index a97550c..c778cc8 100644
--- a/doc/html/a00270.html
+++ b/doc/html/a00270.html
@@ -33,33 +33,40 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00089.html">pipeline</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">cache_aligned_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::pipeline Member List</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00089.html">tbb::pipeline</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00089.html#a8eb83014bd53b184e0ed50f120ca310b">add_filter</a>(filter &filter_)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00089.html#ae53edbda1771eeaa254d78ae6100a762">clear</a>()</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::pipeline_cleaner</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::pipeline_root_task</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::stage_task</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00089.html#afe7b7bd9b2617c2b69170675a478b2bd">pipeline</a>()</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00089.html#ac9ee9080cfc080c40a7ee7cb03a62637">run</a>(size_t max_number_of_live_tokens)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00089.html#a270dba81f7dd9935be7f3d69db907ff4">run</a>(size_t max_number_of_live_tokens, tbb::task_group_context &context)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::interface6::internal::pipeline_proxy</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_bound_filter</b> (defined in <a class="el" href="a00089.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00089.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">~pipeline</a>()</td><td class="entry"><a class="el" href="a00089.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00032.html#a99d05096f80877849cb31d80247e0f85">allocate</a>(size_type n, const void *hint=0)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>cache_aligned_allocator</b>() (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cache_aligned_allocator</b>(const cache_aligned_allocator &) (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>cache_aligned_allocator</b>(const cache_aligned_allocator< U > &) (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00032.html#ab316f80a66b991801b4ec4ea88b852d9">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, value_type &&value) (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00032.html#a7f7310e046c4b6b8618864de8e27a471">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00032.html#af2fd054d055403d4ea669fd3af661cc8">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00032.html#a4b945b3180ea3dfe16dfa048f4591c6d">max_size</a>() const </td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00032.html">tbb::cache_aligned_allocator< T ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00271.html b/doc/html/a00271.html
index d510574..d1706bb 100644
--- a/doc/html/a00271.html
+++ b/doc/html/a00271.html
@@ -33,26 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00093.html">queuing_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00032.html">cache_aligned_allocator</a></li><li class="navelem"><a class="el" href="a00121.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::queuing_mutex Member List</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< T >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00093.html">tbb::queuing_mutex</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00121.html">tbb::cache_aligned_allocator< T >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00093.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00093.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00093.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00093.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00093.html#a0e58fce2062ae349a30b320b7fdc9155">queuing_mutex</a>()</td><td class="entry"><a class="el" href="a00093.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00121.html">tbb::cache_aligned_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00121.html">tbb::cache_aligned_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00272.html b/doc/html/a00272.html
index cc54708..911ebb6 100644
--- a/doc/html/a00272.html
+++ b/doc/html/a00272.html
@@ -33,27 +33,24 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00093.html">queuing_mutex</a></li><li class="navelem"><a class="el" href="a00121.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::queuing_mutex::scoped_lock Member List</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< void > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00121.html#abf8aa7ccd48d54dcb53665700a17d02a">acquire</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00121.html#aaa065e48b428b8d43e9bb931ba9e6f6c">release</a>()</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00121.html#a0afe0107eb0aae613e726f67624d2fca">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00121.html#aa82d9da0dcfe5b21f1c08473f8223105">scoped_lock</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00121.html#ab4800ba9e743cd91f152036a6689b0e9">try_acquire</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00121.html#a469ec43836a8dd250ce0a22b02945630">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00121.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00033.html">tbb::cache_aligned_allocator< void ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00273.html b/doc/html/a00273.html
index 076a676..3d2f7b6 100644
--- a/doc/html/a00273.html
+++ b/doc/html/a00273.html
@@ -33,27 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00094.html">queuing_rw_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a></li><li class="navelem"><a class="el" href="a00114.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::queuing_rw_mutex Member List</div>  </div>
+<div class="title">tbb::cache_aligned_allocator< void >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00094.html">tbb::queuing_rw_mutex</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00114.html">tbb::cache_aligned_allocator< void >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00094.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00094.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00094.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00094.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00094.html#a23de1ac415b6f54b778c8fd6ec6073e0">queuing_rw_mutex</a>()</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00094.html#ae67fe828d7e07222e7876ef9fd780fcc">~queuing_rw_mutex</a>()</td><td class="entry"><a class="el" href="a00094.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00114.html">tbb::cache_aligned_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00114.html">tbb::cache_aligned_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00274.html b/doc/html/a00274.html
index 71184dd..b51d0e8 100644
--- a/doc/html/a00274.html
+++ b/doc/html/a00274.html
@@ -33,29 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00094.html">queuing_rw_mutex</a></li><li class="navelem"><a class="el" href="a00119.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00036.html">combinable</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::queuing_rw_mutex::scoped_lock Member List</div>  </div>
+<div class="title">tbb::combinable< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00036.html">tbb::combinable< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00119.html#ab4bf2fb86d6a418f9ea36474eb8893f9">acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00119.html#af0af63035147a3d8422f8c8d7b8d2629">downgrade_to_reader</a>()</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00119.html#a50fb02b77f02a01c74754d163157ec77">release</a>()</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00119.html#a1ae3792726dcff8da1f2c5366fb2b754">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00119.html#af1b55ca1839c9c7c2cd779cd2dd9c474">scoped_lock</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00119.html#a4843d40dddc37c1aa3444e27d35d2433">try_acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00119.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">upgrade_to_writer</a>()</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00119.html#a6cb16cc55f884bbbd5a69430c47b288f">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00119.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>combinable</b>() (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combinable</b>(finit _finit) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>combinable</b>(const combinable &other) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combine</b>(combine_func_t f_combine) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>combine_each</b>(combine_func_t f_combine) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>local</b>() (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>local</b>(bool &exists) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const combinable &other) (defined in <a class="el" href="a00036.html">tbb::combinable< T ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00036.html#a52f00cf262d768048db72ab73c8f3ca4">~combinable</a>()</td><td class="entry"><a class="el" href="a00036.html">tbb::combinable< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00275.html b/doc/html/a00275.html
index c486c27..953a1ff 100644
--- a/doc/html/a00275.html
+++ b/doc/html/a00275.html
@@ -33,33 +33,23 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">recursive_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00163.html">tbb_hash_compare</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::recursive_mutex Member List</div>  </div>
+<div class="title">tbb::tbb_hash_compare< Key > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00107.html">tbb::recursive_mutex</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00163.html">tbb::tbb_hash_compare< Key ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00107.html#adea997b45dc4a360f38d14bde9c991f2">lock</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00107.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a> typedef</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00107.html#a47eb6e7e7ffa5d35341125792b17236b">recursive_mutex</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00107.html#a8b181d9aaa95444145222cfe206e8094">try_lock</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00107.html#af57e8d25e0e7614e98bcfa50bc9416c8">unlock</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~recursive_mutex</b>() (defined in <a class="el" href="a00107.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>equal</b>(const Key &a, const Key &b) (defined in <a class="el" href="a00163.html">tbb::tbb_hash_compare< Key ></a>)</td><td class="entry"><a class="el" href="a00163.html">tbb::tbb_hash_compare< Key ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash</b>(const Key &a) (defined in <a class="el" href="a00163.html">tbb::tbb_hash_compare< Key ></a>)</td><td class="entry"><a class="el" href="a00163.html">tbb::tbb_hash_compare< Key ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00276.html b/doc/html/a00276.html
index 087cb7d..ea6b9a0 100644
--- a/doc/html/a00276.html
+++ b/doc/html/a00276.html
@@ -33,28 +33,55 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">recursive_mutex</a></li><li class="navelem"><a class="el" href="a00120.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00042.html">concurrent_bounded_queue</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::recursive_mutex::scoped_lock Member List</div>  </div>
+<div class="title">tbb::concurrent_bounded_queue< T, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00120.html#ac5450ce6a5813f395afaa434384c6539">acquire</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>recursive_mutex</b> (defined in <a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00120.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">release</a>()</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00120.html#a0a9962a3932cfbd0d12cb197494f951b">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00120.html#ab42cb541abb9647cac23b1db9a4db93d">scoped_lock</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00120.html#a160bba506f4033980ddb69ab7a02c4fb">try_acquire</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00120.html#a90a966e19120aac99b36a3d6d04af1a2">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00120.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a77a755d94cabf5208905d10d5b57419c">abort</a>()</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a526487063242569685af8c8d778d39e0">capacity</a>() const </td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a246be3920e079ea4847933f106baa98f">clear</a>()</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a>(const concurrent_bounded_queue &src, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a228b9d3bf3158a9379748894a93fbe55">concurrent_bounded_queue</a>(concurrent_bounded_queue &&src)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_bounded_queue</b>(concurrent_bounded_queue &&src, const allocator_type &a) (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#af838e520ce0db2c22369748c019b11cb">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a72725361e050c5a981035a20ef1b773e">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>emplace</b>(Arguments &&...args) (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a8c59578f28c5fb4718b0eff43776e879">empty</a>() const </td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a>(const T &source)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a62a03e9c185562254ecb4104f38c106d">push</a>(T &&source)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a768699675813575eec08c1f43afda395">set_capacity</a>(size_type new_capacity)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a>() const </td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_emplace</b>(Arguments &&...args) (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a03d93a240841a21788396bebd71c51bd">try_push</a>(const T &source)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#a93f35e9d9381629e0a2993f9fdd96d92">try_push</a>(T &&source)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_begin</b>() (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_begin</b>() const  (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_end</b>() (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_end</b>() const  (defined in <a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a> typedef</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00042.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a>()</td><td class="entry"><a class="el" href="a00042.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00277.html b/doc/html/a00277.html
index 47fd0ef..b9f0253 100644
--- a/doc/html/a00277.html
+++ b/doc/html/a00277.html
@@ -33,39 +33,99 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">scalable_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">concurrent_vector</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< T > Member List</div>  </div>
+<div class="title">tbb::concurrent_vector< T, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00111.html#acf24945c12dc0586dfb1f8638daf7838">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b> (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(U *p, Args &&...args) (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00111.html#a0632b19f25e5d5f86f18b3101925f488">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>destroy</b>(pointer p) (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00111.html#afaa85d739b466699cf669116fd10d175">max_size</a>() const </td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scalable_allocator</b>() (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scalable_allocator</b>(const scalable_allocator &) (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scalable_allocator</b>(const scalable_allocator< U > &) (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00111.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a87355dce93d0882aa73333a35c9b367c">assign</a>(size_type n, const_reference t)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a7bb5399a8499f88cf859eab39f0ed9e0">assign</a>(I first, I last)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a584d6cda5794441b19d4f02bde399dff">assign</a>(std::initializer_list< T > init_list)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd">at</a>(size_type index)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#ae4dc6c1b55c0e0b73f0a8675ef2b60a4">at</a>(size_type index) const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#aaee3ddf1d05238a8a6887f6d824b76f8">back</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#acf66eb1e82dbcb430d9926a23711c720">back</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ab55636c80368ad7d400f3200313fcf5f">begin</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#ad3eb33d1b10a988a87cc708ceb08f3a9">begin</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a96c2ae9dfedc24d62554feb627df76c3">capacity</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a7a1c5441fa480c07ef37d9206b6260cc">cbegin</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a9ea80faf139feb54d6576c036e4ba898">cend</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a526ba408fb3064ef846940d633b8f365">clear</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a5bd95c2241653c760704a92b2c887a48">concurrent_vector</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#aa25dccd2f65fbfa148e92d01a11c20ff">concurrent_vector</a>(std::initializer_list< T > init_list, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">concurrent_vector</a>(const concurrent_vector &vector, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#aafb048cfda83d0e7803888ead76c06a9">concurrent_vector</a>(concurrent_vector &&source)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_vector</b>(concurrent_vector &&source, const allocator_type &a) (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#abb0e376a31c3fdb91beaaa98441735f5">concurrent_vector</a>(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#aa898a39aad73711ceca70cd465dc0b4f">concurrent_vector</a>(size_type n)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a736c6e35f1df11625636968ea546e21f">concurrent_vector</a>(size_type n, const_reference t, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ae0d384ec56032d18f63e26960029d3ce">concurrent_vector</a>(I first, I last, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reverse_iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_range</b>(void *dst, const void *p_type_erased_iterator, size_type n) (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a2627db4a7949522ea4727320b23a6348">crbegin</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#ad097225c529dbb24cc0e13a444ab4752">crend</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#afae4c378515b89cc2b0a11c8cf1bcc50">emplace_back</a>(Args &&...args)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#aa3f6774107e65642f73c0dcc9a962fe7">empty</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#aad2c07653375e4a5f89c33b375eda610">end</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a6a4ad0795a19d94df24595e748f0b193">end</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a9bfc6d733cf543280b691ed8d7b7908a">front</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a9067259572c2c41d014840d0f9d3cdce">front</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ab89c2db5358048debdc282ff995caffb">grow_by</a>(size_type delta)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#aa11fc991cda82cf93789fce31b37a16c">grow_by</a>(size_type delta, const_reference t)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#acfd74483ff523213b78f44fb914c8eb4">grow_by</a>(I first, I last)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a95f57f1529e0ebd1ca6bd2d60003fcab">grow_by</a>(std::initializer_list< T > init_list)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ae9ef9895e88f9bf036b379035c18f035">grow_to_at_least</a>(size_type n)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a422d9689ed72a5ef2b6b72f28e4143a2">grow_to_at_least</a>(size_type n, const_reference t)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::vector_iterator</b> (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_vector_base</b>() const  (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a0ec9c3ab3360e04bdaa5174956a3206d">max_size</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a920384aece0eb8beea3049956320ec91">operator=</a>(const concurrent_vector &vector)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a0d26889a94203cdb5f5460fade7497c7">operator=</a>(concurrent_vector &&other)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a1fe7f0b60bbf304890a9293a35e6819d">operator=</a>(const concurrent_vector< T, M > &vector)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a8498a1335a3bbac2f4925a4e8d70cdb8">operator=</a>(std::initializer_list< T > init_list)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a3097cb46511504acfc9de7da5235f4a6">operator[]</a>(size_type index)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#abd6ca67f2f97fafca48395af2e693e73">operator[]</a>(size_type index) const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#ad68d1675fedef232bfae35f200ba007d">push_back</a>(const_reference item)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#ac29a9f08c0fac7c20786c7b8f4f0321a">push_back</a>(T &&item)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a8201f65735edcc28aeec95b6e73d75b6">range</a>(size_t grainsize=1)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a8fcc32ec9ccb48c3327a88fe288c7538">range</a>(size_t grainsize=1) const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a9a2f8dce0adcbef8e29273c23723a78e">rbegin</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a976b0bed19de9ab93f78c10184a4e38f">rbegin</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a618f38279a370c18f73ea2c29ded9cb9">rend</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#abdb98e17cb65d9c445d7fd1e662c2699">rend</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a0b3284684328c58c0228c9a697ef3594">reserve</a>(size_type n)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#a65e53a98a1e1fdb515fdc2b84e2314e8">resize</a>(size_type n)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a941917a8a840ff08ce8810ca9476ff46">resize</a>(size_type n, const_reference t)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reverse_iterator</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00053.html#aba805b5225ad3399550f78ea15e51e93">shrink_to_fit</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7">size</a>() const </td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#a8603bd57324fb6b60ba006884c95279d">swap</a>(concurrent_vector &vector)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a>)</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00053.html#ab5bcaededc9a00e7aaecd6c262fd0b38">~concurrent_vector</a>()</td><td class="entry"><a class="el" href="a00053.html">tbb::concurrent_vector< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00278.html b/doc/html/a00278.html
index a6f97e6..c5c53dc 100644
--- a/doc/html/a00278.html
+++ b/doc/html/a00278.html
@@ -33,22 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">scalable_allocator</a></li><li class="navelem"><a class="el" href="a00105.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00053.html">concurrent_vector</a></li><li class="navelem"><b>push_back_helper</b></li><li class="navelem"><a class="el" href="a00060.html">element_construction_guard</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< T >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00105.html">tbb::scalable_allocator< T >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00105.html">tbb::scalable_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00105.html">tbb::scalable_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dismiss</b>() (defined in <a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>element</b> (defined in <a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>element_construction_guard</b>(pointer an_element) (defined in <a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~element_construction_guard</b>() (defined in <a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00279.html b/doc/html/a00279.html
index ad6b317..2a8a705 100644
--- a/doc/html/a00279.html
+++ b/doc/html/a00279.html
@@ -33,24 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">scalable_allocator< void ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00099.html">mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< void > Member List</div>  </div>
+<div class="title">tbb::mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00112.html">tbb::scalable_allocator< void ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00099.html">tbb::mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00112.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00112.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00112.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DESTROYED</b> enum value (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>HELD</b> enum value (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>INITIALIZED</b> enum value (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00099.html#a95ff02ee699b34696001db4003c11a3a">lock</a>()</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00099.html#ad1b280c954ffc8b8b3e63e4ee4144035">mutex</a>()</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00099.html#abbe0cd12246121753ace00a5a12a90b0">native_handle_type</a> typedef</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00099.html#a0857c4596d7d5de09fe402ccd41d3e42">set_state</a>(state_t to)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>state_t</b> enum name (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00099.html#a480283933106941125717499f9c5ad42">try_lock</a>()</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00099.html#a721eeae7ba16f8b92535f4534b583874">unlock</a>()</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~mutex</b>() (defined in <a class="el" href="a00099.html">tbb::mutex</a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00280.html b/doc/html/a00280.html
index ebabc30..eb5362a 100644
--- a/doc/html/a00280.html
+++ b/doc/html/a00280.html
@@ -33,22 +33,28 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">scalable_allocator< void ></a></li><li class="navelem"><a class="el" href="a00097.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00099.html">mutex</a></li><li class="navelem"><a class="el" href="a00140.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::scalable_allocator< void >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00097.html">tbb::scalable_allocator< void >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00140.html">tbb::mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00097.html">tbb::scalable_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::scalable_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00140.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">acquire</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutex</b> (defined in <a class="el" href="a00140.html">tbb::mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00140.html#a1a1590281ccca912229a689d920fd78a">release</a>()</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00140.html#a23122745ccd5fc2498fcbbd5ced09e06">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00140.html#ab7c2074543443824790433d3d6c3fece">scoped_lock</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00140.html#a46f983371aa852d2427ce69f9a571f78">try_acquire</a>(mutex &mutex)</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00140.html#a08c399ee0bb9762039b29e570ec46fe9">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00140.html">tbb::mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00281.html b/doc/html/a00281.html
index 17bad58..41f9730 100644
--- a/doc/html/a00281.html
+++ b/doc/html/a00281.html
@@ -33,30 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00127.html">spin_mutex</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00101.html">null_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::spin_mutex Member List</div>  </div>
+<div class="title">tbb::null_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00127.html">tbb::spin_mutex</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00101.html">tbb::null_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00127.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct</a>()</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00127.html#a8957e40b0781192419d01d28e5205ec4">lock</a>()</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00127.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00127.html#a6c96196965bf7df426311d282ad3c378">spin_mutex</a>()</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00127.html#a003ffb196d22bf22ca22142338b7eeab">try_lock</a>()</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00127.html#adfcf8fe840aa73c08c2cadd570fd48fd">unlock</a>()</td><td class="entry"><a class="el" href="a00127.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00101.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00101.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00101.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00101.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00101.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00101.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>null_mutex</b>() (defined in <a class="el" href="a00101.html">tbb::null_mutex</a>)</td><td class="entry"><a class="el" href="a00101.html">tbb::null_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00282.html b/doc/html/a00282.html
index 755e23e..b9dc0ee 100644
--- a/doc/html/a00282.html
+++ b/doc/html/a00282.html
@@ -33,28 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00127.html">spin_mutex</a></li><li class="navelem"><a class="el" href="a00113.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00101.html">null_mutex</a></li><li class="navelem"><a class="el" href="a00137.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::spin_mutex::scoped_lock Member List</div>  </div>
+<div class="title">tbb::null_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00113.html#a7c702117f08ae82d034a98b3d5510ffc">acquire</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00113.html#a7e801b0c28fd8395fec400b96acc5c34">release</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00113.html#a4287be975cf2448c95f068b065c45107">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00113.html#a73f7381a9a112b9f5a856b1face525fb">scoped_lock</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>spin_mutex</b> (defined in <a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00113.html#a76acbd67c74906f6ea33a1de6fd443ce">try_acquire</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00113.html#a9940d6e494466d9c53846ed347d79d83">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>acquire</b>(null_mutex &) (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>release</b>() (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>() (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b>(null_mutex &) (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_acquire</b>(null_mutex &) (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::null_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00283.html b/doc/html/a00283.html
index 163b5fa..2bed3af 100644
--- a/doc/html/a00283.html
+++ b/doc/html/a00283.html
@@ -33,38 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00128.html">spin_rw_mutex_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00102.html">null_rw_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::spin_rw_mutex_v3 Member List</div>  </div>
+<div class="title">tbb::null_rw_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00102.html">tbb::null_rw_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BUSY</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a51e207646300a4c242bb4aaa4e04e9b8">lock</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00128.html#aa0e3bb644e9021d0f80ee36b03f228e4">lock_read</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ONE_READER</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>READERS</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00128.html#ad30fc1ffa0a2b8134e177e02c5821d7f">spin_rw_mutex_v3</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00128.html#aa28625051072472ccd8a2b19405d6fb3">state</a></td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>state_t</b> typedef (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00128.html#ab6ec20b1ec43a49c8c2908984e35b5e8">try_lock</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00128.html#ac932f65b0b66320688e7957ce9c3e2c1">try_lock_read</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00128.html#ab04321ed2cdf12ac5825c54591028fc0">unlock</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>WRITER</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>WRITER_PENDING</b> (defined in <a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00128.html#acc7cf2e4b14d3a2a591a3552d74ba99d">~spin_rw_mutex_v3</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00102.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00102.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00102.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00102.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00102.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00102.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>null_rw_mutex</b>() (defined in <a class="el" href="a00102.html">tbb::null_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00102.html">tbb::null_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00284.html b/doc/html/a00284.html
index 88cc311..3a67e8f 100644
--- a/doc/html/a00284.html
+++ b/doc/html/a00284.html
@@ -33,34 +33,29 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00128.html">spin_rw_mutex_v3</a></li><li class="navelem"><a class="el" href="a00114.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00102.html">null_rw_mutex</a></li><li class="navelem"><a class="el" href="a00138.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::spin_rw_mutex_v3::scoped_lock Member List</div>  </div>
+<div class="title">tbb::null_rw_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__internal_get_mutex</b>() (defined in <a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>__internal_set_mutex</b>(spin_rw_mutex *m) (defined in <a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>__internal_set_writer</b>(bool flag=true) (defined in <a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00114.html#a6d49df365396ab314e78ba07c6b96433">acquire</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00114.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader</a>()</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00114.html#acfd129dc5106ad1129ba803e67311050">is_writer</a></td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00114.html#a8d70c5a2348e30a6979bfbf677328dc4">mutex</a></td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">release</a>()</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00114.html#a285b355121772c874a7ecaaf4d347224">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00114.html#a0a2e15358575f7651446bca13a5a2674">scoped_lock</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00114.html#abf17ada91882fd70f139c503c0220f16">try_acquire</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00114.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer</a>()</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00114.html#a5c27ca2e0c9db960a9a7430082ff7edd">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00114.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>acquire</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>downgrade_to_reader</b>() (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>release</b>() (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b>() (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_acquire</b>(null_rw_mutex &, bool=true) (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>upgrade_to_writer</b>() (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00138.html">tbb::null_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00285.html b/doc/html/a00285.html
index ade1579..2ebbd5e 100644
--- a/doc/html/a00285.html
+++ b/doc/html/a00285.html
@@ -33,26 +33,23 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00139.html">task_handle</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00105.html">parallel_do_feeder</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::task_handle< F > Member List</div>  </div>
+<div class="title">tbb::parallel_do_feeder< Item > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00139.html">tbb::task_handle< F ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00105.html">tbb::parallel_do_feeder< Item ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::task_handle_task</b> (defined in <a class="el" href="a00139.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>() const  (defined in <a class="el" href="a00139.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>structured_task_group</b> (defined in <a class="el" href="a00139.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group</b> (defined in <a class="el" href="a00139.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_handle</b>(const F &f) (defined in <a class="el" href="a00139.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00105.html#ac095c6b1a32e9c0be010aa32875d7a63">add</a>(const Item &item)</td><td class="entry"><a class="el" href="a00105.html">tbb::parallel_do_feeder< Item ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::parallel_do_feeder_impl</b> (defined in <a class="el" href="a00105.html">tbb::parallel_do_feeder< Item ></a>)</td><td class="entry"><a class="el" href="a00105.html">tbb::parallel_do_feeder< Item ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00286.html b/doc/html/a00286.html
index da4e44a..4b33244 100644
--- a/doc/html/a00286.html
+++ b/doc/html/a00286.html
@@ -33,38 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00136.html">task_group</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00108.html">pre_scan_tag</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::task_group Member List</div>  </div>
+<div class="title">tbb::pre_scan_tag Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00136.html">tbb::task_group</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00108.html">tbb::pre_scan_tag</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>catch</b>(...) (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(const F &f) (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_wait</b>(const F &f) (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_wait</b>(task_handle< F > &h) (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_group</b>() (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~task_group</b>() __TBB_TRY (defined in <a class="el" href="a00136.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~task_group_base</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_final_scan</b>() (defined in <a class="el" href="a00108.html">tbb::pre_scan_tag</a>)</td><td class="entry"><a class="el" href="a00108.html">tbb::pre_scan_tag</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00287.html b/doc/html/a00287.html
index 89b6966..f172e27 100644
--- a/doc/html/a00287.html
+++ b/doc/html/a00287.html
@@ -33,33 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00133.html">structured_task_group</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00064.html">final_scan_tag</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::structured_task_group Member List</div>  </div>
+<div class="title">tbb::final_scan_tag Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00133.html">tbb::structured_task_group</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00064.html">tbb::final_scan_tag</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_wait</b>(task_handle< F > &h) (defined in <a class="el" href="a00133.html">tbb::structured_task_group</a>)</td><td class="entry"><a class="el" href="a00133.html">tbb::structured_task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00133.html">tbb::structured_task_group</a>)</td><td class="entry"><a class="el" href="a00133.html">tbb::structured_task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~task_group_base</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_final_scan</b>() (defined in <a class="el" href="a00064.html">tbb::final_scan_tag</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::final_scan_tag</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00288.html b/doc/html/a00288.html
index 4f2a94b..7fff734 100644
--- a/doc/html/a00288.html
+++ b/doc/html/a00288.html
@@ -33,32 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00141.html">task_scheduler_init</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00106.html">parallel_while</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::task_scheduler_init Member List</div>  </div>
+<div class="title">tbb::parallel_while< Body > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00141.html">tbb::task_scheduler_init</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00106.html">tbb::parallel_while< Body ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a></td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00141.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">default_num_threads</a>()</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00141.html#af0e49ff2f59a4e53c9c07897b57f084d">deferred</a></td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>if</b>(wait_workers_in_terminate) my_scheduler (defined in <a class="el" href="a00141.html">tbb::task_scheduler_init</a>)</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c">initialize</a>(int number_of_threads=automatic)</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00141.html#a0f5294f74b123a646a1762c68d11e39a">initialize</a>(int number_of_threads, stack_size_type thread_stack_size)</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>initialize</b>(number_of_threads, thread_stack_size) (defined in <a class="el" href="a00141.html">tbb::task_scheduler_init</a>)</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00141.html#aed5505d7fed9d5493676aa15c176512c">is_active</a>() const </td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00141.html#a15d5dca7f79c5769bb96f674e4da0c04">terminate</a>()</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a></td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00141.html#a20b121334ec39c1d91bd4fe9a51892b0">~task_scheduler_init</a>()</td><td class="entry"><a class="el" href="a00141.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a4861989d7f5e3111d264d4d6013e8fe1">add</a>(const value_type &item)</td><td class="entry"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00106.html#a220a7307358aa36802c8754ea45ca385">parallel_while</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a20607ba5faa958144787d980aa850c16">run</a>(Stream &stream, const Body &body)</td><td class="entry"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">value_type</a> typedef</td><td class="entry"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00106.html#ac2fd559c8a38639fa1ba97a0d5639ca8">~parallel_while</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::parallel_while< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00289.html b/doc/html/a00289.html
index b7bbaac..b2bbd12 100644
--- a/doc/html/a00289.html
+++ b/doc/html/a00289.html
@@ -33,43 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00144.html">tbb_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00062.html">filter</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< T > Member List</div>  </div>
+<div class="title">tbb::filter Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00062.html">tbb::filter</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00144.html#afedd8a64eed9692083c708f419338e0c">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00144.html#aa4606cff0156ec4237c1571204851bfb">allocator_type</a>()</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00144.html#af54fa3029e33cebe5ba64a8538306fdf">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a28e333e0fff56dd53c20b82cfee430ab">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00144.html#ac7b1b393a8ff3399079328c0971c1996">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00144.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> enum name</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a0a2676fb8a2f931961d373b88848c93e">max_size</a>() const </td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scalable</b> enum value (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>standard</b> enum value (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb_allocator</b>() (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb_allocator</b>(const tbb_allocator &) (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb_allocator</b>(const tbb_allocator< U > &) (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00290.html b/doc/html/a00290.html
index c35ac6d..9039570 100644
--- a/doc/html/a00290.html
+++ b/doc/html/a00290.html
@@ -33,22 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00144.html">tbb_allocator</a></li><li class="navelem"><a class="el" href="a00098.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00165.html">thread_bound_filter</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< T >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::thread_bound_filter Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00098.html">tbb::tbb_allocator< T >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00165.html">tbb::thread_bound_filter</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00098.html">tbb::tbb_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::tbb_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end_of_stream</b> enum value (defined in <a class="el" href="a00165.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">exact_exception_propagation</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">filter_is_bound</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">filter_is_out_of_order</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">filter_is_serial</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">filter_may_emit_null</a></td><td class="entry"><a class="el" href="a00062.html">tbb::filter</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>item_not_available</b> enum value (defined in <a class="el" href="a00165.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00165.html#ac99258407f382d84568a510075074fc7">process_item</a>()</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>result_type</b> enum name (defined in <a class="el" href="a00165.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>success</b> enum value (defined in <a class="el" href="a00165.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_bound_filter</b>(mode filter_mode) (defined in <a class="el" href="a00165.html">tbb::thread_bound_filter</a>)</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00165.html#a12cfa43c620066a8783529cc8519c6f9">try_process_item</a>()</td><td class="entry"><a class="el" href="a00165.html">tbb::thread_bound_filter</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00291.html b/doc/html/a00291.html
index 79883cd..aaedd07 100644
--- a/doc/html/a00291.html
+++ b/doc/html/a00291.html
@@ -33,24 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">tbb_allocator< void ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00107.html">pipeline</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< void > Member List</div>  </div>
+<div class="title">tbb::pipeline Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00145.html">tbb::tbb_allocator< void ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00107.html">tbb::pipeline</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00145.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00145.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00145.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00107.html#a8eb83014bd53b184e0ed50f120ca310b">add_filter</a>(filter &filter_)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00107.html#ae53edbda1771eeaa254d78ae6100a762">clear</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::pipeline_cleaner</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::pipeline_root_task</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::stage_task</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00107.html#afe7b7bd9b2617c2b69170675a478b2bd">pipeline</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00107.html#ac9ee9080cfc080c40a7ee7cb03a62637">run</a>(size_t max_number_of_live_tokens)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00107.html#a270dba81f7dd9935be7f3d69db907ff4">run</a>(size_t max_number_of_live_tokens, tbb::task_group_context &context)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::interface6::internal::pipeline_proxy</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_bound_filter</b> (defined in <a class="el" href="a00107.html">tbb::pipeline</a>)</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00107.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">~pipeline</a>()</td><td class="entry"><a class="el" href="a00107.html">tbb::pipeline</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00292.html b/doc/html/a00292.html
index 980b883..5b059dc 100644
--- a/doc/html/a00292.html
+++ b/doc/html/a00292.html
@@ -33,22 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">tbb_allocator< void ></a></li><li class="navelem"><a class="el" href="a00099.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">queuing_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tbb_allocator< void >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::queuing_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00099.html">tbb::tbb_allocator< void >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00111.html">tbb::queuing_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00099.html">tbb::tbb_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00099.html">tbb::tbb_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00111.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00111.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00111.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00111.html">tbb::queuing_mutex</a>)</td><td class="entry"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00111.html#a0e58fce2062ae349a30b320b7fdc9155">queuing_mutex</a>()</td><td class="entry"><a class="el" href="a00111.html">tbb::queuing_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00293.html b/doc/html/a00293.html
index e68d99d..97e5095 100644
--- a/doc/html/a00293.html
+++ b/doc/html/a00293.html
@@ -33,33 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">zero_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00111.html">queuing_mutex</a></li><li class="navelem"><a class="el" href="a00132.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< T, Allocator > Member List</div>  </div>
+<div class="title">tbb::queuing_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>(const size_type n, const void *hint=0) (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>base_allocator_type</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>zero_allocator</b>() (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>zero_allocator</b>(const zero_allocator &a) (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>zero_allocator</b>(const zero_allocator< U > &a) (defined in <a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00132.html#abf8aa7ccd48d54dcb53665700a17d02a">acquire</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00132.html#aaa065e48b428b8d43e9bb931ba9e6f6c">release</a>()</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00132.html#a0afe0107eb0aae613e726f67624d2fca">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00132.html#aa82d9da0dcfe5b21f1c08473f8223105">scoped_lock</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00132.html#ab4800ba9e743cd91f152036a6689b0e9">try_acquire</a>(queuing_mutex &m)</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00132.html#a469ec43836a8dd250ce0a22b02945630">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00132.html">tbb::queuing_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00294.html b/doc/html/a00294.html
index 229bcc4..5d8a105 100644
--- a/doc/html/a00294.html
+++ b/doc/html/a00294.html
@@ -33,22 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">zero_allocator</a></li><li class="navelem"><a class="el" href="a00100.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">queuing_rw_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< T, Allocator >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::queuing_rw_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00100.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00112.html">tbb::queuing_rw_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00100.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00112.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00112.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00112.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00112.html">tbb::queuing_rw_mutex</a>)</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00112.html#a23de1ac415b6f54b778c8fd6ec6073e0">queuing_rw_mutex</a>()</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00112.html#ae67fe828d7e07222e7876ef9fd780fcc">~queuing_rw_mutex</a>()</td><td class="entry"><a class="el" href="a00112.html">tbb::queuing_rw_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00295.html b/doc/html/a00295.html
index 7491ae3..9cbffd3 100644
--- a/doc/html/a00295.html
+++ b/doc/html/a00295.html
@@ -33,25 +33,29 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00112.html">queuing_rw_mutex</a></li><li class="navelem"><a class="el" href="a00131.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< void, Allocator > Member List</div>  </div>
+<div class="title">tbb::queuing_rw_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_allocator_type</b> typedef (defined in <a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00131.html#ab4bf2fb86d6a418f9ea36474eb8893f9">acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00131.html#af0af63035147a3d8422f8c8d7b8d2629">downgrade_to_reader</a>()</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00131.html#a50fb02b77f02a01c74754d163157ec77">release</a>()</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00131.html#a1ae3792726dcff8da1f2c5366fb2b754">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00131.html#af1b55ca1839c9c7c2cd779cd2dd9c474">scoped_lock</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00131.html#a4843d40dddc37c1aa3444e27d35d2433">try_acquire</a>(queuing_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00131.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">upgrade_to_writer</a>()</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00131.html#a6cb16cc55f884bbbd5a69430c47b288f">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00131.html">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00296.html b/doc/html/a00296.html
index 6919355..01a5a07 100644
--- a/doc/html/a00296.html
+++ b/doc/html/a00296.html
@@ -33,22 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a></li><li class="navelem"><a class="el" href="a00103.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00125.html">recursive_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::zero_allocator< void, Allocator >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::recursive_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00103.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00125.html">tbb::recursive_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00103.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00103.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00125.html#adea997b45dc4a360f38d14bde9c991f2">lock</a>()</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00125.html#a3d40334b0e26d5addfde5596e7f9aaec">native_handle_type</a> typedef</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00125.html#a47eb6e7e7ffa5d35341125792b17236b">recursive_mutex</a>()</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00125.html#a8b181d9aaa95444145222cfe206e8094">try_lock</a>()</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00125.html#af57e8d25e0e7614e98bcfa50bc9416c8">unlock</a>()</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~recursive_mutex</b>() (defined in <a class="el" href="a00125.html">tbb::recursive_mutex</a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::recursive_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00297.html b/doc/html/a00297.html
index 775b2da..edf54f4 100644
--- a/doc/html/a00297.html
+++ b/doc/html/a00297.html
@@ -33,23 +33,28 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00017.html">bad_last_alloc</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00125.html">recursive_mutex</a></li><li class="navelem"><a class="el" href="a00139.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::bad_last_alloc Member List</div>  </div>
+<div class="title">tbb::recursive_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00017.html">tbb::bad_last_alloc</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00017.html">tbb::bad_last_alloc</a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::bad_last_alloc</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~bad_last_alloc</b>() (defined in <a class="el" href="a00017.html">tbb::bad_last_alloc</a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::bad_last_alloc</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00139.html#ac5450ce6a5813f395afaa434384c6539">acquire</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>recursive_mutex</b> (defined in <a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00139.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">release</a>()</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00139.html#a0a9962a3932cfbd0d12cb197494f951b">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00139.html#ab42cb541abb9647cac23b1db9a4db93d">scoped_lock</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00139.html#a160bba506f4033980ddb69ab7a02c4fb">try_acquire</a>(recursive_mutex &mutex)</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00139.html#a90a966e19120aac99b36a3d6d04af1a2">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00139.html">tbb::recursive_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00298.html b/doc/html/a00298.html
index 9e8e02c..572a81e 100644
--- a/doc/html/a00298.html
+++ b/doc/html/a00298.html
@@ -33,22 +33,40 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00065.html">improper_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00129.html">scalable_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::improper_lock Member List</div>  </div>
+<div class="title">tbb::scalable_allocator< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00065.html">tbb::improper_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00065.html">tbb::improper_lock</a>)</td><td class="entry"><a class="el" href="a00065.html">tbb::improper_lock</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00129.html#acf24945c12dc0586dfb1f8638daf7838">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(U *p, Args &&...args) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(pointer p, value_type &&value) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00129.html#a0632b19f25e5d5f86f18b3101925f488">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>destroy</b>(pointer p) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00129.html#afaa85d739b466699cf669116fd10d175">max_size</a>() const </td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scalable_allocator</b>() (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scalable_allocator</b>(const scalable_allocator &) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scalable_allocator</b>(const scalable_allocator< U > &) (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00129.html">tbb::scalable_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00129.html">tbb::scalable_allocator< T ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00299.html b/doc/html/a00299.html
index a5d545b..c0e607b 100644
--- a/doc/html/a00299.html
+++ b/doc/html/a00299.html
@@ -33,22 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00156.html">user_abort</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00129.html">scalable_allocator</a></li><li class="navelem"><a class="el" href="a00115.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::user_abort Member List</div>  </div>
+<div class="title">tbb::scalable_allocator< T >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00156.html">tbb::user_abort</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00115.html">tbb::scalable_allocator< T >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00156.html">tbb::user_abort</a>)</td><td class="entry"><a class="el" href="a00156.html">tbb::user_abort</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00115.html">tbb::scalable_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00115.html">tbb::scalable_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00300.html b/doc/html/a00300.html
index fca8710..42c7208 100644
--- a/doc/html/a00300.html
+++ b/doc/html/a00300.html
@@ -33,22 +33,24 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00077.html">missing_wait</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00130.html">scalable_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::missing_wait Member List</div>  </div>
+<div class="title">tbb::scalable_allocator< void > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00077.html">tbb::missing_wait</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00130.html">tbb::scalable_allocator< void ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00077.html">tbb::missing_wait</a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::missing_wait</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00130.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00130.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00130.html">tbb::scalable_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::scalable_allocator< void ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00301.html b/doc/html/a00301.html
index ba28155..9dce743 100644
--- a/doc/html/a00301.html
+++ b/doc/html/a00301.html
@@ -33,22 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00067.html">invalid_multiple_scheduling</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00130.html">scalable_allocator< void ></a></li><li class="navelem"><a class="el" href="a00116.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::invalid_multiple_scheduling Member List</div>  </div>
+<div class="title">tbb::scalable_allocator< void >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00067.html">tbb::invalid_multiple_scheduling</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00116.html">tbb::scalable_allocator< void >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00067.html">tbb::invalid_multiple_scheduling</a>)</td><td class="entry"><a class="el" href="a00067.html">tbb::invalid_multiple_scheduling</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00116.html">tbb::scalable_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00116.html">tbb::scalable_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00302.html b/doc/html/a00302.html
index 2324154..122ebaa 100644
--- a/doc/html/a00302.html
+++ b/doc/html/a00302.html
@@ -33,28 +33,30 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">tbb_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">spin_mutex</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tbb_exception Member List</div>  </div>
+<div class="title">tbb::spin_mutex Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00146.html">tbb::tbb_exception</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00145.html">tbb::spin_mutex</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">destroy</a>()=0</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">move</a>()=0</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00146.html#a282bb7dce5f157d044d14d50cd6ff35c">name</a>() const =0</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">throw_self</a>()=0</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00146.html#ae0ad81121d4b722ecc466b5d3cc4e919">what</a>() const =0</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00146.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00145.html#a4ec484f4df6ec5595ec821ef20bd6cd7">internal_construct</a>()</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00145.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00145.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00145.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00145.html#a8957e40b0781192419d01d28e5205ec4">lock</a>()</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00145.html">tbb::spin_mutex</a>)</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00145.html#a6c96196965bf7df426311d282ad3c378">spin_mutex</a>()</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00145.html#a003ffb196d22bf22ca22142338b7eeab">try_lock</a>()</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00145.html#adfcf8fe840aa73c08c2cadd570fd48fd">unlock</a>()</td><td class="entry"><a class="el" href="a00145.html">tbb::spin_mutex</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00303.html b/doc/html/a00303.html
index 018478d..70e7966 100644
--- a/doc/html/a00303.html
+++ b/doc/html/a00303.html
@@ -33,34 +33,28 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00031.html">captured_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00145.html">spin_mutex</a></li><li class="navelem"><a class="el" href="a00134.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::captured_exception Member List</div>  </div>
+<div class="title">tbb::spin_mutex::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00031.html">tbb::captured_exception</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>captured_exception</b>(const captured_exception &src) (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>captured_exception</b>(const char *name_, const char *info) (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00031.html#a3006b6825dda6c746d28fb748f5675de">destroy</a>()</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4">move</a>()</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00031.html#a23426113851b78d3f0069956afd21976">name</a>() const </td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const captured_exception &src) (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set</b>(const char *name, const char *info) (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00031.html#ac9ae925678fcc0cc02a74df7d06b8d63">throw_self</a>()</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00031.html#ac97ee315d8613c803dae2f6d3e0b91a7">what</a>() const </td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~captured_exception</b>() (defined in <a class="el" href="a00031.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00146.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00134.html#a7c702117f08ae82d034a98b3d5510ffc">acquire</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00134.html#a7e801b0c28fd8395fec400b96acc5c34">release</a>()</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00134.html#a4287be975cf2448c95f068b065c45107">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00134.html#a73f7381a9a112b9f5a856b1face525fb">scoped_lock</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>spin_mutex</b> (defined in <a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00134.html#a76acbd67c74906f6ea33a1de6fd443ce">try_acquire</a>(spin_mutex &m)</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00134.html#a9940d6e494466d9c53846ed347d79d83">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00134.html">tbb::spin_mutex::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00304.html b/doc/html/a00304.html
index 0acf545..1a127da 100644
--- a/doc/html/a00304.html
+++ b/doc/html/a00304.html
@@ -33,35 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00078.html">movable_exception</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">spin_rw_mutex_v3</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::movable_exception< ExceptionData > Member List</div>  </div>
+<div class="title">tbb::spin_rw_mutex_v3 Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>() (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>data</b>() const  (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00078.html#a02f0401b465690de797face2432d9421">destroy</a>()</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>movable_exception</b>(const ExceptionData &data_) (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>movable_exception</b>(const movable_exception &src) (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d">move</a>()</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00078.html#adba063da80054afe64d5268711084d9b">my_exception_data</a></td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00078.html#a65dd805ed2424f1d2d0998f5567a9690">name</a>() const </td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const movable_exception &src) (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00078.html#a3d1570b53220fbcb45eb81552b57827a">throw_self</a>()</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00078.html#a41a2a7b61537ecd684bae760366f611c">what</a>() const </td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~movable_exception</b>() (defined in <a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00146.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BUSY</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00146.html#a51e207646300a4c242bb4aaa4e04e9b8">lock</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00146.html#aa0e3bb644e9021d0f80ee36b03f228e4">lock_read</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ONE_READER</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>READERS</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00146.html#ad30fc1ffa0a2b8134e177e02c5821d7f">spin_rw_mutex_v3</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00146.html#aa28625051072472ccd8a2b19405d6fb3">state</a></td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>state_t</b> typedef (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00146.html#ab6ec20b1ec43a49c8c2908984e35b5e8">try_lock</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00146.html#ac932f65b0b66320688e7957ce9c3e2c1">try_lock_read</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00146.html#ab04321ed2cdf12ac5825c54591028fc0">unlock</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>WRITER</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>WRITER_PENDING</b> (defined in <a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a>)</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00146.html#acc7cf2e4b14d3a2a591a3552d74ba99d">~spin_rw_mutex_v3</a>()</td><td class="entry"><a class="el" href="a00146.html">tbb::spin_rw_mutex_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00305.html b/doc/html/a00305.html
index 93913a2..918be9d 100644
--- a/doc/html/a00305.html
+++ b/doc/html/a00305.html
@@ -33,25 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00155.html">tick_count</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00146.html">spin_rw_mutex_v3</a></li><li class="navelem"><a class="el" href="a00135.html">scoped_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tick_count Member List</div>  </div>
+<div class="title">tbb::spin_rw_mutex_v3::scoped_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00155.html">tbb::tick_count</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00155.html#a74dcecde7431ff4591d7c46fc1d50d7e">now</a>()</td><td class="entry"><a class="el" href="a00155.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00155.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td class="entry"><a class="el" href="a00155.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00155.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">resolution</a>()</td><td class="entry"><a class="el" href="a00155.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00155.html#a9f1daa0b7a4feb800f802b4be1f1e497">tick_count</a>()</td><td class="entry"><a class="el" href="a00155.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a6d49df365396ab314e78ba07c6b96433">acquire</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00135.html#aa693c05221d977856a98270a255fe5df">downgrade_to_reader</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#acfd129dc5106ad1129ba803e67311050">is_writer</a></td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00135.html#a8d70c5a2348e30a6979bfbf677328dc4">mutex</a></td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">release</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00135.html#a285b355121772c874a7ecaaf4d347224">scoped_lock</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a0a2e15358575f7651446bca13a5a2674">scoped_lock</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::interface8::internal::x86_rtm_rw_mutex</b> (defined in <a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#abf17ada91882fd70f139c503c0220f16">try_acquire</a>(spin_rw_mutex &m, bool write=true)</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00135.html#afbe5de57eadc457518df7a1bb0d30c00">upgrade_to_writer</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a5c27ca2e0c9db960a9a7430082ff7edd">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00306.html b/doc/html/a00306.html
index a9b03d7..71e6f60 100644
--- a/doc/html/a00306.html
+++ b/doc/html/a00306.html
@@ -33,30 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><a class="el" href="a00155.html">tick_count</a></li><li class="navelem"><a class="el" href="a00066.html">interval_t</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00154.html">task_handle</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::tick_count::interval_t Member List</div>  </div>
+<div class="title">tbb::task_handle< F > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00066.html">tbb::tick_count::interval_t</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00154.html">tbb::task_handle< F ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00066.html#a95e3e14750bebafe719856176e2737db">interval_t</a>()</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00066.html#a73b462297173f6bffa15bc5a86c30ef4">interval_t</a>(double sec)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00066.html#ac8910ee3b69f68eb905af787c273e9a8">operator+</a>(const interval_t &i, const interval_t &j)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00066.html#a19bf32f4541252daaa6b09fd33fa9177">operator+=</a>(const interval_t &i)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00066.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00066.html#a3d11133daa9a7d3c903d070293278f8f">operator-</a>(const interval_t &i, const interval_t &j)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00066.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">operator-=</a>(const interval_t &i)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00066.html#abe81446bbbb6b6e98d854b91acf47809">seconds</a>() const </td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb::tick_count</b> (defined in <a class="el" href="a00066.html">tbb::tick_count::interval_t</a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::task_handle_task</b> (defined in <a class="el" href="a00154.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>() const  (defined in <a class="el" href="a00154.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>structured_task_group</b> (defined in <a class="el" href="a00154.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group</b> (defined in <a class="el" href="a00154.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_handle</b>(const F &f) (defined in <a class="el" href="a00154.html">tbb::task_handle< F ></a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::task_handle< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00307.html b/doc/html/a00307.html
index 4e2ab9a..2471518 100644
--- a/doc/html/a00307.html
+++ b/doc/html/a00307.html
@@ -33,58 +33,36 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>deprecated</b></li><li class="navelem"><a class="el" href="a00039.html">concurrent_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00151.html">task_group</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::deprecated::concurrent_queue< T, A > Member List</div>  </div>
+<div class="title">tbb::task_group Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00151.html">tbb::task_group</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">abort</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">capacity</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">clear</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">concurrent_bounded_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#aad6fd2353d64c2c31d074cd99df58c02">concurrent_bounded_queue</a>(const concurrent_bounded_queue &src, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#afcfdc998e106fdb7b2dfa5df880cd9cf">concurrent_bounded_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00039.html#adc192aba16ef123aebbc4ada0fb53708">concurrent_queue</a>(const A &a=A())</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00039.html#aa7d1fb274d89c0109fa72d9d87ed329d">concurrent_queue</a>(const concurrent_queue &src, const A &a=A())</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00039.html#a93a2e58af05f73a763cc23c32d4de010">concurrent_queue</a>(InputIterator b, InputIterator e, const A &a=A())</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">empty</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">pop_if_present</a>(T &destination)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">push</a>(const T &source)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00039.html#a129cde9f5f101ddd623619c838be07f3">push_if_not_full</a>(const T &source)</td><td class="entry"><a class="el" href="a00039.html">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">reference</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">set_capacity</a>(size_type new_capacity)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">size</a>() const </td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">size_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">try_pop</a>(T &destination)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">try_push</a>(const T &source)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_begin</b>() (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_begin</b>() const  (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_end</b>() (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_end</b>() const  (defined in <a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">value_type</a> typedef</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">~concurrent_bounded_queue</a>()</td><td class="entry"><a class="el" href="a00034.html">tbb::concurrent_bounded_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00151.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run</b>(const F &f) (defined in <a class="el" href="a00151.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_wait</b>(const F &f) (defined in <a class="el" href="a00151.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_wait</b>(task_handle< F > &h) (defined in <a class="el" href="a00151.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group</b>() (defined in <a class="el" href="a00151.html">tbb::task_group</a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~task_group_base</b>() __TBB_NOEXCEPT(false) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00308.html b/doc/html/a00308.html
index d157c3c..35bce33 100644
--- a/doc/html/a00308.html
+++ b/doc/html/a00308.html
@@ -33,30 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00124.html">sender</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00148.html">structured_task_group</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::sender< T > Member List</div>  </div>
+<div class="title">tbb::structured_task_group Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00148.html">tbb::structured_task_group</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> typedef</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#a4dac8f53a1f8373c1f3a874b9617e4ec">register_successor</a>(successor_type &r)=0</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">remove_successor</a>(successor_type &r)=0</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> typedef</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_wait</b>(task_handle< F > &h) (defined in <a class="el" href="a00148.html">tbb::structured_task_group</a>)</td><td class="entry"><a class="el" href="a00148.html">tbb::structured_task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00148.html">tbb::structured_task_group</a>)</td><td class="entry"><a class="el" href="a00148.html">tbb::structured_task_group</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~task_group_base</b>() __TBB_NOEXCEPT(false) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00309.html b/doc/html/a00309.html
index 466c399..3979eaf 100644
--- a/doc/html/a00309.html
+++ b/doc/html/a00309.html
@@ -33,35 +33,32 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00106.html">receiver</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00156.html">task_scheduler_init</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::receiver< T > Member List</div>  </div>
+<div class="title">tbb::task_scheduler_init Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00156.html">tbb::task_scheduler_init</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> typedef</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::successor_cache</b> (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a05ec930a348f7eed564236d00edbda24">limiter_node</a> class</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> typedef</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>()=0 (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#abaf9bf74ca5f2854d09f5f07337280eb">run_and_put_task</a> class</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_put_task</b>(const T &t)=0 (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">automatic</a></td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00156.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">default_num_threads</a>()</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00156.html#af0e49ff2f59a4e53c9c07897b57f084d">deferred</a></td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>if</b>(wait_workers_in_terminate) my_scheduler (defined in <a class="el" href="a00156.html">tbb::task_scheduler_init</a>)</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c">initialize</a>(int number_of_threads=automatic)</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00156.html#a0f5294f74b123a646a1762c68d11e39a">initialize</a>(int number_of_threads, stack_size_type thread_stack_size)</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>initialize</b>(number_of_threads, thread_stack_size) (defined in <a class="el" href="a00156.html">tbb::task_scheduler_init</a>)</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00156.html#aed5505d7fed9d5493676aa15c176512c">is_active</a>() const </td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00156.html#a15d5dca7f79c5769bb96f674e4da0c04">terminate</a>()</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">thread_stack_size</a></td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00156.html#a20b121334ec39c1d91bd4fe9a51892b0">~task_scheduler_init</a>()</td><td class="entry"><a class="el" href="a00156.html">tbb::task_scheduler_init</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00310.html b/doc/html/a00310.html
index d276b0c..34bb2c8 100644
--- a/doc/html/a00310.html
+++ b/doc/html/a00310.html
@@ -33,54 +33,44 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00072.html">limiter_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00159.html">tbb_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::limiter_node< T > Member List</div>  </div>
+<div class="title">tbb::tbb_allocator< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00072.html#ac313b6586bf183a33c3196037964547d">decrement</a></td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::decrementer< limiter_node< T > ></b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::forward_task_bypass< limiter_node< T > ></b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00072.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">limiter_node</a>(graph &g, size_t threshold, int num_decrement_predecessors=0)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00072.html#a99b359e7a83de8dc72dcad01798acab8">limiter_node</a>(const limiter_node &src)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00072.html#aca5ef5cec3b26227d71686d99ee04f7e">register_predecessor</a>(predecessor_type &src)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00072.html#ad2cfd954eb06732f7bae8f2c8fe28735">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00072.html#a8aca7b4bd4ee13faf713021eb0d86735">remove_predecessor</a>(predecessor_type &src)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00072.html#ac7b092dcc2808abf02816d4ac9c86e66">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00072.html#a0551cf104b35669b5f5153c1d03d5d2d">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00159.html#afedd8a64eed9692083c708f419338e0c">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00159.html#aa4606cff0156ec4237c1571204851bfb">allocator_type</a>()</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00159.html#af54fa3029e33cebe5ba64a8538306fdf">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, value_type &&value) (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00159.html#a28e333e0fff56dd53c20b82cfee430ab">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00159.html#ac7b1b393a8ff3399079328c0971c1996">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00159.html#a60463a571d5c20f7762112367261ad94">malloc_type</a> enum name</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00159.html#a0a2676fb8a2f931961d373b88848c93e">max_size</a>() const </td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scalable</b> enum value (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>standard</b> enum value (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb_allocator</b>() (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb_allocator</b>(const tbb_allocator &) (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb_allocator</b>(const tbb_allocator< U > &) (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::tbb_allocator< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::tbb_allocator< T ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00311.html b/doc/html/a00311.html
index 1a800b5..a10e1e4 100644
--- a/doc/html/a00311.html
+++ b/doc/html/a00311.html
@@ -33,43 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00050.html">continue_receiver</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00159.html">tbb_allocator</a></li><li class="navelem"><a class="el" href="a00117.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::continue_receiver Member List</div>  </div>
+<div class="title">tbb::tbb_allocator< T >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00117.html">tbb::tbb_allocator< T >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00050.html#a1ac173b0a739731b0b1db5a1e91d9326">continue_receiver</a>(int number_of_predecessors=0)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00050.html#a3055f8a570f7558b6eb9e210feb91b90">continue_receiver</a>(const continue_receiver &src)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00050.html#adf70ce80d67a565d04e029da461bbe72">execute</a>()=0</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00050.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a> typedef</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::successor_cache</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>limiter_node</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_current_count</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_initial_predecessor_count</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_predecessor_count</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> typedef</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00050.html#a9ff043995b7b4d39ab0ec41c9e3628bf">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00050.html#aea58a2200f20acd9cda829ba6958b22a">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const continue_msg &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_put_task</b>(const input_type &) (defined in <a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00050.html#a2ca2de23e1e1eeb7071a838a457a50b2">~continue_receiver</a>()</td><td class="entry"><a class="el" href="a00050.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00117.html">tbb::tbb_allocator< T >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00117.html">tbb::tbb_allocator< T >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00312.html b/doc/html/a00312.html
index 13f45d3..1becd6c 100644
--- a/doc/html/a00312.html
+++ b/doc/html/a00312.html
@@ -33,38 +33,24 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00062.html">graph_iterator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">tbb_allocator< void ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Member List</div>  </div>
+<div class="title">tbb::tbb_allocator< void > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00160.html">tbb::tbb_allocator< void ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph</b> (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00062.html#a5082b1f425ffbd4a93533230d6ff99c0">graph_iterator</a>()</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00062.html#a72937fa822ca1e285a4cb22e544bafbf">graph_iterator</a>(const graph_iterator &other)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b> (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator_category</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00062.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">operator!=</a>(const graph_iterator &other) const </td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00062.html#a1daffd203bebae367ed0f32917048f22">operator*</a>() const </td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00062.html#ab84587ed134f01886f6a0d64d5a6ccef">operator++</a>()</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00062.html#abc9d079735fe9c1b07d136284556e15a">operator++</a>(int)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00062.html#abfb28c989f76822e26b47211febe3d72">operator-></a>() const </td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00062.html#ada73cea77a417f0df629eeaf4c1e2002">operator=</a>(const graph_iterator &other)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00062.html#a3b0d834dffd2a99a596e9541b7a96d2a">operator==</a>(const graph_iterator &other) const </td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00062.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00160.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00160.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00160.html">tbb::tbb_allocator< void ></a>)</td><td class="entry"><a class="el" href="a00160.html">tbb::tbb_allocator< void ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00313.html b/doc/html/a00313.html
index 0657b34..7e90c3c 100644
--- a/doc/html/a00313.html
+++ b/doc/html/a00313.html
@@ -33,44 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00061.html">graph</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00160.html">tbb_allocator< void ></a></li><li class="navelem"><a class="el" href="a00118.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph Member List</div>  </div>
+<div class="title">tbb::tbb_allocator< void >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00118.html">tbb::tbb_allocator< void >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a91d2f9921342a504668b2cdc3064a846">begin</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#ac404d2e08620aca079532124551a646a">begin</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a2af8f195917817ce2b77ff7b6463c344">cbegin</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#acf6d3f610c2675eaf8bf2a40853081aa">cend</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#af16d14eaed1355ae376bb78dde7762c3">decrement_wait_count</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a221a7ee0a1f0e69a01add5c1dda43be7">end</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#a599e6a885a76db84928b039063c299e4">end</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>exception_thrown</b>() (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#ac274a9006e66ecc75bcd59f784fe1867">graph</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a656cee3d0240a3f142a450800e6b17c7">graph</a>(task_group_context &use_this_context)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_iterator</b> (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b> (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#ad96c910ae45e6c5d2433bb1d9e910891">increment_wait_count</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">is_cancelled</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#ae5f59627a7d130cf289f105a849ad3f0">root_task</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#ac0a03f1d59dc2ccb9526995599c2c83c">run</a>(Receiver &r, Body body)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#a6e428c2d7c8780f3c2587a71c4d92466">run</a>(Body body)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00061.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db">wait_for_all</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a3412df4d4bf0113aed93c958bbb49ec4">~graph</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00118.html">tbb::tbb_allocator< void >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00118.html">tbb::tbb_allocator< void >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00314.html b/doc/html/a00314.html
index 38a6df1..7d5cb42 100644
--- a/doc/html/a00314.html
+++ b/doc/html/a00314.html
@@ -33,30 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00063.html">graph_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00177.html">zero_allocator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::graph_node Member List</div>  </div>
+<div class="title">tbb::zero_allocator< T, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_iterator</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>()=0 (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name)=0 (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>(const size_type n, const void *hint=0) (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>base_allocator_type</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>zero_allocator</b>() (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>zero_allocator</b>(const zero_allocator &a) (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>zero_allocator</b>(const zero_allocator< U > &a) (defined in <a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a>)</td><td class="entry"><a class="el" href="a00177.html">tbb::zero_allocator< T, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00315.html b/doc/html/a00315.html
index f34afe8..15b9d75 100644
--- a/doc/html/a00315.html
+++ b/doc/html/a00315.html
@@ -33,43 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00126.html">source_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00177.html">zero_allocator</a></li><li class="navelem"><a class="el" href="a00119.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::source_node< Output > Member List</div>  </div>
+<div class="title">tbb::zero_allocator< T, Allocator >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00119.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#a67264c4564abefbf14c0d587c6fe2857">activate</a>()</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_function_object</b>() (defined in <a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::source_task_bypass< source_node< output_type > ></b> (defined in <a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> typedef</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#abf1627cf40dc62fa456fbf23bbcd2efa">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00126.html#a97c80882ddbdfdcf50761e606f231123">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#a1874ab9048214245bff7b26c0d9e814b">reset</a>()</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#a5730a4677f5bfdf6ff6e45e31a249d37">source_node</a>(graph &g, Body body, bool is_active=true)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00126.html#aa365130109912d4cdd4534a0cb1d92bd">source_node</a>(const source_node &src)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> typedef</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00126.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">try_consume</a>()</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#a038c6b2b406d496244617a2d6dc01581">try_get</a>(output_type &v)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00126.html#a309c65a2d0208a1072f7e852198d461d">try_release</a>()</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00126.html#aabb0d505d684d173b1a2c976bf0781a6">try_reserve</a>(output_type &v)</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< Output ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00126.html#a5ce12e348e121b9f4dffda9d1035c490">~source_node</a>()</td><td class="entry"><a class="el" href="a00126.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00119.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00119.html">tbb::zero_allocator< T, Allocator >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00316.html b/doc/html/a00316.html
index eb063c5..127d0ab 100644
--- a/doc/html/a00316.html
+++ b/doc/html/a00316.html
@@ -33,40 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00059.html">function_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00178.html">zero_allocator< void, Allocator ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator > Member List</div>  </div>
+<div class="title">tbb::zero_allocator< void, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>fOutput_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00059.html#aea86b14a72337b597c80d706ca257402">function_node</a>(graph &g, size_t concurrency, Body body)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00059.html#aecf13ece7b2106f4630e46d6c5327997">function_node</a>(const function_node &src)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_allocator_type</b> typedef (defined in <a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a>)</td><td class="entry"><a class="el" href="a00178.html">tbb::zero_allocator< void, Allocator ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00317.html b/doc/html/a00317.html
index ef5f6d2..5b9a020 100644
--- a/doc/html/a00317.html
+++ b/doc/html/a00317.html
@@ -33,41 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00060.html">function_node< Input, Output, queueing, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00178.html">zero_allocator< void, Allocator ></a></li><li class="navelem"><a class="el" href="a00120.html">rebind</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator > Member List</div>  </div>
+<div class="title">tbb::zero_allocator< void, Allocator >::rebind< U > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00120.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>fOutput_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00060.html#a1b0413b2ec13a9d2ee22dfeb6555a616">function_node</a>(graph &g, size_t concurrency, Body body)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00060.html#ad1cb832fe1edee0b0d75e569b62c9c1c">function_node</a>(const function_node &src)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>queue_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00060.html">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00120.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00120.html">tbb::zero_allocator< void, Allocator >::rebind< U ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00318.html b/doc/html/a00318.html
index 13237d7..b0770ef 100644
--- a/doc/html/a00318.html
+++ b/doc/html/a00318.html
@@ -33,32 +33,23 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00079.html">multifunction_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00020.html">bad_last_alloc</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator > Member List</div>  </div>
+<div class="title">tbb::bad_last_alloc Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00020.html">tbb::bad_last_alloc</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>multifunction_node</b>(graph &g, size_t concurrency, Body body) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>multifunction_node</b>(const multifunction_node &other) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtu [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00020.html">tbb::bad_last_alloc</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::bad_last_alloc</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~bad_last_alloc</b>() (defined in <a class="el" href="a00020.html">tbb::bad_last_alloc</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::bad_last_alloc</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00319.html b/doc/html/a00319.html
index 0ec512c..fc5a1ee 100644
--- a/doc/html/a00319.html
+++ b/doc/html/a00319.html
@@ -33,33 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00080.html">multifunction_node< Input, Output, queueing, Allocator ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00074.html">improper_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator > Member List</div>  </div>
+<div class="title">tbb::improper_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00074.html">tbb::improper_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>multifunction_node</b>(graph &g, size_t concurrency, Body body) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>multifunction_node</b>(const multifunction_node &other) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>N</b> (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00074.html">tbb::improper_lock</a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::improper_lock</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00320.html b/doc/html/a00320.html
index 8f21c2a..c049e95 100644
--- a/doc/html/a00320.html
+++ b/doc/html/a00320.html
@@ -33,35 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00130.html">split_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00173.html">user_abort</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::split_node< TupleType, Allocator > Member List</div>  </div>
+<div class="title">tbb::user_abort Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00173.html">tbb::user_abort</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>multifunction_node</b>(graph &g, size_t concurrency, Body body) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>multifunction_node</b>(const multifunction_node &other) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>split_node</b>(graph &g) (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>split_node</b>(const split_node &other) (defined in <a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00130.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00173.html">tbb::user_abort</a>)</td><td class="entry"><a class="el" href="a00173.html">tbb::user_abort</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00321.html b/doc/html/a00321.html
index b4e4e12..8d2137c 100644
--- a/doc/html/a00321.html
+++ b/doc/html/a00321.html
@@ -33,41 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00049.html">continue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00096.html">missing_wait</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::continue_node< Output > Member List</div>  </div>
+<div class="title">tbb::missing_wait Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00096.html">tbb::missing_wait</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00049.html#a7b96b9eb41772ff1d7a52329ac56b8f0">continue_node</a>(graph &g, Body body)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00049.html#a05e8957de1cb5a940d2ed3f9fc7637ed">continue_node</a>(graph &g, int number_of_predecessors, Body body)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00049.html#a8ab0750127a7ead08e14b8910a21cf50">continue_node</a>(const continue_node &src)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fOutput_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00096.html">tbb::missing_wait</a>)</td><td class="entry"><a class="el" href="a00096.html">tbb::missing_wait</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00322.html b/doc/html/a00322.html
index 686e1c2..eafa310 100644
--- a/doc/html/a00322.html
+++ b/doc/html/a00322.html
@@ -33,58 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00086.html">overwrite_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00086.html">invalid_multiple_scheduling</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::overwrite_node< T > Member List</div>  </div>
+<div class="title">tbb::invalid_multiple_scheduling Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00086.html">tbb::invalid_multiple_scheduling</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_valid</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_buffer</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_buffer_is_valid</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>overwrite_node</b>(graph &g) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>overwrite_node</b>(const overwrite_node &src) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_put_task</b>(const T &v) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~overwrite_node</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const  (defined in <a class="el" href="a00086.html">tbb::invalid_multiple_scheduling</a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::invalid_multiple_scheduling</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00323.html b/doc/html/a00323.html
index 786021d..1d66234 100644
--- a/doc/html/a00323.html
+++ b/doc/html/a00323.html
@@ -33,60 +33,28 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00159.html">write_once_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00161.html">tbb_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::write_once_node< T > Member List</div>  </div>
+<div class="title">tbb::tbb_exception Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00161.html">tbb::tbb_exception</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_valid</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_buffer</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_buffer_is_valid</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>overwrite_node</b>(graph &g) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>overwrite_node</b>(const overwrite_node &src) (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_put_task</b>(const T &v) (defined in <a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00159.html#a8225d7ca0ff9762552413cfb1382d78f">write_once_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00159.html#a68b94bb09b608522462080fe99125e07">write_once_node</a>(const write_once_node &src)</td><td class="entry"><a class="el" href="a00159.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~overwrite_node</b>() (defined in <a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00086.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">destroy</a>()=0</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">move</a>()=0</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00161.html#a282bb7dce5f157d044d14d50cd6ff35c">name</a>() const =0</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">throw_self</a>()=0</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00161.html#ae0ad81121d4b722ecc466b5d3cc4e919">what</a>() const =0</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00161.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00324.html b/doc/html/a00324.html
index e2cf498..982353d 100644
--- a/doc/html/a00324.html
+++ b/doc/html/a00324.html
@@ -33,51 +33,34 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00025.html">broadcast_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00035.html">captured_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::broadcast_node< T > Member List</div>  </div>
+<div class="title">tbb::captured_exception Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00035.html">tbb::captured_exception</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>broadcast_node</b>(graph &g) (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>broadcast_node</b>(const broadcast_node &src) (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00025.html#a36b5c86faa58a264d899b7c26286c80e">register_successor</a>(receiver< T > &r)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00025.html#a22d463b071df6e0b7ca11df27bb2637e">remove_successor</a>(receiver< T > &r)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00025.html#a07d030b43c6e2d9169a7e58db30a547b">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00025.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>captured_exception</b>(const captured_exception &src) (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>captured_exception</b>(const char *name_, const char *info) (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00035.html#a3006b6825dda6c746d28fb748f5675de">destroy</a>()</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4">move</a>()</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00035.html#a23426113851b78d3f0069956afd21976">name</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const captured_exception &src) (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set</b>(const char *name, const char *info) (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00035.html#ac9ae925678fcc0cc02a74df7d06b8d63">throw_self</a>()</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00035.html#ac97ee315d8613c803dae2f6d3e0b91a7">what</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~captured_exception</b>() (defined in <a class="el" href="a00035.html">tbb::captured_exception</a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::captured_exception</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00161.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00325.html b/doc/html/a00325.html
index 044d09a..f5bf6bb 100644
--- a/doc/html/a00325.html
+++ b/doc/html/a00325.html
@@ -33,85 +33,35 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00027.html">buffer_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00097.html">movable_exception</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::buffer_node< T, A > Member List</div>  </div>
+<div class="title">tbb::movable_exception< ExceptionData > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::aggregating_functor< my_class, buffer_operation ></b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::forward_task_bypass< buffer_node< T, A > ></b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_consume</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a3aa7578ccbd3d5f986869ab8698c037c">internal_forward_task</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pop</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_push</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_reserve</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data</b>() (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>data</b>() const  (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00097.html#a02f0401b465690de797face2432d9421">destroy</a>()</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>movable_exception</b>(const ExceptionData &data_) (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>movable_exception</b>(const movable_exception &src) (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d">move</a>()</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00097.html#adba063da80054afe64d5268711084d9b">my_exception_data</a></td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00097.html#a65dd805ed2424f1d2d0998f5567a9690">name</a>() const </td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">operator delete</a>(void *p)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const movable_exception &src) (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00097.html#a3d1570b53220fbcb45eb81552b57827a">throw_self</a>()</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00097.html#a41a2a7b61537ecd684bae760366f611c">what</a>() const </td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~movable_exception</b>() (defined in <a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a>)</td><td class="entry"><a class="el" href="a00097.html">tbb::movable_exception< ExceptionData ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~tbb_exception</b>() (defined in <a class="el" href="a00161.html">tbb::tbb_exception</a>)</td><td class="entry"><a class="el" href="a00161.html">tbb::tbb_exception</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00326.html b/doc/html/a00326.html
index 027153c..555433b 100644
--- a/doc/html/a00326.html
+++ b/doc/html/a00326.html
@@ -33,27 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00027.html">buffer_node</a></li><li class="navelem"><a class="el" href="a00028.html">buffer_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00170.html">tick_count</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::buffer_node< T, A >::buffer_operation Member List</div>  </div>
+<div class="title">tbb::tick_count Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00170.html">tbb::tick_count</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buffer_operation</b>(const T &e, op_type t) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>buffer_operation</b>(op_type t) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>elem</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>ltask</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>r</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>type</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00170.html#a74dcecde7431ff4591d7c46fc1d50d7e">now</a>()</td><td class="entry"><a class="el" href="a00170.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00170.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td class="entry"><a class="el" href="a00170.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00170.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">resolution</a>()</td><td class="entry"><a class="el" href="a00170.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00170.html#a9f1daa0b7a4feb800f802b4be1f1e497">tick_count</a>()</td><td class="entry"><a class="el" href="a00170.html">tbb::tick_count</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00327.html b/doc/html/a00327.html
index f43bf8a..a8632fc 100644
--- a/doc/html/a00327.html
+++ b/doc/html/a00327.html
@@ -33,83 +33,30 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00092.html">queue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><a class="el" href="a00170.html">tick_count</a></li><li class="navelem"><a class="el" href="a00085.html">interval_t</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::queue_node< T, A > Member List</div>  </div>
+<div class="title">tbb::tick_count::interval_t Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00085.html">tbb::tick_count::interval_t</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_consume</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a>(queue_operation *op)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pop</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_push</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_reserve</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00092.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a>(const queue_node &src)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>queue_operation</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00085.html#a95e3e14750bebafe719856176e2737db">interval_t</a>()</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00085.html#a73b462297173f6bffa15bc5a86c30ef4">interval_t</a>(double sec)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00085.html#ac8910ee3b69f68eb905af787c273e9a8">operator+</a>(const interval_t &i, const interval_t &j)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00085.html#a19bf32f4541252daaa6b09fd33fa9177">operator+=</a>(const interval_t &i)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00085.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">operator-</a>(const tick_count &t1, const tick_count &t0)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00085.html#a3d11133daa9a7d3c903d070293278f8f">operator-</a>(const interval_t &i, const interval_t &j)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00085.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">operator-=</a>(const interval_t &i)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00085.html#abe81446bbbb6b6e98d854b91acf47809">seconds</a>() const </td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb::tick_count</b> (defined in <a class="el" href="a00085.html">tbb::tick_count::interval_t</a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::tick_count::interval_t</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00328.html b/doc/html/a00328.html
index bdb58d6..3666006 100644
--- a/doc/html/a00328.html
+++ b/doc/html/a00328.html
@@ -33,86 +33,37 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00125.html">sequencer_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00142.html">sender</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::sequencer_node< T, A > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::sender< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_consume</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a>(queue_operation *op)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pop</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_reserve</b>(queue_operation *op) (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00092.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a>(const queue_node &src)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>queue_operation</b> typedef (defined in <a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00092.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00125.html#a0e8d3d486edc7f70c81b36ce9421c11a">sequencer_node</a>(graph &g, const Sequencer &s)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00125.html#a19cfdaf85098d0fcf0b1956dc913a7a2">sequencer_node</a>(const sequencer_node &src)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>sequencer_operation</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00125.html#a01fd0321c7bd0f2112458cec2a636d7d">~sequencer_node</a>()</td><td class="entry"><a class="el" href="a00125.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>()=0 (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">built_successors_type</a> typedef</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &)=0 (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &)=0 (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &)=0 (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">output_type</a> typedef</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a4dac8f53a1f8373c1f3a874b9617e4ec">register_successor</a>(successor_type &r)=0</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">remove_successor</a>(successor_type &r)=0</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_count</b>()=0 (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">successor_type</a> typedef</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00329.html b/doc/html/a00329.html
index 9fe99a4..e4deec1 100644
--- a/doc/html/a00329.html
+++ b/doc/html/a00329.html
@@ -33,85 +33,42 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00091.html">priority_queue_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00124.html">receiver</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::priority_queue_node< T, Compare, A > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::receiver< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>handle_operations</b>(prio_operation *op_list) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_consume</b>(prio_operation *op) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00091.html#a4e6d43ca8748046098fd27ca97e58f3d">internal_forward_task</a>(prio_operation *op)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_pop</b>(prio_operation *op) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_push</b>(prio_operation *op) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_release</b>(prio_operation *op) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_reserve</b>(prio_operation *op) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>item_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>prio_operation</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00091.html#ab295c7b50ff804f7276609a25016e7ca">priority_queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00091.html#aa163d8a81b4a795cb37f207b02191a39">priority_queue_node</a>(const priority_queue_node &src)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00027.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00106.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>()=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">input_type</a> typedef</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::successor_cache</b> (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a05ec930a348f7eed564236d00edbda24">limiter_node</a> class</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>()=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">predecessor_type</a> typedef</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#abaf9bf74ca5f2854d09f5f07337280eb">run_and_put_task</a> class</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_put_task</b>(const T &t)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00330.html b/doc/html/a00330.html
index 4428de1..5cef660 100644
--- a/doc/html/a00330.html
+++ b/doc/html/a00330.html
@@ -33,26 +33,72 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00070.html">join_node< OutputTuple, reserving ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00091.html">limiter_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, reserving > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::limiter_node< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00091.html#ac313b6586bf183a33c3196037964547d">decrement</a></td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::decrementer< limiter_node< T > ></b> (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::forward_task_bypass< limiter_node< T > ></b> (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(sender< output_type > &src) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_successor</b>(receiver< output_type > &src) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(sender< output_type > &src) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(receiver< output_type > &src) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00091.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">limiter_node</a>(graph &g, size_t threshold, int num_decrement_predecessors=0)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00091.html#a99b359e7a83de8dc72dcad01798acab8">limiter_node</a>(const limiter_node &src)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00091.html#aca5ef5cec3b26227d71686d99ee04f7e">register_predecessor</a>(predecessor_type &src)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00091.html#ad2cfd954eb06732f7bae8f2c8fe28735">register_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00091.html#a8aca7b4bd4ee13faf713021eb0d86735">remove_predecessor</a>(predecessor_type &src)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00091.html#ac7b092dcc2808abf02816d4ac9c86e66">remove_successor</a>(receiver< output_type > &r)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a>)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00091.html#a0551cf104b35669b5f5153c1d03d5d2d">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00091.html">tbb::flow::interface7::limiter_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00331.html b/doc/html/a00331.html
index 5380b1c..2d27980 100644
--- a/doc/html/a00331.html
+++ b/doc/html/a00331.html
@@ -33,26 +33,52 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00069.html">join_node< OutputTuple, queueing ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00057.html">continue_receiver</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, queueing > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::continue_receiver Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g) (defined in <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00057.html#a1ac173b0a739731b0b1db5a1e91d9326">continue_receiver</a>(int number_of_predecessors=0)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00057.html#a3055f8a570f7558b6eb9e210feb91b90">continue_receiver</a>(const continue_receiver &src)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00057.html#adf70ce80d67a565d04e029da461bbe72">execute</a>()=0</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00057.html#a7474ed0edad2bb26d9f86065ecf2c93d">input_type</a> typedef</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::successor_cache</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &s) (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &s) (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>limiter_node</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_current_count</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_initial_predecessor_count</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_predecessor_count</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">predecessor_type</a> typedef</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00057.html#a9ff043995b7b4d39ab0ec41c9e3628bf">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00057.html#aea58a2200f20acd9cda829ba6958b22a">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const continue_msg &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_put_task</b>(const input_type &) (defined in <a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00057.html#a2ca2de23e1e1eeb7071a838a457a50b2">~continue_receiver</a>()</td><td class="entry"><a class="el" href="a00057.html">tbb::flow::interface7::continue_receiver</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00332.html b/doc/html/a00332.html
index 9f40d87..3f0520b 100644
--- a/doc/html/a00332.html
+++ b/doc/html/a00332.html
@@ -33,34 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00071.html">join_node< OutputTuple, tag_matching ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00071.html">graph_iterator</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::join_node< OutputTuple, tag_matching > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">i [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">i [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph</b> (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00071.html#a5082b1f425ffbd4a93533230d6ff99c0">graph_iterator</a>()</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00071.html#a72937fa822ca1e285a4cb22e544bafbf">graph_iterator</a>(const graph_iterator &other)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b> (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator_category</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00071.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">operator!=</a>(const graph_iterator &other) const </td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00071.html#a1daffd203bebae367ed0f32917048f22">operator*</a>() const </td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00071.html#ab84587ed134f01886f6a0d64d5a6ccef">operator++</a>()</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00071.html#abc9d079735fe9c1b07d136284556e15a">operator++</a>(int)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00071.html#abfb28c989f76822e26b47211febe3d72">operator-></a>() const </td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00071.html#ada73cea77a417f0df629eeaf4c1e2002">operator=</a>(const graph_iterator &other)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00071.html#a3b0d834dffd2a99a596e9541b7a96d2a">operator==</a>(const graph_iterator &other) const </td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>)</td><td class="entry"><a class="el" href="a00071.html">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00333.html b/doc/html/a00333.html
index 4227a28..14097dd 100644
--- a/doc/html/a00333.html
+++ b/doc/html/a00333.html
@@ -33,26 +33,46 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00085.html">or_node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00070.html">graph</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::flow::interface7::or_node< InputTuple > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::graph Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>or_node</b>(graph &g) (defined in <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>or_node</b>(const or_node &other) (defined in <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a>)</td><td class="entry"><a class="el" href="a00085.html">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a91d2f9921342a504668b2cdc3064a846">begin</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#ac404d2e08620aca079532124551a646a">begin</a>() const </td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a2af8f195917817ce2b77ff7b6463c344">cbegin</a>() const </td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#acf6d3f610c2675eaf8bf2a40853081aa">cend</a>() const </td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#af16d14eaed1355ae376bb78dde7762c3">decrement_wait_count</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a221a7ee0a1f0e69a01add5c1dda43be7">end</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#a599e6a885a76db84928b039063c299e4">end</a>() const </td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>exception_thrown</b>() (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#ac274a9006e66ecc75bcd59f784fe1867">graph</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a656cee3d0240a3f142a450800e6b17c7">graph</a>(task_group_context &use_this_context)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_iterator</b> (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b> (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#ad96c910ae45e6c5d2433bb1d9e910891">increment_wait_count</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_active</b>() (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">is_cancelled</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol)) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#ae5f59627a7d130cf289f105a849ad3f0">root_task</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#ac0a03f1d59dc2ccb9526995599c2c83c">run</a>(Receiver &r, Body body)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a6e428c2d7c8780f3c2587a71c4d92466">run</a>(Body body)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_active</b>(bool a=true) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00070.html">tbb::flow::interface7::graph</a>)</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db">wait_for_all</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00070.html#a3412df4d4bf0113aed93c958bbb49ec4">~graph</a>()</td><td class="entry"><a class="el" href="a00070.html">tbb::flow::interface7::graph</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00334.html b/doc/html/a00334.html
index 2015a6c..6756044 100644
--- a/doc/html/a00334.html
+++ b/doc/html/a00334.html
@@ -33,86 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00072.html">graph_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::graph_node Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#aa067a2a4db1d96f38555369a89deee64">bucket_count</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#ab8295bc260b5e4df883fef11574b84c6">clear</a>()</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#aa3a9767b525144a2afb69ed125714c53">concurrent_hash_map</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#aae76e1252b56b107685f8746e0f6a1f4">concurrent_hash_map</a>(size_type n, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a8a73b86f9a5e9836b38713e56c546654">concurrent_hash_map</a>(const concurrent_hash_map &table, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#ad56fc19d656099d49051f3c363cefc89">concurrent_hash_map</a>(I first, I last, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a1b9c93b6e5f3d7b52289846ecf9701d2">concurrent_hash_map</a>(const std::initializer_list< value_type > &il, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_accessor</b> (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7">count</a>(const Key &key) const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>delete_node</b>(node_base *n) (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990">empty</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>equal_range</b>(const Key &key) (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>equal_range</b>(const Key &key) const  (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a5144122dbb946d933b94a92117543b33">erase</a>(const Key &key)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a2ec6f95ed9beda9d32df56cdd45c1842">erase</a>(const_accessor &item_accessor)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">erase</a>(accessor &item_accessor)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a6fec452b31b8f0e185dc2de64b7128b2">exclude</a>(const_accessor &item_accessor)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff">find</a>(const_accessor &result, const Key &key) const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a6b61799e2018381b5ee4b78752a41483">find</a>(accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d">insert</a>(const_accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a766c6033c203e8f342501d85a7cf3405">insert</a>(accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#ae0b420cdb752e749790c8a7daa15c3c2">insert</a>(const_accessor &result, const value_type &value)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a2047214e041b7674c3b83e204d0d6c6a">insert</a>(accessor &result, const value_type &value)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a8e39501f9edb3210504c9c4ca05384b7">insert</a>(const value_type &value)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#ab84dfd77316252cbf39c7ae89e365a00">insert</a>(I first, I last)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::hash_map_iterator</b> (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::hash_map_range</b> (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a0bc3593f82b3b4f9839fc051780212ab">internal_copy</a>(const concurrent_hash_map &source)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy</b>(I first, I last) (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a8603f5288db63ec35a16844427e97e42">internal_equal_range</a>(const Key &key, I end) const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">internal_fast_find</a>(const Key &key) const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a0435730c6b9dbbe2937fb38b9403147c">lookup</a>(bool op_insert, const Key &key, const T *t, const_accessor *result, bool write)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#aea0a0e5220a0dcb67da57d0280d36005">max_size</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_allocator</b> (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>node_allocator_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a">operator=</a>(const concurrent_hash_map &table)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#a49e4e3979b46669a4712e7d3208e75f2">operator=</a>(const std::initializer_list< value_type > &il)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>range</b>(size_type grainsize=1) (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>range</b>(size_type grainsize=1) const  (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00035.html#adf1fa9470c605731063e5949f0418eb7">rehash</a>(size_type n=0)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rehash_bucket</b>(bucket *b_new, const hashcode_t h) (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>search_bucket</b>(const key_type &key, bucket *b) const  (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4">size</a>() const </td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e">swap</a>(concurrent_hash_map &table)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00035.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">~concurrent_hash_map</a>()</td><td class="entry"><a class="el" href="a00035.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>()=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_iterator</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name)=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00335.html b/doc/html/a00335.html
index d83241a..51bf37a 100644
--- a/doc/html/a00335.html
+++ b/doc/html/a00335.html
@@ -33,31 +33,53 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00010.html">accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00144.html">source_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Member List</div>  </div>
+<div class="title">tbb::flow::interface7::source_node< Output > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a>() const </td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_writer</b>() (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash</b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_node</b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00010.html#a4e03905a33fbdafdb99113cc68d2bd4b">operator*</a>() const </td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00010.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">operator-></a>() const </td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">release</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00010.html#a850178bbdcdbc4cf5955cab37eb8c42c">value_type</a> typedef</td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a67264c4564abefbf14c0d587c6fe2857">activate</a>()</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_function_object</b>() (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::source_task_bypass< source_node< output_type > ></b> (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">output_type</a> typedef</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#a27aa895c54d59f570f267c26f14f0cf1">register_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a313af00af7584f4b9aee1e1bacff4041">remove_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#aed1fa277170d6cee6d1437f1258ac544">reset_node</a>(__TBB_PFG_RESET_ARG(reset_flags f))</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a5730a4677f5bfdf6ff6e45e31a249d37">source_node</a>(graph &g, Body body, bool is_active=true)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#aa365130109912d4cdd4534a0cb1d92bd">source_node</a>(const source_node &src)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a>)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">successor_type</a> typedef</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">try_consume</a>()</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#a038c6b2b406d496244617a2d6dc01581">try_get</a>(output_type &v)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#a309c65a2d0208a1072f7e852198d461d">try_release</a>()</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00144.html#aabb0d505d684d173b1a2c976bf0781a6">try_reserve</a>(output_type &v)</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< Output ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00144.html#a5ce12e348e121b9f4dffda9d1035c490">~source_node</a>()</td><td class="entry"><a class="el" href="a00144.html">tbb::flow::interface7::source_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00336.html b/doc/html/a00336.html
index e52f4ed..5554192 100644
--- a/doc/html/a00336.html
+++ b/doc/html/a00336.html
@@ -33,25 +33,43 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00026.html">bucket_accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00068.html">function_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Member List</div>  </div>
+<div class="title">tbb::flow::interface7::function_node< Input, Output, G, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00026.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">acquire</a>(concurrent_hash_map *base, const hashcode_t h, bool writer=false)</td><td class="entry"><a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>bucket_accessor</b>(concurrent_hash_map *base, const hashcode_t h, bool writer=false) (defined in <a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>)</td><td class="entry"><a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">is_writer</a>()</td><td class="entry"><a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00026.html#a16e714a5e77dbf8daf81973df30722d4">operator()</a>()</td><td class="entry"><a class="el" href="a00026.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fOutput_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00068.html#a00e4607cc585926677f3d10458ff4f6d">function_node</a>(graph &g, size_t concurrency, Body body)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00068.html#a1bb4915f2b6d6fbfbe6bfacece5639c6">function_node</a>(const function_node &src)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_queue_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00068.html">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00337.html b/doc/html/a00337.html
index 0d91cbe..ede4d30 100644
--- a/doc/html/a00337.html
+++ b/doc/html/a00337.html
@@ -33,33 +33,38 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00047.html">const_accessor</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00098.html">multifunction_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Member List</div>  </div>
+<div class="title">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>accessor</b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_hash_map< Key, T, HashCompare, Allocator ></b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a>() const </td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_writer</b>() (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash</b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_node</b> (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a>() const </td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a>() const </td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">release</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a> typedef</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a>()</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_queue_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>multifunction_node</b>(graph &g, size_t concurrency, Body body) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>multifunction_node</b>(const multifunction_node &other) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>N</b> (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00338.html b/doc/html/a00338.html
index 8754733..22efcd6 100644
--- a/doc/html/a00338.html
+++ b/doc/html/a00338.html
@@ -33,26 +33,40 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00035.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00082.html">node</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00147.html">split_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Member List</div>  </div>
+<div class="title">tbb::flow::interface7::split_node< TupleType, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>item</b> (defined in <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>node</b>(const Key &key) (defined in <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>node</b>(const Key &key, const T &t) (defined in <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator delete</b>(void *ptr, node_allocator_type &a) (defined in <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator new</b>(size_t, node_allocator_type &a) (defined in <a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_queue_type</b> typedef (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>multifunction_node</b>(graph &g, size_t concurrency, Body body) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>multifunction_node</b>(const multifunction_node &other) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a>)</td><td class="entry"><a class="el" href="a00098.html">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>split_node</b>(graph &g) (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>split_node</b>(const split_node &other) (defined in <a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00339.html b/doc/html/a00339.html
index 8de37cb..dc1c3cd 100644
--- a/doc/html/a00339.html
+++ b/doc/html/a00339.html
@@ -33,44 +33,43 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00037.html">concurrent_priority_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00056.html">continue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_priority_queue< T, Compare, A > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::continue_node< Output > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#ac64c7b627708f0d6b2e5421fb0d49150">assign</a>(InputIterator begin, InputIterator end)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#ada4a58867572d9ff340c6692a226d457">assign</a>(std::initializer_list< T > const &il)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a2459166998a4103880d603b237c429e6">clear</a>()</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a405be01bac4048f214797c287e2571a1">concurrent_priority_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a43c3917ea8a19cf1fec947e29ad4ff3e">concurrent_priority_queue</a>(size_type init_capacity, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a0cebee26cc0d00d4dcbb1c74e08029f7">concurrent_priority_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a111763d621fa792f281c2a13bd3e5edf">concurrent_priority_queue</a>(std::initializer_list< T > const &init_list, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a332d26234f9c37a6b7ba269c648815d0">concurrent_priority_queue</a>(const concurrent_priority_queue &src)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#aa52cea369b6630699ee78cc42622be9d">concurrent_priority_queue</a>(const concurrent_priority_queue &src, const allocator_type &a)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#ae010b1fa9c0942504737228474b51a0b">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">empty</a>() const </td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a312e88e51246da4c516d35abbb30721a">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#ac0c3f41b10f04547f3438517c40cf8a5">operator=</a>(const concurrent_priority_queue &src)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a32eb9c65caf399b62fac7c13e65af05f">operator=</a>(std::initializer_list< T > const &il)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a1bfa0e7269b3407d6bb5c706264d2406">push</a>(const_reference elem)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a7d86ba200474b51ec99a6b917429c6bb">size</a>() const </td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#aa6ee6d356e538b67a7cb4e242e6e36c9">swap</a>(concurrent_priority_queue &q)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00037.html#a954177b09e184cf3db47f1b180a7ef5e">try_pop</a>(reference elem)</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00037.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a> typedef</td><td class="entry"><a class="el" href="a00037.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00056.html#a7b96b9eb41772ff1d7a52329ac56b8f0">continue_node</a>(graph &g, Body body)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00056.html#a05e8957de1cb5a940d2ed3f9fc7637ed">continue_node</a>(graph &g, int number_of_predecessors, Body body)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00056.html#a8ab0750127a7ead08e14b8910a21cf50">continue_node</a>(const continue_node &src)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>fInput_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>fOutput_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a>)</td><td class="entry"><a class="el" href="a00056.html">tbb::flow::interface7::continue_node< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00340.html b/doc/html/a00340.html
index dd99e02..fc19214 100644
--- a/doc/html/a00340.html
+++ b/doc/html/a00340.html
@@ -33,30 +33,77 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00041.html">concurrent_unordered_map_traits</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00104.html">overwrite_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::overwrite_node< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>allow_multimapping</b> enum value (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map_traits</b>() (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map_traits</b>(const hash_compare &hc) (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</spa [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_key</b>(const std::pair< Type1, Type2 > &value) (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel"> [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash_compare</b> typedef (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00041.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_successor</b>(successor_type &s) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &s) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_valid</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_buffer</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_buffer_is_valid</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>overwrite_node</b>(graph &g) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>overwrite_node</b>(const overwrite_node &src) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">try_get</a>(input_type &v)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_put_task</b>(const input_type &v) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~overwrite_node</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00341.html b/doc/html/a00341.html
index 717adf8..2e341f0 100644
--- a/doc/html/a00341.html
+++ b/doc/html/a00341.html
@@ -33,25 +33,79 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00041.html">concurrent_unordered_map_traits</a></li><li class="navelem"><a class="el" href="a00157.html">value_compare</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00176.html">write_once_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Member List</div>  </div>
+<div class="title">tbb::flow::interface7::write_once_node< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></b> (defined in <a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping &g [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const value_type &left, const value_type &right) const  (defined in <a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_compare</b>(const hash_compare &comparator) (defined in <a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="entry"><span class= [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_successor</b>(successor_type &s) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &s) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_valid</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_buffer</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_buffer_is_valid</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_mutex</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>overwrite_node</b>(graph &g) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>overwrite_node</b>(const overwrite_node &src) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">register_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">remove_successor</a>(successor_type &s)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">try_get</a>(input_type &v)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_put_task</b>(const T &v) (defined in <a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a>)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00176.html#a8225d7ca0ff9762552413cfb1382d78f">write_once_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00176.html#a68b94bb09b608522462080fe99125e07">write_once_node</a>(const write_once_node &src)</td><td class="entry"><a class="el" href="a00176.html">tbb::flow::interface7::write_once_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~overwrite_node</b>() (defined in <a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a>)</td><td class="entry"><a class="el" href="a00104.html">tbb::flow::interface7::overwrite_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00342.html b/doc/html/a00342.html
index bc68e42..ee5fe00 100644
--- a/doc/html/a00342.html
+++ b/doc/html/a00342.html
@@ -33,55 +33,69 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00040.html">concurrent_unordered_map</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00028.html">broadcast_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::broadcast_node< T > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>at</b>(const key_type &key) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>at</b>(const key_type &key) const  (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_ [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map</b>(const Allocator &a) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unorder [...]
-  <tr class="even"><td class="entry"><a class="el" href="a00040.html#aa45010d834cc5e082321b49fec06f73d">concurrent_unordered_map</a>(std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(const concurrent_unordered_map &table) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map</b>(const concurrent_unordered_map &table, const Allocator &a) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inli [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hash_function</b>() const  (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_eq</b>() const  (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_map &table) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00040.html#ad641e7a34077b6a490625da4858b509a">operator=</a>(std::initializer_list< value_type > const &il)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const key_type &key) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap</b>(concurrent_unordered_map &table) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_erase</b>(const_iterator where) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const key_type &key) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_erase</b>(const_iterator first, const_iterator last) (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>broadcast_node</b>(graph &g) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>broadcast_node</b>(const broadcast_node &src) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00028.html#a36b5c86faa58a264d899b7c26286c80e">register_successor</a>(receiver< T > &r)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00028.html#a22d463b071df6e0b7ca11df27bb2637e">remove_successor</a>(receiver< T > &r)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a>)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">try_consume</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">try_get</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00028.html#a07d030b43c6e2d9169a7e58db30a547b">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00028.html">tbb::flow::interface7::broadcast_node< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">try_release</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">try_reserve</a>(T &)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00343.html b/doc/html/a00343.html
index af1d5d3..9ee1d3c 100644
--- a/doc/html/a00343.html
+++ b/doc/html/a00343.html
@@ -33,52 +33,120 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00042.html">concurrent_unordered_multimap</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00030.html">buffer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::buffer_node< T, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key,  [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multimap</b>(const Allocator &a) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurre [...]
-  <tr class="even"><td class="entry"><a class="el" href="a00042.html#a169314a424d47679e4aa343b70f75f00">concurrent_unordered_multimap</a>(std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Alloc [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(const concurrent_unordered_multimap &table) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multimap</b>(const concurrent_unordered_multimap &table, const Allocator &a) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hash_function</b>() const  (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_eq</b>() const  (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_multimap &table) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00042.html#adac1da59fdf8b536f95ea5be3134785f">operator=</a>(std::initializer_list< value_type > const &il)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap</b>(concurrent_unordered_multimap &table) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator where) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_erase</b>(const key_type &key) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator first, const_iterator last) (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00042.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_pred_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_pred_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_succ_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_succ_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>del_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>del_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::aggregating_functor< my_class, buffer_operation ></b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::forward_task_bypass< buffer_node< T, A > ></b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_consume</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_copy_preds</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy_succs</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_del_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_del_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a3aa7578ccbd3d5f986869ab8698c037c">internal_forward_task</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pop</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_pred_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_push</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_reserve</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_succ_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00344.html b/doc/html/a00344.html
index 75aa6bc..c1f517c 100644
--- a/doc/html/a00344.html
+++ b/doc/html/a00344.html
@@ -33,31 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00045.html">concurrent_unordered_set_traits</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00030.html">buffer_node</a></li><li class="navelem"><a class="el" href="a00031.html">buffer_operation</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::buffer_node< T, A >::buffer_operation Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>allow_multimapping</b> enum value (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set_traits</b>() (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlab [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set_traits</b>(const hash_compare &hc) (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><spa [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_key</b>(const value_type &value) (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class="m [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash_compare</b> typedef (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_compare</b> typedef (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>buffer_operation</b>(const T &e, op_type t) (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>cnt_val</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>elem</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>elem</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ltask</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>p</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pvec</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>r</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>svec</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>type</b> (defined in <a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a>)</td><td class="entry"><a class="el" href="a00031.html">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00345.html b/doc/html/a00345.html
deleted file mode 100644
index c93e8a9..0000000
--- a/doc/html/a00345.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.4"/>
-<title>Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.4 -->
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main Page</span></a></li>
-      <li><a href="pages.html"><span>Related Pages</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class List</span></a></li>
-      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
-      <li><a href="functions.html"><span>Class Members</span></a></li>
-    </ul>
-  </div>
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00044.html">concurrent_unordered_set</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Member List</div>  </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
-<table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, A [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set</b>(const Allocator &a) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set&l [...]
-  <tr class="even"><td class="entry"><a class="el" href="a00044.html#ae0570fa46456245509cc789e17bd0c21">concurrent_unordered_set</a>(std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td> [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(const concurrent_unordered_set &table) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set</b>(const concurrent_unordered_set &table, const Allocator &a) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</sp [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hash_function</b>() const  (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_eq</b>() const  (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_set &table) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00044.html#ab8bc097b955ce129641eb3cf9f4cd4d5">operator=</a>(std::initializer_list< value_type > const &il)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap</b>(concurrent_unordered_set &table) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator where) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_erase</b>(const key_type &key) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator first, const_iterator last) (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-<hr>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<p></p>
-Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
-registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00346.html b/doc/html/a00346.html
index 0b42b89..fb89036 100644
--- a/doc/html/a00346.html
+++ b/doc/html/a00346.html
@@ -33,58 +33,119 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_unordered_multiset</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00110.html">queue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::queue_node< T, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>base_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(const Allocator &a) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(Iterator first, Iterator last, size_type n_of_buckets=8, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5 [...]
-  <tr><td class="entry"><a class="el" href="a00043.html#ab2fa28924f52578bb59200b9ffa976c8">concurrent_unordered_multiset</a>(std::initializer_list< value_type > const &il, size_type n_of_buckets=8, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(const concurrent_unordered_multiset &table) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span>< [...]
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(const concurrent_unordered_multiset &table, const Allocator &a) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inl [...]
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash_compare</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hash_function</b>() const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>insert</b>(const value_type &value) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>insert</b>(const_iterator where, const value_type &value) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>insert</b>(Iterator first, Iterator last) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_eq</b>() const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const concurrent_unordered_multiset &table) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00043.html#a01e685fab9a39cbd69c53bb3b8befce6">operator=</a>(std::initializer_list< value_type > const &il)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap</b>(concurrent_unordered_multiset &table) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>traits_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator where) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_erase</b>(const key_type &key) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_erase</b>(const_iterator first, const_iterator last) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_pred_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_pred_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_succ_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_succ_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>del_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>del_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_consume</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy_preds</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_copy_succs</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_del_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_del_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a>(queue_operation *op)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_pop</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pred_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_push</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_reserve</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_succ_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00110.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a>(const queue_node &src)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>queue_operation</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00347.html b/doc/html/a00347.html
index fbf7df6..e9161d9 100644
--- a/doc/html/a00347.html
+++ b/doc/html/a00347.html
@@ -33,35 +33,122 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00143.html">sequencer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock Member List</div>  </div>
+<div class="title">tbb::flow::interface7::sequencer_node< T, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>active</b> enum value (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>invalid</b> enum value (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00095.html#a6fd4fcdf0e5c0425d1cc736d644f234f">lock_read</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00095.html#abceda6c50b0c36eacbef51f4682742f3">reader_writer_lock</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock_read</b> (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">status_t</a> enum name</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00095.html#a1739e842af52925a2d4a7e821b9b3b8d">try_lock</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00095.html#a9c7aa04e00202c9a1197cb6d870cabb4">try_lock_read</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00095.html#a4c55c4dbde63e950fdc843c9b01a174f">unlock</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>waiting</b> enum value (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>waiting_nonblocking</b> enum value (defined in <a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00095.html#aeee96b648c7b5ff6126c8a2e13ec7241">~reader_writer_lock</a>()</td><td class="entry"><a class="el" href="a00095.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_type</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_pred_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_pred_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_succ_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_succ_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>del_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>del_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>handle_operations</b>(buffer_operation *op_list) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_consume</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy_preds</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_copy_succs</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_del_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_del_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">internal_forward_task</a>(queue_operation *op)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_pop</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pred_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_release</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_reserve</b>(queue_operation *op) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_succ_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00110.html#aa790bb6d3c8bef58d59235dfba1a1092">queue_node</a>(const queue_node &src)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>queue_operation</b> typedef (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00110.html">tbb::flow::interface7::queue_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00143.html#a0e8d3d486edc7f70c81b36ce9421c11a">sequencer_node</a>(graph &g, const Sequencer &s)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a19cfdaf85098d0fcf0b1956dc913a7a2">sequencer_node</a>(const sequencer_node &src)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>sequencer_operation</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a01fd0321c7bd0f2112458cec2a636d7d">~sequencer_node</a>()</td><td class="entry"><a class="el" href="a00143.html">tbb::flow::interface7::sequencer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00348.html b/doc/html/a00348.html
index ab4f56c..e0720fe 100644
--- a/doc/html/a00348.html
+++ b/doc/html/a00348.html
@@ -33,26 +33,120 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00118.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00109.html">priority_queue_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock::scoped_lock Member List</div>  </div>
+<div class="title">tbb::flow::interface7::priority_queue_node< T, Compare, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *p) (defined in <a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t s) (defined in <a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reader_writer_lock</b> (defined in <a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00118.html#aaed982d8c3f1e84298f9842063694f3c">scoped_lock</a>(reader_writer_lock &lock)</td><td class="entry"><a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00118.html#a41e77cf094ed30b0a9a39ee217c3653b">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00118.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>base_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_pred_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_pred_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>blt_succ_cnt</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>blt_succ_cpy</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">buffer_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">buffer_node</a>(const buffer_node &src)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_predecessors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_predecessors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>built_successors</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>built_successors_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>con_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>copy_predecessors</b>(predecessor_list_type &)=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_successors</b>(successor_list_type &v) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>del_blt_pred</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>del_blt_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>enqueue_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>FAILED</b> enum value (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">forward_task</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>forwarder_busy</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>grab_forwarding_task</b>(buffer_operation &op_data) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>handle_operations</b>(prio_operation *op_list) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_add_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_add_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_consume</b>(prio_operation *op) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy_preds</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_copy_succs</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_del_built_pred</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_del_built_succ</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_delete_built_predecessor</b>(predecessor_type &p) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_delete_built_successor</b>(successor_type &r) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00109.html#a4e6d43ca8748046098fd27ca97e58f3d">internal_forward_task</a>(prio_operation *op)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_pop</b>(prio_operation *op) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_pred_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_push</b>(prio_operation *op) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">internal_reg_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_release</b>(prio_operation *op) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">internal_rem_succ</a>(buffer_operation *op)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_reserve</b>(prio_operation *op) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_succ_cnt</b>(buffer_operation *op) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_continue_receiver</b>() (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>item_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_aggregator</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_built_predecessors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_handler</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_successors</b> (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>op_stat</b> enum name (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>op_type</b> enum name (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>predecessor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>prio_operation</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00109.html#ab295c7b50ff804f7276609a25016e7ca">priority_queue_node</a>(graph &g)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00109.html#aa163d8a81b4a795cb37f207b02191a39">priority_queue_node</a>(const priority_queue_node &src)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>put_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reg_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">register_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">register_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>rel_res</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rem_succ</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">remove_predecessor</a>(predecessor_type &)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">remove_successor</a>(successor_type &r)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>req_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>res_item</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_receiver</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a>)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>SUCCEEDED</b> enum value (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_count</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successor_list_type</b> typedef (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">try_consume</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_fwd_task</b> enum value (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">try_get</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">try_put</a>(const T &t)</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">try_put_task</a>(const T &t)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">try_release</a>()</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">try_reserve</a>(T &v)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>WAIT</b> enum value (defined in <a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>)</td><td class="entry"><a class="el" href="a00109.html">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~buffer_node</b>() (defined in <a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a>)</td><td class="entry"><a class="el" href="a00030.html">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">~receiver</a>()</td><td class="entry"><a class="el" href="a00124.html">tbb::flow::interface7::receiver< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~sender</b>() (defined in <a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::flow::interface7::sender< T ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00349.html b/doc/html/a00349.html
index c2ffa37..d7c6107 100644
--- a/doc/html/a00349.html
+++ b/doc/html/a00349.html
@@ -33,26 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00095.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00123.html">scoped_lock_read</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00089.html">join_node< OutputTuple, reserving ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface5::reader_writer_lock::scoped_lock_read Member List</div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, reserving > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *p) (defined in <a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t s) (defined in <a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reader_writer_lock</b> (defined in <a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00123.html#a9d3120a23016dabd4cc2683fa561ee5a">scoped_lock_read</a>(reader_writer_lock &lock)</td><td class="entry"><a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00123.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">~scoped_lock_read</a>()</td><td class="entry"><a class="el" href="a00123.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g) (defined in <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a>)</td><td class="entry"><a class="el" href="a00089.html">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00350.html b/doc/html/a00350.html
index b3f6fcd..b7b3912 100644
--- a/doc/html/a00350.html
+++ b/doc/html/a00350.html
@@ -33,30 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00013.html">aggregator_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00088.html">join_node< OutputTuple, queueing ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator_operation Member List</div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, queueing > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_ext</b> (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g) (defined in <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a>)</td><td class="entry"><a class="el" href="a00088.html">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00351.html b/doc/html/a00351.html
index af0e247..83ec246 100644
--- a/doc/html/a00351.html
+++ b/doc/html/a00351.html
@@ -33,24 +33,34 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00012.html">aggregator_ext</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00090.html">join_node< OutputTuple, tag_matching ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator_ext< handler_type > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::join_node< OutputTuple, tag_matching > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00012.html">tbb::interface6::aggregator_ext< handler_type ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_ext</b>(const handler_type &h) (defined in <a class="el" href="a00012.html">tbb::interface6::aggregator_ext< handler_type ></a>)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a>(aggregator_operation &op)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a>(aggregator_operation *op)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">i [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>join_node</b>(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">i [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>join_node</b>(const join_node &other) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a>)</td><td class="entry"><a class="el" href="a00090.html">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00352.html b/doc/html/a00352.html
index 349f5e6..f1b2d83 100644
--- a/doc/html/a00352.html
+++ b/doc/html/a00352.html
@@ -33,26 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00011.html">aggregator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00075.html">indexer_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::aggregator Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00011.html">tbb::interface6::aggregator</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator</b>() (defined in <a class="el" href="a00011.html">tbb::interface6::aggregator</a>)</td><td class="entry"><a class="el" href="a00011.html">tbb::interface6::aggregator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_ext</b>(const internal::basic_handler &h) (defined in <a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a>)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00011.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a>(const Body &b)</td><td class="entry"><a class="el" href="a00011.html">tbb::interface6::aggregator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a>(aggregator_operation &op)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a>(aggregator_operation *op)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00353.html b/doc/html/a00353.html
index 065d015..ee78270 100644
--- a/doc/html/a00353.html
+++ b/doc/html/a00353.html
@@ -33,25 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00036.html">concurrent_lru_cache</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00076.html">indexer_node< T0 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_lru_cache</b>(value_function_type f, std::size_t number_of_lru_history_items) (defined in <a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle</b> typedef (defined in <a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(key_type k) (defined in <a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::internal::aggregating_functor< self_type, aggregated_operation_type ></b> (defined in <a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00036.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a>)</td><td class="entry"><a class="el" href="a00076.html">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00354.html b/doc/html/a00354.html
index 11181e9..b92f8ae 100644
--- a/doc/html/a00354.html
+++ b/doc/html/a00354.html
@@ -33,55 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00052.html">enumerable_thread_specific</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00077.html">indexer_node< T0, T1 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#ad50ceae1b0e91d0fd31fe506e690692b">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a070d26debf1f65c83de13f64f91aefdc">begin</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#aa097383eb6f90e4a551830fc00b60b3a">begin</a>() const </td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">clear</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combine</b>(combine_func_t f_combine) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>combine_each</b>(combine_func_t f_combine) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#adfa4b2e13e47ab825dc40c4f195d2bc5">empty</a>() const </td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#ad225e2e8a968b131bf05d72f5686b924">end</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a5ed0248f10a7aa5045d2cda77dad9588">end</a>() const </td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enumerable_thread_specific</b> (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#ad95ccef01367c0b6d75f6f91f5bf5315">enumerable_thread_specific</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#a6c4bec58ae7f0f2b6c77f0baf79623ee">enumerable_thread_specific</a>(Finit finit)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a6f0249ee95fa56665da4b6984f3a685a">enumerable_thread_specific</a>(const T &exemplar)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enumerable_thread_specific</b>(const enumerable_thread_specific< U, Alloc, Cachetype > &other) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>enumerable_thread_specific</b>(const enumerable_thread_specific &other) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">local</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#abbbc24a5816dc163d5df057c5e7f379d">local</a>(bool &exists)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const enumerable_thread_specific &other) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const enumerable_thread_specific< U, Alloc, Cachetype > &other) (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#ac94dd896ed78df240da4a450defbca6c">range</a>(size_t grainsize=1)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a25b9153dfe994c8122a7f0227cffe793">range</a>(size_t grainsize=1) const </td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00052.html#a4c33c5390783e17daf2b25d53ae919fb">size</a>() const </td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00052.html#a6ea8d717f770acb63efc406df52d4585">~enumerable_thread_specific</a>()</td><td class="entry"><a class="el" href="a00052.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a>)</td><td class="entry"><a class="el" href="a00077.html">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00355.html b/doc/html/a00355.html
index 62979f7..64f6d05 100644
--- a/doc/html/a00355.html
+++ b/doc/html/a00355.html
@@ -33,38 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00057.html">flattened2d</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00078.html">indexer_node< T0, T1, T2 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::flattened2d< Container > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>flattened2d</b>(const Container &c, typename Container::const_iterator b, typename Container::const_iterator e) (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>flattened2d</b>(const Container &c) (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00057.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a> typedef</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00057.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a>)</td><td class="entry"><a class="el" href="a00078.html">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00356.html b/doc/html/a00356.html
index e6435f7..b33c27c 100644
--- a/doc/html/a00356.html
+++ b/doc/html/a00356.html
@@ -33,44 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00074.html">memory_pool_allocator</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00079.html">indexer_node< T0, T1, T2, T3 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< T, P > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00074.html#a10b9888883a3dbd66e87c4a7f874ef28">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00074.html#ac51b34ef90ecabdd2e0483e25603a15b">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00074.html#a9fcf288f2d653972d1bdc0c65abebed4">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00074.html#a2223b6469f88aadc432a4b3f88728d0f">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00074.html#a2bded8e3fb2cec32b48771e7a1bbb838">max_size</a>() const </td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b> (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(pool_type &pool) (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator &src) (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator< U, P > &src) (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_pool</b> (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pool_type</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00074.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a>)</td><td class="entry"><a class="el" href="a00079.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00357.html b/doc/html/a00357.html
index a38ba5c..05def21 100644
--- a/doc/html/a00357.html
+++ b/doc/html/a00357.html
@@ -33,22 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00074.html">memory_pool_allocator</a></li><li class="navelem"><a class="el" href="a00101.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00080.html">indexer_node< T0, T1, T2, T3, T4 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00101.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00101.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00101.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a>)</td><td class="entry"><a class="el" href="a00080.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00358.html b/doc/html/a00358.html
index ae93605..9144933 100644
--- a/doc/html/a00358.html
+++ b/doc/html/a00358.html
@@ -33,32 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00075.html">memory_pool_allocator< void, P ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00081.html">indexer_node< T0, T1, T2, T3, T4, T5 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< void, P > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b> (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(pool_type &pool) (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator &src) (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator< U, P > &src) (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_pool</b> (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>pool_type</b> typedef (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00075.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a>)</td><td class="entry"><a class="el" href="a00081.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00359.html b/doc/html/a00359.html
index 060d79b..60918c4 100644
--- a/doc/html/a00359.html
+++ b/doc/html/a00359.html
@@ -33,22 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00075.html">memory_pool_allocator< void, P ></a></li><li class="navelem"><a class="el" href="a00102.html">rebind</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00082.html">indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00102.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00102.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00102.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a>)</td><td class="entry"><a class="el" href="a00082.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00360.html b/doc/html/a00360.html
index 08069cc..e24c1c1 100644
--- a/doc/html/a00360.html
+++ b/doc/html/a00360.html
@@ -33,23 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00073.html">memory_pool</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00083.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::memory_pool< Alloc > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00073.html">tbb::interface6::memory_pool< Alloc ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00073.html#af4c36829a159eac04d630ac5a99b9354">memory_pool</a>(const Alloc &src=Alloc())</td><td class="entry"><a class="el" href="a00073.html">tbb::interface6::memory_pool< Alloc ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00073.html#ad2c7645b39b7280b1b3cf393d05fbaf7">~memory_pool</a>()</td><td class="entry"><a class="el" href="a00073.html">tbb::interface6::memory_pool< Alloc ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a>)</td><td class="entry"><a class="el" href="a00083.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00361.html b/doc/html/a00361.html
index ae58cf6..17c1307 100644
--- a/doc/html/a00361.html
+++ b/doc/html/a00361.html
@@ -33,23 +33,27 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00056.html">fixed_pool</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00084.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::fixed_pool Member List</div>  </div>
+<div class="title">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00056.html">tbb::interface6::fixed_pool</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00056.html#aa3811fe3d437ba2eefa926d52732491a">fixed_pool</a>(void *buf, size_t size)</td><td class="entry"><a class="el" href="a00056.html">tbb::interface6::fixed_pool</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00056.html#ab854a85575e5c1e9c9f4d3eafcc28044">~fixed_pool</a>()</td><td class="entry"><a class="el" href="a00056.html">tbb::interface6::fixed_pool</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indexer_node</b>(graph &g) (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>indexer_node</b>(const indexer_node &other) (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InputTuple</b> typedef (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unfolded_type</b> typedef (defined in <a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a>)</td><td class="entry"><a class="el" href="a00084.html">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00362.html b/doc/html/a00362.html
index e2b193d..04c9cee 100644
--- a/doc/html/a00362.html
+++ b/doc/html/a00362.html
@@ -33,23 +33,42 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00058.html">flow_control</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00038.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::flow_control Member List</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00058.html">tbb::interface6::flow_control</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::concrete_filter</b> (defined in <a class="el" href="a00058.html">tbb::interface6::flow_control</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::interface6::flow_control</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>stop</b>() (defined in <a class="el" href="a00058.html">tbb::interface6::flow_control</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::interface6::flow_control</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span cl [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_nodes</b>(Nodes &...) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</spa [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_visible_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"> [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_visible_nodes</b>(Nodes &...) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inl [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>composite_node</b>(graph &g, const char *my_type_name=" ") (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="m [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_ports</b>() (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_ports</b>() (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"> [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_external_ports</b>(input_ports_type &&input_ports_tuple, output_ports_type &&output_ports_tuple) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_external_ports</b>(const input_ports_type &input_ports_tuple, const output_ports_type &output_ports_tuple) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tup [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabe [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~composite_node</b>() (defined in <a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span><span  [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00363.html b/doc/html/a00363.html
index a9ce48b..6675ad4 100644
--- a/doc/html/a00363.html
+++ b/doc/html/a00363.html
@@ -33,30 +33,40 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00054.html">filter_t</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00039.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::filter_t< T, U > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter_t</b>() (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter_t</b>(const filter_t< T, U > &rhs) (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter_t</b>(tbb::filter::mode mode, const Body &body) (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::pipeline_proxy</b> (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00054.html#a21460fde704da22caa222778f5abb140">make_filter</a>(tbb::filter::mode, const Body &)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&</b> (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const filter_t< T, U > &rhs) (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~filter_t</b>() (defined in <a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_nodes</b>(Nodes &...) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_visible_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</s [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_visible_nodes</b>(Nodes &...) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>composite_node</b>(graph &g, const char *my_type_name=" ") (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span  [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_ports</b>() (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>input_ports_type</b> typedef (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</s [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_external_ports</b>(input_ports_type &&input_ports_tuple) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span clas [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_external_ports</b>(const input_ports_type &input_ports_tuple) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">i [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="m [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~composite_node</b>() (defined in <a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a>)</td><td class="entry"><a class="el" href="a00039.html">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span>< [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00364.html b/doc/html/a00364.html
index d618c43..d13f061 100644
--- a/doc/html/a00364.html
+++ b/doc/html/a00364.html
@@ -33,37 +33,40 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00110.html">runtime_loader</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00040.html">composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::runtime_loader Member List</div>  </div>
+<div class="title">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00110.html">tbb::interface6::runtime_loader</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">ec_bad_arg</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">ec_bad_call</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">ec_bad_lib</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">ec_bad_ver</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">ec_no_lib</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">ec_ok</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">em_status</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">em_throw</a> enum value</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> enum name</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> enum name</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e">load</a>(char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX)</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a2f87eaf99564c705aa140f2eb8848eaa">runtime_loader</a>(error_mode mode=em_abort)</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#a3e0932074d2f3ad04605e7e5da88c561">runtime_loader</a>(char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX, error_mode mode=em_abort)</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00110.html#a85bf9ee021a2076a3ac7cfd70aae7345">status</a>()</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00110.html#aa3b96f53e165e3d692c3c36292ba0737">~runtime_loader</a>()</td><td class="entry"><a class="el" href="a00110.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></ [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_nodes</b>(Nodes &...) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_visible_nodes</b>(const NodeTypes &...n) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline< [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>add_visible_nodes</b>(Nodes &...) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>composite_node</b>(graph &g, const char *my_type_name=" ") (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><spa [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_ports</b>() (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>output_ports_type</b> typedef (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags)) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline< [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_external_ports</b>(output_ports_type &&output_ports_tuple) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span  [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_external_ports</b>(const output_ports_type &output_ports_tuple) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabe [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span><span class= [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~composite_node</b>() (defined in <a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a>)</td><td class="entry"><a class="el" href="a00040.html">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00365.html b/doc/html/a00365.html
index 86d8cb7..1698ccd 100644
--- a/doc/html/a00365.html
+++ b/doc/html/a00365.html
@@ -33,34 +33,49 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00142.html">task_scheduler_observer</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00017.html">async_node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::task_scheduler_observer Member List</div>  </div>
+<div class="title">tbb::flow::interface7::async_node< Input, Output, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::observer_list</b> (defined in <a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::observer_proxy</b> (defined in <a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::task_scheduler_observer_v3</b> (defined in <a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a>() const </td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">observe</a>(bool state=true)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a>(bool)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a>(bool)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00142.html#afd3842518d9a37efb3c8455b22950bb8">on_scheduler_leaving</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00142.html#a89025b1e1d42e97d6fe114c0c331f730">task_scheduler_observer</a>(bool local=false)</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00142.html#a36e7e0c466320029d5a3e50a573e04c1">task_scheduler_observer</a>(task_arena &a)</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00142.html#a9ef3f1853439b46e5a9db7fd1c0f9116">~task_scheduler_observer</a>()</td><td class="entry"><a class="el" href="a00142.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>async_commit</b>() (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>async_gateway</b>() (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>async_gateway_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>async_input_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00017.html#aea2575eeaf4b1cc483d4d9854b47e823">async_node</a>(graph &g, Body body)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00017.html#a941e58ff009aa492f1f011947f7b04ac">async_node</a>(const async_node &src)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>async_output_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>async_reserve</b>() (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00017.html#a565f12fc3ce62a14156398c94f401d9c">async_try_put</a>(const output_type &i)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>extract</b>() (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>graph_node</b>(graph &g) (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>input_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::broadcast_cache</b> (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::round_robin_cache</b> (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_class</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_graph</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>predecessor_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>prev</b> (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f)) (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reset_node</b>(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol))=0 (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>run_and_put_task</b> (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(const char *name) (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>successor_type</b> typedef (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>successors</b>() (defined in <a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>)</td><td class="entry"><a class="el" href="a00017.html">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~async_gateway</b>() (defined in <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~graph_node</b>() (defined in <a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a>)</td><td class="entry"><a class="el" href="a00072.html">tbb::flow::interface7::graph_node</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00366.html b/doc/html/a00366.html
index a3d1197..2c33559 100644
--- a/doc/html/a00366.html
+++ b/doc/html/a00366.html
@@ -33,32 +33,29 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00020.html">basic_operation_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00059.html">edge_container</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_operation_base Member List</div>  </div>
+<div class="title">tbb::flow::interface7::internal::edge_container< C > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_handler</b> (defined in <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>basic_operation_base</b>() (defined in <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_operation_base</b>() (defined in <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>add_edge</b>(C &s) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>copy_edges</b>(edge_list_type &v) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>delete_edge</b>(C &s) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>edge_count</b>() (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>edge_list_type</b> typedef (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>receiver_extract</b>(R &r) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>sender_extract</b>(S &s) (defined in <a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a>)</td><td class="entry"><a class="el" href="a00059.html">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00367.html b/doc/html/a00367.html
index 42d74b0..f8ba2fc 100644
--- a/doc/html/a00367.html
+++ b/doc/html/a00367.html
@@ -33,32 +33,26 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00019.html">basic_operation</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>flow</b></li><li class="navelem"><b>interface7</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00016.html">async_gateway</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_operation< Body > Member List</div>  </div>
+<div class="title">tbb::flow::interface7::internal::async_gateway< Output > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00019.html">tbb::interface6::internal::basic_operation< Body ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_operation</b>(const Body &b) (defined in <a class="el" href="a00019.html">tbb::interface6::internal::basic_operation< Body ></a>)</td><td class="entry"><a class="el" href="a00019.html">tbb::interface6::internal::basic_operation< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>basic_operation_base</b>() (defined in <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_operation_base</b>() (defined in <a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00020.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>async_commit</b>()=0 (defined in <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>async_reserve</b>()=0 (defined in <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00016.html#a308f7feb8ac2fc3b7cbcf4e5246e78a2">async_try_put</a>(const output_type &i)=0</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>output_type</b> typedef (defined in <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~async_gateway</b>() (defined in <a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a>)</td><td class="entry"><a class="el" href="a00016.html">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00368.html b/doc/html/a00368.html
index ba634d3..d73d99f 100644
--- a/doc/html/a00368.html
+++ b/doc/html/a00368.html
@@ -33,23 +33,108 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00018.html">basic_handler</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface6::internal::basic_handler Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00018.html">tbb::interface6::internal::basic_handler</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_handler</b>() (defined in <a class="el" href="a00018.html">tbb::interface6::internal::basic_handler</a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::interface6::internal::basic_handler</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>(aggregator_operation *op_list) const  (defined in <a class="el" href="a00018.html">tbb::interface6::internal::basic_handler</a>)</td><td class="entry"><a class="el" href="a00018.html">tbb::interface6::internal::basic_handler</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>accessor_location</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>accessor_location</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate_node_copy_construct</b>(node_allocator_type &allocator, const Key &key, const T *t) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>allocate_node_default_construct</b>(node_allocator_type &allocator, const Key &key, const T *) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><spa [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate_node_emplace_construct</b>(node_allocator_type &allocator, Args &&...args) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</spa [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>allocate_node_move_construct</b>(node_allocator_type &allocator, const Key &key, const T *t) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span  [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#aa067a2a4db1d96f38555369a89deee64">bucket_count</a>() const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#ab8295bc260b5e4df883fef11574b84c6">clear</a>()</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#aa3a9767b525144a2afb69ed125714c53">concurrent_hash_map</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#aae76e1252b56b107685f8746e0f6a1f4">concurrent_hash_map</a>(size_type n, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a8a73b86f9a5e9836b38713e56c546654">concurrent_hash_map</a>(const concurrent_hash_map &table, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a2bd04845683b15a590913a72a19fa3dc">concurrent_hash_map</a>(concurrent_hash_map &&table)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#ad642e497153df5669e6454acef095675">concurrent_hash_map</a>(concurrent_hash_map &&table, const allocator_type &a)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#ad56fc19d656099d49051f3c363cefc89">concurrent_hash_map</a>(I first, I last, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a57149f90060b033b1f2493f2a88ef291">concurrent_hash_map</a>(std::initializer_list< value_type > il, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_accessor</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7">count</a>(const Key &key) const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>delete_node</b>(node_base *n) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>do_not_allocate_node</b>(node_allocator_type &, const Key &, const T *) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="m [...]
+  <tr><td class="entry"><a class="el" href="a00043.html#a382178ea2f00f69096c91bcf76ae7913">emplace</a>(const_accessor &result, Args &&...args)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a17e51c8864282c35aa4d23f22909cc4a">emplace</a>(accessor &result, Args &&...args)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#acbe1d0f3a87786a83a7021af2ef52ee0">emplace</a>(Args &&...args)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a5e05f2a1ca3accfb4252d7ee82d1e990">empty</a>() const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>equal_range</b>(const Key &key) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>equal_range</b>(const Key &key) const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a5144122dbb946d933b94a92117543b33">erase</a>(const Key &key)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a2ec6f95ed9beda9d32df56cdd45c1842">erase</a>(const_accessor &item_accessor)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">erase</a>(accessor &item_accessor)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a6fec452b31b8f0e185dc2de64b7128b2">exclude</a>(const_accessor &item_accessor)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a27a3f296dc170ae25f8e3fd9efa93cff">find</a>(const_accessor &result, const Key &key) const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a6b61799e2018381b5ee4b78752a41483">find</a>(accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>generic_emplace</b>(Accessor &&result, Args &&...args) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>generic_move_insert</b>(Accessor &&result, value_type &&value) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a121865c574f8ae5cae69ed3d6b7e0511">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#aaebb10a9e9dcb24e63860caa745a281d">insert</a>(const_accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a766c6033c203e8f342501d85a7cf3405">insert</a>(accessor &result, const Key &key)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#ae0b420cdb752e749790c8a7daa15c3c2">insert</a>(const_accessor &result, const value_type &value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a2047214e041b7674c3b83e204d0d6c6a">insert</a>(accessor &result, const value_type &value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a8e39501f9edb3210504c9c4ca05384b7">insert</a>(const value_type &value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a446910c1ca4818bdb00f4ffa91b9108a">insert</a>(const_accessor &result, value_type &&value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a50c929e78ecfa36986c8821287665a70">insert</a>(accessor &result, value_type &&value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a5d3da283d2e74c7ff0ecb0dfd4d371fd">insert</a>(value_type &&value)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#ab84dfd77316252cbf39c7ae89e365a00">insert</a>(I first, I last)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a580fdba266e87106ad41470479f641d6">insert</a>(std::initializer_list< value_type > il)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::hash_map_iterator</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::hash_map_range</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a0bc3593f82b3b4f9839fc051780212ab">internal_copy</a>(const concurrent_hash_map &source)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_copy</b>(I first, I last) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a8603f5288db63ec35a16844427e97e42">internal_equal_range</a>(const Key &key, I end) const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">internal_fast_find</a>(const Key &key) const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_write_access_needed</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_write_access_needed</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_write_access_needed</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a2a319cf46fb9cf9a88aab6c0a20c98b3">lookup</a>(bool op_insert, const Key &key, const T *t, const_accessor *result, bool write, node *(*allocate_node)(node_allocator_type &, const Key &, const T *), node *tmp_n=0)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#aea0a0e5220a0dcb67da57d0280d36005">max_size</a>() const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_allocator</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>node_allocator_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#a63e01b1f79c287ae0257ccfd483fd90a">operator=</a>(const concurrent_hash_map &table)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a92b506ceed93d1c25979948961054380">operator=</a>(concurrent_hash_map &&table)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#aac73665b1a55e3de7332f36598488252">operator=</a>(std::initializer_list< value_type > il)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>range</b>(size_type grainsize=1) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>range</b>(size_type grainsize=1) const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00043.html#adf1fa9470c605731063e5949f0418eb7">rehash</a>(size_type n=0)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>rehash_bucket</b>(bucket *b_new, const hashcode_t h) (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>search_bucket</b>(const key_type &key, bucket *b) const  (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4">size</a>() const </td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e">swap</a>(concurrent_hash_map &table)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>)</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00043.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">~concurrent_hash_map</a>()</td><td class="entry"><a class="el" href="a00043.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00369.html b/doc/html/a00369.html
index e962663..0dbf666 100644
--- a/doc/html/a00369.html
+++ b/doc/html/a00369.html
@@ -33,35 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00135.html">task_arena</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00010.html">accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::interface7::task_arena Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00135.html">tbb::interface7::task_arena</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a4c107b6a4cc79183923fe2433d25644f">current_slot</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#a07d87dff8c6116ee349684e10f754aeb">debug_wait_until_empty</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a8034275ed2fffa68f70484043b90d406">enqueue</a>(const F &f)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#a9a04ab4afb2d74b0317618f59ab49be7">enqueue</a>(const F &f, priority_t p)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#af0c96f325b59d567b4c720f2830adde8">execute</a>(F &f)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#ab8442c8e9e3e678349409e08cabc7ae2">execute</a>(const F &f)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a955131a79f8dc5a0a5c9ffa66a7e7140">initialize</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#a754d60ba6981461eb7c86afd14d3da2a">initialize</a>(int max_concurrency, unsigned reserved_for_masters=1)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#ad85856cefa30d42155a2b122b03efd8c">is_active</a>() const </td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#a6035737ce1a8db376d06880dae9d0c40">task_arena</a>(int max_concurrency=automatic, unsigned reserved_for_masters=1)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#a70d122b3e6e4760c6053c5c230c715ef">task_arena</a>(const task_arena &s)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::internal::task_scheduler_observer_v3</b> (defined in <a class="el" href="a00135.html">tbb::interface7::task_arena</a>)</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00135.html#aecb3eedeacfe8469a91c17525dae7fc9">terminate</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00135.html#a9ff5a35a219953a4f3d99b833fa5f683">~task_arena</a>()</td><td class="entry"><a class="el" href="a00135.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a>() const </td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_writer</b>() (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash</b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_node</b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00010.html#a4e03905a33fbdafdb99113cc68d2bd4b">operator*</a>() const </td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00010.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">operator-></a>() const </td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">release</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00010.html#a850178bbdcdbc4cf5955cab37eb8c42c">value_type</a> typedef</td><td class="entry"><a class="el" href="a00010.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00370.html b/doc/html/a00370.html
index e5fff04..77dbb96 100644
--- a/doc/html/a00370.html
+++ b/doc/html/a00370.html
@@ -33,30 +33,22 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00051.html">critical_section_v4</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00011.html">accessor_not_used</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::critical_section_v4 Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00011.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>critical_section_v4</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>lock</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_lock</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unlock</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~critical_section_v4</b>() (defined in <a class="el" href="a00051.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>release</b>() (defined in <a class="el" href="a00011.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used</a>)</td><td class="entry"><a class="el" href="a00011.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00371.html b/doc/html/a00371.html
index fd8ed76..e1f0f88 100644
--- a/doc/html/a00371.html
+++ b/doc/html/a00371.html
@@ -33,23 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00051.html">critical_section_v4</a></li><li class="navelem"><a class="el" href="a00122.html">scoped_lock</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00029.html">bucket_accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::critical_section_v4::scoped_lock Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00122.html">tbb::internal::critical_section_v4::scoped_lock</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>(critical_section_v4 &lock_me) (defined in <a class="el" href="a00122.html">tbb::internal::critical_section_v4::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00122.html">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00122.html">tbb::internal::critical_section_v4::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00122.html">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00029.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">acquire</a>(concurrent_hash_map *base, const hashcode_t h, bool writer=false)</td><td class="entry"><a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>bucket_accessor</b>(concurrent_hash_map *base, const hashcode_t h, bool writer=false) (defined in <a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>)</td><td class="entry"><a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00029.html#aaa8167e2961330435fd23eb92127805c">is_writer</a>()</td><td class="entry"><a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00029.html#a16e714a5e77dbf8daf81973df30722d4">operator()</a>()</td><td class="entry"><a class="el" href="a00029.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00372.html b/doc/html/a00372.html
index a879081..786a548 100644
--- a/doc/html/a00372.html
+++ b/doc/html/a00372.html
@@ -33,22 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00140.html">task_handle_task</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00034.html">call_clear_on_leave</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::task_handle_task< F > Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00140.html">tbb::internal::task_handle_task< F ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_handle_task</b>(task_handle< F > &h) (defined in <a class="el" href="a00140.html">tbb::internal::task_handle_task< F ></a>)</td><td class="entry"><a class="el" href="a00140.html">tbb::internal::task_handle_task< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>call_clear_on_leave</b>(concurrent_hash_map *a_ch_map) (defined in <a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>dismiss</b>() (defined in <a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_ch_map</b> (defined in <a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~call_clear_on_leave</b>() (defined in <a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a>)</td><td class="entry"><a class="el" href="a00034.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00373.html b/doc/html/a00373.html
index 202226c..3250b5f 100644
--- a/doc/html/a00373.html
+++ b/doc/html/a00373.html
@@ -33,32 +33,33 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00137.html">task_group_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00054.html">const_accessor</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::task_group_base Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00137.html">tbb::internal::task_group_base</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~task_group_base</b>() (defined in <a class="el" href="a00137.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00137.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>accessor</b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_hash_map< Key, T, HashCompare, Allocator ></b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">const_accessor</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">empty</a>() const </td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_writer</b>() (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash</b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_node</b> (defined in <a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>)</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#a8adf04e33e7c8c876ba849f26807713a">operator*</a>() const </td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00054.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">operator-></a>() const </td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">release</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00054.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">value_type</a> typedef</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">~const_accessor</a>()</td><td class="entry"><a class="el" href="a00054.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00374.html b/doc/html/a00374.html
index 2c971c4..1baf9d8 100644
--- a/doc/html/a00374.html
+++ b/doc/html/a00374.html
@@ -33,30 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00143.html">task_scheduler_observer_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00043.html">concurrent_hash_map</a></li><li class="navelem"><a class="el" href="a00100.html">node</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::task_scheduler_observer_v3 Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>interface6::task_scheduler_observer</b> (defined in <a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a>() const </td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">observe</a>(bool state=true)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>observer_list</b> (defined in <a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>observer_proxy</b> (defined in <a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a>(bool)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a>(bool)</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00143.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>item</b> (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>node</b>(const Key &key) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>node</b>(const Key &key, const T &t) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>node</b>(const Key &key, T &&t) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>node</b>(value_type &&i) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>node</b>(Args &&...args) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>node</b>(value_type &i) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>node</b>(const value_type &i) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *ptr, node_allocator_type &a) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t, node_allocator_type &a) (defined in <a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a>)</td><td class="entry"><a class="el" href="a00100.html">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00375.html b/doc/html/a00375.html
index 0045ec8..fe8df7b 100644
--- a/doc/html/a00375.html
+++ b/doc/html/a00375.html
@@ -33,26 +33,49 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00147.html">tbb_exception_ptr</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00045.html">concurrent_priority_queue</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_exception_ptr Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_priority_queue< T, Compare, A > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>() (defined in <a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>allocate</b>(const tbb_exception &tag) (defined in <a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a>)</td><td class="entry"><a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00147.html#abfbea91401d2594deb04ea331734171c">allocate</a>(captured_exception &src)</td><td class="entry"><a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00147.html#a38d3ca480e2758a67bcd7427b156daae">destroy</a>()</td><td class="entry"><a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00147.html#a1713aa9a6a3850049d34358397a8ed81">throw_self</a>()</td><td class="entry"><a class="el" href="a00147.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#ac64c7b627708f0d6b2e5421fb0d49150">assign</a>(InputIterator begin, InputIterator end)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#ac1b3a945aac5a17c85d56756cc6aa3d1">assign</a>(std::initializer_list< T > il)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a2459166998a4103880d603b237c429e6">clear</a>()</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a405be01bac4048f214797c287e2571a1">concurrent_priority_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a43c3917ea8a19cf1fec947e29ad4ff3e">concurrent_priority_queue</a>(size_type init_capacity, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a0cebee26cc0d00d4dcbb1c74e08029f7">concurrent_priority_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#aaa8ac175143e12db29a014674a392b38">concurrent_priority_queue</a>(std::initializer_list< T > init_list, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a332d26234f9c37a6b7ba269c648815d0">concurrent_priority_queue</a>(const concurrent_priority_queue &src)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#aa52cea369b6630699ee78cc42622be9d">concurrent_priority_queue</a>(const concurrent_priority_queue &src, const allocator_type &a)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#ae9ac965bbac3933c7db89f512adfcbcb">concurrent_priority_queue</a>(concurrent_priority_queue &&src)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a14dd20a4673f77cff3eb6f269a888016">concurrent_priority_queue</a>(concurrent_priority_queue &&src, const allocator_type &a)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#ae010b1fa9c0942504737228474b51a0b">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a278d208cd92e5aeccc9c7f6fc192e3ce">emplace</a>(Args &&...args)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">empty</a>() const </td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a312e88e51246da4c516d35abbb30721a">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#ac0c3f41b10f04547f3438517c40cf8a5">operator=</a>(const concurrent_priority_queue &src)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a9b21bd56aff8c412c5fcdd0d88b48c98">operator=</a>(concurrent_priority_queue &&src)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a7eaa05dcb74604e45e0e2c55e1e456e9">operator=</a>(std::initializer_list< T > il)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a1bfa0e7269b3407d6bb5c706264d2406">push</a>(const_reference elem)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a72ff26945c61b4ce3ce7ca0f9b9aaa48">push</a>(value_type &&elem)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">reference</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a7d86ba200474b51ec99a6b917429c6bb">size</a>() const </td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">size_type</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#aa6ee6d356e538b67a7cb4e242e6e36c9">swap</a>(concurrent_priority_queue &q)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00045.html#a954177b09e184cf3db47f1b180a7ef5e">try_pop</a>(reference elem)</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">value_type</a> typedef</td><td class="entry"><a class="el" href="a00045.html">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00376.html b/doc/html/a00376.html
index 8d372bf..e421819 100644
--- a/doc/html/a00376.html
+++ b/doc/html/a00376.html
@@ -33,22 +33,30 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00132.html">STATIC_ASSERTION_FAILED< false ></a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00048.html">concurrent_unordered_map_traits</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::STATIC_ASSERTION_FAILED< false > Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00132.html">tbb::internal::STATIC_ASSERTION_FAILED< false ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value</b> enum value (defined in <a class="el" href="a00132.html">tbb::internal::STATIC_ASSERTION_FAILED< false ></a>)</td><td class="entry"><a class="el" href="a00132.html">tbb::internal::STATIC_ASSERTION_FAILED< false ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>allow_multimapping</b> enum value (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map_traits</b>() (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map_traits</b>(const hash_compare &hc) (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</spa [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_key</b>(const std::pair< Type1, Type2 > &value) (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel"> [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash_compare</b> typedef (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00048.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00377.html b/doc/html/a00377.html
index 24cee7f..f44dafd 100644
--- a/doc/html/a00377.html
+++ b/doc/html/a00377.html
@@ -33,23 +33,25 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00154.html">thread_closure_base</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00048.html">concurrent_unordered_map_traits</a></li><li class="navelem"><a class="el" href="a00174.html">value_compare</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_base Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></b> (defined in <a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping &g [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(const value_type &left, const value_type &right) const  (defined in <a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare< [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_compare</b>(const hash_compare &comparator) (defined in <a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a>)</td><td class="entry"><a class="el" href="a00174.html">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="entry"><span class= [...]
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00378.html b/doc/html/a00378.html
index e389e09..1561dd9 100644
--- a/doc/html/a00378.html
+++ b/doc/html/a00378.html
@@ -33,26 +33,51 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00151.html">thread_closure_0</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00047.html">concurrent_unordered_map</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_0< F > Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>function</b> (defined in <a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>start_routine</b>(void *c) (defined in <a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_closure_0</b>(const F &f) (defined in <a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00151.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>at</b>(const key_type &key) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>at</b>(const key_type &key) const  (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unorder [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map</b>(const Allocator &a) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb: [...]
+  <tr class="even"><td class="entry"><a class="el" href="a00047.html#a788a7225915574c1a349abc0f1f653c7">concurrent_unordered_map</a>(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equal [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(const concurrent_unordered_map &table) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map</b>(concurrent_unordered_map &&table) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_map</b>(const concurrent_unordered_map &table, const Allocator &a) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_map</b>(concurrent_unordered_map &&table, const Allocator &a) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inlin [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_map &table) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(concurrent_unordered_map &&table) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const key_type &key) (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00047.html">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00379.html b/doc/html/a00379.html
index 8b90130..6c0c9de 100644
--- a/doc/html/a00379.html
+++ b/doc/html/a00379.html
@@ -33,27 +33,48 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00152.html">thread_closure_1</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00049.html">concurrent_unordered_multimap</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_1< F, X > Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>arg1</b> (defined in <a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>function</b> (defined in <a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00152.html#a33d533b3301c45708c6252d040f855a6">start_routine</a>(void *c)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>thread_closure_1</b>(const F &f, const X &x) (defined in <a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurre [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multimap</b>(const Allocator &a) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049. [...]
+  <tr class="even"><td class="entry"><a class="el" href="a00049.html#a5957d29e5fa9f8c53538de3f7a41ebc9">concurrent_unordered_multimap</a>(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(const concurrent_unordered_multimap &table) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multimap</b>(concurrent_unordered_multimap &&table) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</s [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multimap</b>(const concurrent_unordered_multimap &table, const Allocator &a) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabe [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multimap</b>(concurrent_unordered_multimap &&table, const Allocator &a) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span  [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_multimap &table) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(concurrent_unordered_multimap &&table) (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00049.html">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00380.html b/doc/html/a00380.html
index 5de9953..a9817a9 100644
--- a/doc/html/a00380.html
+++ b/doc/html/a00380.html
@@ -33,28 +33,31 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00153.html">thread_closure_2</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00052.html">concurrent_unordered_set_traits</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::thread_closure_2< F, X, Y > Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>arg1</b> (defined in <a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>arg2</b> (defined in <a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>function</b> (defined in <a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00154.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00154.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00153.html#a29003179f98d768622c72b9ab5cfe8f6">start_routine</a>(void *c)</td><td class="entry"><a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_closure_2</b>(const F &f, const X &x, const Y &y) (defined in <a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00153.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>allow_multimapping</b> enum value (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set_traits</b>() (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlab [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set_traits</b>(const hash_compare &hc) (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><spa [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_key</b>(const value_type &value) (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">inline</span><span class="m [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>hash_compare</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_hash_compare</b> (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_compare</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a>)</td><td class="entry"><a class="el" href="a00052.html">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00381.html b/doc/html/a00381.html
index 520af20..c119146 100644
--- a/doc/html/a00381.html
+++ b/doc/html/a00381.html
@@ -33,38 +33,48 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00149.html">tbb_thread_v3</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00051.html">concurrent_unordered_set</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_thread_v3 Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00149.html#a80a31a41708872af5557b907f129b19b">detach</a>()</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_id</b>() const  (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00149.html#a2b761b3d80a7397c645402865e06b1a8">hardware_concurrency</a>()</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00149.html#a044c8727c51e921b0cc43a6b057eb559">join</a>()</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>joinable</b>() const  (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>move_v3</b> (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(tbb_thread_v3 &x) (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>swap</b>(tbb_thread_v3 &t) (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::swap</b> (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00149.html#a644f78d07a6e5ce3b9994fe5b19b1543">tbb_thread_v3</a>()</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00149.html#a9c5587ab76ca1aa98bae7fe69a459466">tbb_thread_v3</a>(F f)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00149.html#a672a5367e687635c869926bf8a986296">tbb_thread_v3</a>(F f, X x)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00149.html#ac3f57678f2a289084a6d275f8f8fbc62">tbb_thread_v3</a>(F f, X x, Y y)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_thread_v3</b>() (defined in <a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00149.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set&l [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set</b>(const Allocator &a) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interfa [...]
+  <tr class="even"><td class="entry"><a class="el" href="a00051.html#a6f6d5ecff239ff13000848e925904fe7">concurrent_unordered_set</a>(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, All [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(const concurrent_unordered_set &table) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set</b>(concurrent_unordered_set &&table) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_set</b>(const concurrent_unordered_set &table, const Allocator &a) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_set</b>(concurrent_unordered_set &&table, const Allocator &a) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</spa [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_set &table) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(concurrent_unordered_set &&table) (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00051.html">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00382.html b/doc/html/a00382.html
index b09fe82..f1c0283 100644
--- a/doc/html/a00382.html
+++ b/doc/html/a00382.html
@@ -33,31 +33,48 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00149.html">tbb_thread_v3</a></li><li class="navelem"><a class="el" href="a00064.html">id</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00050.html">concurrent_unordered_multiset</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::internal::tbb_thread_v3::id Member List</div>  </div>
+<div class="title">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>id</b>() (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator<<</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<=</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator></b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator>=</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb_thread_v3</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>thread_get_id_v3</b> (defined in <a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00064.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_ [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(const Allocator &a) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.htm [...]
+  <tr class="even"><td class="entry"><a class="el" href="a00050.html#a15631f048043195863c66bad6533bccb">concurrent_unordered_multiset</a>(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equ [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(const concurrent_unordered_multiset &table) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(concurrent_unordered_multiset &&table) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></ [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>concurrent_unordered_multiset</b>(const concurrent_unordered_multiset &table, const Allocator &a) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inl [...]
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_unordered_multiset</b>(concurrent_unordered_multiset &&table, const Allocator &a) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class= [...]
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_local_iterator</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasher</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_compare</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>key_equal</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>key_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>local_iterator</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>mapped_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const concurrent_unordered_multiset &table) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(concurrent_unordered_multiset &&table) (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>)</td><td class="entry"><a class="el" href="a00050.html">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00383.html b/doc/html/a00383.html
index f6b8bd1..e75b3f6 100644
--- a/doc/html/a00383.html
+++ b/doc/html/a00383.html
@@ -33,44 +33,35 @@
   </div>
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="a00222.html">tbb</a></li><li class="navelem"><b>strict_ppl</b></li><li class="navelem"><a class="el" href="a00038.html">concurrent_queue</a></li>  </ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">tbb::strict_ppl::concurrent_queue< T, A > Member List</div>  </div>
+<div class="title">tbb::interface5::reader_writer_lock Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>, including all inherited members.</p>
 <table class="directory">
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#ad3384818fb6350a494d5ec62445e59ee">clear</a>()</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#a49b2e16902577cd3174355be0fa684e5">concurrent_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#a43ac953152e60815c09fe4a4d4a623a9">concurrent_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#ae918807d098d5d5b41cc6d606fa2e7a1">concurrent_queue</a>(const concurrent_queue &src, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#a478c2b7f763b2e821e01cc14e13baf4c">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#a63b42d83a9ed13fc6741e0b4388b0e96">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#aeda3156929d0c250faed7b807ca6ab0e">empty</a>() const </td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#a7f2b39f350281590b86db906eca6c480">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#a9330ca6590980d80ef7b1ea3613a699a">push</a>(const T &source)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#ab26ddf11b15d61ac87e6c1ae67af92a2">reference</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#a9f883e49afea16293ba92da779981bb8">size_type</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#aabb1acef18196fa11ed7db8e046c3943">try_pop</a>(T &result)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_begin</b>() (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_begin</b>() const  (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_end</b>() (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_end</b>() const  (defined in <a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#aad4b253ba595637b0b146eb6565556f2">unsafe_size</a>() const </td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
-  <tr><td class="entry"><a class="el" href="a00038.html#aeeee93a7ac2eecc80bbf3e857e900538">value_type</a> typedef</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
-  <tr class="even"><td class="entry"><a class="el" href="a00038.html#aa0056b242f280f5e25332ce998f9f670">~concurrent_queue</a>()</td><td class="entry"><a class="el" href="a00038.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>active</b> enum value (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>invalid</b> enum value (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00113.html#a6fd4fcdf0e5c0425d1cc736d644f234f">lock_read</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00113.html#abceda6c50b0c36eacbef51f4682742f3">reader_writer_lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>scoped_lock</b> (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock_read</b> (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">status_t</a> enum name</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00113.html#a1739e842af52925a2d4a7e821b9b3b8d">try_lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00113.html#a9c7aa04e00202c9a1197cb6d870cabb4">try_lock_read</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00113.html#a4c55c4dbde63e950fdc843c9b01a174f">unlock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>waiting</b> enum value (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>waiting_nonblocking</b> enum value (defined in <a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a>)</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00113.html#aeee96b648c7b5ff6126c8a2e13ec7241">~reader_writer_lock</a>()</td><td class="entry"><a class="el" href="a00113.html">tbb::interface5::reader_writer_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
 </table></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/a00384.html b/doc/html/a00384.html
new file mode 100644
index 0000000..94b9ee2
--- /dev/null
+++ b/doc/html/a00384.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00133.html">scoped_lock</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface5::reader_writer_lock::scoped_lock Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *p) (defined in <a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t s) (defined in <a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reader_writer_lock</b> (defined in <a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00133.html#aaed982d8c3f1e84298f9842063694f3c">scoped_lock</a>(reader_writer_lock &lock)</td><td class="entry"><a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00133.html#a41e77cf094ed30b0a9a39ee217c3653b">~scoped_lock</a>()</td><td class="entry"><a class="el" href="a00133.html">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00385.html b/doc/html/a00385.html
new file mode 100644
index 0000000..1c0c974
--- /dev/null
+++ b/doc/html/a00385.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><a class="el" href="a00113.html">reader_writer_lock</a></li><li class="navelem"><a class="el" href="a00141.html">scoped_lock_read</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface5::reader_writer_lock::scoped_lock_read Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *p) (defined in <a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t s) (defined in <a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reader_writer_lock</b> (defined in <a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a>)</td><td class="entry"><a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00141.html#a9d3120a23016dabd4cc2683fa561ee5a">scoped_lock_read</a>(reader_writer_lock &lock)</td><td class="entry"><a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00141.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">~scoped_lock_read</a>()</td><td class="entry"><a class="el" href="a00141.html">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00386.html b/doc/html/a00386.html
new file mode 100644
index 0000000..5f200e6
--- /dev/null
+++ b/doc/html/a00386.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00171.html">use_element_copy_constructor</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface5::internal::use_element_copy_constructor< T, C > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00171.html">tbb::interface5::internal::use_element_copy_constructor< T, C ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>type</b> typedef (defined in <a class="el" href="a00171.html">tbb::interface5::internal::use_element_copy_constructor< T, C ></a>)</td><td class="entry"><a class="el" href="a00171.html">tbb::interface5::internal::use_element_copy_constructor< T, C ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>type</b> typedef (defined in <a class="el" href="a00171.html">tbb::interface5::internal::use_element_copy_constructor< T, C ></a>)</td><td class="entry"><a class="el" href="a00171.html">tbb::interface5::internal::use_element_copy_constructor< T, C ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00387.html b/doc/html/a00387.html
new file mode 100644
index 0000000..9840492
--- /dev/null
+++ b/doc/html/a00387.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface5</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00172.html">use_element_copy_constructor< T, false ></a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface5::internal::use_element_copy_constructor< T, false > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00172.html">tbb::interface5::internal::use_element_copy_constructor< T, false ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>type</b> typedef (defined in <a class="el" href="a00172.html">tbb::interface5::internal::use_element_copy_constructor< T, false ></a>)</td><td class="entry"><a class="el" href="a00172.html">tbb::interface5::internal::use_element_copy_constructor< T, false ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00388.html b/doc/html/a00388.html
new file mode 100644
index 0000000..97d34bf
--- /dev/null
+++ b/doc/html/a00388.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00014.html">aggregator_operation</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::aggregator_operation Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_ext</b> (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00389.html b/doc/html/a00389.html
new file mode 100644
index 0000000..8960293
--- /dev/null
+++ b/doc/html/a00389.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00013.html">aggregator_ext</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::aggregator_ext< handler_type > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00013.html">tbb::interface6::aggregator_ext< handler_type ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_ext</b>(const handler_type &h) (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_ext< handler_type ></a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a>(aggregator_operation &op)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a>(aggregator_operation *op)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00390.html b/doc/html/a00390.html
new file mode 100644
index 0000000..b451a9a
--- /dev/null
+++ b/doc/html/a00390.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00012.html">aggregator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::aggregator Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00012.html">tbb::interface6::aggregator</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator</b>() (defined in <a class="el" href="a00012.html">tbb::interface6::aggregator</a>)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_ext</b>(const internal::basic_handler &h) (defined in <a class="el" href="a00013.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a>)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00012.html#aa7cc924b6f0d17578d61fd9002f59f84">execute</a>(const Body &b)</td><td class="entry"><a class="el" href="a00012.html">tbb::interface6::aggregator</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">execute_impl</a>(aggregator_operation &op)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">process</a>(aggregator_operation *op)</td><td class="entry"><a class="el" href="a00013.html">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">private</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00391.html b/doc/html/a00391.html
new file mode 100644
index 0000000..06385eb
--- /dev/null
+++ b/doc/html/a00391.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00044.html">concurrent_lru_cache</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_lru_cache</b>(value_function_type f, std::size_t number_of_lru_history_items) (defined in <a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>handle</b> typedef (defined in <a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(key_type k) (defined in <a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::internal::aggregating_functor< self_type, aggregated_operation_type ></b> (defined in <a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a>)</td><td class="entry"><a class="el" href="a00044.html">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00392.html b/doc/html/a00392.html
new file mode 100644
index 0000000..5a3d207
--- /dev/null
+++ b/doc/html/a00392.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00061.html">enumerable_thread_specific</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#ad50ceae1b0e91d0fd31fe506e690692b">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a070d26debf1f65c83de13f64f91aefdc">begin</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#aa097383eb6f90e4a551830fc00b60b3a">begin</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">clear</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>combine</b>(combine_func_t f_combine) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>combine_each</b>(combine_func_t f_combine) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_range_type</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#adfa4b2e13e47ab825dc40c4f195d2bc5">empty</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#ad225e2e8a968b131bf05d72f5686b924">end</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a5ed0248f10a7aa5045d2cda77dad9588">end</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enumerable_thread_specific</b> (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#ad95ccef01367c0b6d75f6f91f5bf5315">enumerable_thread_specific</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#aafd6049aa255826c712aaba778524a7c">enumerable_thread_specific</a>(Finit finit)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a6f0249ee95fa56665da4b6984f3a685a">enumerable_thread_specific</a>(const T &exemplar)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enumerable_thread_specific</b>(T &&exemplar) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#aa636348d57b1fc5127c7d642af51f6da">enumerable_thread_specific</a>(P1 &&arg1, P &&...args)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>enumerable_thread_specific</b>(const enumerable_thread_specific< T, Alloc, Cachetype > &other) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>enumerable_thread_specific</b>(const enumerable_thread_specific &other) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">local</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#abbbc24a5816dc163d5df057c5e7f379d">local</a>(bool &exists)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const enumerable_thread_specific &other) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const enumerable_thread_specific< T, Alloc, Cachetype > &other) (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#ac94dd896ed78df240da4a450defbca6c">range</a>(size_t grainsize=1)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a25b9153dfe994c8122a7f0227cffe793">range</a>(size_t grainsize=1) const </td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>range_type</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00061.html#a4c33c5390783e17daf2b25d53ae919fb">size</a>() const </td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>)</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00061.html#a6ea8d717f770acb63efc406df52d4585">~enumerable_thread_specific</a>()</td><td class="entry"><a class="el" href="a00061.html">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00393.html b/doc/html/a00393.html
new file mode 100644
index 0000000..edff362
--- /dev/null
+++ b/doc/html/a00393.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00066.html">flattened2d</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::flattened2d< Container > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocator_type</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>begin</b>() (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>begin</b>() const  (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>end</b>() (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>end</b>() const  (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>flattened2d</b>(const Container &c, typename Container::const_iterator b, typename Container::const_iterator e) (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>flattened2d</b>(const Container &c) (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size</b>() const  (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00066.html#a8b84f8f2cc4499f49d17141eaedc99c0">size_type</a> typedef</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a>)</td><td class="entry"><a class="el" href="a00066.html">tbb::interface6::flattened2d< Container ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00394.html b/doc/html/a00394.html
new file mode 100644
index 0000000..e798aaa
--- /dev/null
+++ b/doc/html/a00394.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00093.html">memory_pool_allocator</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::memory_pool_allocator< T, P > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>address</b>(reference x) const  (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>address</b>(const_reference x) const  (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00093.html#a10b9888883a3dbd66e87c4a7f874ef28">allocate</a>(size_type n, const void *=0)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_reference</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00093.html#ac51b34ef90ecabdd2e0483e25603a15b">construct</a>(U *p, Args &&...args)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>construct</b>(pointer p, value_type &&value) (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>construct</b>(pointer p, const value_type &value) (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00093.html#a9fcf288f2d653972d1bdc0c65abebed4">deallocate</a>(pointer p, size_type)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00093.html#a2223b6469f88aadc432a4b3f88728d0f">destroy</a>(pointer p)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>difference_type</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00093.html#a2bded8e3fb2cec32b48771e7a1bbb838">max_size</a>() const </td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b> (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b>(pool_type &pool) (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator &src) (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator< U, P > &src) (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_pool</b> (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pool_type</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>reference</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>size_type</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a>)</td><td class="entry"><a class="el" href="a00093.html">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00395.html b/doc/html/a00395.html
new file mode 100644
index 0000000..5147990
--- /dev/null
+++ b/doc/html/a00395.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00093.html">memory_pool_allocator</a></li><li class="navelem"><a class="el" href="a00122.html">rebind</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00122.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00122.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00122.html">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00396.html b/doc/html/a00396.html
new file mode 100644
index 0000000..9602550
--- /dev/null
+++ b/doc/html/a00396.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00094.html">memory_pool_allocator< void, P ></a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::memory_pool_allocator< void, P > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>const_pointer</b> typedef (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b> (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(pool_type &pool) (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator &src) (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>memory_pool_allocator</b>(const memory_pool_allocator< U, P > &src) (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_pool</b> (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>pointer</b> typedef (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>pool_type</b> typedef (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>value_type</b> typedef (defined in <a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a>)</td><td class="entry"><a class="el" href="a00094.html">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00397.html b/doc/html/a00397.html
new file mode 100644
index 0000000..9fb437f
--- /dev/null
+++ b/doc/html/a00397.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00094.html">memory_pool_allocator< void, P ></a></li><li class="navelem"><a class="el" href="a00123.html">rebind</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00123.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>other</b> typedef (defined in <a class="el" href="a00123.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a>)</td><td class="entry"><a class="el" href="a00123.html">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00398.html b/doc/html/a00398.html
new file mode 100644
index 0000000..bcd7782
--- /dev/null
+++ b/doc/html/a00398.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00092.html">memory_pool</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::memory_pool< Alloc > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00092.html">tbb::interface6::memory_pool< Alloc ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00092.html#af4c36829a159eac04d630ac5a99b9354">memory_pool</a>(const Alloc &src=Alloc())</td><td class="entry"><a class="el" href="a00092.html">tbb::interface6::memory_pool< Alloc ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00092.html#ad2c7645b39b7280b1b3cf393d05fbaf7">~memory_pool</a>()</td><td class="entry"><a class="el" href="a00092.html">tbb::interface6::memory_pool< Alloc ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00399.html b/doc/html/a00399.html
new file mode 100644
index 0000000..a3d2f88
--- /dev/null
+++ b/doc/html/a00399.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00065.html">fixed_pool</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::fixed_pool Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00065.html">tbb::interface6::fixed_pool</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00065.html#aa3811fe3d437ba2eefa926d52732491a">fixed_pool</a>(void *buf, size_t size)</td><td class="entry"><a class="el" href="a00065.html">tbb::interface6::fixed_pool</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00065.html#ab854a85575e5c1e9c9f4d3eafcc28044">~fixed_pool</a>()</td><td class="entry"><a class="el" href="a00065.html">tbb::interface6::fixed_pool</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00400.html b/doc/html/a00400.html
new file mode 100644
index 0000000..2265068
--- /dev/null
+++ b/doc/html/a00400.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00067.html">flow_control</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::flow_control Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00067.html">tbb::interface6::flow_control</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::concrete_filter</b> (defined in <a class="el" href="a00067.html">tbb::interface6::flow_control</a>)</td><td class="entry"><a class="el" href="a00067.html">tbb::interface6::flow_control</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>stop</b>() (defined in <a class="el" href="a00067.html">tbb::interface6::flow_control</a>)</td><td class="entry"><a class="el" href="a00067.html">tbb::interface6::flow_control</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00401.html b/doc/html/a00401.html
new file mode 100644
index 0000000..39347df
--- /dev/null
+++ b/doc/html/a00401.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00063.html">filter_t</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::filter_t< T, U > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>clear</b>() (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter_t</b>() (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>filter_t</b>(const filter_t< T, U > &rhs) (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>filter_t</b>(tbb::filter::mode mode, const Body &body) (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::pipeline_proxy</b> (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00063.html#a21460fde704da22caa222778f5abb140">make_filter</a>(tbb::filter::mode, const Body &)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&</b> (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const filter_t< T, U > &rhs) (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~filter_t</b>() (defined in <a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a>)</td><td class="entry"><a class="el" href="a00063.html">tbb::interface6::filter_t< T, U ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00402.html b/doc/html/a00402.html
new file mode 100644
index 0000000..4645d71
--- /dev/null
+++ b/doc/html/a00402.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00128.html">runtime_loader</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::runtime_loader Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00128.html">tbb::interface6::runtime_loader</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">ec_bad_arg</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">ec_bad_call</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">ec_bad_lib</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">ec_bad_ver</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">ec_no_lib</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">ec_ok</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">em_abort</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">em_status</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">em_throw</a> enum value</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">error_code</a> enum name</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">error_mode</a> enum name</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e">load</a>(char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX)</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a2f87eaf99564c705aa140f2eb8848eaa">runtime_loader</a>(error_mode mode=em_abort)</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#a3e0932074d2f3ad04605e7e5da88c561">runtime_loader</a>(char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX, error_mode mode=em_abort)</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00128.html#a85bf9ee021a2076a3ac7cfd70aae7345">status</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00128.html#aa3b96f53e165e3d692c3c36292ba0737">~runtime_loader</a>()</td><td class="entry"><a class="el" href="a00128.html">tbb::interface6::runtime_loader</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00403.html b/doc/html/a00403.html
new file mode 100644
index 0000000..f0c0856
--- /dev/null
+++ b/doc/html/a00403.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><a class="el" href="a00157.html">task_scheduler_observer</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::task_scheduler_observer Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allow_sleep</b> enum value (defined in <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::observer_list</b> (defined in <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal::observer_proxy</b> (defined in <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::task_scheduler_observer_v3</b> (defined in <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a>() const </td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>keep_awake</b> enum value (defined in <a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a>)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00157.html#a2390325945912ee7ce58cd9700664ea4">may_sleep</a>()</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">observe</a>(bool state=true)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a>(bool)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a>(bool)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00157.html#a89025b1e1d42e97d6fe114c0c331f730">task_scheduler_observer</a>(bool local=false)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00157.html#a36e7e0c466320029d5a3e50a573e04c1">task_scheduler_observer</a>(task_arena &a)</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00157.html#a9ef3f1853439b46e5a9db7fd1c0f9116">~task_scheduler_observer</a>()</td><td class="entry"><a class="el" href="a00157.html">tbb::interface6::task_scheduler_observer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00404.html b/doc/html/a00404.html
new file mode 100644
index 0000000..f4783a0
--- /dev/null
+++ b/doc/html/a00404.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00023.html">basic_operation_base</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::internal::basic_operation_base Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_handler</b> (defined in <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>basic_operation_base</b>() (defined in <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_operation_base</b>() (defined in <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00405.html b/doc/html/a00405.html
new file mode 100644
index 0000000..e868bdb
--- /dev/null
+++ b/doc/html/a00405.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00022.html">basic_operation</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::internal::basic_operation< Body > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00022.html">tbb::interface6::internal::basic_operation< Body ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>agg_finished</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>agg_waiting</b> enum value (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>aggregator_operation</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>aggregator_operation_status</b> enum name (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_operation</b>(const Body &b) (defined in <a class="el" href="a00022.html">tbb::interface6::internal::basic_operation< Body ></a>)</td><td class="entry"><a class="el" href="a00022.html">tbb::interface6::internal::basic_operation< Body ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>basic_operation_base</b>() (defined in <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">finish</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>next</b>() (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>set_next</b>(aggregator_operation *n) (defined in <a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a>)</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">start</a>()</td><td class="entry"><a class="el" href="a00014.html">tbb::interface6::aggregator_operation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~basic_operation_base</b>() (defined in <a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a>)</td><td class="entry"><a class="el" href="a00023.html">tbb::interface6::internal::basic_operation_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00406.html b/doc/html/a00406.html
new file mode 100644
index 0000000..3b2a895
--- /dev/null
+++ b/doc/html/a00406.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface6</b></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00021.html">basic_handler</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface6::internal::basic_handler Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00021.html">tbb::interface6::internal::basic_handler</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>basic_handler</b>() (defined in <a class="el" href="a00021.html">tbb::interface6::internal::basic_handler</a>)</td><td class="entry"><a class="el" href="a00021.html">tbb::interface6::internal::basic_handler</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator()</b>(aggregator_operation *op_list) const  (defined in <a class="el" href="a00021.html">tbb::interface6::internal::basic_handler</a>)</td><td class="entry"><a class="el" href="a00021.html">tbb::interface6::internal::basic_handler</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00407.html b/doc/html/a00407.html
new file mode 100644
index 0000000..ccd751c
--- /dev/null
+++ b/doc/html/a00407.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface7</b></li><li class="navelem"><a class="el" href="a00150.html">task_arena</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface7::task_arena Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00150.html">tbb::interface7::task_arena</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#af695a8aa3d2a4f498067c662e287dd8f">current_thread_index</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#a07d87dff8c6116ee349684e10f754aeb">debug_wait_until_empty</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#a8034275ed2fffa68f70484043b90d406">enqueue</a>(const F &f)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#a9a04ab4afb2d74b0317618f59ab49be7">enqueue</a>(const F &f, priority_t p)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#af0c96f325b59d567b4c720f2830adde8">execute</a>(F &f)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#ab8442c8e9e3e678349409e08cabc7ae2">execute</a>(const F &f)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#a955131a79f8dc5a0a5c9ffa66a7e7140">initialize</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#a754d60ba6981461eb7c86afd14d3da2a">initialize</a>(int max_concurrency, unsigned reserved_for_masters=1)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#ad85856cefa30d42155a2b122b03efd8c">is_active</a>() const </td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#a6035737ce1a8db376d06880dae9d0c40">task_arena</a>(int max_concurrency=automatic, unsigned reserved_for_masters=1)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#a70d122b3e6e4760c6053c5c230c715ef">task_arena</a>(const task_arena &s)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb::internal::task_scheduler_observer_v3</b> (defined in <a class="el" href="a00150.html">tbb::interface7::task_arena</a>)</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00150.html#aecb3eedeacfe8469a91c17525dae7fc9">terminate</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00150.html#a9ff5a35a219953a4f3d99b833fa5f683">~task_arena</a>()</td><td class="entry"><a class="el" href="a00150.html">tbb::interface7::task_arena</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00408.html b/doc/html/a00408.html
new file mode 100644
index 0000000..27ca66a
--- /dev/null
+++ b/doc/html/a00408.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>interface9</b></li><li class="navelem"><a class="el" href="a00069.html">global_control</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::interface9::global_control Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00069.html">tbb::interface9::global_control</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>active_value</b>(parameter p) (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>global_control</b>(parameter p, size_t value) (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>max_allowed_parallelism</b> enum value (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>parameter</b> enum name (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>parameter_max</b> enum value (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>thread_stack_size</b> enum value (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~global_control</b>() (defined in <a class="el" href="a00069.html">tbb::interface9::global_control</a>)</td><td class="entry"><a class="el" href="a00069.html">tbb::interface9::global_control</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00409.html b/doc/html/a00409.html
new file mode 100644
index 0000000..cc79ca6
--- /dev/null
+++ b/doc/html/a00409.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00058.html">critical_section_v4</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::critical_section_v4 Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>critical_section_v4</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_construct</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_fair_mutex</b> (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_recursive_mutex</b> (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_rw_mutex</b> (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>lock</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>try_lock</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unlock</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~critical_section_v4</b>() (defined in <a class="el" href="a00058.html">tbb::internal::critical_section_v4</a>)</td><td class="entry"><a class="el" href="a00058.html">tbb::internal::critical_section_v4</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00410.html b/doc/html/a00410.html
new file mode 100644
index 0000000..f42c026
--- /dev/null
+++ b/doc/html/a00410.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00058.html">critical_section_v4</a></li><li class="navelem"><a class="el" href="a00136.html">scoped_lock</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::critical_section_v4::scoped_lock Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00136.html">tbb::internal::critical_section_v4::scoped_lock</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>scoped_lock</b>(critical_section_v4 &lock_me) (defined in <a class="el" href="a00136.html">tbb::internal::critical_section_v4::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~scoped_lock</b>() (defined in <a class="el" href="a00136.html">tbb::internal::critical_section_v4::scoped_lock</a>)</td><td class="entry"><a class="el" href="a00136.html">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00411.html b/doc/html/a00411.html
new file mode 100644
index 0000000..0c56cf2
--- /dev/null
+++ b/doc/html/a00411.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00155.html">task_handle_task</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::task_handle_task< F > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00155.html">tbb::internal::task_handle_task< F ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_handle_task</b>(task_handle< F > &h) (defined in <a class="el" href="a00155.html">tbb::internal::task_handle_task< F ></a>)</td><td class="entry"><a class="el" href="a00155.html">tbb::internal::task_handle_task< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00412.html b/doc/html/a00412.html
new file mode 100644
index 0000000..ed3f158
--- /dev/null
+++ b/doc/html/a00412.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00152.html">task_group_base</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::task_group_base Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00152.html">tbb::internal::task_group_base</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>cancel</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal_run</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>internal_run_and_wait</b>(F &f) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_canceling</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>my_context</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>my_root</b> (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>owner</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>run</b>(task_handle< F > &h) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>task_group_base</b>(uintptr_t traits=0) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>wait</b>() (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~task_group_base</b>() __TBB_NOEXCEPT(false) (defined in <a class="el" href="a00152.html">tbb::internal::task_group_base</a>)</td><td class="entry"><a class="el" href="a00152.html">tbb::internal::task_group_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00413.html b/doc/html/a00413.html
new file mode 100644
index 0000000..7f8db40
--- /dev/null
+++ b/doc/html/a00413.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00158.html">task_scheduler_observer_v3</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::task_scheduler_observer_v3 Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>interface6::task_scheduler_observer</b> (defined in <a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">is_observing</a>() const </td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">observe</a>(bool state=true)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>observer_list</b> (defined in <a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>observer_proxy</b> (defined in <a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a>)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">on_scheduler_entry</a>(bool)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">on_scheduler_exit</a>(bool)</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">~task_scheduler_observer_v3</a>()</td><td class="entry"><a class="el" href="a00158.html">tbb::internal::task_scheduler_observer_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00414.html b/doc/html/a00414.html
new file mode 100644
index 0000000..11efb59
--- /dev/null
+++ b/doc/html/a00414.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00162.html">tbb_exception_ptr</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::tbb_exception_ptr Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>allocate</b>() (defined in <a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a>)</td><td class="entry"><a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>allocate</b>(const tbb_exception &tag) (defined in <a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a>)</td><td class="entry"><a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00162.html#abfbea91401d2594deb04ea331734171c">allocate</a>(captured_exception &src)</td><td class="entry"><a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00162.html#a38d3ca480e2758a67bcd7427b156daae">destroy</a>()</td><td class="entry"><a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00162.html#a1713aa9a6a3850049d34358397a8ed81">throw_self</a>()</td><td class="entry"><a class="el" href="a00162.html">tbb::internal::tbb_exception_ptr</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00415.html b/doc/html/a00415.html
new file mode 100644
index 0000000..b091678
--- /dev/null
+++ b/doc/html/a00415.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00169.html">thread_closure_base</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_base Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00416.html b/doc/html/a00416.html
new file mode 100644
index 0000000..dc1bc0a
--- /dev/null
+++ b/doc/html/a00416.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00166.html">thread_closure_0</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_0< F > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>function</b> (defined in <a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>start_routine</b>(void *c) (defined in <a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_closure_0</b>(const F &f) (defined in <a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a>)</td><td class="entry"><a class="el" href="a00166.html">tbb::internal::thread_closure_0< F ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00417.html b/doc/html/a00417.html
new file mode 100644
index 0000000..c4352f2
--- /dev/null
+++ b/doc/html/a00417.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00167.html">thread_closure_1</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_1< F, X > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>arg1</b> (defined in <a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>function</b> (defined in <a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00167.html#a33d533b3301c45708c6252d040f855a6">start_routine</a>(void *c)</td><td class="entry"><a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>thread_closure_1</b>(const F &f, const X &x) (defined in <a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a>)</td><td class="entry"><a class="el" href="a00167.html">tbb::internal::thread_closure_1< F, X ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00418.html b/doc/html/a00418.html
new file mode 100644
index 0000000..edf00b8
--- /dev/null
+++ b/doc/html/a00418.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00168.html">thread_closure_2</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::thread_closure_2< F, X, Y > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>arg1</b> (defined in <a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>arg2</b> (defined in <a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>function</b> (defined in <a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator delete</b>(void *ptr) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator new</b>(size_t size) (defined in <a class="el" href="a00169.html">tbb::internal::thread_closure_base</a>)</td><td class="entry"><a class="el" href="a00169.html">tbb::internal::thread_closure_base</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00168.html#a29003179f98d768622c72b9ab5cfe8f6">start_routine</a>(void *c)</td><td class="entry"><a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>thread_closure_2</b>(const F &f, const X &x, const Y &y) (defined in <a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a>)</td><td class="entry"><a class="el" href="a00168.html">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00419.html b/doc/html/a00419.html
new file mode 100644
index 0000000..f3c6ecb
--- /dev/null
+++ b/doc/html/a00419.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00164.html">tbb_thread_v3</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::tbb_thread_v3 Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00164.html#a80a31a41708872af5557b907f129b19b">detach</a>()</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>get_id</b>() const __TBB_NOEXCEPT(true) (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00164.html#a23d7a420709b2e2b29b42dea897bd8bc">hardware_concurrency</a>() __TBB_NOEXCEPT(true)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00164.html#a044c8727c51e921b0cc43a6b057eb559">join</a>()</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>joinable</b>() const __TBB_NOEXCEPT(true) (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>move_v3</b> (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle</b>() (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>native_handle_type</b> typedef (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b> (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(tbb_thread_v3 &x) (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>swap</b>(tbb_thread_v3 &t) __TBB_NOEXCEPT(true) (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb::swap</b> (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>tbb_thread_v3</b>(const tbb_thread_v3 &) (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00164.html#a15b84e454eb0179e010b90a88baa0933">tbb_thread_v3</a>() __TBB_NOEXCEPT(true)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00164.html#a9c5587ab76ca1aa98bae7fe69a459466">tbb_thread_v3</a>(F f)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00164.html#a672a5367e687635c869926bf8a986296">tbb_thread_v3</a>(F f, X x)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00164.html#ac3f57678f2a289084a6d275f8f8fbc62">tbb_thread_v3</a>(F f, X x, Y y)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~tbb_thread_v3</b>() (defined in <a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a>)</td><td class="entry"><a class="el" href="a00164.html">tbb::internal::tbb_thread_v3</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00420.html b/doc/html/a00420.html
new file mode 100644
index 0000000..6147f02
--- /dev/null
+++ b/doc/html/a00420.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>internal</b></li><li class="navelem"><a class="el" href="a00164.html">tbb_thread_v3</a></li><li class="navelem"><a class="el" href="a00073.html">id</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::internal::tbb_thread_v3::id Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>id</b>() __TBB_NOEXCEPT(true) (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator!=</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator<<</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator<=</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator></b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>operator>=</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>tbb_thread_v3</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>thread_get_id_v3</b> (defined in <a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a>)</td><td class="entry"><a class="el" href="a00073.html">tbb::internal::tbb_thread_v3::id</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/a00421.html b/doc/html/a00421.html
new file mode 100644
index 0000000..8d7ecb6
--- /dev/null
+++ b/doc/html/a00421.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.4"/>
+<title>Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.4 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class List</span></a></li>
+      <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class Members</span></a></li>
+    </ul>
+  </div>
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="a00240.html">tbb</a></li><li class="navelem"><b>strict_ppl</b></li><li class="navelem"><a class="el" href="a00046.html">concurrent_queue</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">tbb::strict_ppl::concurrent_queue< T, A > Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">allocator_type</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#ad3384818fb6350a494d5ec62445e59ee">clear</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a49b2e16902577cd3174355be0fa684e5">concurrent_queue</a>(const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#a43ac953152e60815c09fe4a4d4a623a9">concurrent_queue</a>(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#ae918807d098d5d5b41cc6d606fa2e7a1">concurrent_queue</a>(const concurrent_queue &src, const allocator_type &a=allocator_type())</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#acc04574f4d7d41fd5cad779508394740">concurrent_queue</a>(concurrent_queue &&src)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>concurrent_queue</b>(concurrent_queue &&src, const allocator_type &a) (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>const_iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a478c2b7f763b2e821e01cc14e13baf4c">const_reference</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#a63b42d83a9ed13fc6741e0b4388b0e96">difference_type</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>emplace</b>(Arguments &&...args) (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#aeda3156929d0c250faed7b807ca6ab0e">empty</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a7f2b39f350281590b86db906eca6c480">get_allocator</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>internal::concurrent_queue_iterator</b> (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iterator</b> typedef (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#a9330ca6590980d80ef7b1ea3613a699a">push</a>(const T &source)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>push</b>(T &&source) (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#ab26ddf11b15d61ac87e6c1ae67af92a2">reference</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#a9f883e49afea16293ba92da779981bb8">size_type</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#aabb1acef18196fa11ed7db8e046c3943">try_pop</a>(T &result)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_begin</b>() (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_begin</b>() const  (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>unsafe_end</b>() (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>unsafe_end</b>() const  (defined in <a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a>)</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aad4b253ba595637b0b146eb6565556f2">unsafe_size</a>() const </td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr><td class="entry"><a class="el" href="a00046.html#aeeee93a7ac2eecc80bbf3e857e900538">value_type</a> typedef</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="a00046.html#aa0056b242f280f5e25332ce998f9f670">~concurrent_queue</a>()</td><td class="entry"><a class="el" href="a00046.html">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<hr>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<p></p>
+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
+registered trademarks or trademarks of Intel Corporation or its
+subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 305128f..c92af35 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -39,177 +39,194 @@
 <div class="contents">
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00219.html" target="_self">rml</a></td><td class="desc">The namespace rml contains components of low-level memory pool interface </td></tr>
-<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00076.html" target="_self">MemPoolPolicy</a></td><td class="desc"></td></tr>
-<tr id="row_1_" class="even"><td class="entry"><img id="arr_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00222.html" target="_self">tbb</a></td><td class="desc">The namespace tbb contains all components of the library </td></tr>
-<tr id="row_1_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>deprecated</b></td><td class="desc"></td></tr>
-<tr id="row_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00039.html" target="_self">concurrent_queue</a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
-<tr id="row_1_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>flow</b></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_1_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface7</b></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_1_1_0_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_0_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00134.html" target="_self">successor_cache</a></t [...]
-<tr id="row_1_1_0_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">broadcast_cache</a></t [...]
-<tr id="row_1_1_0_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00108.html" target="_self">round_robin_cache< [...]
-<tr id="row_1_1_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00048.html" target="_self">continue_msg</a></td><td class="desc">An empty class used for messages that mean "I'm [...]
-<tr id="row_1_1_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">sender</a></td><td class="desc">Pure virtual template class that defines a sender of  [...]
-<tr id="row_1_1_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00106.html" target="_self">receiver</a></td><td class="desc">Pure virtual template class that defines a receiver [...]
-<tr id="row_1_1_0_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">limiter_node</a></td><td class="desc">Forwards messages only if the threshold has not [...]
-<tr id="row_1_1_0_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00109.html" target="_self">run_and_put_task</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00050.html" target="_self">continue_receiver</a></td><td class="desc">Base class for receivers of completion mes [...]
-<tr id="row_1_1_0_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00062.html" target="_self">graph_iterator</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00061.html" target="_self">graph</a></td><td class="desc">The graph class </td></tr>
-<tr id="row_1_1_0_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00063.html" target="_self">graph_node</a></td><td class="desc">The base of all graph nodes </td></tr>
-<tr id="row_1_1_0_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">source_node</a></td><td class="desc">An executable node that acts as a source, i.e.  [...]
-<tr id="row_1_1_0_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">function_node</a></td><td class="desc">Implements a function node that supports Inpu [...]
-<tr id="row_1_1_0_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00060.html" target="_self">function_node< Input, Output, queueing, Allocator ></a></td><td class="desc">I [...]
-<tr id="row_1_1_0_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">multifunction_node</a></td><td class="desc">Implements a function node that supports [...]
-<tr id="row_1_1_0_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00080.html" target="_self">multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="de [...]
-<tr id="row_1_1_0_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00130.html" target="_self">split_node</a></td><td class="desc">Split_node: accepts a tuple as input, forwards e [...]
-<tr id="row_1_1_0_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">continue_node</a></td><td class="desc">Implements an executable node that supports < [...]
-<tr id="row_1_1_0_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">overwrite_node</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_18_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00159.html" target="_self">write_once_node</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_19_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">broadcast_node</a></td><td class="desc">Forwards messages of type T to all successor [...]
-<tr id="row_1_1_0_20_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_1_1_0_20_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_0_20_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">buffer_node</a></td><td class [...]
-<tr id="row_1_1_0_20_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">buffer_operation< [...]
-<tr id="row_1_1_0_21_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00092.html" target="_self">queue_node</a></td><td class="desc">Forwards messages in FIFO order </td></tr>
-<tr id="row_1_1_0_22_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00125.html" target="_self">sequencer_node</a></td><td class="desc">Forwards messages in sequence order </td></tr>
-<tr id="row_1_1_0_23_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">priority_queue_node</a></td><td class="desc">Forwards messages in priority order </td></tr>
-<tr id="row_1_1_0_24_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">join_node</a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_25_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00070.html" target="_self">join_node< OutputTuple, reserving ></a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_26_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00069.html" target="_self">join_node< OutputTuple, queueing ></a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_27_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00071.html" target="_self">join_node< OutputTuple, tag_matching ></a></td><td class="desc"></td></tr>
-<tr id="row_1_1_0_28_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00085.html" target="_self">or_node</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface5</b></td><td class="desc"></td></tr>
-<tr id="row_1_2_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00035.html" target="_self">concurrent_hash_map</a></td><td class="desc">Unordered map from Key to T </td></tr>
-<tr id="row_1_2_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00010.html" target="_self">accessor</a></td><td class="desc">Allows write access to elements and comb [...]
-<tr id="row_1_2_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00026.html" target="_self">bucket_accessor</a></td><td class="desc">Bucket accessor is to find, rehas [...]
-<tr id="row_1_2_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00047.html" target="_self">const_accessor</a></td><td class="desc">Combines data access, locking, and [...]
-<tr id="row_1_2_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00082.html" target="_self">node</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00037.html" target="_self">concurrent_priority_queue</a></td><td class="desc">Concurrent priority queue </td></tr>
-<tr id="row_1_2_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00041.html" target="_self">concurrent_unordered_map_traits</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_2_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00157.html" target="_self">value_compare</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00040.html" target="_self">concurrent_unordered_map</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00042.html" target="_self">concurrent_unordered_multimap</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00045.html" target="_self">concurrent_unordered_set_traits</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00044.html" target="_self">concurrent_unordered_set</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00043.html" target="_self">concurrent_unordered_multiset</a></td><td class="desc"></td></tr>
-<tr id="row_1_2_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_8_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_2_8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00095.html" target="_self">reader_writer_lock</a></td><td class="desc">Writer-preference reader-writer lock wit [...]
-<tr id="row_1_2_8_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00118.html" target="_self">scoped_lock</a></td><td class="desc">The scoped lock pattern for write l [...]
-<tr id="row_1_2_8_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00123.html" target="_self">scoped_lock_read</a></td><td class="desc">The scoped lock pattern fo [...]
-<tr id="row_1_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface6</b></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00020.html" target="_self">basic_operation_base</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00019.html" target="_self">basic_operation</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">basic_handler</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00033.html" target="_self">concrete_filter</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00013.html" target="_self">aggregator_operation</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00012.html" target="_self">aggregator_ext</a></td><td class="desc">Aggregator base class and expert interface </td></tr>
-<tr id="row_1_3_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00011.html" target="_self">aggregator</a></td><td class="desc">Basic aggregator interface </td></tr>
-<tr id="row_1_3_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00036.html" target="_self">concurrent_lru_cache</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00052.html" target="_self">enumerable_thread_specific</a></td><td class="desc">The <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">enumerable [...]
-<tr id="row_1_3_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00057.html" target="_self">flattened2d</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00074.html" target="_self">memory_pool_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Se [...]
-<tr id="row_1_3_7_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00101.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00075.html" target="_self">memory_pool_allocator< void, P ></a></td><td class="desc">Analogous to std::allocator<void&g [...]
-<tr id="row_1_3_8_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00102.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00073.html" target="_self">memory_pool</a></td><td class="desc">Thread-safe growable pool allocator for variable-size requests </td></tr>
-<tr id="row_1_3_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">fixed_pool</a></td><td class="desc"></td></tr>
-<tr id="row_1_3_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00058.html" target="_self">flow_control</a></td><td class="desc">Input_filter control to signal end-of-input for parallel_pipeline </td></tr>
-<tr id="row_1_3_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00054.html" target="_self">filter_t</a></td><td class="desc">Class representing a chain of type-safe pipeline filters </td></tr>
-<tr id="row_1_3_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00110.html" target="_self">runtime_loader</a></td><td class="desc">Load TBB at runtime </td></tr>
-<tr id="row_1_3_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00142.html" target="_self">task_scheduler_observer</a></td><td class="desc"></td></tr>
-<tr id="row_1_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_4_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface7</b></td><td class="desc"></td></tr>
-<tr id="row_1_4_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00135.html" target="_self">task_arena</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00237.html" target="_self">rml</a></td><td class="desc">The namespace rml contains components of low-level memory pool interface </td></tr>
+<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00095.html" target="_self">MemPoolPolicy</a></td><td class="desc"></td></tr>
+<tr id="row_1_" class="even"><td class="entry"><img id="arr_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00240.html" target="_self">tbb</a></td><td class="desc">The namespace tbb contains all components of the library </td></tr>
+<tr id="row_1_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>flow</b></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_0_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_0_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface7</b></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_1_0_0_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_0_0_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00149.html" target="_self">successor [...]
+<tr id="row_1_0_0_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">broadcast [...]
+<tr id="row_1_0_0_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">round_rob [...]
+<tr id="row_1_0_0_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">edge_cont [...]
+<tr id="row_1_0_0_0_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00016.html" target="_self">async [...]
+<tr id="row_1_0_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00103.html" target="_self">null_type</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00055.html" target="_self">continue_msg</a></td><td class="desc">An empty class used for messages t [...]
+<tr id="row_1_0_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00142.html" target="_self">sender</a></td><td class="desc">Pure virtual template class that defines [...]
+<tr id="row_1_0_0_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">receiver</a></td><td class="desc">Pure virtual template class that defin [...]
+<tr id="row_1_0_0_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">limiter_node</a></td><td class="desc">Forwards messages only if the thre [...]
+<tr id="row_1_0_0_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00127.html" target="_self">run_and_put_task</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00057.html" target="_self">continue_receiver</a></td><td class="desc">Base class for receivers of c [...]
+<tr id="row_1_0_0_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00071.html" target="_self">graph_iterator</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00070.html" target="_self">graph</a></td><td class="desc">The graph class </td></tr>
+<tr id="row_1_0_0_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">graph_node</a></td><td class="desc">The base of all graph nodes </td></tr>
+<tr id="row_1_0_0_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00144.html" target="_self">source_node</a></td><td class="desc">An executable node that acts as a  [...]
+<tr id="row_1_0_0_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">function_node</a></td><td class="desc">Implements a function node that  [...]
+<tr id="row_1_0_0_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">multifunction_node</a></td><td class="desc">Implements a function node  [...]
+<tr id="row_1_0_0_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00147.html" target="_self">split_node</a></td><td class="desc">Split_node: accepts a tuple as inpu [...]
+<tr id="row_1_0_0_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">continue_node</a></td><td class="desc">Implements an executable node th [...]
+<tr id="row_1_0_0_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">overwrite_node</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00176.html" target="_self">write_once_node</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">broadcast_node</a></td><td class="desc">Forwards messages of type T to  [...]
+<tr id="row_1_0_0_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_1_0_0_19_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_0_0_19_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">buffer_node</a>< [...]
+<tr id="row_1_0_0_19_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00031.html" target="_self">buff [...]
+<tr id="row_1_0_0_20_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00110.html" target="_self">queue_node</a></td><td class="desc">Forwards messages in FIFO order </td></tr>
+<tr id="row_1_0_0_21_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00143.html" target="_self">sequencer_node</a></td><td class="desc">Forwards messages in sequence o [...]
+<tr id="row_1_0_0_22_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00109.html" target="_self">priority_queue_node</a></td><td class="desc">Forwards messages in prior [...]
+<tr id="row_1_0_0_23_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00087.html" target="_self">join_node</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_24_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00089.html" target="_self">join_node< OutputTuple, reserving ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_25_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00088.html" target="_self">join_node< OutputTuple, queueing ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_26_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00090.html" target="_self">join_node< OutputTuple, tag_matching ></a></td><td class="desc">< [...]
+<tr id="row_1_0_0_27_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00075.html" target="_self">indexer_node</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_28_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00076.html" target="_self">indexer_node< T0 ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_29_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00077.html" target="_self">indexer_node< T0, T1 ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_30_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00078.html" target="_self">indexer_node< T0, T1, T2 ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_31_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">indexer_node< T0, T1, T2, T3 ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_32_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00080.html" target="_self">indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_33_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00081.html" target="_self">indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="desc">< [...]
+<tr id="row_1_0_0_34_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00082.html" target="_self">indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="des [...]
+<tr id="row_1_0_0_35_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00083.html" target="_self">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class= [...]
+<tr id="row_1_0_0_36_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00084.html" target="_self">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td cl [...]
+<tr id="row_1_0_0_37_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00037.html" target="_self">composite_node</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_0_38_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00038.html" target="_self">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::t [...]
+<tr id="row_1_0_0_39_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00039.html" target="_self">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::t [...]
+<tr id="row_1_0_0_40_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00040.html" target="_self">composite_node< tbb::flow::tuple<>, tbb::flow::tuple< Outpu [...]
+<tr id="row_1_0_0_41_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">async_node</a></td><td class="desc">Implements a async node </td></tr>
+<tr id="row_1_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface5</b></td><td class="desc"></td></tr>
+<tr id="row_1_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
+<tr id="row_1_1_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00171.html" target="_self">use_element_copy_constructor</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00172.html" target="_self">use_element_copy_constructor< T, false ></a></td><td class="desc"></td></tr>
+<tr id="row_1_1_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00043.html" target="_self">concurrent_hash_map</a></td><td class="desc">Unordered map from Key to T </td></tr>
+<tr id="row_1_1_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00010.html" target="_self">accessor</a></td><td class="desc">Allows write access to elements and combines data acc [...]
+<tr id="row_1_1_1_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00011.html" target="_self">accessor_not_used</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_1_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00029.html" target="_self">bucket_accessor</a></td><td class="desc">Bucket accessor is to find, rehash, acquire a  [...]
+<tr id="row_1_1_1_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00034.html" target="_self">call_clear_on_leave</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_1_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00054.html" target="_self">const_accessor</a></td><td class="desc">Combines data access, locking, and garbage coll [...]
+<tr id="row_1_1_1_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00100.html" target="_self">node</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00045.html" target="_self">concurrent_priority_queue</a></td><td class="desc">Concurrent priority queue </td></tr>
+<tr id="row_1_1_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_1_3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00048.html" target="_self">concurrent_unordered_map_traits</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00174.html" target="_self">value_compare</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00047.html" target="_self">concurrent_unordered_map</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">concurrent_unordered_multimap</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00052.html" target="_self">concurrent_unordered_set_traits</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00051.html" target="_self">concurrent_unordered_set</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00050.html" target="_self">concurrent_unordered_multiset</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_1_9_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_1_9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00113.html" target="_self">reader_writer_lock</a></td><td class="desc">Writer-preference reader-writer lock with local-only  [...]
+<tr id="row_1_1_9_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00133.html" target="_self">scoped_lock</a></td><td class="desc">The scoped lock pattern for write locks </td></tr>
+<tr id="row_1_1_9_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00141.html" target="_self">scoped_lock_read</a></td><td class="desc">The scoped lock pattern for read locks  [...]
+<tr id="row_1_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface6</b></td><td class="desc"></td></tr>
+<tr id="row_1_2_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
+<tr id="row_1_2_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00023.html" target="_self">basic_operation_base</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00022.html" target="_self">basic_operation</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">basic_handler</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00041.html" target="_self">concrete_filter</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00014.html" target="_self">aggregator_operation</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00013.html" target="_self">aggregator_ext</a></td><td class="desc">Aggregator base class and expert interface </td></tr>
+<tr id="row_1_2_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00012.html" target="_self">aggregator</a></td><td class="desc">Basic aggregator interface </td></tr>
+<tr id="row_1_2_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00044.html" target="_self">concurrent_lru_cache</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00061.html" target="_self">enumerable_thread_specific</a></td><td class="desc">The <a class="el" href="a00061.html" title="The enumerable_thread_specific container. [...]
+<tr id="row_1_2_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00066.html" target="_self">flattened2d</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00093.html" target="_self">memory_pool_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ [...]
+<tr id="row_1_2_7_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00122.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_2_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_2_8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00094.html" target="_self">memory_pool_allocator< void, P ></a></td><td class="desc">Analogous to std::alloca [...]
+<tr id="row_1_2_8_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00123.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00092.html" target="_self">memory_pool</a></td><td class="desc">Thread-safe growable pool allocator for variable-size requests </td></tr>
+<tr id="row_1_2_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00065.html" target="_self">fixed_pool</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00067.html" target="_self">flow_control</a></td><td class="desc">Input_filter control to signal end-of-input for parallel_pipeline </td></tr>
+<tr id="row_1_2_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00063.html" target="_self">filter_t</a></td><td class="desc">Class representing a chain of type-safe pipeline filters </td></tr>
+<tr id="row_1_2_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00128.html" target="_self">runtime_loader</a></td><td class="desc">Load TBB at runtime </td></tr>
+<tr id="row_1_2_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00157.html" target="_self">task_scheduler_observer</a></td><td class="desc"></td></tr>
+<tr id="row_1_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface7</b></td><td class="desc"></td></tr>
+<tr id="row_1_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00150.html" target="_self">task_arena</a></td><td class="desc"></td></tr>
+<tr id="row_1_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_4_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>interface9</b></td><td class="desc"></td></tr>
+<tr id="row_1_4_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00069.html" target="_self">global_control</a></td><td class="desc"></td></tr>
 <tr id="row_1_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_5_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>internal</b></td><td class="desc"></td></tr>
-<tr id="row_1_5_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_5_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00051.html" target="_self">critical_section_v4</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00122.html" target="_self">scoped_lock</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00140.html" target="_self">task_handle_task</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00137.html" target="_self">task_group_base</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00143.html" target="_self">task_scheduler_observer_v3</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00147.html" target="_self">tbb_exception_ptr</a></td><td class="desc">Exception container that preserves the exact copy of the original exception </td></tr>
-<tr id="row_1_5_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00131.html" target="_self">STATIC_ASSERTION_FAILED</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00132.html" target="_self">STATIC_ASSERTION_FAILED< false ></a></td><td class="desc"></td></tr>
-<tr id="row_1_5_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00154.html" target="_self">thread_closure_base</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00151.html" target="_self">thread_closure_0</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00152.html" target="_self">thread_closure_1</a></td><td class="desc">Structure used to pass user function with 1 argument to thread </td></tr>
-<tr id="row_1_5_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00153.html" target="_self">thread_closure_2</a></td><td class="desc"></td></tr>
-<tr id="row_1_5_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_11_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_5_11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00149.html" target="_self">tbb_thread_v3</a></td><td class="desc">Versioned thread class </td></tr>
-<tr id="row_1_5_11_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00064.html" target="_self">id</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_5_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00058.html" target="_self">critical_section_v4</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00136.html" target="_self">scoped_lock</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00155.html" target="_self">task_handle_task</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00152.html" target="_self">task_group_base</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00158.html" target="_self">task_scheduler_observer_v3</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00162.html" target="_self">tbb_exception_ptr</a></td><td class="desc">Exception container that preserves the exact copy of the original exception </td></tr>
+<tr id="row_1_5_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00169.html" target="_self">thread_closure_base</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00166.html" target="_self">thread_closure_0</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00167.html" target="_self">thread_closure_1</a></td><td class="desc">Structure used to pass user function with 1 argument to thread </td></tr>
+<tr id="row_1_5_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00168.html" target="_self">thread_closure_2</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_5_9_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_5_9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00164.html" target="_self">tbb_thread_v3</a></td><td class="desc">Versioned thread class </td></tr>
+<tr id="row_1_5_9_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00073.html" target="_self">id</a></td><td class="desc"></td></tr>
 <tr id="row_1_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_6_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>strict_ppl</b></td><td class="desc"></td></tr>
-<tr id="row_1_6_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00038.html" target="_self">concurrent_queue</a></td><td class="desc">A high-performance thread-safe non-blocking concurrent queue </td></tr>
-<tr id="row_1_7_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00014.html" target="_self">aligned_space</a></td><td class="desc">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
-<tr id="row_1_8_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">atomic</a></td><td class="desc">Primary template for atomic </td></tr>
-<tr id="row_1_9_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00016.html" target="_self">atomic< void * ></a></td><td class="desc">Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*> [...]
-<tr id="row_1_10_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">blocked_range</a></td><td class="desc">A range over which to iterate </td></tr>
-<tr id="row_1_11_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00022.html" target="_self">blocked_range2d</a></td><td class="desc">A 2-dimensional range that models the Range concept </td></tr>
-<tr id="row_1_12_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00023.html" target="_self">blocked_range3d</a></td><td class="desc">A 3-dimensional range that models the Range concept </td></tr>
-<tr id="row_1_13_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_13_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_13_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00029.html" target="_self">cache_aligned_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_1_13_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_14_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_14_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_14_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">cache_aligned_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_1_14_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00096.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_15_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00032.html" target="_self">combinable</a></td><td class="desc">Thread-local storage with optional reduction </td></tr>
-<tr id="row_1_16_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00148.html" target="_self">tbb_hash_compare</a></td><td class="desc">Hash_compare that is default argument for concurrent_hash_map </td></tr>
-<tr id="row_1_17_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00034.html" target="_self">concurrent_bounded_queue</a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
-<tr id="row_1_18_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">concurrent_vector</a></td><td class="desc">Concurrent vector container </td></tr>
-<tr id="row_1_19_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00158.html" target="_self">vector_iterator</a></td><td class="desc"></td></tr>
-<tr id="row_1_20_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_20_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_20_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00081.html" target="_self">mutex</a></td><td class="desc">Wrapper around the platform's native reader-writer lock </td></tr>
-<tr id="row_1_20_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00116.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_1_21_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_21_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_21_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00083.html" target="_self">null_mutex</a></td><td class="desc">A mutex which does nothing </td></tr>
-<tr id="row_1_21_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00115.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_1_22_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_22_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_22_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00084.html" target="_self">null_rw_mutex</a></td><td class="desc">A rw mutex which does nothing </td></tr>
-<tr id="row_1_22_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00117.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_1_23_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00087.html" target="_self">parallel_do_feeder</a></td><td class="desc">Class the user supplied algorithm body uses to add new tasks </td></tr>
-<tr id="row_1_24_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00138.html" target="_self">task_group_context</a></td><td class="desc"></td></tr>
-<tr id="row_1_25_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00090.html" target="_self">pre_scan_tag</a></td><td class="desc">Used to indicate that the initial scan is being performed </td></tr>
-<tr id="row_1_26_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00055.html" target="_self">final_scan_tag</a></td><td class="desc">Used to indicate that the final scan is being performed </td></tr>
-<tr id="row_1_27_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00088.html" target="_self">parallel_while</a></td><td class="desc">Parallel iteration over a stream, with optional addition of more work </td></tr>
-<tr id="row_1_28_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">filter</a></td><td class="desc">A stage in a pipeline </td></tr>
-<tr id="row_1_29_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00150.html" target="_self">thread_bound_filter</a></td><td class="desc">A stage in a pipeline served by a user thread </td></tr>
-<tr id="row_1_30_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00089.html" target="_self">pipeline</a></td><td class="desc">A processing pipeline that applies filters to items </td></tr>
-<tr id="row_1_31_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_31_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_31_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00093.html" target="_self">queuing_mutex</a></td><td class="desc">Queuing mutex with local-only spinning </td></tr>
-<tr id="row_1_31_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00121.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_1_32_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_32_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_32_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00094.html" target="_self">queuing_rw_mutex</a></td><td class="desc">Queuing reader-writer mutex with local-only spinning </td></tr>
-<tr id="row_1_32_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00119.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_1_33_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_33_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_33_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00107.html" target="_self">recursive_mutex</a></td><td class="desc"></td></tr>
-<tr id="row_1_33_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00120.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_1_34_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_34_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_34_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00111.html" target="_self">scalable_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_1_34_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00105.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_35_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_35_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_35_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00112.html" target="_self">scalable_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_1_35_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00097.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_36_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_36_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_36_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00127.html" target="_self">spin_mutex</a></td><td class="desc">A lock that occupies a single byte </td></tr>
-<tr id="row_1_36_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00113.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_1_37_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_37_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_37_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00128.html" target="_self">spin_rw_mutex_v3</a></td><td class="desc">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
-<tr id="row_1_37_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00114.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_1_38_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00139.html" target="_self">task_handle</a></td><td class="desc"></td></tr>
-<tr id="row_1_39_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00136.html" target="_self">task_group</a></td><td class="desc"></td></tr>
-<tr id="row_1_40_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00133.html" target="_self">structured_task_group</a></td><td class="desc"></td></tr>
-<tr id="row_1_41_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00141.html" target="_self">task_scheduler_init</a></td><td class="desc">Class delimiting the scope of task scheduler activity </td></tr>
-<tr id="row_1_42_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_42_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_42_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00144.html" target="_self">tbb_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_1_42_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_43_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_43_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_43_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00145.html" target="_self">tbb_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_1_43_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00099.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_44_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_44_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_44_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00160.html" target="_self">zero_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_1_44_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00100.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_45_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_45_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_45_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00161.html" target="_self">zero_allocator< void, Allocator ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_1_45_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00103.html" target="_self">rebind</a></td><td class="desc"></td></tr>
-<tr id="row_1_46_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">bad_last_alloc</a></td><td class="desc">Exception for concurrent containers </td></tr>
-<tr id="row_1_47_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00065.html" target="_self">improper_lock</a></td><td class="desc">Exception for PPL locks </td></tr>
-<tr id="row_1_48_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00156.html" target="_self">user_abort</a></td><td class="desc">Exception for user-initiated abort </td></tr>
-<tr id="row_1_49_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00077.html" target="_self">missing_wait</a></td><td class="desc">Exception for missing wait on <a class="el" href="a00133.html">structured_task_group</a> </td></tr>
-<tr id="row_1_50_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00067.html" target="_self">invalid_multiple_scheduling</a></td><td class="desc">Exception for repeated scheduling of the same <a class="el" href="a00139.html">task_handle</a> </td></tr>
-<tr id="row_1_51_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00146.html" target="_self">tbb_exception</a></td><td class="desc">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
-<tr id="row_1_52_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00031.html" target="_self">captured_exception</a></td><td class="desc">This class is used by TBB to propagate information about unhandled exceptions into the root thread </td></tr>
-<tr id="row_1_53_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00078.html" target="_self">movable_exception</a></td><td class="desc">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread </td></tr>
-<tr id="row_1_54_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00129.html" target="_self">split</a></td><td class="desc">Dummy type that distinguishes splitting constructor from copy constructor </td></tr>
-<tr id="row_1_55_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_55_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_55_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00155.html" target="_self">tick_count</a></td><td class="desc">Absolute timestamp </td></tr>
-<tr id="row_1_55_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00066.html" target="_self">interval_t</a></td><td class="desc">Relative time interval </td></tr>
-<tr id="row_2_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00009.html" target="_self">__TBB_malloc_proxy_caller</a></td><td class="desc"></td></tr>
+<tr id="row_1_6_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">concurrent_queue</a></td><td class="desc">A high-performance thread-safe non-blocking concurrent queue </td></tr>
+<tr id="row_1_7_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">aligned_space</a></td><td class="desc">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
+<tr id="row_1_8_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">atomic</a></td><td class="desc">Primary template for atomic </td></tr>
+<tr id="row_1_9_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00019.html" target="_self">atomic< void * ></a></td><td class="desc">Specialization for <a class="el" href="a00019.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. ">atomic<void*> [...]
+<tr id="row_1_10_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">blocked_range</a></td><td class="desc">A range over which to iterate </td></tr>
+<tr id="row_1_11_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">blocked_range2d</a></td><td class="desc">A 2-dimensional range that models the Range concept </td></tr>
+<tr id="row_1_12_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00026.html" target="_self">blocked_range3d</a></td><td class="desc">A 3-dimensional range that models the Range concept </td></tr>
+<tr id="row_1_13_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_13_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_13_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00032.html" target="_self">cache_aligned_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_1_13_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00121.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_14_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_14_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_14_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00033.html" target="_self">cache_aligned_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_1_14_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00114.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_15_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00036.html" target="_self">combinable</a></td><td class="desc">Thread-local storage with optional reduction </td></tr>
+<tr id="row_1_16_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00163.html" target="_self">tbb_hash_compare</a></td><td class="desc">Hash_compare that is default argument for concurrent_hash_map </td></tr>
+<tr id="row_1_17_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00042.html" target="_self">concurrent_bounded_queue</a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
+<tr id="row_1_18_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">concurrent_vector</a></td><td class="desc">Concurrent vector container </td></tr>
+<tr id="row_1_19_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00175.html" target="_self">vector_iterator</a></td><td class="desc"></td></tr>
+<tr id="row_1_20_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_20_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_20_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00099.html" target="_self">mutex</a></td><td class="desc">Wrapper around the platform's native reader-writer lock </td></tr>
+<tr id="row_1_20_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00140.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_1_21_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_21_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_21_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00101.html" target="_self">null_mutex</a></td><td class="desc">A mutex which does nothing </td></tr>
+<tr id="row_1_21_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00137.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_1_22_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_22_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_22_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00102.html" target="_self">null_rw_mutex</a></td><td class="desc">A rw mutex which does nothing </td></tr>
+<tr id="row_1_22_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00138.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_1_23_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00105.html" target="_self">parallel_do_feeder</a></td><td class="desc">Class the user supplied algorithm body uses to add new tasks </td></tr>
+<tr id="row_1_24_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00153.html" target="_self">task_group_context</a></td><td class="desc"></td></tr>
+<tr id="row_1_25_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00108.html" target="_self">pre_scan_tag</a></td><td class="desc">Used to indicate that the initial scan is being performed </td></tr>
+<tr id="row_1_26_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00064.html" target="_self">final_scan_tag</a></td><td class="desc">Used to indicate that the final scan is being performed </td></tr>
+<tr id="row_1_27_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00106.html" target="_self">parallel_while</a></td><td class="desc">Parallel iteration over a stream, with optional addition of more work </td></tr>
+<tr id="row_1_28_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00062.html" target="_self">filter</a></td><td class="desc">A stage in a pipeline </td></tr>
+<tr id="row_1_29_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00165.html" target="_self">thread_bound_filter</a></td><td class="desc">A stage in a pipeline served by a user thread </td></tr>
+<tr id="row_1_30_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00107.html" target="_self">pipeline</a></td><td class="desc">A processing pipeline that applies filters to items </td></tr>
+<tr id="row_1_31_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_31_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_31_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00111.html" target="_self">queuing_mutex</a></td><td class="desc">Queuing mutex with local-only spinning </td></tr>
+<tr id="row_1_31_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00132.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_1_32_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_32_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_32_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00112.html" target="_self">queuing_rw_mutex</a></td><td class="desc">Queuing reader-writer mutex with local-only spinning </td></tr>
+<tr id="row_1_32_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00131.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_1_33_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_33_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_33_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00125.html" target="_self">recursive_mutex</a></td><td class="desc"></td></tr>
+<tr id="row_1_33_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00139.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_1_34_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_34_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_34_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00129.html" target="_self">scalable_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_1_34_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00115.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_35_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_35_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_35_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00130.html" target="_self">scalable_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_1_35_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00116.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_36_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_36_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_36_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00145.html" target="_self">spin_mutex</a></td><td class="desc">A lock that occupies a single byte </td></tr>
+<tr id="row_1_36_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00134.html" target="_self">scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_1_37_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_37_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_37_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00146.html" target="_self">spin_rw_mutex_v3</a></td><td class="desc">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
+<tr id="row_1_37_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00135.html" target="_self">scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_1_38_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00154.html" target="_self">task_handle</a></td><td class="desc"></td></tr>
+<tr id="row_1_39_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00151.html" target="_self">task_group</a></td><td class="desc"></td></tr>
+<tr id="row_1_40_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00148.html" target="_self">structured_task_group</a></td><td class="desc"></td></tr>
+<tr id="row_1_41_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00156.html" target="_self">task_scheduler_init</a></td><td class="desc">Class delimiting the scope of task scheduler activity </td></tr>
+<tr id="row_1_42_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_42_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_42_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00159.html" target="_self">tbb_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_1_42_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00117.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_43_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_43_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_43_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00160.html" target="_self">tbb_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_1_43_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00118.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_44_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_44_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_44_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00177.html" target="_self">zero_allocator</a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_1_44_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00119.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_45_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_45_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_45_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00178.html" target="_self">zero_allocator< void, Allocator ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_1_45_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00120.html" target="_self">rebind</a></td><td class="desc"></td></tr>
+<tr id="row_1_46_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00020.html" target="_self">bad_last_alloc</a></td><td class="desc">Exception for concurrent containers </td></tr>
+<tr id="row_1_47_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00074.html" target="_self">improper_lock</a></td><td class="desc">Exception for PPL locks </td></tr>
+<tr id="row_1_48_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00173.html" target="_self">user_abort</a></td><td class="desc">Exception for user-initiated abort </td></tr>
+<tr id="row_1_49_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00096.html" target="_self">missing_wait</a></td><td class="desc">Exception for missing wait on <a class="el" href="a00148.html">structured_task_group</a> </td></tr>
+<tr id="row_1_50_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">invalid_multiple_scheduling</a></td><td class="desc">Exception for repeated scheduling of the same <a class="el" href="a00154.html">task_handle</a> </td></tr>
+<tr id="row_1_51_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00161.html" target="_self">tbb_exception</a></td><td class="desc">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
+<tr id="row_1_52_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00035.html" target="_self">captured_exception</a></td><td class="desc">This class is used by TBB to propagate information about unhandled exceptions into the root thread </td></tr>
+<tr id="row_1_53_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00097.html" target="_self">movable_exception</a></td><td class="desc">Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread </td></tr>
+<tr id="row_1_54_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_1_54_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_54_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00170.html" target="_self">tick_count</a></td><td class="desc">Absolute timestamp </td></tr>
+<tr id="row_1_54_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00085.html" target="_self">interval_t</a></td><td class="desc">Relative time interval </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00009.html" target="_self">__TBB_malloc_proxy_caller</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/classes.html b/doc/html/classes.html
index 626edda..8111f5f 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -40,75 +40,77 @@
 <div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_L">L</a> |& [...]
 <table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
 <tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  A  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00044.html">concurrent_unordered_set</a> (tbb::interface5)   </td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  M  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00100.html">zero_allocator::rebind</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00137.html">task_group_base</a> (tbb::internal)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00045.html">concurrent_unordered_set_traits</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00099.html">tbb_allocator< void >::rebind</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00138.html">task_group_context</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00010.html">concurrent_hash_map::accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00046.html">concurrent_vector</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00073.html">memory_pool</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00098.html">tbb_allocator::rebind</a> (<a class="el" href="a00222.html">tbb</a>)&#1 [...]
-<tr><td valign="top"><a class="el" href="a00011.html">aggregator</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00047.html">concurrent_hash_map::const_accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00074.html">memory_pool_allocator</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00097.html">scalable_allocator< void >::rebind</a> (<a class="el" href="a00222.html">tbb</a>) [...]
-<tr><td valign="top"><a class="el" href="a00012.html">aggregator_ext</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00048.html">continue_msg</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00075.html">memory_pool_allocator< void, P ></a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00096.html">cache_aligned_allocator< void >::rebind</a> (<a class="el" href="a00222.html" [...]
-<tr><td valign="top"><a class="el" href="a00013.html">aggregator_operation</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00049.html">continue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00076.html">MemPoolPolicy</a> (<a class="el" href="a00219.html">rml</a>)   </td><td valign="top"><a class="el" href="a00106.html">receiver</a> (tbb::flow::interface7)   </td><td valign="top"> [...]
-<tr><td valign="top"><a class="el" href="a00014.html">aligned_space</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00050.html">continue_receiver</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00077.html">missing_wait</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00107.html">recursive_mutex</a> (<a class="el" href="a00222.html">t [...]
-<tr><td valign="top"><a class="el" href="a00015.html">atomic</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00051.html">critical_section_v4</a> (tbb::internal)   </td><td valign="top"><a class="el" href="a00078.html">movable_exception</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00108.html">round_robin_cache</a> (tbb::flow::interface7::internal) &# [...]
-<tr><td valign="top"><a class="el" href="a00016.html">atomic< void * ></a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  E  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00079.html">multifunction_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00109.html">run_and_put_task</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00145.html">tbb_allocator< void ></a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  B  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00080.html">multifunction_node< Input, Output, queueing, Allocator ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00110.html">runtime_loader</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00146.html">tbb_exception</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00052.html">enumerable_thread_specific</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00081.html">mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  S  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00147.html">tbb_exception_ptr</a> (tbb::internal)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00017.html">bad_last_alloc</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  F  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  N  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00148.html">tbb_hash_compare</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00018.html">basic_handler</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00111.html">scalable_allocator</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00149.html">tbb_thread_v3</a> (tbb::internal)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00019.html">basic_operation</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00053.html">filter</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00082.html">concurrent_hash_map::node</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00112.html">scalable_allocator< void ></a> (<a class="el" href="a00222.html">t [...]
-<tr><td valign="top"><a class="el" href="a00020.html">basic_operation_base</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00054.html">filter_t</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00083.html">null_mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00122.html">critical_section_v4::scoped_lock</a> (tbb::internal)   </td><td v [...]
-<tr><td valign="top"><a class="el" href="a00021.html">blocked_range</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00055.html">final_scan_tag</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00084.html">null_rw_mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00121.html">queuing_mutex::scoped_lock</a> (<a cla [...]
-<tr><td valign="top"><a class="el" href="a00022.html">blocked_range2d</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00056.html">fixed_pool</a> (tbb::interface6)   </td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00120.html">recursive_mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00153.html">thread_closure_2</a> (tbb::internal)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00023.html">blocked_range3d</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00057.html">flattened2d</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00119.html">queuing_rw_mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00154.html">thread_closure_base</a> (tbb::internal) &#1 [...]
-<tr><td valign="top"><a class="el" href="a00024.html">broadcast_cache</a> (tbb::flow::interface7::internal)   </td><td valign="top"><a class="el" href="a00058.html">flow_control</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00085.html">or_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00118.html">reader_writer_lock::scoped_lock</a> (tbb::interface5)   </td><td valign="top"><a c [...]
-<tr><td valign="top"><a class="el" href="a00025.html">broadcast_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00059.html">function_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00086.html">overwrite_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00117.html">null_rw_mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </t [...]
+</td><td valign="top"><a class="el" href="a00047.html">concurrent_unordered_map</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00082.html">indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00111.html">queuing_mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing=" [...]
 </td></tr>
-<tr><td valign="top"><a class="el" href="a00026.html">concurrent_hash_map::bucket_accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00060.html">function_node< Input, Output, queueing, Allocator ></a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00116.html">mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00027.html">buffer_node</a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  G  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00115.html">null_mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00156.html">user_abort</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00028.html">buffer_node::buffer_operation</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00087.html">parallel_do_feeder</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00114.html">spin_rw_mutex_v3::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0 [...]
+<tr><td valign="top"><a class="el" href="a00048.html">concurrent_unordered_map_traits</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00083.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00112.html">queuing_rw_mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00010.html">concurrent_hash_map::accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00049.html">concurrent_unordered_multimap</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00084.html">indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacin [...]
+</td><td valign="top"><a class="el" href="a00150.html">task_arena</a> (tbb::interface7)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00011.html">concurrent_hash_map::accessor_not_used</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00050.html">concurrent_unordered_multiset</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00085.html">tick_count::interval_t</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00151.html">task_group</a> (<a class="el" href="a00 [...]
+<tr><td valign="top"><a class="el" href="a00012.html">aggregator</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00051.html">concurrent_unordered_set</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00086.html">invalid_multiple_scheduling</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00113.html">reader_writer_lock</a> (tbb::interface5)   </td><td  [...]
+<tr><td valign="top"><a class="el" href="a00013.html">aggregator_ext</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00052.html">concurrent_unordered_set_traits</a> (tbb::interface5)   </td><td rowspan="2" valign="bottom"><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  J  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00123.html">memory_pool_allocator< void, P >::rebind</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00153.html">task_group_context</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00014.html">aggregator_operation</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00053.html">concurrent_vector</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00122.html">memory_pool_allocator::rebind</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00154.html">task_handle</a> (<a class="el" href="a00240.html">tbb</a>)&#16 [...]
+<tr><td valign="top"><a class="el" href="a00015.html">aligned_space</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00054.html">concurrent_hash_map::const_accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00087.html">join_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00121.html">cache_aligned_allocator::rebind</a> (<a class="el" href="a00240.h [...]
+<tr><td valign="top"><a class="el" href="a00016.html">async_gateway</a> (tbb::flow::interface7::internal)   </td><td valign="top"><a class="el" href="a00055.html">continue_msg</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00088.html">join_node< OutputTuple, queueing ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00120.html">zero_allocator< void, Allocator >::rebind</a> (<a clas [...]
+<tr><td valign="top"><a class="el" href="a00017.html">async_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00056.html">continue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00089.html">join_node< OutputTuple, reserving ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00119.html">zero_allocator::rebind</a> (<a class="el" href="a00240.html">tbb</a>)&# [...]
+<tr><td valign="top"><a class="el" href="a00018.html">atomic</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00057.html">continue_receiver</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00090.html">join_node< OutputTuple, tag_matching ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00118.html">tbb_allocator< void >::rebind</a> (<a class [...]
+<tr><td valign="top"><a class="el" href="a00019.html">atomic< void * ></a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00058.html">critical_section_v4</a> (tbb::internal)   </td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00117.html">tbb_allocator::rebind</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00159.html">tbb_allocator</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  B  </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  E  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00116.html">scalable_allocator< void >::rebind</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00160.html">tbb_allocator< void ></a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00091.html">limiter_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00115.html">scalable_allocator::rebind</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00161.html">tbb_exception</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00020.html">bad_last_alloc</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00059.html">edge_container</a> (tbb::flow::interface7::internal)   </td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  M  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00114.html">cache_aligned_allocator< void >::rebind</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00162.html">tbb_exception_ptr</a> (tbb::internal)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00021.html">basic_handler</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00060.html">concurrent_vector::push_back_helper::element_construction_guard</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00124.html">receiver</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00163.html">tbb_hash_compare</a> (<a cla [...]
+<tr><td valign="top"><a class="el" href="a00022.html">basic_operation</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00061.html">enumerable_thread_specific</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00092.html">memory_pool</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00125.html">recursive_mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td va [...]
+<tr><td valign="top"><a class="el" href="a00023.html">basic_operation_base</a> (tbb::interface6::internal)   </td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  F  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00093.html">memory_pool_allocator</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00126.html">round_robin_cache</a> (tbb::flow::interface7::internal)   </td><td valign="top"><a class="el" href="a00165.html">thread_bound_filter</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00024.html">blocked_range</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00094.html">memory_pool_allocator< void, P ></a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00127.html">run_and_put_task</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00166.html">thread_closure_0</a> (tbb::internal)   < [...]
+<tr><td valign="top"><a class="el" href="a00025.html">blocked_range2d</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00062.html">filter</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00095.html">MemPoolPolicy</a> (<a class="el" href="a00237.html">rml</a>)   </td><td valign="top"><a class="el" href="a00128.html">runtime_loader</a> (tbb::interface6) &# [...]
+<tr><td valign="top"><a class="el" href="a00026.html">blocked_range3d</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00063.html">filter_t</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00096.html">missing_wait</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div  [...]
+</td><td valign="top"><a class="el" href="a00168.html">thread_closure_2</a> (tbb::internal)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00027.html">broadcast_cache</a> (tbb::flow::interface7::internal)   </td><td valign="top"><a class="el" href="a00064.html">final_scan_tag</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00097.html">movable_exception</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00169.html">thread_closure_base</a> (tbb::internal)&# [...]
+<tr><td valign="top"><a class="el" href="a00028.html">broadcast_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00065.html">fixed_pool</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00098.html">multifunction_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00129.html">scalable_allocator</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign= [...]
+<tr><td valign="top"><a class="el" href="a00029.html">concurrent_hash_map::bucket_accessor</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00066.html">flattened2d</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00099.html">mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00130.html">scalable_allocator< void ></a> (<a class="el" href="a00240.html">tbb</ [...]
 </td></tr>
+<tr><td valign="top"><a class="el" href="a00030.html">buffer_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00067.html">flow_control</a> (tbb::interface6)   </td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  N  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00140.html">mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00031.html">buffer_node::buffer_operation</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00068.html">function_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00139.html">recursive_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00171.html">use_element_copy_constructor</a> (tbb::interfa [...]
 <tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  C  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00061.html">graph</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00088.html">parallel_while</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00113.html">spin_mutex::scoped_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00062.html">graph_iterator</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00089.html">pipeline</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00123.html">reader_writer_lock::scoped_lock_read</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00157.html">concurrent_unordered_map_traits::value_compare</a> (tbb::interfa [...]
-<tr><td valign="top"><a class="el" href="a00029.html">cache_aligned_allocator</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00063.html">graph_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00090.html">pre_scan_tag</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00124.html">sender</a> (tbb::flow::interface7)    [...]
-<tr><td valign="top"><a class="el" href="a00030.html">cache_aligned_allocator< void ></a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00091.html">priority_queue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00125.html">sequencer_node</a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  W  </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  G  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00100.html">concurrent_hash_map::node</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00138.html">null_rw_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00172.html">use_element_copy_constructor< T, false ></a> (tbb::interface5::internal)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00101.html">null_mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00137.html">null_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00173.html">user_abort</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00032.html">cache_aligned_allocator</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00069.html">global_control</a> (tbb::interface9)   </td><td valign="top"><a class="el" href="a00102.html">null_rw_mutex</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00136.html">critical_section_v4::scoped_lock</a> (tbb::internal)& [...]
+</td></tr>
+<tr><td valign="top"><a class="el" href="a00033.html">cache_aligned_allocator< void ></a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00070.html">graph</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00103.html">null_type</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00135.html">spin_rw_mutex_v3::scoped_lock</a> (<a class="el" href="a00240.htm [...]
+<tr><td valign="top"><a class="el" href="a00034.html">concurrent_hash_map::call_clear_on_leave</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00071.html">graph_iterator</a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00134.html">spin_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00174.html">concurrent_unordered_map_traits::value_compare</a> (tbb::interface5)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00035.html">captured_exception</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00072.html">graph_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00133.html">reader_writer_lock::scoped_lock</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00175.html">vector_iterator</a> (<a class="el" href="a00240.html">tbb</a>)& [...]
+<tr><td valign="top"><a class="el" href="a00036.html">combinable</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00104.html">overwrite_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00132.html">queuing_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  W  </div></td></tr></table>
 </td></tr>
-<tr><td valign="top"><a class="el" href="a00031.html">captured_exception</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  Q  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00126.html">source_node</a> (tbb::flow::interface7)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00032.html">combinable</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00064.html">tbb_thread_v3::id</a> (tbb::internal)   </td><td valign="top"><a class="el" href="a00127.html">spin_mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00159.html">write_once_node</a> (tbb::flow::interface7)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00033.html">concrete_filter</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00065.html">improper_lock</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00092.html">queue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00128.html">spin_rw_mutex_v3</a> (<a class="el" href="a00222.html">tbb</a>) &#160 [...]
+<tr><td valign="top"><a class="el" href="a00037.html">composite_node</a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  P  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00131.html">queuing_rw_mutex::scoped_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00038.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00073.html">tbb_thread_v3::id</a> (tbb::internal)   </td><td valign="top"><a class="el" href="a00141.html">reader_writer_lock::scoped_lock_read</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00176 [...]
+<tr><td valign="top"><a class="el" href="a00039.html">composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00074.html">improper_lock</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00105.html">parallel_do_feeder</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="e [...]
 </td></tr>
-<tr><td valign="top"><a class="el" href="a00034.html">concurrent_bounded_queue</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00066.html">tick_count::interval_t</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00093.html">queuing_mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00129.html">split</a> (<a class [...]
-<tr><td valign="top"><a class="el" href="a00035.html">concurrent_hash_map</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00067.html">invalid_multiple_scheduling</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00094.html">queuing_rw_mutex</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00130.html">split_node</a> (tbb::flow::interface7)&#1 [...]
-<tr><td valign="top"><a class="el" href="a00036.html">concurrent_lru_cache</a> (tbb::interface6)   </td><td rowspan="2" valign="bottom"><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  J  </div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  R  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00131.html">STATIC_ASSERTION_FAILED</a> (tbb::internal)   </td><td valign="top"><a class="el" href="a00161.html">zero_allocator< void, Allocator ></a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00037.html">concurrent_priority_queue</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00132.html">STATIC_ASSERTION_FAILED< false ></a> (tbb::internal)   </td><td rowspan="2" valign="bottom"><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  _  </div></td></tr></table>
+<tr><td valign="top"><a class="el" href="a00040.html">composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00075.html">indexer_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00106.html">parallel_while</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00143.html">s [...]
+<tr><td valign="top"><a class="el" href="a00041.html">concrete_filter</a> (tbb::interface6::internal)   </td><td valign="top"><a class="el" href="a00076.html">indexer_node< T0 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00107.html">pipeline</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00144.html">source_node</a> (tbb::flow::interface7)   </td><td [...]
+<tr><td valign="top"><a class="el" href="a00042.html">concurrent_bounded_queue</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00077.html">indexer_node< T0, T1 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00108.html">pre_scan_tag</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00145.html">spin_mutex</a> (<a class="el" hre [...]
+<tr><td valign="top"><a class="el" href="a00043.html">concurrent_hash_map</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00078.html">indexer_node< T0, T1, T2 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00109.html">priority_queue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00146.html">spin_rw_mutex_v3</a> (<a class="el" href="a00240.html">tbb</a>) &# [...]
 </td></tr>
-<tr><td valign="top"><a class="el" href="a00039.html">concurrent_queue</a> (tbb::deprecated)   </td><td valign="top"><a class="el" href="a00068.html">join_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00095.html">reader_writer_lock</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00133.html">structured_task_group</a> (<a class="el" href="a00222.html">tbb</a>)   </td></tr>
-<tr><td valign="top"><a class="el" href="a00038.html">concurrent_queue</a> (tbb::strict_ppl)   </td><td valign="top"><a class="el" href="a00069.html">join_node< OutputTuple, queueing ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00105.html">scalable_allocator::rebind</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00134.html">successor_cache</a> (tbb::flow::interfac [...]
-<tr><td valign="top"><a class="el" href="a00040.html">concurrent_unordered_map</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00070.html">join_node< OutputTuple, reserving ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00104.html">cache_aligned_allocator::rebind</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cel [...]
-</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="a00041.html">concurrent_unordered_map_traits</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00071.html">join_node< OutputTuple, tag_matching ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00103.html">zero_allocator< void, Allocator >::rebind</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="a00042.html">concurrent_unordered_multimap</a> (tbb::interface5)   </td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table>
-</td><td valign="top"><a class="el" href="a00102.html">memory_pool_allocator< void, P >::rebind</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00135.html">task_arena</a> (tbb::interface7)   </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="a00043.html">concurrent_unordered_multiset</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00101.html">memory_pool_allocator::rebind</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00136.html">task_group</a> (<a class="el" href="a00222.html">tbb</a>)   </td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="a00072.html">limiter_node</a> (tbb::flow::interface7)   </td><td></td><td></td><td></td></tr>
+<tr><td valign="top"><a class="el" href="a00044.html">concurrent_lru_cache</a> (tbb::interface6)   </td><td valign="top"><a class="el" href="a00079.html">indexer_node< T0, T1, T2, T3 ></a> (tbb::flow::interface7)   </td><td rowspan="2" valign="bottom"><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  Q  </div></td></tr></table>
+</td><td valign="top"><a class="el" href="a00147.html">split_node</a> (tbb::flow::interface7)   </td></tr>
+<tr><td valign="top"><a class="el" href="a00045.html">concurrent_priority_queue</a> (tbb::interface5)   </td><td valign="top"><a class="el" href="a00080.html">indexer_node< T0, T1, T2, T3, T4 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00148.html">structured_task_group</a> (<a class="el" href="a00240.html">tbb</a>)   </td><td valign="top"><a class="el" href="a00009.html">__TBB_malloc_proxy_caller</a> & [...]
+<tr><td valign="top"><a class="el" href="a00046.html">concurrent_queue</a> (tbb::strict_ppl)   </td><td valign="top"><a class="el" href="a00081.html">indexer_node< T0, T1, T2, T3, T4, T5 ></a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00110.html">queue_node</a> (tbb::flow::interface7)   </td><td valign="top"><a class="el" href="a00149.html">successor_cache</a> (tbb::flow::interface7::internal)    [...]
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
 <div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_L">L</a> |& [...]
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html b/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html
index 2ab8244..7a81a72 100644
--- a/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html
+++ b/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html
@@ -43,7 +43,7 @@ Directories</h2></td></tr>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/dir_63fb2cc293d133785b96e521fa051167.html b/doc/html/dir_63fb2cc293d133785b96e521fa051167.html
index ccbe83f..6e4b5a0 100644
--- a/doc/html/dir_63fb2cc293d133785b96e521fa051167.html
+++ b/doc/html/dir_63fb2cc293d133785b96e521fa051167.html
@@ -43,7 +43,7 @@ Directories</h2></td></tr>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html b/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html
index 3f0d661..05e2a81 100644
--- a/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html
+++ b/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html
@@ -37,122 +37,124 @@
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
 Files</h2></td></tr>
-<tr class="memitem:a00162"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>aggregator.h</b></td></tr>
+<tr class="memitem:a00179"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>aggregator.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00163"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>aligned_space.h</b></td></tr>
+<tr class="memitem:a00180"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>aligned_space.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00164"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>atomic.h</b></td></tr>
+<tr class="memitem:a00181"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>atomic.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00165"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range.h</b></td></tr>
+<tr class="memitem:a00182"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00166"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range2d.h</b></td></tr>
+<tr class="memitem:a00183"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range2d.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00167"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range3d.h</b></td></tr>
+<tr class="memitem:a00184"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>blocked_range3d.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00168"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator.h</b></td></tr>
+<tr class="memitem:a00185"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>cache_aligned_allocator.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00169"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>combinable.h</b></td></tr>
+<tr class="memitem:a00186"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>combinable.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00170"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map.h</b></td></tr>
+<tr class="memitem:a00187"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_hash_map.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00171"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_lru_cache.h</b></td></tr>
+<tr class="memitem:a00188"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_lru_cache.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00172"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_priority_queue.h</b></td></tr>
+<tr class="memitem:a00189"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_priority_queue.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00173"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_queue.h</b></td></tr>
+<tr class="memitem:a00190"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_queue.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00174"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map.h</b></td></tr>
+<tr class="memitem:a00191"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_map.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00175"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set.h</b></td></tr>
+<tr class="memitem:a00192"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_unordered_set.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00176"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_vector.h</b></td></tr>
+<tr class="memitem:a00193"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>concurrent_vector.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00177"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>critical_section.h</b></td></tr>
+<tr class="memitem:a00194"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>critical_section.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00178"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>enumerable_thread_specific.h</b></td></tr>
+<tr class="memitem:a00195"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>enumerable_thread_specific.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00179"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00179.html">flow_graph.h</a></td></tr>
-<tr class="memdesc:a00179"><td class="mdescLeft"> </td><td class="mdescRight">The graph related classes and functions. <br/></td></tr>
+<tr class="memitem:a00196"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00196.html">flow_graph.h</a></td></tr>
+<tr class="memdesc:a00196"><td class="mdescLeft"> </td><td class="mdescRight">The graph related classes and functions. <br/></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00180"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00180.html">memory_pool.h</a></td></tr>
+<tr class="memitem:a00197"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>global_control.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00181"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mutex.h</b></td></tr>
+<tr class="memitem:a00198"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00198.html">memory_pool.h</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00182"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>null_mutex.h</b></td></tr>
+<tr class="memitem:a00199"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00183"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>null_rw_mutex.h</b></td></tr>
+<tr class="memitem:a00200"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>null_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00184"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_do.h</b></td></tr>
+<tr class="memitem:a00201"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>null_rw_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00185"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_for.h</b></td></tr>
+<tr class="memitem:a00202"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_do.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00186"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_for_each.h</b></td></tr>
+<tr class="memitem:a00203"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_for.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00187"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_invoke.h</b></td></tr>
+<tr class="memitem:a00204"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_for_each.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00188"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_reduce.h</b></td></tr>
+<tr class="memitem:a00205"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_invoke.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00189"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_scan.h</b></td></tr>
+<tr class="memitem:a00206"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_reduce.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00190"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_sort.h</b></td></tr>
+<tr class="memitem:a00207"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_scan.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00191"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_while.h</b></td></tr>
+<tr class="memitem:a00208"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_sort.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00192"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>partitioner.h</b></td></tr>
+<tr class="memitem:a00209"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>parallel_while.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00193"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pipeline.h</b></td></tr>
+<tr class="memitem:a00210"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>partitioner.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00194"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>queuing_mutex.h</b></td></tr>
+<tr class="memitem:a00211"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>pipeline.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00195"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>queuing_rw_mutex.h</b></td></tr>
+<tr class="memitem:a00212"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>queuing_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00196"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock.h</b></td></tr>
+<tr class="memitem:a00213"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>queuing_rw_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00197"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>recursive_mutex.h</b></td></tr>
+<tr class="memitem:a00214"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>reader_writer_lock.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00198"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>runtime_loader.h</b></td></tr>
+<tr class="memitem:a00215"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>recursive_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00199"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00199.html">scalable_allocator.h</a></td></tr>
+<tr class="memitem:a00216"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>runtime_loader.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00200"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>spin_mutex.h</b></td></tr>
+<tr class="memitem:a00217"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00217.html">scalable_allocator.h</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00201"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex.h</b></td></tr>
+<tr class="memitem:a00218"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>spin_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00202"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task.h</b></td></tr>
+<tr class="memitem:a00219"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>spin_rw_mutex.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00203"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_arena.h</b></td></tr>
+<tr class="memitem:a00220"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00204"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_group.h</b></td></tr>
+<tr class="memitem:a00221"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_arena.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00205"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_scheduler_init.h</b></td></tr>
+<tr class="memitem:a00222"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_group.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00206"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer.h</b></td></tr>
+<tr class="memitem:a00223"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_scheduler_init.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00207"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb.h</b></td></tr>
+<tr class="memitem:a00224"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>task_scheduler_observer.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00208"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_allocator.h</b></td></tr>
+<tr class="memitem:a00225"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00209"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_config.h</b></td></tr>
+<tr class="memitem:a00226"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_allocator.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00210"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_exception.h</b></td></tr>
+<tr class="memitem:a00227"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_config.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00211"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_machine.h</b></td></tr>
+<tr class="memitem:a00228"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_exception.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00212"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_profiling.h</b></td></tr>
+<tr class="memitem:a00229"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_machine.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00213"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_stddef.h</b></td></tr>
+<tr class="memitem:a00230"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_profiling.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00214"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_thread.h</b></td></tr>
+<tr class="memitem:a00231"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_stddef.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00215"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbbmalloc_proxy.h</b></td></tr>
+<tr class="memitem:a00232"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbb_thread.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a00216"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tick_count.h</b></td></tr>
+<tr class="memitem:a00233"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tbbmalloc_proxy.h</b></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a00234"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><b>tick_count.h</b></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
 </table>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html b/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html
index 08e7766..b2e1fe0 100644
--- a/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html
+++ b/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html
@@ -43,7 +43,7 @@ Directories</h2></td></tr>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/files.html b/doc/html/files.html
index a655e95..c7e3678 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -38,15 +38,15 @@
 <div class="contents">
 <div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
 <table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00179.html" target="_self">flow_graph.h</a></td><td class="desc">The graph related classes and functions </td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00180.html" target="_self">memory_pool.h</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00199.html" target="_self">scalable_allocator.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00196.html" target="_self">flow_graph.h</a></td><td class="desc">The graph related classes and functions </td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00198.html" target="_self">memory_pool.h</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="a00217.html" target="_self">scalable_allocator.h</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions.html b/doc/html/functions.html
index 853f898..104b81e 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -75,56 +75,63 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>abort()
-: <a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a77a755d94cabf5208905d10d5b57419c">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>acquire()
-: <a class="el" href="a00026.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
-, <a class="el" href="a00121.html#abf8aa7ccd48d54dcb53665700a17d02a">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a6d49df365396ab314e78ba07c6b96433">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00119.html#ab4bf2fb86d6a418f9ea36474eb8893f9">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00116.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#ac5450ce6a5813f395afaa434384c6539">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a7c702117f08ae82d034a98b3d5510ffc">tbb::spin_mutex::scoped_lock</a>
+: <a class="el" href="a00029.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+, <a class="el" href="a00132.html#abf8aa7ccd48d54dcb53665700a17d02a">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a6d49df365396ab314e78ba07c6b96433">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00131.html#ab4bf2fb86d6a418f9ea36474eb8893f9">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00140.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#ac5450ce6a5813f395afaa434384c6539">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a7c702117f08ae82d034a98b3d5510ffc">tbb::spin_mutex::scoped_lock</a>
 </li>
 <li>activate()
-: <a class="el" href="a00126.html#a67264c4564abefbf14c0d587c6fe2857">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a67264c4564abefbf14c0d587c6fe2857">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>add()
-: <a class="el" href="a00087.html#ac095c6b1a32e9c0be010aa32875d7a63">tbb::parallel_do_feeder< Item ></a>
-, <a class="el" href="a00088.html#a4861989d7f5e3111d264d4d6013e8fe1">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00105.html#ac095c6b1a32e9c0be010aa32875d7a63">tbb::parallel_do_feeder< Item ></a>
+, <a class="el" href="a00106.html#a4861989d7f5e3111d264d4d6013e8fe1">tbb::parallel_while< Body ></a>
 </li>
 <li>add_filter()
-: <a class="el" href="a00089.html#a8eb83014bd53b184e0ed50f120ca310b">tbb::pipeline</a>
+: <a class="el" href="a00107.html#a8eb83014bd53b184e0ed50f120ca310b">tbb::pipeline</a>
 </li>
 <li>allocate()
-: <a class="el" href="a00144.html#afedd8a64eed9692083c708f419338e0c">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00147.html#abfbea91401d2594deb04ea331734171c">tbb::internal::tbb_exception_ptr</a>
-, <a class="el" href="a00029.html#a99d05096f80877849cb31d80247e0f85">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a10b9888883a3dbd66e87c4a7f874ef28">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00111.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T ></a>
+: <a class="el" href="a00159.html#afedd8a64eed9692083c708f419338e0c">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00162.html#abfbea91401d2594deb04ea331734171c">tbb::internal::tbb_exception_ptr</a>
+, <a class="el" href="a00032.html#a99d05096f80877849cb31d80247e0f85">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a10b9888883a3dbd66e87c4a7f874ef28">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00129.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T ></a>
 </li>
 <li>allocator_type
-: <a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00052.html#ad50ceae1b0e91d0fd31fe506e690692b">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00144.html#aa4606cff0156ec4237c1571204851bfb">tbb::tbb_allocator< T ></a>
+: <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00061.html#ad50ceae1b0e91d0fd31fe506e690692b">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00159.html#aa4606cff0156ec4237c1571204851bfb">tbb::tbb_allocator< T ></a>
 </li>
 <li>assign()
-: <a class="el" href="a00037.html#ac64c7b627708f0d6b2e5421fb0d49150">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00046.html#a87355dce93d0882aa73333a35c9b367c">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a7bb5399a8499f88cf859eab39f0ed9e0">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#ac64c7b627708f0d6b2e5421fb0d49150">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+</li>
+<li>async_node()
+: <a class="el" href="a00017.html#aea2575eeaf4b1cc483d4d9854b47e823">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>
+</li>
+<li>async_try_put()
+: <a class="el" href="a00017.html#a565f12fc3ce62a14156398c94f401d9c">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>
+, <a class="el" href="a00016.html#a308f7feb8ac2fc3b7cbcf4e5246e78a2">tbb::flow::interface7::internal::async_gateway< Output ></a>
 </li>
 <li>at()
-: <a class="el" href="a00046.html#a629a29eb21e528414b9d5c9becfe05cd">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>automatic
-: <a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">tbb::task_scheduler_init</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html
index 2416922..8e25696 100644
--- a/doc/html/functions_0x62.html
+++ b/doc/html/functions_0x62.html
@@ -75,32 +75,35 @@
 
 <h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
 <li>back()
-: <a class="el" href="a00046.html#aaee3ddf1d05238a8a6887f6d824b76f8">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aaee3ddf1d05238a8a6887f6d824b76f8">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>begin()
-: <a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00052.html#aa097383eb6f90e4a551830fc00b60b3a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00061.html#a91d2f9921342a504668b2cdc3064a846">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00046.html#ab55636c80368ad7d400f3200313fcf5f">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00061.html#ac404d2e08620aca079532124551a646a">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N ></a>
-, <a class="el" href="a00046.html#ad3eb33d1b10a988a87cc708ceb08f3a9">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a070d26debf1f65c83de13f64f91aefdc">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00061.html#aa097383eb6f90e4a551830fc00b60b3a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00070.html#a91d2f9921342a504668b2cdc3064a846">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00053.html#ab55636c80368ad7d400f3200313fcf5f">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00070.html#ac404d2e08620aca079532124551a646a">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N ></a>
+, <a class="el" href="a00053.html#ad3eb33d1b10a988a87cc708ceb08f3a9">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a070d26debf1f65c83de13f64f91aefdc">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>blocked_range()
-: <a class="el" href="a00021.html#aad176ab2cbd0bd73c3c2065761af3ccc">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#a75cae12286f4d5492970ea630a9783b9">tbb::blocked_range< Value ></a>
 </li>
 <li>bucket_count()
-: <a class="el" href="a00035.html#aa067a2a4db1d96f38555369a89deee64">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#aa067a2a4db1d96f38555369a89deee64">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>buffer_node()
-: <a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a152f7bb9ab1f033ec56caa451327634c">tbb::flow::interface7::buffer_node< T, A ></a>
+</li>
+<li>built_successors_type
+: <a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">tbb::flow::interface7::sender< T ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html
index b148f50..bf394f7 100644
--- a/doc/html/functions_0x63.html
+++ b/doc/html/functions_0x63.html
@@ -75,101 +75,96 @@
 
 <h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
 <li>capacity()
-: <a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a96c2ae9dfedc24d62554feb627df76c3">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00042.html#a526487063242569685af8c8d778d39e0">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a96c2ae9dfedc24d62554feb627df76c3">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>cbegin()
-: <a class="el" href="a00061.html#a2af8f195917817ce2b77ff7b6463c344">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00046.html#a7a1c5441fa480c07ef37d9206b6260cc">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00070.html#a2af8f195917817ce2b77ff7b6463c344">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00053.html#a7a1c5441fa480c07ef37d9206b6260cc">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>cend()
-: <a class="el" href="a00046.html#a9ea80faf139feb54d6576c036e4ba898">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00061.html#acf6d3f610c2675eaf8bf2a40853081aa">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00053.html#a9ea80faf139feb54d6576c036e4ba898">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00070.html#acf6d3f610c2675eaf8bf2a40853081aa">tbb::flow::interface7::graph</a>
 </li>
 <li>clear()
-: <a class="el" href="a00037.html#a2459166998a4103880d603b237c429e6">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#ad3384818fb6350a494d5ec62445e59ee">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a526ba408fb3064ef846940d633b8f365">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00089.html#ae53edbda1771eeaa254d78ae6100a762">tbb::pipeline</a>
-, <a class="el" href="a00035.html#ab8295bc260b5e4df883fef11574b84c6">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00045.html#a2459166998a4103880d603b237c429e6">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#ad3384818fb6350a494d5ec62445e59ee">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a246be3920e079ea4847933f106baa98f">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a526ba408fb3064ef846940d633b8f365">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00107.html#ae53edbda1771eeaa254d78ae6100a762">tbb::pipeline</a>
+, <a class="el" href="a00043.html#ab8295bc260b5e4df883fef11574b84c6">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>cols()
-: <a class="el" href="a00022.html#af3bccfaf90126b285491096f78ca9473">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00023.html#a308d7089a1d53ff26770a7040ed817cd">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-</li>
-<li>compact()
-: <a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00025.html#af3bccfaf90126b285491096f78ca9473">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a308d7089a1d53ff26770a7040ed817cd">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>concurrent_bounded_queue()
-: <a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a85f8a800cae02b601f36ad7a655a0126">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>concurrent_hash_map()
-: <a class="el" href="a00035.html#aa3a9767b525144a2afb69ed125714c53">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#aa3a9767b525144a2afb69ed125714c53">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>concurrent_priority_queue()
-: <a class="el" href="a00037.html#a405be01bac4048f214797c287e2571a1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00045.html#aa52cea369b6630699ee78cc42622be9d">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>concurrent_queue()
-: <a class="el" href="a00038.html#a43ac953152e60815c09fe4a4d4a623a9">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00039.html#adc192aba16ef123aebbc4ada0fb53708">tbb::deprecated::concurrent_queue< T, A ></a>
-, <a class="el" href="a00038.html#a49b2e16902577cd3174355be0fa684e5">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#a49b2e16902577cd3174355be0fa684e5">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>concurrent_unordered_map()
-: <a class="el" href="a00040.html#aa45010d834cc5e082321b49fec06f73d">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00047.html#a788a7225915574c1a349abc0f1f653c7">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_multimap()
-: <a class="el" href="a00042.html#a169314a424d47679e4aa343b70f75f00">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00049.html#a5957d29e5fa9f8c53538de3f7a41ebc9">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_multiset()
-: <a class="el" href="a00043.html#ab2fa28924f52578bb59200b9ffa976c8">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00050.html#a15631f048043195863c66bad6533bccb">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_set()
-: <a class="el" href="a00044.html#ae0570fa46456245509cc789e17bd0c21">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00051.html#a6f6d5ecff239ff13000848e925904fe7">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_vector()
-: <a class="el" href="a00046.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#abb0e376a31c3fdb91beaaa98441735f5">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>const_accessor()
-: <a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 </li>
 <li>const_iterator
-: <a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">tbb::blocked_range< Value ></a>
 </li>
 <li>const_reference
-: <a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#a478c2b7f763b2e821e01cc14e13baf4c">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#a478c2b7f763b2e821e01cc14e13baf4c">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#af838e520ce0db2c22369748c019b11cb">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>construct()
-: <a class="el" href="a00144.html#af54fa3029e33cebe5ba64a8538306fdf">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00074.html#ac51b34ef90ecabdd2e0483e25603a15b">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00029.html#ab316f80a66b991801b4ec4ea88b852d9">tbb::cache_aligned_allocator< T ></a>
+: <a class="el" href="a00159.html#af54fa3029e33cebe5ba64a8538306fdf">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00032.html#ab316f80a66b991801b4ec4ea88b852d9">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#ac51b34ef90ecabdd2e0483e25603a15b">tbb::interface6::memory_pool_allocator< T, P ></a>
 </li>
 <li>continue_node()
-: <a class="el" href="a00049.html#a7b96b9eb41772ff1d7a52329ac56b8f0">tbb::flow::interface7::continue_node< Output ></a>
+: <a class="el" href="a00056.html#a7b96b9eb41772ff1d7a52329ac56b8f0">tbb::flow::interface7::continue_node< Output ></a>
 </li>
 <li>continue_receiver()
-: <a class="el" href="a00050.html#a3055f8a570f7558b6eb9e210feb91b90">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00057.html#a3055f8a570f7558b6eb9e210feb91b90">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>count()
-: <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>crbegin()
-: <a class="el" href="a00046.html#a2627db4a7949522ea4727320b23a6348">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a2627db4a7949522ea4727320b23a6348">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>crend()
-: <a class="el" href="a00046.html#ad097225c529dbb24cc0e13a444ab4752">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#ad097225c529dbb24cc0e13a444ab4752">tbb::concurrent_vector< T, A ></a>
 </li>
-<li>current_slot()
-: <a class="el" href="a00135.html#a4c107b6a4cc79183923fe2433d25644f">tbb::interface7::task_arena</a>
+<li>current_thread_index()
+: <a class="el" href="a00150.html#af695a8aa3d2a4f498067c662e287dd8f">tbb::interface7::task_arena</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html
index 1a93670..2fda154 100644
--- a/doc/html/functions_0x64.html
+++ b/doc/html/functions_0x64.html
@@ -75,52 +75,52 @@
 
 <h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
 <li>deallocate()
-: <a class="el" href="a00029.html#a7f7310e046c4b6b8618864de8e27a471">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a9fcf288f2d653972d1bdc0c65abebed4">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00144.html#a28e333e0fff56dd53c20b82cfee430ab">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00111.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T ></a>
+: <a class="el" href="a00032.html#a7f7310e046c4b6b8618864de8e27a471">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a9fcf288f2d653972d1bdc0c65abebed4">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00159.html#a28e333e0fff56dd53c20b82cfee430ab">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00129.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T ></a>
 </li>
 <li>debug_wait_until_empty()
-: <a class="el" href="a00135.html#a07d87dff8c6116ee349684e10f754aeb">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a07d87dff8c6116ee349684e10f754aeb">tbb::interface7::task_arena</a>
 </li>
 <li>decrement
-: <a class="el" href="a00072.html#ac313b6586bf183a33c3196037964547d">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00091.html#ac313b6586bf183a33c3196037964547d">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>decrement_wait_count()
-: <a class="el" href="a00061.html#af16d14eaed1355ae376bb78dde7762c3">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#af16d14eaed1355ae376bb78dde7762c3">tbb::flow::interface7::graph</a>
 </li>
 <li>default_num_threads()
-: <a class="el" href="a00141.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">tbb::task_scheduler_init</a>
 </li>
 <li>deferred
-: <a class="el" href="a00141.html#af0e49ff2f59a4e53c9c07897b57f084d">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#af0e49ff2f59a4e53c9c07897b57f084d">tbb::task_scheduler_init</a>
 </li>
 <li>destroy()
-: <a class="el" href="a00078.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00147.html#a38d3ca480e2758a67bcd7427b156daae">tbb::internal::tbb_exception_ptr</a>
-, <a class="el" href="a00029.html#af2fd054d055403d4ea669fd3af661cc8">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a2223b6469f88aadc432a4b3f88728d0f">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00144.html#ac7b1b393a8ff3399079328c0971c1996">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>
+: <a class="el" href="a00097.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00162.html#a38d3ca480e2758a67bcd7427b156daae">tbb::internal::tbb_exception_ptr</a>
+, <a class="el" href="a00032.html#af2fd054d055403d4ea669fd3af661cc8">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a2223b6469f88aadc432a4b3f88728d0f">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00159.html#ac7b1b393a8ff3399079328c0971c1996">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>
+, <a class="el" href="a00035.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>
 </li>
 <li>detach()
-: <a class="el" href="a00149.html#a80a31a41708872af5557b907f129b19b">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a80a31a41708872af5557b907f129b19b">tbb::internal::tbb_thread_v3</a>
 </li>
 <li>difference_type
-: <a class="el" href="a00037.html#ae010b1fa9c0942504737228474b51a0b">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#a63b42d83a9ed13fc6741e0b4388b0e96">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00045.html#ae010b1fa9c0942504737228474b51a0b">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#a72725361e050c5a981035a20ef1b773e">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#a63b42d83a9ed13fc6741e0b4388b0e96">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>downgrade_to_reader()
-: <a class="el" href="a00114.html#aa693c05221d977856a98270a255fe5df">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00119.html#af0af63035147a3d8422f8c8d7b8d2629">tbb::queuing_rw_mutex::scoped_lock</a>
+: <a class="el" href="a00135.html#aa693c05221d977856a98270a255fe5df">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00131.html#af0af63035147a3d8422f8c8d7b8d2629">tbb::queuing_rw_mutex::scoped_lock</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html
index 0e72ba2..49a83bf 100644
--- a/doc/html/functions_0x65.html
+++ b/doc/html/functions_0x65.html
@@ -75,87 +75,94 @@
 
 <h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
 <li>ec_bad_arg
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_call
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_lib
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_ver
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_no_lib
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_ok
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_abort
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_status
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_throw
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">tbb::interface6::runtime_loader</a>
+</li>
+<li>emplace()
+: <a class="el" href="a00043.html#a382178ea2f00f69096c91bcf76ae7913">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a278d208cd92e5aeccc9c7f6fc192e3ce">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+</li>
+<li>emplace_back()
+: <a class="el" href="a00053.html#afae4c378515b89cc2b0a11c8cf1bcc50">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>empty()
-: <a class="el" href="a00038.html#aeda3156929d0c250faed7b807ca6ab0e">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#aa3f6774107e65642f73c0dcc9a962fe7">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#adfa4b2e13e47ab825dc40c4f195d2bc5">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00021.html#a59dec03416b3fefbf69600f798177710">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00022.html#a5805972c8c41b2681d286f9c9771cf52">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00023.html#aea992e0cd3d105f964a633b1a0a1a05f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-, <a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00037.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00025.html#a5805972c8c41b2681d286f9c9771cf52">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#aea992e0cd3d105f964a633b1a0a1a05f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+, <a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00043.html#a5e05f2a1ca3accfb4252d7ee82d1e990">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#aeda3156929d0c250faed7b807ca6ab0e">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a8c59578f28c5fb4718b0eff43776e879">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#aa3f6774107e65642f73c0dcc9a962fe7">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#adfa4b2e13e47ab825dc40c4f195d2bc5">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00024.html#a59dec03416b3fefbf69600f798177710">tbb::blocked_range< Value ></a>
 </li>
 <li>end()
-: <a class="el" href="a00014.html#ae95620e1159984a2670bd418ed4748d0">tbb::aligned_space< T, N ></a>
-, <a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00046.html#aad2c07653375e4a5f89c33b375eda610">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00061.html#a599e6a885a76db84928b039063c299e4">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00052.html#ad225e2e8a968b131bf05d72f5686b924">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00061.html#a221a7ee0a1f0e69a01add5c1dda43be7">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a599e6a885a76db84928b039063c299e4">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00015.html#ae95620e1159984a2670bd418ed4748d0">tbb::aligned_space< T, N ></a>
+, <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00053.html#aad2c07653375e4a5f89c33b375eda610">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#ad225e2e8a968b131bf05d72f5686b924">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00053.html#a6a4ad0795a19d94df24595e748f0b193">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a5ed0248f10a7aa5045d2cda77dad9588">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>enqueue()
-: <a class="el" href="a00135.html#a8034275ed2fffa68f70484043b90d406">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a8034275ed2fffa68f70484043b90d406">tbb::interface7::task_arena</a>
 </li>
 <li>enumerable_thread_specific()
-: <a class="el" href="a00052.html#a6f0249ee95fa56665da4b6984f3a685a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#a6f0249ee95fa56665da4b6984f3a685a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>erase()
-: <a class="el" href="a00035.html#a5144122dbb946d933b94a92117543b33">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a5144122dbb946d933b94a92117543b33">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>error_code
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader</a>
 </li>
 <li>error_mode
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader</a>
 </li>
 <li>exact_exception_propagation
-: <a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">tbb::filter</a>
+: <a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">tbb::filter</a>
 </li>
 <li>exclude()
-: <a class="el" href="a00035.html#a6fec452b31b8f0e185dc2de64b7128b2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a6fec452b31b8f0e185dc2de64b7128b2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>execute()
-: <a class="el" href="a00135.html#af0c96f325b59d567b4c720f2830adde8">tbb::interface7::task_arena</a>
-, <a class="el" href="a00050.html#adf70ce80d67a565d04e029da461bbe72">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00011.html#aa7cc924b6f0d17578d61fd9002f59f84">tbb::interface6::aggregator</a>
-, <a class="el" href="a00135.html#ab8442c8e9e3e678349409e08cabc7ae2">tbb::interface7::task_arena</a>
+: <a class="el" href="a00057.html#adf70ce80d67a565d04e029da461bbe72">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00150.html#af0c96f325b59d567b4c720f2830adde8">tbb::interface7::task_arena</a>
+, <a class="el" href="a00012.html#aa7cc924b6f0d17578d61fd9002f59f84">tbb::interface6::aggregator</a>
 </li>
 <li>execute_impl()
-: <a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">tbb::interface6::aggregator_ext< handler_type ></a>
+: <a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">tbb::interface6::aggregator_ext< handler_type ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html
index 4322169..f799366 100644
--- a/doc/html/functions_0x66.html
+++ b/doc/html/functions_0x66.html
@@ -75,43 +75,40 @@
 
 <h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
 <li>filter_is_bound
-: <a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">tbb::filter</a>
+: <a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">tbb::filter</a>
 </li>
 <li>filter_is_out_of_order
-: <a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">tbb::filter</a>
+: <a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">tbb::filter</a>
 </li>
 <li>filter_is_serial
-: <a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">tbb::filter</a>
+: <a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">tbb::filter</a>
 </li>
 <li>filter_may_emit_null
-: <a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">tbb::filter</a>
+: <a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">tbb::filter</a>
 </li>
 <li>find()
-: <a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a27a3f296dc170ae25f8e3fd9efa93cff">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>finish()
-: <a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">tbb::interface6::aggregator_operation</a>
+: <a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">tbb::interface6::aggregator_operation</a>
 </li>
 <li>fixed_pool()
-: <a class="el" href="a00056.html#aa3811fe3d437ba2eefa926d52732491a">tbb::interface6::fixed_pool</a>
+: <a class="el" href="a00065.html#aa3811fe3d437ba2eefa926d52732491a">tbb::interface6::fixed_pool</a>
 </li>
 <li>forward_task()
-: <a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>front()
-: <a class="el" href="a00046.html#a9bfc6d733cf543280b691ed8d7b7908a">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a9067259572c2c41d014840d0f9d3cdce">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>function_node()
-: <a class="el" href="a00060.html#ad1cb832fe1edee0b0d75e569b62c9c1c">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>
-, <a class="el" href="a00059.html#aea86b14a72337b597c80d706ca257402">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>
-, <a class="el" href="a00060.html#a1b0413b2ec13a9d2ee22dfeb6555a616">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>
-, <a class="el" href="a00059.html#aecf13ece7b2106f4630e46d6c5327997">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>
+: <a class="el" href="a00068.html#a1bb4915f2b6d6fbfbe6bfacece5639c6">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html
index 1754dc3..6c00e2e 100644
--- a/doc/html/functions_0x67.html
+++ b/doc/html/functions_0x67.html
@@ -75,32 +75,32 @@
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
 <li>get_allocator()
-: <a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00037.html#a312e88e51246da4c516d35abbb30721a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00038.html#a7f2b39f350281590b86db906eca6c480">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00043.html#a121865c574f8ae5cae69ed3d6b7e0511">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a312e88e51246da4c516d35abbb30721a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00046.html#a7f2b39f350281590b86db906eca6c480">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>grainsize()
-: <a class="el" href="a00021.html#ab408f3cf90c85fa9203df5641a2f9bb1">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#ab408f3cf90c85fa9203df5641a2f9bb1">tbb::blocked_range< Value ></a>
 </li>
 <li>graph()
-: <a class="el" href="a00061.html#a656cee3d0240a3f142a450800e6b17c7">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a656cee3d0240a3f142a450800e6b17c7">tbb::flow::interface7::graph</a>
 </li>
 <li>graph_iterator()
-: <a class="el" href="a00062.html#a5082b1f425ffbd4a93533230d6ff99c0">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#a5082b1f425ffbd4a93533230d6ff99c0">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>grow_by()
-: <a class="el" href="a00046.html#ab89c2db5358048debdc282ff995caffb">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aa11fc991cda82cf93789fce31b37a16c">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>grow_to_at_least()
-: <a class="el" href="a00046.html#ae9ef9895e88f9bf036b379035c18f035">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a422d9689ed72a5ef2b6b72f28e4143a2">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html
index 40a0ac6..c24f7fb 100644
--- a/doc/html/functions_0x68.html
+++ b/doc/html/functions_0x68.html
@@ -75,13 +75,13 @@
 
 <h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
 <li>hardware_concurrency()
-: <a class="el" href="a00149.html#a2b761b3d80a7397c645402865e06b1a8">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a23d7a420709b2e2b29b42dea897bd8bc">tbb::internal::tbb_thread_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html
index f9efc98..4daab93 100644
--- a/doc/html/functions_0x69.html
+++ b/doc/html/functions_0x69.html
@@ -75,70 +75,75 @@
 
 <h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
 <li>increment_wait_count()
-: <a class="el" href="a00061.html#ad96c910ae45e6c5d2433bb1d9e910891">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#ad96c910ae45e6c5d2433bb1d9e910891">tbb::flow::interface7::graph</a>
 </li>
 <li>initialize()
-: <a class="el" href="a00135.html#a955131a79f8dc5a0a5c9ffa66a7e7140">tbb::interface7::task_arena</a>
-, <a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c">tbb::task_scheduler_init</a>
-, <a class="el" href="a00135.html#a754d60ba6981461eb7c86afd14d3da2a">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a955131a79f8dc5a0a5c9ffa66a7e7140">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c">tbb::task_scheduler_init</a>
+, <a class="el" href="a00150.html#a754d60ba6981461eb7c86afd14d3da2a">tbb::interface7::task_arena</a>
 </li>
 <li>input_type
-: <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#a7474ed0edad2bb26d9f86065ecf2c93d">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#a7474ed0edad2bb26d9f86065ecf2c93d">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>insert()
-: <a class="el" href="a00035.html#aaebb10a9e9dcb24e63860caa745a281d">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#aaebb10a9e9dcb24e63860caa745a281d">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_construct()
-: <a class="el" href="a00127.html#a4ec484f4df6ec5595ec821ef20bd6cd7">tbb::spin_mutex</a>
+: <a class="el" href="a00145.html#a4ec484f4df6ec5595ec821ef20bd6cd7">tbb::spin_mutex</a>
 </li>
 <li>internal_copy()
-: <a class="el" href="a00035.html#a0bc3593f82b3b4f9839fc051780212ab">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a0bc3593f82b3b4f9839fc051780212ab">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_equal_range()
-: <a class="el" href="a00035.html#a8603f5288db63ec35a16844427e97e42">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a8603f5288db63ec35a16844427e97e42">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_fast_find()
-: <a class="el" href="a00035.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_forward_task()
-: <a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">tbb::flow::interface7::queue_node< T, A ></a>
-, <a class="el" href="a00027.html#a3aa7578ccbd3d5f986869ab8698c037c">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00091.html#a4e6d43ca8748046098fd27ca97e58f3d">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
+: <a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">tbb::flow::interface7::queue_node< T, A ></a>
+, <a class="el" href="a00030.html#a3aa7578ccbd3d5f986869ab8698c037c">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00109.html#a4e6d43ca8748046098fd27ca97e58f3d">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
 </li>
 <li>internal_reg_succ()
-: <a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>internal_rem_succ()
-: <a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>interval_t()
-: <a class="el" href="a00066.html#a95e3e14750bebafe719856176e2737db">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a73b462297173f6bffa15bc5a86c30ef4">tbb::tick_count::interval_t</a>
 </li>
 <li>is_active()
-: <a class="el" href="a00141.html#aed5505d7fed9d5493676aa15c176512c">tbb::task_scheduler_init</a>
-, <a class="el" href="a00135.html#ad85856cefa30d42155a2b122b03efd8c">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#ad85856cefa30d42155a2b122b03efd8c">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#aed5505d7fed9d5493676aa15c176512c">tbb::task_scheduler_init</a>
 </li>
 <li>is_cancelled()
-: <a class="el" href="a00061.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">tbb::flow::interface7::graph</a>
 </li>
 <li>is_divisible()
-: <a class="el" href="a00023.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-, <a class="el" href="a00022.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00021.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00025.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>is_observing()
-: <a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">tbb::internal::task_scheduler_observer_v3</a>
+</li>
+<li>is_splittable_in_proportion
+: <a class="el" href="a00025.html#aa0519760654368000f7ebc87d9bfe898">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a5940c1bd6ba0e8184ef83dea0ae56884">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+, <a class="el" href="a00024.html#ae2b0210e2468092b408123adeb54b01c">tbb::blocked_range< Value ></a>
 </li>
 <li>is_writer
-: <a class="el" href="a00114.html#acfd129dc5106ad1129ba803e67311050">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+: <a class="el" href="a00135.html#acfd129dc5106ad1129ba803e67311050">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00029.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x6a.html b/doc/html/functions_0x6a.html
index d55b423..c90be15 100644
--- a/doc/html/functions_0x6a.html
+++ b/doc/html/functions_0x6a.html
@@ -75,13 +75,13 @@
 
 <h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
 <li>join()
-: <a class="el" href="a00149.html#a044c8727c51e921b0cc43a6b057eb559">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a044c8727c51e921b0cc43a6b057eb559">tbb::internal::tbb_thread_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html
index e835690..c8ced37 100644
--- a/doc/html/functions_0x6c.html
+++ b/doc/html/functions_0x6c.html
@@ -75,34 +75,34 @@
 
 <h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
 <li>limiter_node
-: <a class="el" href="a00106.html#a05ec930a348f7eed564236d00edbda24">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00072.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00124.html#a05ec930a348f7eed564236d00edbda24">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00091.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>load()
-: <a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e">tbb::interface6::runtime_loader</a>
 </li>
 <li>local()
-: <a class="el" href="a00052.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>lock()
-: <a class="el" href="a00107.html#adea997b45dc4a360f38d14bde9c991f2">tbb::recursive_mutex</a>
-, <a class="el" href="a00128.html#a51e207646300a4c242bb4aaa4e04e9b8">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00127.html#a8957e40b0781192419d01d28e5205ec4">tbb::spin_mutex</a>
-, <a class="el" href="a00081.html#a95ff02ee699b34696001db4003c11a3a">tbb::mutex</a>
+: <a class="el" href="a00125.html#adea997b45dc4a360f38d14bde9c991f2">tbb::recursive_mutex</a>
+, <a class="el" href="a00146.html#a51e207646300a4c242bb4aaa4e04e9b8">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00145.html#a8957e40b0781192419d01d28e5205ec4">tbb::spin_mutex</a>
+, <a class="el" href="a00099.html#a95ff02ee699b34696001db4003c11a3a">tbb::mutex</a>
 </li>
 <li>lock_read()
-: <a class="el" href="a00128.html#aa0e3bb644e9021d0f80ee36b03f228e4">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00095.html#a6fd4fcdf0e5c0425d1cc736d644f234f">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00146.html#aa0e3bb644e9021d0f80ee36b03f228e4">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00113.html#a6fd4fcdf0e5c0425d1cc736d644f234f">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>lookup()
-: <a class="el" href="a00035.html#a0435730c6b9dbbe2937fb38b9403147c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a2a319cf46fb9cf9a88aab6c0a20c98b3">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html
index fd0a4e8..8472e46 100644
--- a/doc/html/functions_0x6d.html
+++ b/doc/html/functions_0x6d.html
@@ -75,39 +75,42 @@
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>make_filter
-: <a class="el" href="a00054.html#a21460fde704da22caa222778f5abb140">tbb::interface6::filter_t< T, U ></a>
+: <a class="el" href="a00063.html#a21460fde704da22caa222778f5abb140">tbb::interface6::filter_t< T, U ></a>
 </li>
 <li>malloc_type
-: <a class="el" href="a00144.html#a60463a571d5c20f7762112367261ad94">tbb::tbb_allocator< T ></a>
+: <a class="el" href="a00159.html#a60463a571d5c20f7762112367261ad94">tbb::tbb_allocator< T ></a>
 </li>
 <li>max_size()
-: <a class="el" href="a00035.html#aea0a0e5220a0dcb67da57d0280d36005">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00144.html#a0a2676fb8a2f931961d373b88848c93e">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00046.html#a0ec9c3ab3360e04bdaa5174956a3206d">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00029.html#a4b945b3180ea3dfe16dfa048f4591c6d">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a2bded8e3fb2cec32b48771e7a1bbb838">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00111.html#afaa85d739b466699cf669116fd10d175">tbb::scalable_allocator< T ></a>
+: <a class="el" href="a00043.html#aea0a0e5220a0dcb67da57d0280d36005">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00159.html#a0a2676fb8a2f931961d373b88848c93e">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00053.html#a0ec9c3ab3360e04bdaa5174956a3206d">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00032.html#a4b945b3180ea3dfe16dfa048f4591c6d">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a2bded8e3fb2cec32b48771e7a1bbb838">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00129.html#afaa85d739b466699cf669116fd10d175">tbb::scalable_allocator< T ></a>
+</li>
+<li>may_sleep()
+: <a class="el" href="a00157.html#a2390325945912ee7ce58cd9700664ea4">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>memory_pool()
-: <a class="el" href="a00073.html#af4c36829a159eac04d630ac5a99b9354">tbb::interface6::memory_pool< Alloc ></a>
+: <a class="el" href="a00092.html#af4c36829a159eac04d630ac5a99b9354">tbb::interface6::memory_pool< Alloc ></a>
 </li>
 <li>move()
-: <a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>
+: <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>
+, <a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>
 </li>
-<li>mutex()
-: <a class="el" href="a00081.html#ad1b280c954ffc8b8b3e63e4ee4144035">tbb::mutex</a>
-, <a class="el" href="a00114.html#a8d70c5a2348e30a6979bfbf677328dc4">tbb::spin_rw_mutex_v3::scoped_lock</a>
+<li>mutex
+: <a class="el" href="a00135.html#a8d70c5a2348e30a6979bfbf677328dc4">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00099.html#ad1b280c954ffc8b8b3e63e4ee4144035">tbb::mutex</a>
 </li>
 <li>my_exception_data
-: <a class="el" href="a00078.html#adba063da80054afe64d5268711084d9b">tbb::movable_exception< ExceptionData ></a>
+: <a class="el" href="a00097.html#adba063da80054afe64d5268711084d9b">tbb::movable_exception< ExceptionData ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html
index c0e6cd5..00eced7 100644
--- a/doc/html/functions_0x6e.html
+++ b/doc/html/functions_0x6e.html
@@ -75,22 +75,22 @@
 
 <h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
 <li>name()
-: <a class="el" href="a00146.html#a282bb7dce5f157d044d14d50cd6ff35c">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#a23426113851b78d3f0069956afd21976">tbb::captured_exception</a>
-, <a class="el" href="a00078.html#a65dd805ed2424f1d2d0998f5567a9690">tbb::movable_exception< ExceptionData ></a>
+: <a class="el" href="a00161.html#a282bb7dce5f157d044d14d50cd6ff35c">tbb::tbb_exception</a>
+, <a class="el" href="a00035.html#a23426113851b78d3f0069956afd21976">tbb::captured_exception</a>
+, <a class="el" href="a00097.html#a65dd805ed2424f1d2d0998f5567a9690">tbb::movable_exception< ExceptionData ></a>
 </li>
 <li>native_handle_type
-: <a class="el" href="a00081.html#abbe0cd12246121753ace00a5a12a90b0">tbb::mutex</a>
-, <a class="el" href="a00107.html#a3d40334b0e26d5addfde5596e7f9aaec">tbb::recursive_mutex</a>
+: <a class="el" href="a00099.html#abbe0cd12246121753ace00a5a12a90b0">tbb::mutex</a>
+, <a class="el" href="a00125.html#a3d40334b0e26d5addfde5596e7f9aaec">tbb::recursive_mutex</a>
 </li>
 <li>now()
-: <a class="el" href="a00155.html#a74dcecde7431ff4591d7c46fc1d50d7e">tbb::tick_count</a>
+: <a class="el" href="a00170.html#a74dcecde7431ff4591d7c46fc1d50d7e">tbb::tick_count</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html
index 49c8f69..4f5b664 100644
--- a/doc/html/functions_0x6f.html
+++ b/doc/html/functions_0x6f.html
@@ -75,81 +75,76 @@
 
 <h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
 <li>observe()
-: <a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">tbb::internal::task_scheduler_observer_v3</a>
+, <a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>on_scheduler_entry()
-: <a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>on_scheduler_exit()
-: <a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">tbb::internal::task_scheduler_observer_v3</a>
-</li>
-<li>on_scheduler_leaving()
-: <a class="el" href="a00142.html#afd3842518d9a37efb3c8455b22950bb8">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>operator delete()
-: <a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">tbb::tbb_exception</a>
+: <a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">tbb::tbb_exception</a>
 </li>
 <li>operator!=()
-: <a class="el" href="a00062.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator()()
-: <a class="el" href="a00026.html#a16e714a5e77dbf8daf81973df30722d4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+: <a class="el" href="a00029.html#a16e714a5e77dbf8daf81973df30722d4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
 </li>
 <li>operator*()
-: <a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#a8adf04e33e7c8c876ba849f26807713a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 , <a class="el" href="a00010.html#a4e03905a33fbdafdb99113cc68d2bd4b">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
-, <a class="el" href="a00062.html#a1daffd203bebae367ed0f32917048f22">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00071.html#a1daffd203bebae367ed0f32917048f22">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator+
-: <a class="el" href="a00066.html#ac8910ee3b69f68eb905af787c273e9a8">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#ac8910ee3b69f68eb905af787c273e9a8">tbb::tick_count::interval_t</a>
 </li>
 <li>operator++()
-: <a class="el" href="a00062.html#ab84587ed134f01886f6a0d64d5a6ccef">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#ab84587ed134f01886f6a0d64d5a6ccef">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator+=()
-: <a class="el" href="a00066.html#a19bf32f4541252daaa6b09fd33fa9177">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a19bf32f4541252daaa6b09fd33fa9177">tbb::tick_count::interval_t</a>
 </li>
 <li>operator-
-: <a class="el" href="a00066.html#a3d11133daa9a7d3c903d070293278f8f">tbb::tick_count::interval_t</a>
-, <a class="el" href="a00155.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count</a>
-, <a class="el" href="a00066.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a3d11133daa9a7d3c903d070293278f8f">tbb::tick_count::interval_t</a>
+, <a class="el" href="a00170.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count</a>
+, <a class="el" href="a00085.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count::interval_t</a>
 </li>
 <li>operator-=()
-: <a class="el" href="a00066.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">tbb::tick_count::interval_t</a>
 </li>
 <li>operator->()
-: <a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 , <a class="el" href="a00010.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
-, <a class="el" href="a00062.html#abfb28c989f76822e26b47211febe3d72">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00071.html#abfb28c989f76822e26b47211febe3d72">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator=()
-: <a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00043.html#a01e685fab9a39cbd69c53bb3b8befce6">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00046.html#a6e57d73b199ccd03922898e9da4888fb">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00042.html#adac1da59fdf8b536f95ea5be3134785f">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00044.html#ab8bc097b955ce129641eb3cf9f4cd4d5">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00062.html#ada73cea77a417f0df629eeaf4c1e2002">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
-, <a class="el" href="a00037.html#a32eb9c65caf399b62fac7c13e65af05f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00046.html#a920384aece0eb8beea3049956320ec91">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00035.html#a49e4e3979b46669a4712e7d3208e75f2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00037.html#ac0c3f41b10f04547f3438517c40cf8a5">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00040.html#ad641e7a34077b6a490625da4858b509a">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00053.html#a0d26889a94203cdb5f5460fade7497c7">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00071.html#ada73cea77a417f0df629eeaf4c1e2002">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00053.html#a8498a1335a3bbac2f4925a4e8d70cdb8">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#a9b21bd56aff8c412c5fcdd0d88b48c98">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00043.html#aac73665b1a55e3de7332f36598488252">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00053.html#a1fe7f0b60bbf304890a9293a35e6819d">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00043.html#a63e01b1f79c287ae0257ccfd483fd90a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a7eaa05dcb74604e45e0e2c55e1e456e9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>operator==()
-: <a class="el" href="a00062.html#a3b0d834dffd2a99a596e9541b7a96d2a">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#a3b0d834dffd2a99a596e9541b7a96d2a">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator[]()
-: <a class="el" href="a00046.html#abd6ca67f2f97fafca48395af2e693e73">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#abd6ca67f2f97fafca48395af2e693e73">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>output_type
-: <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">tbb::flow::interface7::sender< T ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html
index 194569a..1bf9a20 100644
--- a/doc/html/functions_0x70.html
+++ b/doc/html/functions_0x70.html
@@ -75,52 +75,48 @@
 
 <h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
 <li>page_range_type
-: <a class="el" href="a00023.html#a8cdc866378a12ce198da870d0439676f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+: <a class="el" href="a00026.html#a8cdc866378a12ce198da870d0439676f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>pages()
-: <a class="el" href="a00023.html#a5b794fd53ba92106aeafa4eed85731d4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+: <a class="el" href="a00026.html#a5b794fd53ba92106aeafa4eed85731d4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>parallel_while()
-: <a class="el" href="a00088.html#a220a7307358aa36802c8754ea45ca385">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00106.html#a220a7307358aa36802c8754ea45ca385">tbb::parallel_while< Body ></a>
 </li>
 <li>pipeline()
-: <a class="el" href="a00089.html#afe7b7bd9b2617c2b69170675a478b2bd">tbb::pipeline</a>
+: <a class="el" href="a00107.html#afe7b7bd9b2617c2b69170675a478b2bd">tbb::pipeline</a>
 </li>
 <li>pop()
-: <a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">tbb::concurrent_bounded_queue< T, A ></a>
-</li>
-<li>pop_if_present()
-: <a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">tbb::deprecated::concurrent_queue< T, A ></a>
+: <a class="el" href="a00042.html#a87926c31967a918ce80690a9ed5d6fa8">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>predecessor_type
-: <a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>priority_queue_node()
-: <a class="el" href="a00091.html#ab295c7b50ff804f7276609a25016e7ca">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
+: <a class="el" href="a00109.html#ab295c7b50ff804f7276609a25016e7ca">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
 </li>
 <li>process()
-: <a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">tbb::interface6::aggregator_ext< handler_type ></a>
+: <a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">tbb::interface6::aggregator_ext< handler_type ></a>
 </li>
 <li>process_item()
-: <a class="el" href="a00150.html#ac99258407f382d84568a510075074fc7">tbb::thread_bound_filter</a>
+: <a class="el" href="a00165.html#ac99258407f382d84568a510075074fc7">tbb::thread_bound_filter</a>
 </li>
 <li>push()
-: <a class="el" href="a00038.html#a9330ca6590980d80ef7b1ea3613a699a">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00037.html#a1bfa0e7269b3407d6bb5c706264d2406">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00042.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#a9330ca6590980d80ef7b1ea3613a699a">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00045.html#a1bfa0e7269b3407d6bb5c706264d2406">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#a62a03e9c185562254ecb4104f38c106d">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00045.html#a72ff26945c61b4ce3ce7ca0f9b9aaa48">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>push_back()
-: <a class="el" href="a00046.html#a4a5c85a9e6ff82e15c18da47a95b518f">tbb::concurrent_vector< T, A ></a>
-</li>
-<li>push_if_not_full()
-: <a class="el" href="a00039.html#a129cde9f5f101ddd623619c838be07f3">tbb::deprecated::concurrent_queue< T, A ></a>
+: <a class="el" href="a00053.html#ad68d1675fedef232bfae35f200ba007d">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x71.html b/doc/html/functions_0x71.html
index 597059d..0526c6f 100644
--- a/doc/html/functions_0x71.html
+++ b/doc/html/functions_0x71.html
@@ -75,19 +75,19 @@
 
 <h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
 <li>queue_node()
-: <a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">tbb::flow::interface7::queue_node< T, A ></a>
+: <a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">tbb::flow::interface7::queue_node< T, A ></a>
 </li>
 <li>queuing_mutex()
-: <a class="el" href="a00093.html#a0e58fce2062ae349a30b320b7fdc9155">tbb::queuing_mutex</a>
+: <a class="el" href="a00111.html#a0e58fce2062ae349a30b320b7fdc9155">tbb::queuing_mutex</a>
 </li>
 <li>queuing_rw_mutex()
-: <a class="el" href="a00094.html#a23de1ac415b6f54b778c8fd6ec6073e0">tbb::queuing_rw_mutex</a>
+: <a class="el" href="a00112.html#a23de1ac415b6f54b778c8fd6ec6073e0">tbb::queuing_rw_mutex</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html
index 6d53c2e..102d7c5 100644
--- a/doc/html/functions_0x72.html
+++ b/doc/html/functions_0x72.html
@@ -75,104 +75,104 @@
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>range()
-: <a class="el" href="a00046.html#a8201f65735edcc28aeec95b6e73d75b6">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a25b9153dfe994c8122a7f0227cffe793">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00053.html#a8201f65735edcc28aeec95b6e73d75b6">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a25b9153dfe994c8122a7f0227cffe793">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>rbegin()
-: <a class="el" href="a00046.html#a9a2f8dce0adcbef8e29273c23723a78e">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a9a2f8dce0adcbef8e29273c23723a78e">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>reader_writer_lock()
-: <a class="el" href="a00095.html#abceda6c50b0c36eacbef51f4682742f3">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#abceda6c50b0c36eacbef51f4682742f3">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>recursive_mutex()
-: <a class="el" href="a00107.html#a47eb6e7e7ffa5d35341125792b17236b">tbb::recursive_mutex</a>
+: <a class="el" href="a00125.html#a47eb6e7e7ffa5d35341125792b17236b">tbb::recursive_mutex</a>
 </li>
 <li>reference
-: <a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#ab26ddf11b15d61ac87e6c1ae67af92a2">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#ab26ddf11b15d61ac87e6c1ae67af92a2">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a5fa4002bcd265d9d3ed305e3b686f1da">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>register_predecessor()
-: <a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#a9ff043995b7b4d39ab0ec41c9e3628bf">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00072.html#aca5ef5cec3b26227d71686d99ee04f7e">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#a9ff043995b7b4d39ab0ec41c9e3628bf">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00091.html#aca5ef5cec3b26227d71686d99ee04f7e">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>register_successor()
-: <a class="el" href="a00126.html#abf1627cf40dc62fa456fbf23bbcd2efa">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00025.html#a36b5c86faa58a264d899b7c26286c80e">tbb::flow::interface7::broadcast_node< T ></a>
-, <a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00072.html#ad2cfd954eb06732f7bae8f2c8fe28735">tbb::flow::interface7::limiter_node< T ></a>
-, <a class="el" href="a00124.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>
+: <a class="el" href="a00144.html#a27aa895c54d59f570f267c26f14f0cf1">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00028.html#a36b5c86faa58a264d899b7c26286c80e">tbb::flow::interface7::broadcast_node< T ></a>
+, <a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00091.html#ad2cfd954eb06732f7bae8f2c8fe28735">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00142.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>
 </li>
 <li>rehash()
-: <a class="el" href="a00035.html#adf1fa9470c605731063e5949f0418eb7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#adf1fa9470c605731063e5949f0418eb7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>release()
-: <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00116.html#a1a1590281ccca912229a689d920fd78a">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#aaa065e48b428b8d43e9bb931ba9e6f6c">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a50fb02b77f02a01c74754d163157ec77">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a7e801b0c28fd8395fec400b96acc5c34">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00140.html#a1a1590281ccca912229a689d920fd78a">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#aaa065e48b428b8d43e9bb931ba9e6f6c">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a50fb02b77f02a01c74754d163157ec77">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a7e801b0c28fd8395fec400b96acc5c34">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>remove_predecessor()
-: <a class="el" href="a00072.html#a8aca7b4bd4ee13faf713021eb0d86735">tbb::flow::interface7::limiter_node< T ></a>
-, <a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#aea58a2200f20acd9cda829ba6958b22a">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00091.html#a8aca7b4bd4ee13faf713021eb0d86735">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#aea58a2200f20acd9cda829ba6958b22a">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>remove_successor()
-: <a class="el" href="a00025.html#a22d463b071df6e0b7ca11df27bb2637e">tbb::flow::interface7::broadcast_node< T ></a>
-, <a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a97c80882ddbdfdcf50761e606f231123">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00072.html#ac7b092dcc2808abf02816d4ac9c86e66">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00028.html#a22d463b071df6e0b7ca11df27bb2637e">tbb::flow::interface7::broadcast_node< T ></a>
+, <a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a313af00af7584f4b9aee1e1bacff4041">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00091.html#ac7b092dcc2808abf02816d4ac9c86e66">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>rend()
-: <a class="el" href="a00046.html#a618f38279a370c18f73ea2c29ded9cb9">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a618f38279a370c18f73ea2c29ded9cb9">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>reserve()
-: <a class="el" href="a00046.html#a0b3284684328c58c0228c9a697ef3594">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a0b3284684328c58c0228c9a697ef3594">tbb::concurrent_vector< T, A ></a>
 </li>
-<li>reset()
-: <a class="el" href="a00126.html#a1874ab9048214245bff7b26c0d9e814b">tbb::flow::interface7::source_node< Output ></a>
+<li>reset_node()
+: <a class="el" href="a00144.html#aed1fa277170d6cee6d1437f1258ac544">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>resize()
-: <a class="el" href="a00046.html#a65e53a98a1e1fdb515fdc2b84e2314e8">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a65e53a98a1e1fdb515fdc2b84e2314e8">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>resolution()
-: <a class="el" href="a00155.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">tbb::tick_count</a>
+: <a class="el" href="a00170.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">tbb::tick_count</a>
 </li>
 <li>root_task()
-: <a class="el" href="a00061.html#ae5f59627a7d130cf289f105a849ad3f0">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#ae5f59627a7d130cf289f105a849ad3f0">tbb::flow::interface7::graph</a>
 </li>
 <li>row_range_type
-: <a class="el" href="a00022.html#ada609b296a9af0591cc34761b8538100">tbb::blocked_range2d< RowValue, ColValue ></a>
+: <a class="el" href="a00025.html#ada609b296a9af0591cc34761b8538100">tbb::blocked_range2d< RowValue, ColValue ></a>
 </li>
 <li>rows()
-: <a class="el" href="a00023.html#aeac1def585af81467573f30ebb42cb4f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-, <a class="el" href="a00022.html#a4f7299e74c40df57dee2433c07ce65ae">tbb::blocked_range2d< RowValue, ColValue ></a>
+: <a class="el" href="a00026.html#aeac1def585af81467573f30ebb42cb4f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+, <a class="el" href="a00025.html#a4f7299e74c40df57dee2433c07ce65ae">tbb::blocked_range2d< RowValue, ColValue ></a>
 </li>
 <li>run()
-: <a class="el" href="a00089.html#a270dba81f7dd9935be7f3d69db907ff4">tbb::pipeline</a>
-, <a class="el" href="a00061.html#a6e428c2d7c8780f3c2587a71c4d92466">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00089.html#ac9ee9080cfc080c40a7ee7cb03a62637">tbb::pipeline</a>
-, <a class="el" href="a00088.html#a20607ba5faa958144787d980aa850c16">tbb::parallel_while< Body ></a>
-, <a class="el" href="a00061.html#ac0a03f1d59dc2ccb9526995599c2c83c">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00107.html#a270dba81f7dd9935be7f3d69db907ff4">tbb::pipeline</a>
+, <a class="el" href="a00070.html#a6e428c2d7c8780f3c2587a71c4d92466">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00107.html#ac9ee9080cfc080c40a7ee7cb03a62637">tbb::pipeline</a>
+, <a class="el" href="a00106.html#a20607ba5faa958144787d980aa850c16">tbb::parallel_while< Body ></a>
+, <a class="el" href="a00070.html#ac0a03f1d59dc2ccb9526995599c2c83c">tbb::flow::interface7::graph</a>
 </li>
 <li>run_and_put_task
-: <a class="el" href="a00106.html#abaf9bf74ca5f2854d09f5f07337280eb">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#abaf9bf74ca5f2854d09f5f07337280eb">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>runtime_loader()
-: <a class="el" href="a00110.html#a3e0932074d2f3ad04605e7e5da88c561">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a3e0932074d2f3ad04605e7e5da88c561">tbb::interface6::runtime_loader</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html
index d650850..bff3529 100644
--- a/doc/html/functions_0x73.html
+++ b/doc/html/functions_0x73.html
@@ -75,88 +75,88 @@
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
 <li>scoped_lock()
-: <a class="el" href="a00116.html#a23122745ccd5fc2498fcbbd5ced09e06">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#aa82d9da0dcfe5b21f1c08473f8223105">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a0a9962a3932cfbd0d12cb197494f951b">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a1ae3792726dcff8da1f2c5366fb2b754">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a4287be975cf2448c95f068b065c45107">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#a0afe0107eb0aae613e726f67624d2fca">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#af1b55ca1839c9c7c2cd779cd2dd9c474">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a285b355121772c874a7ecaaf4d347224">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00118.html#aaed982d8c3f1e84298f9842063694f3c">tbb::interface5::reader_writer_lock::scoped_lock</a>
+: <a class="el" href="a00140.html#a23122745ccd5fc2498fcbbd5ced09e06">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#aa82d9da0dcfe5b21f1c08473f8223105">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a0a9962a3932cfbd0d12cb197494f951b">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a1ae3792726dcff8da1f2c5366fb2b754">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a4287be975cf2448c95f068b065c45107">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#a0afe0107eb0aae613e726f67624d2fca">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#af1b55ca1839c9c7c2cd779cd2dd9c474">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a285b355121772c874a7ecaaf4d347224">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00133.html#aaed982d8c3f1e84298f9842063694f3c">tbb::interface5::reader_writer_lock::scoped_lock</a>
 </li>
 <li>scoped_lock_read()
-: <a class="el" href="a00123.html#a9d3120a23016dabd4cc2683fa561ee5a">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
+: <a class="el" href="a00141.html#a9d3120a23016dabd4cc2683fa561ee5a">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
 </li>
 <li>seconds()
-: <a class="el" href="a00066.html#abe81446bbbb6b6e98d854b91acf47809">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#abe81446bbbb6b6e98d854b91acf47809">tbb::tick_count::interval_t</a>
 </li>
 <li>sequencer_node()
-: <a class="el" href="a00125.html#a0e8d3d486edc7f70c81b36ce9421c11a">tbb::flow::interface7::sequencer_node< T, A ></a>
+: <a class="el" href="a00143.html#a0e8d3d486edc7f70c81b36ce9421c11a">tbb::flow::interface7::sequencer_node< T, A ></a>
 </li>
 <li>set_capacity()
-: <a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a768699675813575eec08c1f43afda395">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>set_state()
-: <a class="el" href="a00081.html#a0857c4596d7d5de09fe402ccd41d3e42">tbb::mutex</a>
+: <a class="el" href="a00099.html#a0857c4596d7d5de09fe402ccd41d3e42">tbb::mutex</a>
 </li>
 <li>shrink_to_fit()
-: <a class="el" href="a00046.html#aba805b5225ad3399550f78ea15e51e93">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aba805b5225ad3399550f78ea15e51e93">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>size()
-: <a class="el" href="a00021.html#a347ef8caa40edca3b7f475f182281140">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00037.html#a7d86ba200474b51ec99a6b917429c6bb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a4c33c5390783e17daf2b25d53ae919fb">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00024.html#a347ef8caa40edca3b7f475f182281140">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a7d86ba200474b51ec99a6b917429c6bb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#a9d6c20fd8c193c12b6a7b0c3101fd966">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a4c33c5390783e17daf2b25d53ae919fb">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>size_type
-: <a class="el" href="a00057.html#a8b84f8f2cc4499f49d17141eaedc99c0">tbb::interface6::flattened2d< Container ></a>
-, <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#a9f883e49afea16293ba92da779981bb8">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00066.html#a8b84f8f2cc4499f49d17141eaedc99c0">tbb::interface6::flattened2d< Container ></a>
+, <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#a9f883e49afea16293ba92da779981bb8">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>source_node()
-: <a class="el" href="a00126.html#a5730a4677f5bfdf6ff6e45e31a249d37">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a5730a4677f5bfdf6ff6e45e31a249d37">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>spin_mutex()
-: <a class="el" href="a00127.html#a6c96196965bf7df426311d282ad3c378">tbb::spin_mutex</a>
+: <a class="el" href="a00145.html#a6c96196965bf7df426311d282ad3c378">tbb::spin_mutex</a>
 </li>
 <li>spin_rw_mutex_v3()
-: <a class="el" href="a00128.html#ad30fc1ffa0a2b8134e177e02c5821d7f">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#ad30fc1ffa0a2b8134e177e02c5821d7f">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>start()
-: <a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">tbb::interface6::aggregator_operation</a>
+: <a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">tbb::interface6::aggregator_operation</a>
 </li>
 <li>start_routine()
-: <a class="el" href="a00153.html#a29003179f98d768622c72b9ab5cfe8f6">tbb::internal::thread_closure_2< F, X, Y ></a>
-, <a class="el" href="a00152.html#a33d533b3301c45708c6252d040f855a6">tbb::internal::thread_closure_1< F, X ></a>
+: <a class="el" href="a00168.html#a29003179f98d768622c72b9ab5cfe8f6">tbb::internal::thread_closure_2< F, X, Y ></a>
+, <a class="el" href="a00167.html#a33d533b3301c45708c6252d040f855a6">tbb::internal::thread_closure_1< F, X ></a>
 </li>
 <li>state
-: <a class="el" href="a00128.html#aa28625051072472ccd8a2b19405d6fb3">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#aa28625051072472ccd8a2b19405d6fb3">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>status()
-: <a class="el" href="a00110.html#a85bf9ee021a2076a3ac7cfd70aae7345">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a85bf9ee021a2076a3ac7cfd70aae7345">tbb::interface6::runtime_loader</a>
 </li>
 <li>status_t
-: <a class="el" href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>successor_type
-: <a class="el" href="a00126.html#ae354d135ba9aceb6ca41464fff027666">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">tbb::flow::interface7::sender< T ></a>
+: <a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">tbb::flow::interface7::sender< T ></a>
 </li>
 <li>swap()
-: <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00046.html#a8603bd57324fb6b60ba006884c95279d">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00037.html#aa6ee6d356e538b67a7cb4e242e6e36c9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00053.html#a8603bd57324fb6b60ba006884c95279d">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#aa6ee6d356e538b67a7cb4e242e6e36c9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html
index b677819..538db27 100644
--- a/doc/html/functions_0x74.html
+++ b/doc/html/functions_0x74.html
@@ -75,97 +75,97 @@
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>task_arena()
-: <a class="el" href="a00135.html#a6035737ce1a8db376d06880dae9d0c40">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a6035737ce1a8db376d06880dae9d0c40">tbb::interface7::task_arena</a>
 </li>
 <li>task_scheduler_observer()
-: <a class="el" href="a00142.html#a36e7e0c466320029d5a3e50a573e04c1">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00157.html#a36e7e0c466320029d5a3e50a573e04c1">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>task_scheduler_observer_v3()
-: <a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>tbb_thread_v3()
-: <a class="el" href="a00149.html#a672a5367e687635c869926bf8a986296">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a672a5367e687635c869926bf8a986296">tbb::internal::tbb_thread_v3</a>
 </li>
 <li>terminate()
-: <a class="el" href="a00135.html#aecb3eedeacfe8469a91c17525dae7fc9">tbb::interface7::task_arena</a>
-, <a class="el" href="a00141.html#a15d5dca7f79c5769bb96f674e4da0c04">tbb::task_scheduler_init</a>
+: <a class="el" href="a00150.html#aecb3eedeacfe8469a91c17525dae7fc9">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#a15d5dca7f79c5769bb96f674e4da0c04">tbb::task_scheduler_init</a>
 </li>
 <li>thread_stack_size
-: <a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">tbb::task_scheduler_init</a>
 </li>
 <li>throw_self()
-: <a class="el" href="a00147.html#a1713aa9a6a3850049d34358397a8ed81">tbb::internal::tbb_exception_ptr</a>
-, <a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>
-, <a class="el" href="a00078.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>
+: <a class="el" href="a00162.html#a1713aa9a6a3850049d34358397a8ed81">tbb::internal::tbb_exception_ptr</a>
+, <a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>
+, <a class="el" href="a00035.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>
+, <a class="el" href="a00097.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>
 </li>
 <li>tick_count()
-: <a class="el" href="a00155.html#a9f1daa0b7a4feb800f802b4be1f1e497">tbb::tick_count</a>
+: <a class="el" href="a00170.html#a9f1daa0b7a4feb800f802b4be1f1e497">tbb::tick_count</a>
 </li>
 <li>try_acquire()
-: <a class="el" href="a00116.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#ab4800ba9e743cd91f152036a6689b0e9">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a4843d40dddc37c1aa3444e27d35d2433">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a76acbd67c74906f6ea33a1de6fd443ce">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#abf17ada91882fd70f139c503c0220f16">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00140.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#ab4800ba9e743cd91f152036a6689b0e9">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a4843d40dddc37c1aa3444e27d35d2433">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a76acbd67c74906f6ea33a1de6fd443ce">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#abf17ada91882fd70f139c503c0220f16">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>try_consume()
-: <a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_get()
-: <a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a038c6b2b406d496244617a2d6dc01581">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a038c6b2b406d496244617a2d6dc01581">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_lock()
-: <a class="el" href="a00081.html#a480283933106941125717499f9c5ad42">tbb::mutex</a>
-, <a class="el" href="a00095.html#a1739e842af52925a2d4a7e821b9b3b8d">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00107.html#a8b181d9aaa95444145222cfe206e8094">tbb::recursive_mutex</a>
-, <a class="el" href="a00127.html#a003ffb196d22bf22ca22142338b7eeab">tbb::spin_mutex</a>
-, <a class="el" href="a00128.html#ab6ec20b1ec43a49c8c2908984e35b5e8">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00113.html#a1739e842af52925a2d4a7e821b9b3b8d">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00125.html#a8b181d9aaa95444145222cfe206e8094">tbb::recursive_mutex</a>
+, <a class="el" href="a00145.html#a003ffb196d22bf22ca22142338b7eeab">tbb::spin_mutex</a>
+, <a class="el" href="a00146.html#ab6ec20b1ec43a49c8c2908984e35b5e8">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00099.html#a480283933106941125717499f9c5ad42">tbb::mutex</a>
 </li>
 <li>try_lock_read()
-: <a class="el" href="a00128.html#ac932f65b0b66320688e7957ce9c3e2c1">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00095.html#a9c7aa04e00202c9a1197cb6d870cabb4">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#a9c7aa04e00202c9a1197cb6d870cabb4">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00146.html#ac932f65b0b66320688e7957ce9c3e2c1">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>try_pop()
-: <a class="el" href="a00037.html#a954177b09e184cf3db47f1b180a7ef5e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#aabb1acef18196fa11ed7db8e046c3943">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00045.html#a954177b09e184cf3db47f1b180a7ef5e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#a3086cb4dcdeee245ef5cf34f72fb3e10">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#aabb1acef18196fa11ed7db8e046c3943">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>try_process_item()
-: <a class="el" href="a00150.html#a12cfa43c620066a8783529cc8519c6f9">tbb::thread_bound_filter</a>
+: <a class="el" href="a00165.html#a12cfa43c620066a8783529cc8519c6f9">tbb::thread_bound_filter</a>
 </li>
 <li>try_push()
-: <a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a03d93a240841a21788396bebd71c51bd">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>try_put()
-: <a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>try_put_task()
-: <a class="el" href="a00025.html#a07d030b43c6e2d9169a7e58db30a547b">tbb::flow::interface7::broadcast_node< T ></a>
-, <a class="el" href="a00072.html#a0551cf104b35669b5f5153c1d03d5d2d">tbb::flow::interface7::limiter_node< T ></a>
-, <a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00028.html#a07d030b43c6e2d9169a7e58db30a547b">tbb::flow::interface7::broadcast_node< T ></a>
+, <a class="el" href="a00091.html#a0551cf104b35669b5f5153c1d03d5d2d">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_release()
-: <a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00126.html#a309c65a2d0208a1072f7e852198d461d">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a309c65a2d0208a1072f7e852198d461d">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_reserve()
-: <a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#aabb0d505d684d173b1a2c976bf0781a6">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#aabb0d505d684d173b1a2c976bf0781a6">tbb::flow::interface7::source_node< Output ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html
index e48ab91..a3095b0 100644
--- a/doc/html/functions_0x75.html
+++ b/doc/html/functions_0x75.html
@@ -75,24 +75,24 @@
 
 <h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
 <li>unlock()
-: <a class="el" href="a00081.html#a721eeae7ba16f8b92535f4534b583874">tbb::mutex</a>
-, <a class="el" href="a00095.html#a4c55c4dbde63e950fdc843c9b01a174f">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00127.html#adfcf8fe840aa73c08c2cadd570fd48fd">tbb::spin_mutex</a>
-, <a class="el" href="a00128.html#ab04321ed2cdf12ac5825c54591028fc0">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00107.html#af57e8d25e0e7614e98bcfa50bc9416c8">tbb::recursive_mutex</a>
+: <a class="el" href="a00099.html#a721eeae7ba16f8b92535f4534b583874">tbb::mutex</a>
+, <a class="el" href="a00113.html#a4c55c4dbde63e950fdc843c9b01a174f">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00145.html#adfcf8fe840aa73c08c2cadd570fd48fd">tbb::spin_mutex</a>
+, <a class="el" href="a00146.html#ab04321ed2cdf12ac5825c54591028fc0">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00125.html#af57e8d25e0e7614e98bcfa50bc9416c8">tbb::recursive_mutex</a>
 </li>
 <li>unsafe_size()
-: <a class="el" href="a00038.html#aad4b253ba595637b0b146eb6565556f2">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#aad4b253ba595637b0b146eb6565556f2">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>upgrade_to_writer()
-: <a class="el" href="a00119.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#afbe5de57eadc457518df7a1bb0d30c00">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00131.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#afbe5de57eadc457518df7a1bb0d30c00">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html
index 55906fa..6ac33bf 100644
--- a/doc/html/functions_0x76.html
+++ b/doc/html/functions_0x76.html
@@ -75,18 +75,18 @@
 
 <h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
 <li>value_type
-: <a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">tbb::parallel_while< Body ></a>
-, <a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#aeeee93a7ac2eecc80bbf3e857e900538">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00037.html#a2c75d97ae429019363ab6fd1a872512e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00054.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">tbb::parallel_while< Body ></a>
+, <a class="el" href="a00042.html#a6eb564625fef03dd9a5881d5d4e52f9f">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#aeeee93a7ac2eecc80bbf3e857e900538">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 , <a class="el" href="a00010.html#a850178bbdcdbc4cf5955cab37eb8c42c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html
index 98ecf24..ad0495e 100644
--- a/doc/html/functions_0x77.html
+++ b/doc/html/functions_0x77.html
@@ -75,21 +75,21 @@
 
 <h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
 <li>wait_for_all()
-: <a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db">tbb::flow::interface7::graph</a>
 </li>
 <li>what()
-: <a class="el" href="a00146.html#ae0ad81121d4b722ecc466b5d3cc4e919">tbb::tbb_exception</a>
-, <a class="el" href="a00078.html#a41a2a7b61537ecd684bae760366f611c">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00031.html#ac97ee315d8613c803dae2f6d3e0b91a7">tbb::captured_exception</a>
+: <a class="el" href="a00161.html#ae0ad81121d4b722ecc466b5d3cc4e919">tbb::tbb_exception</a>
+, <a class="el" href="a00097.html#a41a2a7b61537ecd684bae760366f611c">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00035.html#ac97ee315d8613c803dae2f6d3e0b91a7">tbb::captured_exception</a>
 </li>
 <li>write_once_node()
-: <a class="el" href="a00159.html#a68b94bb09b608522462080fe99125e07">tbb::flow::interface7::write_once_node< T ></a>
+: <a class="el" href="a00176.html#a68b94bb09b608522462080fe99125e07">tbb::flow::interface7::write_once_node< T ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html
index ffa1ba0..37f646f 100644
--- a/doc/html/functions_0x7e.html
+++ b/doc/html/functions_0x7e.html
@@ -75,94 +75,94 @@
 
 <h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
 <li>~combinable()
-: <a class="el" href="a00032.html#a52f00cf262d768048db72ab73c8f3ca4">tbb::combinable< T ></a>
+: <a class="el" href="a00036.html#a52f00cf262d768048db72ab73c8f3ca4">tbb::combinable< T ></a>
 </li>
 <li>~concurrent_bounded_queue()
-: <a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#ab1291bf6837ecfb8836c24dde5dd80b5">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>~concurrent_hash_map()
-: <a class="el" href="a00035.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>~concurrent_queue()
-: <a class="el" href="a00038.html#aa0056b242f280f5e25332ce998f9f670">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#aa0056b242f280f5e25332ce998f9f670">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>~concurrent_vector()
-: <a class="el" href="a00046.html#ab5bcaededc9a00e7aaecd6c262fd0b38">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#ab5bcaededc9a00e7aaecd6c262fd0b38">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>~const_accessor()
-: <a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 </li>
 <li>~continue_receiver()
-: <a class="el" href="a00050.html#a2ca2de23e1e1eeb7071a838a457a50b2">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00057.html#a2ca2de23e1e1eeb7071a838a457a50b2">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>~enumerable_thread_specific()
-: <a class="el" href="a00052.html#a6ea8d717f770acb63efc406df52d4585">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#a6ea8d717f770acb63efc406df52d4585">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>~fixed_pool()
-: <a class="el" href="a00056.html#ab854a85575e5c1e9c9f4d3eafcc28044">tbb::interface6::fixed_pool</a>
+: <a class="el" href="a00065.html#ab854a85575e5c1e9c9f4d3eafcc28044">tbb::interface6::fixed_pool</a>
 </li>
 <li>~graph()
-: <a class="el" href="a00061.html#a3412df4d4bf0113aed93c958bbb49ec4">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a3412df4d4bf0113aed93c958bbb49ec4">tbb::flow::interface7::graph</a>
 </li>
 <li>~memory_pool()
-: <a class="el" href="a00073.html#ad2c7645b39b7280b1b3cf393d05fbaf7">tbb::interface6::memory_pool< Alloc ></a>
+: <a class="el" href="a00092.html#ad2c7645b39b7280b1b3cf393d05fbaf7">tbb::interface6::memory_pool< Alloc ></a>
 </li>
 <li>~parallel_while()
-: <a class="el" href="a00088.html#ac2fd559c8a38639fa1ba97a0d5639ca8">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00106.html#ac2fd559c8a38639fa1ba97a0d5639ca8">tbb::parallel_while< Body ></a>
 </li>
 <li>~pipeline()
-: <a class="el" href="a00089.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">tbb::pipeline</a>
+: <a class="el" href="a00107.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">tbb::pipeline</a>
 </li>
 <li>~queuing_rw_mutex()
-: <a class="el" href="a00094.html#ae67fe828d7e07222e7876ef9fd780fcc">tbb::queuing_rw_mutex</a>
+: <a class="el" href="a00112.html#ae67fe828d7e07222e7876ef9fd780fcc">tbb::queuing_rw_mutex</a>
 </li>
 <li>~reader_writer_lock()
-: <a class="el" href="a00095.html#aeee96b648c7b5ff6126c8a2e13ec7241">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#aeee96b648c7b5ff6126c8a2e13ec7241">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>~receiver()
-: <a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>~runtime_loader()
-: <a class="el" href="a00110.html#aa3b96f53e165e3d692c3c36292ba0737">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#aa3b96f53e165e3d692c3c36292ba0737">tbb::interface6::runtime_loader</a>
 </li>
 <li>~scoped_lock()
-: <a class="el" href="a00113.html#a9940d6e494466d9c53846ed347d79d83">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00116.html#a08c399ee0bb9762039b29e570ec46fe9">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a6cb16cc55f884bbbd5a69430c47b288f">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00118.html#a41e77cf094ed30b0a9a39ee217c3653b">tbb::interface5::reader_writer_lock::scoped_lock</a>
-, <a class="el" href="a00120.html#a90a966e19120aac99b36a3d6d04af1a2">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#a469ec43836a8dd250ce0a22b02945630">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a5c27ca2e0c9db960a9a7430082ff7edd">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00134.html#a9940d6e494466d9c53846ed347d79d83">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00140.html#a08c399ee0bb9762039b29e570ec46fe9">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a6cb16cc55f884bbbd5a69430c47b288f">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00133.html#a41e77cf094ed30b0a9a39ee217c3653b">tbb::interface5::reader_writer_lock::scoped_lock</a>
+, <a class="el" href="a00139.html#a90a966e19120aac99b36a3d6d04af1a2">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#a469ec43836a8dd250ce0a22b02945630">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a5c27ca2e0c9db960a9a7430082ff7edd">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>~scoped_lock_read()
-: <a class="el" href="a00123.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
+: <a class="el" href="a00141.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
 </li>
 <li>~sequencer_node()
-: <a class="el" href="a00125.html#a01fd0321c7bd0f2112458cec2a636d7d">tbb::flow::interface7::sequencer_node< T, A ></a>
+: <a class="el" href="a00143.html#a01fd0321c7bd0f2112458cec2a636d7d">tbb::flow::interface7::sequencer_node< T, A ></a>
 </li>
 <li>~source_node()
-: <a class="el" href="a00126.html#a5ce12e348e121b9f4dffda9d1035c490">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a5ce12e348e121b9f4dffda9d1035c490">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>~spin_rw_mutex_v3()
-: <a class="el" href="a00128.html#acc7cf2e4b14d3a2a591a3552d74ba99d">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#acc7cf2e4b14d3a2a591a3552d74ba99d">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>~task_arena()
-: <a class="el" href="a00135.html#a9ff5a35a219953a4f3d99b833fa5f683">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a9ff5a35a219953a4f3d99b833fa5f683">tbb::interface7::task_arena</a>
 </li>
 <li>~task_scheduler_init()
-: <a class="el" href="a00141.html#a20b121334ec39c1d91bd4fe9a51892b0">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a20b121334ec39c1d91bd4fe9a51892b0">tbb::task_scheduler_init</a>
 </li>
 <li>~task_scheduler_observer()
-: <a class="el" href="a00142.html#a9ef3f1853439b46e5a9db7fd1c0f9116">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00157.html#a9ef3f1853439b46e5a9db7fd1c0f9116">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>~task_scheduler_observer_v3()
-: <a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
index eb8dcb3..f70ed4e 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -46,22 +46,22 @@
 <div class="contents">
  <ul>
 <li>error_code
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7">tbb::interface6::runtime_loader</a>
 </li>
 <li>error_mode
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295">tbb::interface6::runtime_loader</a>
 </li>
 <li>malloc_type
-: <a class="el" href="a00144.html#a60463a571d5c20f7762112367261ad94">tbb::tbb_allocator< T ></a>
+: <a class="el" href="a00159.html#a60463a571d5c20f7762112367261ad94">tbb::tbb_allocator< T ></a>
 </li>
 <li>status_t
-: <a class="el" href="a00095.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#a29bbf9ca21c12b313d9fa5326feaf3ed">tbb::interface5::reader_writer_lock</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html
index c47db98..8d4fc9b 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -46,37 +46,37 @@
 <div class="contents">
  <ul>
 <li>ec_bad_arg
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afd928f63eb3da0980e746d58374b07c3">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_call
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a670e4d0a5a3c1bbcdff9e5ee16dc9c01">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_lib
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a71f874957c0322f499ba764dd0bb8732">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_bad_ver
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7aae7497a49ceae69d06d6ab9fef636064">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_no_lib
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7a5e694560f3ada80d2cc25881b5ae43dd">tbb::interface6::runtime_loader</a>
 </li>
 <li>ec_ok
-: <a class="el" href="a00110.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a264674772d9f4240d89aa9d939c1eef7afc7eba28f2fc936312f041cf85276434">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_abort
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295ac41f8e03c7e8bfc6a420be035d59cc35">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_status
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295af9c9137d6acdb0fd37f1a92b5cdaeb36">tbb::interface6::runtime_loader</a>
 </li>
 <li>em_throw
-: <a class="el" href="a00110.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ab85c82f9c0ccd91905f2795a79ac1295a17ec1019cffa635146eaefb042e28a2c">tbb::interface6::runtime_loader</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index 7610e8f..b4b0586 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -74,49 +74,59 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>abort()
-: <a class="el" href="a00034.html#a77a755d94cabf5208905d10d5b57419c">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a77a755d94cabf5208905d10d5b57419c">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>acquire()
-: <a class="el" href="a00026.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
-, <a class="el" href="a00121.html#abf8aa7ccd48d54dcb53665700a17d02a">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a6d49df365396ab314e78ba07c6b96433">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00119.html#ab4bf2fb86d6a418f9ea36474eb8893f9">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00116.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#ac5450ce6a5813f395afaa434384c6539">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a7c702117f08ae82d034a98b3d5510ffc">tbb::spin_mutex::scoped_lock</a>
+: <a class="el" href="a00029.html#a0d7d8f3d101bb18056b8e5d4d2c8b079">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+, <a class="el" href="a00132.html#abf8aa7ccd48d54dcb53665700a17d02a">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a6d49df365396ab314e78ba07c6b96433">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00131.html#ab4bf2fb86d6a418f9ea36474eb8893f9">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00140.html#a9fce3e2e9f592315dc9c1ada72ae5e3c">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#ac5450ce6a5813f395afaa434384c6539">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a7c702117f08ae82d034a98b3d5510ffc">tbb::spin_mutex::scoped_lock</a>
 </li>
 <li>activate()
-: <a class="el" href="a00126.html#a67264c4564abefbf14c0d587c6fe2857">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a67264c4564abefbf14c0d587c6fe2857">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>add()
-: <a class="el" href="a00087.html#ac095c6b1a32e9c0be010aa32875d7a63">tbb::parallel_do_feeder< Item ></a>
-, <a class="el" href="a00088.html#a4861989d7f5e3111d264d4d6013e8fe1">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00105.html#ac095c6b1a32e9c0be010aa32875d7a63">tbb::parallel_do_feeder< Item ></a>
+, <a class="el" href="a00106.html#a4861989d7f5e3111d264d4d6013e8fe1">tbb::parallel_while< Body ></a>
 </li>
 <li>add_filter()
-: <a class="el" href="a00089.html#a8eb83014bd53b184e0ed50f120ca310b">tbb::pipeline</a>
+: <a class="el" href="a00107.html#a8eb83014bd53b184e0ed50f120ca310b">tbb::pipeline</a>
 </li>
 <li>allocate()
-: <a class="el" href="a00144.html#afedd8a64eed9692083c708f419338e0c">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00147.html#abfbea91401d2594deb04ea331734171c">tbb::internal::tbb_exception_ptr</a>
-, <a class="el" href="a00111.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T ></a>
-, <a class="el" href="a00029.html#a99d05096f80877849cb31d80247e0f85">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a10b9888883a3dbd66e87c4a7f874ef28">tbb::interface6::memory_pool_allocator< T, P ></a>
+: <a class="el" href="a00159.html#afedd8a64eed9692083c708f419338e0c">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00162.html#abfbea91401d2594deb04ea331734171c">tbb::internal::tbb_exception_ptr</a>
+, <a class="el" href="a00032.html#a99d05096f80877849cb31d80247e0f85">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a10b9888883a3dbd66e87c4a7f874ef28">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00129.html#acf24945c12dc0586dfb1f8638daf7838">tbb::scalable_allocator< T ></a>
 </li>
 <li>allocator_type()
-: <a class="el" href="a00144.html#aa4606cff0156ec4237c1571204851bfb">tbb::tbb_allocator< T ></a>
+: <a class="el" href="a00159.html#aa4606cff0156ec4237c1571204851bfb">tbb::tbb_allocator< T ></a>
 </li>
 <li>assign()
-: <a class="el" href="a00037.html#ada4a58867572d9ff340c6692a226d457">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00046.html#a87355dce93d0882aa73333a35c9b367c">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a87355dce93d0882aa73333a35c9b367c">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#ac1b3a945aac5a17c85d56756cc6aa3d1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00053.html#a7bb5399a8499f88cf859eab39f0ed9e0">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#ac64c7b627708f0d6b2e5421fb0d49150">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00053.html#a584d6cda5794441b19d4f02bde399dff">tbb::concurrent_vector< T, A ></a>
+</li>
+<li>async_node()
+: <a class="el" href="a00017.html#a941e58ff009aa492f1f011947f7b04ac">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>
+</li>
+<li>async_try_put()
+: <a class="el" href="a00017.html#a565f12fc3ce62a14156398c94f401d9c">tbb::flow::interface7::async_node< Input, Output, Allocator ></a>
+, <a class="el" href="a00016.html#a308f7feb8ac2fc3b7cbcf4e5246e78a2">tbb::flow::interface7::internal::async_gateway< Output ></a>
 </li>
 <li>at()
-: <a class="el" href="a00046.html#ae4dc6c1b55c0e0b73f0a8675ef2b60a4">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a629a29eb21e528414b9d5c9becfe05cd">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x62.html b/doc/html/functions_func_0x62.html
index 55db088..9a4a14c 100644
--- a/doc/html/functions_func_0x62.html
+++ b/doc/html/functions_func_0x62.html
@@ -74,32 +74,32 @@
 
 <h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
 <li>back()
-: <a class="el" href="a00046.html#aaee3ddf1d05238a8a6887f6d824b76f8">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aaee3ddf1d05238a8a6887f6d824b76f8">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>begin()
-: <a class="el" href="a00021.html#ae225fa10454b0fa33533dfb56f5060a2">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00052.html#aa097383eb6f90e4a551830fc00b60b3a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00061.html#a91d2f9921342a504668b2cdc3064a846">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00046.html#ab55636c80368ad7d400f3200313fcf5f">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00061.html#ac404d2e08620aca079532124551a646a">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00014.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N ></a>
-, <a class="el" href="a00046.html#ad3eb33d1b10a988a87cc708ceb08f3a9">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a070d26debf1f65c83de13f64f91aefdc">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00024.html#ae225fa10454b0fa33533dfb56f5060a2">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00061.html#aa097383eb6f90e4a551830fc00b60b3a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00070.html#a91d2f9921342a504668b2cdc3064a846">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00053.html#ab55636c80368ad7d400f3200313fcf5f">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00070.html#ac404d2e08620aca079532124551a646a">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00015.html#a3525dbbac0d4eaedfe18bc57b7760857">tbb::aligned_space< T, N ></a>
+, <a class="el" href="a00053.html#ad3eb33d1b10a988a87cc708ceb08f3a9">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a070d26debf1f65c83de13f64f91aefdc">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>blocked_range()
-: <a class="el" href="a00021.html#aad176ab2cbd0bd73c3c2065761af3ccc">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#a49a97576004711b7159170fcaf488e4e">tbb::blocked_range< Value ></a>
 </li>
 <li>bucket_count()
-: <a class="el" href="a00035.html#aa067a2a4db1d96f38555369a89deee64">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#aa067a2a4db1d96f38555369a89deee64">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>buffer_node()
-: <a class="el" href="a00027.html#a152f7bb9ab1f033ec56caa451327634c">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a739635c43d1150f2c8dd3f455d698d36">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html
index 453554f..5bb406c 100644
--- a/doc/html/functions_func_0x63.html
+++ b/doc/html/functions_func_0x63.html
@@ -74,93 +74,88 @@
 
 <h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
 <li>capacity()
-: <a class="el" href="a00034.html#a526487063242569685af8c8d778d39e0">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a96c2ae9dfedc24d62554feb627df76c3">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00042.html#a526487063242569685af8c8d778d39e0">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a96c2ae9dfedc24d62554feb627df76c3">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>cbegin()
-: <a class="el" href="a00061.html#a2af8f195917817ce2b77ff7b6463c344">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00046.html#a7a1c5441fa480c07ef37d9206b6260cc">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00070.html#a2af8f195917817ce2b77ff7b6463c344">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00053.html#a7a1c5441fa480c07ef37d9206b6260cc">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>cend()
-: <a class="el" href="a00046.html#a9ea80faf139feb54d6576c036e4ba898">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00061.html#acf6d3f610c2675eaf8bf2a40853081aa">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00053.html#a9ea80faf139feb54d6576c036e4ba898">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00070.html#acf6d3f610c2675eaf8bf2a40853081aa">tbb::flow::interface7::graph</a>
 </li>
 <li>clear()
-: <a class="el" href="a00037.html#a2459166998a4103880d603b237c429e6">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#ad3384818fb6350a494d5ec62445e59ee">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a246be3920e079ea4847933f106baa98f">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a526ba408fb3064ef846940d633b8f365">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00089.html#ae53edbda1771eeaa254d78ae6100a762">tbb::pipeline</a>
-, <a class="el" href="a00035.html#ab8295bc260b5e4df883fef11574b84c6">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00045.html#a2459166998a4103880d603b237c429e6">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#ad3384818fb6350a494d5ec62445e59ee">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a246be3920e079ea4847933f106baa98f">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a526ba408fb3064ef846940d633b8f365">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a85a0d8f088ef1ee07aeb2c0e944a4a5e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00107.html#ae53edbda1771eeaa254d78ae6100a762">tbb::pipeline</a>
+, <a class="el" href="a00043.html#ab8295bc260b5e4df883fef11574b84c6">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>cols()
-: <a class="el" href="a00022.html#af3bccfaf90126b285491096f78ca9473">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00023.html#a308d7089a1d53ff26770a7040ed817cd">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-</li>
-<li>compact()
-: <a class="el" href="a00046.html#af2101247808fd0e81b992724e317a7f3">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00025.html#af3bccfaf90126b285491096f78ca9473">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a308d7089a1d53ff26770a7040ed817cd">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>concurrent_bounded_queue()
-: <a class="el" href="a00034.html#a85f8a800cae02b601f36ad7a655a0126">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a85f8a800cae02b601f36ad7a655a0126">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>concurrent_hash_map()
-: <a class="el" href="a00035.html#aa3a9767b525144a2afb69ed125714c53">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#aa3a9767b525144a2afb69ed125714c53">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>concurrent_priority_queue()
-: <a class="el" href="a00037.html#a405be01bac4048f214797c287e2571a1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00045.html#aa52cea369b6630699ee78cc42622be9d">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>concurrent_queue()
-: <a class="el" href="a00038.html#a43ac953152e60815c09fe4a4d4a623a9">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00039.html#adc192aba16ef123aebbc4ada0fb53708">tbb::deprecated::concurrent_queue< T, A ></a>
-, <a class="el" href="a00038.html#a49b2e16902577cd3174355be0fa684e5">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#a49b2e16902577cd3174355be0fa684e5">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>concurrent_unordered_map()
-: <a class="el" href="a00040.html#aa45010d834cc5e082321b49fec06f73d">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00047.html#a788a7225915574c1a349abc0f1f653c7">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_multimap()
-: <a class="el" href="a00042.html#a169314a424d47679e4aa343b70f75f00">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00049.html#a5957d29e5fa9f8c53538de3f7a41ebc9">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_multiset()
-: <a class="el" href="a00043.html#ab2fa28924f52578bb59200b9ffa976c8">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00050.html#a15631f048043195863c66bad6533bccb">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_unordered_set()
-: <a class="el" href="a00044.html#ae0570fa46456245509cc789e17bd0c21">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
+: <a class="el" href="a00051.html#a6f6d5ecff239ff13000848e925904fe7">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
 </li>
 <li>concurrent_vector()
-: <a class="el" href="a00046.html#abb0e376a31c3fdb91beaaa98441735f5">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a03b5a0e9069b30dc4e2e5fc2f191ccb6">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>const_accessor()
-: <a class="el" href="a00047.html#a7b26d22d228cf0d8678c9b346c63752c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#a7b26d22d228cf0d8678c9b346c63752c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 </li>
 <li>construct()
-: <a class="el" href="a00144.html#af54fa3029e33cebe5ba64a8538306fdf">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00029.html#ab316f80a66b991801b4ec4ea88b852d9">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#ac51b34ef90ecabdd2e0483e25603a15b">tbb::interface6::memory_pool_allocator< T, P ></a>
+: <a class="el" href="a00159.html#af54fa3029e33cebe5ba64a8538306fdf">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00032.html#ab316f80a66b991801b4ec4ea88b852d9">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#ac51b34ef90ecabdd2e0483e25603a15b">tbb::interface6::memory_pool_allocator< T, P ></a>
 </li>
 <li>continue_node()
-: <a class="el" href="a00049.html#a05e8957de1cb5a940d2ed3f9fc7637ed">tbb::flow::interface7::continue_node< Output ></a>
+: <a class="el" href="a00056.html#a8ab0750127a7ead08e14b8910a21cf50">tbb::flow::interface7::continue_node< Output ></a>
 </li>
 <li>continue_receiver()
-: <a class="el" href="a00050.html#a1ac173b0a739731b0b1db5a1e91d9326">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00057.html#a1ac173b0a739731b0b1db5a1e91d9326">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>count()
-: <a class="el" href="a00035.html#ac375d3884bf9c80efe56117757c822e7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#ac375d3884bf9c80efe56117757c822e7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>crbegin()
-: <a class="el" href="a00046.html#a2627db4a7949522ea4727320b23a6348">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a2627db4a7949522ea4727320b23a6348">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>crend()
-: <a class="el" href="a00046.html#ad097225c529dbb24cc0e13a444ab4752">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#ad097225c529dbb24cc0e13a444ab4752">tbb::concurrent_vector< T, A ></a>
 </li>
-<li>current_slot()
-: <a class="el" href="a00135.html#a4c107b6a4cc79183923fe2433d25644f">tbb::interface7::task_arena</a>
+<li>current_thread_index()
+: <a class="el" href="a00150.html#af695a8aa3d2a4f498067c662e287dd8f">tbb::interface7::task_arena</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html
index b8bc8b5..e2b1ddb 100644
--- a/doc/html/functions_func_0x64.html
+++ b/doc/html/functions_func_0x64.html
@@ -74,41 +74,41 @@
 
 <h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
 <li>deallocate()
-: <a class="el" href="a00029.html#a7f7310e046c4b6b8618864de8e27a471">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a9fcf288f2d653972d1bdc0c65abebed4">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00144.html#a28e333e0fff56dd53c20b82cfee430ab">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00111.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T ></a>
+: <a class="el" href="a00032.html#a7f7310e046c4b6b8618864de8e27a471">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a9fcf288f2d653972d1bdc0c65abebed4">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00159.html#a28e333e0fff56dd53c20b82cfee430ab">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00129.html#a0632b19f25e5d5f86f18b3101925f488">tbb::scalable_allocator< T ></a>
 </li>
 <li>debug_wait_until_empty()
-: <a class="el" href="a00135.html#a07d87dff8c6116ee349684e10f754aeb">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a07d87dff8c6116ee349684e10f754aeb">tbb::interface7::task_arena</a>
 </li>
 <li>decrement_wait_count()
-: <a class="el" href="a00061.html#af16d14eaed1355ae376bb78dde7762c3">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#af16d14eaed1355ae376bb78dde7762c3">tbb::flow::interface7::graph</a>
 </li>
 <li>default_num_threads()
-: <a class="el" href="a00141.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#aa0c0d46ec09bedc1ee876aa8aa87c3d1">tbb::task_scheduler_init</a>
 </li>
 <li>destroy()
-: <a class="el" href="a00146.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>
-, <a class="el" href="a00147.html#a38d3ca480e2758a67bcd7427b156daae">tbb::internal::tbb_exception_ptr</a>
-, <a class="el" href="a00029.html#af2fd054d055403d4ea669fd3af661cc8">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00074.html#a2223b6469f88aadc432a4b3f88728d0f">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00078.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00144.html#ac7b1b393a8ff3399079328c0971c1996">tbb::tbb_allocator< T ></a>
-, <a class="el" href="a00031.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>
+: <a class="el" href="a00161.html#ad3bc09bf78c33f19a0bcdf882fdf9d41">tbb::tbb_exception</a>
+, <a class="el" href="a00162.html#a38d3ca480e2758a67bcd7427b156daae">tbb::internal::tbb_exception_ptr</a>
+, <a class="el" href="a00032.html#af2fd054d055403d4ea669fd3af661cc8">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00093.html#a2223b6469f88aadc432a4b3f88728d0f">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00097.html#a02f0401b465690de797face2432d9421">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00159.html#ac7b1b393a8ff3399079328c0971c1996">tbb::tbb_allocator< T ></a>
+, <a class="el" href="a00035.html#a3006b6825dda6c746d28fb748f5675de">tbb::captured_exception</a>
 </li>
 <li>detach()
-: <a class="el" href="a00149.html#a80a31a41708872af5557b907f129b19b">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a80a31a41708872af5557b907f129b19b">tbb::internal::tbb_thread_v3</a>
 </li>
 <li>downgrade_to_reader()
-: <a class="el" href="a00114.html#aa693c05221d977856a98270a255fe5df">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00119.html#af0af63035147a3d8422f8c8d7b8d2629">tbb::queuing_rw_mutex::scoped_lock</a>
+: <a class="el" href="a00135.html#aa693c05221d977856a98270a255fe5df">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00131.html#af0af63035147a3d8422f8c8d7b8d2629">tbb::queuing_rw_mutex::scoped_lock</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html
index 9f908fc..892805f 100644
--- a/doc/html/functions_func_0x65.html
+++ b/doc/html/functions_func_0x65.html
@@ -73,51 +73,60 @@
  
 
 <h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>emplace()
+: <a class="el" href="a00043.html#a382178ea2f00f69096c91bcf76ae7913">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a278d208cd92e5aeccc9c7f6fc192e3ce">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00043.html#acbe1d0f3a87786a83a7021af2ef52ee0">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+</li>
+<li>emplace_back()
+: <a class="el" href="a00053.html#afae4c378515b89cc2b0a11c8cf1bcc50">tbb::concurrent_vector< T, A ></a>
+</li>
 <li>empty()
-: <a class="el" href="a00021.html#a59dec03416b3fefbf69600f798177710">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00022.html#a5805972c8c41b2681d286f9c9771cf52">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00047.html#a6299b523d2ae8e2613f1bc160ca99b85">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00034.html#a8c59578f28c5fb4718b0eff43776e879">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#aa3f6774107e65642f73c0dcc9a962fe7">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00035.html#a5e05f2a1ca3accfb4252d7ee82d1e990">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00052.html#adfa4b2e13e47ab825dc40c4f195d2bc5">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00023.html#aea992e0cd3d105f964a633b1a0a1a05f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-, <a class="el" href="a00037.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#aeda3156929d0c250faed7b807ca6ab0e">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00026.html#aea992e0cd3d105f964a633b1a0a1a05f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+, <a class="el" href="a00054.html#a6299b523d2ae8e2613f1bc160ca99b85">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00043.html#a5e05f2a1ca3accfb4252d7ee82d1e990">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a8dec2dd0e8b22af14f1753eaef1bf5eb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00024.html#a59dec03416b3fefbf69600f798177710">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00046.html#aeda3156929d0c250faed7b807ca6ab0e">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a8c59578f28c5fb4718b0eff43776e879">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00025.html#a5805972c8c41b2681d286f9c9771cf52">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00053.html#aa3f6774107e65642f73c0dcc9a962fe7">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#adfa4b2e13e47ab825dc40c4f195d2bc5">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>end()
-: <a class="el" href="a00052.html#a5ed0248f10a7aa5045d2cda77dad9588">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00061.html#a221a7ee0a1f0e69a01add5c1dda43be7">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00014.html#ae95620e1159984a2670bd418ed4748d0">tbb::aligned_space< T, N ></a>
-, <a class="el" href="a00021.html#a99f829599d3e51b181a30b4cd57b06c6">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00046.html#aad2c07653375e4a5f89c33b375eda610">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#ad225e2e8a968b131bf05d72f5686b924">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00015.html#ae95620e1159984a2670bd418ed4748d0">tbb::aligned_space< T, N ></a>
+, <a class="el" href="a00070.html#a599e6a885a76db84928b039063c299e4">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00024.html#a99f829599d3e51b181a30b4cd57b06c6">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00053.html#aad2c07653375e4a5f89c33b375eda610">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#ad225e2e8a968b131bf05d72f5686b924">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00070.html#a221a7ee0a1f0e69a01add5c1dda43be7">tbb::flow::interface7::graph</a>
 </li>
 <li>enqueue()
-: <a class="el" href="a00135.html#a8034275ed2fffa68f70484043b90d406">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a8034275ed2fffa68f70484043b90d406">tbb::interface7::task_arena</a>
 </li>
 <li>enumerable_thread_specific()
-: <a class="el" href="a00052.html#a6f0249ee95fa56665da4b6984f3a685a">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#aafd6049aa255826c712aaba778524a7c">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>erase()
-: <a class="el" href="a00035.html#a3ed0fbcc6cfd4db8242e100355ac1fa5">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a2ec6f95ed9beda9d32df56cdd45c1842">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>exclude()
-: <a class="el" href="a00035.html#a6fec452b31b8f0e185dc2de64b7128b2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a6fec452b31b8f0e185dc2de64b7128b2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>execute()
-: <a class="el" href="a00050.html#adf70ce80d67a565d04e029da461bbe72">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00011.html#aa7cc924b6f0d17578d61fd9002f59f84">tbb::interface6::aggregator</a>
-, <a class="el" href="a00135.html#af0c96f325b59d567b4c720f2830adde8">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#af0c96f325b59d567b4c720f2830adde8">tbb::interface7::task_arena</a>
+, <a class="el" href="a00057.html#adf70ce80d67a565d04e029da461bbe72">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00150.html#ab8442c8e9e3e678349409e08cabc7ae2">tbb::interface7::task_arena</a>
+, <a class="el" href="a00012.html#aa7cc924b6f0d17578d61fd9002f59f84">tbb::interface6::aggregator</a>
 </li>
 <li>execute_impl()
-: <a class="el" href="a00012.html#ad376e5c31d10e885f33964592aa629d4">tbb::interface6::aggregator_ext< handler_type ></a>
+: <a class="el" href="a00013.html#ad376e5c31d10e885f33964592aa629d4">tbb::interface6::aggregator_ext< handler_type ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html
index 2e49763..3be30b4 100644
--- a/doc/html/functions_func_0x66.html
+++ b/doc/html/functions_func_0x66.html
@@ -74,30 +74,28 @@
 
 <h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
 <li>find()
-: <a class="el" href="a00035.html#a27a3f296dc170ae25f8e3fd9efa93cff">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a27a3f296dc170ae25f8e3fd9efa93cff">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>finish()
-: <a class="el" href="a00013.html#ac7edadfe74f475783f3b429904e7010a">tbb::interface6::aggregator_operation</a>
+: <a class="el" href="a00014.html#ac7edadfe74f475783f3b429904e7010a">tbb::interface6::aggregator_operation</a>
 </li>
 <li>fixed_pool()
-: <a class="el" href="a00056.html#aa3811fe3d437ba2eefa926d52732491a">tbb::interface6::fixed_pool</a>
+: <a class="el" href="a00065.html#aa3811fe3d437ba2eefa926d52732491a">tbb::interface6::fixed_pool</a>
 </li>
 <li>forward_task()
-: <a class="el" href="a00027.html#a8910a497040a4c6f1a6a1fb7a33a8888">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a8910a497040a4c6f1a6a1fb7a33a8888">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>front()
-: <a class="el" href="a00046.html#a9067259572c2c41d014840d0f9d3cdce">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a9067259572c2c41d014840d0f9d3cdce">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>function_node()
-: <a class="el" href="a00059.html#aecf13ece7b2106f4630e46d6c5327997">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>
-, <a class="el" href="a00060.html#ad1cb832fe1edee0b0d75e569b62c9c1c">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a>
-, <a class="el" href="a00059.html#aea86b14a72337b597c80d706ca257402">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a>
+: <a class="el" href="a00068.html#a1bb4915f2b6d6fbfbe6bfacece5639c6">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html
index f47595d..24f5ded 100644
--- a/doc/html/functions_func_0x67.html
+++ b/doc/html/functions_func_0x67.html
@@ -74,32 +74,32 @@
 
 <h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
 <li>get_allocator()
-: <a class="el" href="a00035.html#a121865c574f8ae5cae69ed3d6b7e0511">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00037.html#a312e88e51246da4c516d35abbb30721a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00038.html#a7f2b39f350281590b86db906eca6c480">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00043.html#a121865c574f8ae5cae69ed3d6b7e0511">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00045.html#a312e88e51246da4c516d35abbb30721a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#aaeba11bbcd368a7a3a6e6e2dd3082c9c">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a88b62a9614d3f2b59c9c7c1a2143fb1e">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00046.html#a7f2b39f350281590b86db906eca6c480">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>grainsize()
-: <a class="el" href="a00021.html#ab408f3cf90c85fa9203df5641a2f9bb1">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#ab408f3cf90c85fa9203df5641a2f9bb1">tbb::blocked_range< Value ></a>
 </li>
 <li>graph()
-: <a class="el" href="a00061.html#a656cee3d0240a3f142a450800e6b17c7">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a656cee3d0240a3f142a450800e6b17c7">tbb::flow::interface7::graph</a>
 </li>
 <li>graph_iterator()
-: <a class="el" href="a00062.html#a5082b1f425ffbd4a93533230d6ff99c0">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#a5082b1f425ffbd4a93533230d6ff99c0">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>grow_by()
-: <a class="el" href="a00046.html#ab89c2db5358048debdc282ff995caffb">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aa11fc991cda82cf93789fce31b37a16c">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>grow_to_at_least()
-: <a class="el" href="a00046.html#ae9ef9895e88f9bf036b379035c18f035">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a422d9689ed72a5ef2b6b72f28e4143a2">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x68.html b/doc/html/functions_func_0x68.html
index 7e66c80..7648862 100644
--- a/doc/html/functions_func_0x68.html
+++ b/doc/html/functions_func_0x68.html
@@ -74,13 +74,13 @@
 
 <h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
 <li>hardware_concurrency()
-: <a class="el" href="a00149.html#a2b761b3d80a7397c645402865e06b1a8">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a23d7a420709b2e2b29b42dea897bd8bc">tbb::internal::tbb_thread_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html
index cf6f5c8..3e1f7bb 100644
--- a/doc/html/functions_func_0x69.html
+++ b/doc/html/functions_func_0x69.html
@@ -74,65 +74,65 @@
 
 <h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
 <li>increment_wait_count()
-: <a class="el" href="a00061.html#ad96c910ae45e6c5d2433bb1d9e910891">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#ad96c910ae45e6c5d2433bb1d9e910891">tbb::flow::interface7::graph</a>
 </li>
 <li>initialize()
-: <a class="el" href="a00135.html#a955131a79f8dc5a0a5c9ffa66a7e7140">tbb::interface7::task_arena</a>
-, <a class="el" href="a00141.html#a485028b867bffef5829209330e79e64c">tbb::task_scheduler_init</a>
-, <a class="el" href="a00135.html#a754d60ba6981461eb7c86afd14d3da2a">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a955131a79f8dc5a0a5c9ffa66a7e7140">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#a485028b867bffef5829209330e79e64c">tbb::task_scheduler_init</a>
+, <a class="el" href="a00150.html#a754d60ba6981461eb7c86afd14d3da2a">tbb::interface7::task_arena</a>
 </li>
 <li>insert()
-: <a class="el" href="a00035.html#ae0b420cdb752e749790c8a7daa15c3c2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#ae0b420cdb752e749790c8a7daa15c3c2">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_construct()
-: <a class="el" href="a00127.html#a4ec484f4df6ec5595ec821ef20bd6cd7">tbb::spin_mutex</a>
+: <a class="el" href="a00145.html#a4ec484f4df6ec5595ec821ef20bd6cd7">tbb::spin_mutex</a>
 </li>
 <li>internal_copy()
-: <a class="el" href="a00035.html#a0bc3593f82b3b4f9839fc051780212ab">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a0bc3593f82b3b4f9839fc051780212ab">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_equal_range()
-: <a class="el" href="a00035.html#a8603f5288db63ec35a16844427e97e42">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a8603f5288db63ec35a16844427e97e42">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_fast_find()
-: <a class="el" href="a00035.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#acbb5b18c097fb32f264b7b5fe8d9fdd4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>internal_forward_task()
-: <a class="el" href="a00027.html#a3aa7578ccbd3d5f986869ab8698c037c">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00092.html#a1ab7e37f537acb75175844bd34132b99">tbb::flow::interface7::queue_node< T, A ></a>
-, <a class="el" href="a00091.html#a4e6d43ca8748046098fd27ca97e58f3d">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
+: <a class="el" href="a00030.html#a3aa7578ccbd3d5f986869ab8698c037c">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00110.html#a1ab7e37f537acb75175844bd34132b99">tbb::flow::interface7::queue_node< T, A ></a>
+, <a class="el" href="a00109.html#a4e6d43ca8748046098fd27ca97e58f3d">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
 </li>
 <li>internal_reg_succ()
-: <a class="el" href="a00027.html#afa2dd93a1b42e77ccf7e1de0fddf3158">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#afa2dd93a1b42e77ccf7e1de0fddf3158">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>internal_rem_succ()
-: <a class="el" href="a00027.html#a46c7f9cd9130036244d4ea8efd74bf22">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00030.html#a46c7f9cd9130036244d4ea8efd74bf22">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>interval_t()
-: <a class="el" href="a00066.html#a95e3e14750bebafe719856176e2737db">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a95e3e14750bebafe719856176e2737db">tbb::tick_count::interval_t</a>
 </li>
 <li>is_active()
-: <a class="el" href="a00135.html#ad85856cefa30d42155a2b122b03efd8c">tbb::interface7::task_arena</a>
-, <a class="el" href="a00141.html#aed5505d7fed9d5493676aa15c176512c">tbb::task_scheduler_init</a>
+: <a class="el" href="a00150.html#ad85856cefa30d42155a2b122b03efd8c">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#aed5505d7fed9d5493676aa15c176512c">tbb::task_scheduler_init</a>
 </li>
 <li>is_cancelled()
-: <a class="el" href="a00061.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a9e26f4f5d608e39c8adc9dc6d06a7a01">tbb::flow::interface7::graph</a>
 </li>
 <li>is_divisible()
-: <a class="el" href="a00023.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
-, <a class="el" href="a00021.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00022.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue ></a>
+: <a class="el" href="a00024.html#ad90ad1db0d4d9a301ef1c9e17712e8a0">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00025.html#ac84c6cc2ff8b0974ffa719fed804f586">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a0fce6bcae6269c37623c3a2cdbb8bcf0">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>is_observing()
-: <a class="el" href="a00143.html#a31abaf256f7172f010cfb2259c7787bb">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a31abaf256f7172f010cfb2259c7787bb">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>is_writer()
-: <a class="el" href="a00026.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+: <a class="el" href="a00029.html#aaa8167e2961330435fd23eb92127805c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x6a.html b/doc/html/functions_func_0x6a.html
index f365701..d0fd28b 100644
--- a/doc/html/functions_func_0x6a.html
+++ b/doc/html/functions_func_0x6a.html
@@ -74,13 +74,13 @@
 
 <h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
 <li>join()
-: <a class="el" href="a00149.html#a044c8727c51e921b0cc43a6b057eb559">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a044c8727c51e921b0cc43a6b057eb559">tbb::internal::tbb_thread_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html
index 13493f6..e2fd589 100644
--- a/doc/html/functions_func_0x6c.html
+++ b/doc/html/functions_func_0x6c.html
@@ -74,33 +74,33 @@
 
 <h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
 <li>limiter_node()
-: <a class="el" href="a00072.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00091.html#af1c8daee8d1fd31e63f78dbb8d0ec87d">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>load()
-: <a class="el" href="a00110.html#ae2949e9adcac56a2cb9864437be8e22e">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#ae2949e9adcac56a2cb9864437be8e22e">tbb::interface6::runtime_loader</a>
 </li>
 <li>local()
-: <a class="el" href="a00052.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#aea846c6cbafbe2ff6bde6e8c2a2ee97e">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>lock()
-: <a class="el" href="a00107.html#adea997b45dc4a360f38d14bde9c991f2">tbb::recursive_mutex</a>
-, <a class="el" href="a00127.html#a8957e40b0781192419d01d28e5205ec4">tbb::spin_mutex</a>
-, <a class="el" href="a00095.html#af92eb949fc491af8f7e350869ea0a0d1">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00128.html#a51e207646300a4c242bb4aaa4e04e9b8">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00081.html#a95ff02ee699b34696001db4003c11a3a">tbb::mutex</a>
+: <a class="el" href="a00125.html#adea997b45dc4a360f38d14bde9c991f2">tbb::recursive_mutex</a>
+, <a class="el" href="a00145.html#a8957e40b0781192419d01d28e5205ec4">tbb::spin_mutex</a>
+, <a class="el" href="a00113.html#af92eb949fc491af8f7e350869ea0a0d1">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00146.html#a51e207646300a4c242bb4aaa4e04e9b8">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00099.html#a95ff02ee699b34696001db4003c11a3a">tbb::mutex</a>
 </li>
 <li>lock_read()
-: <a class="el" href="a00095.html#a6fd4fcdf0e5c0425d1cc736d644f234f">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00128.html#aa0e3bb644e9021d0f80ee36b03f228e4">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00113.html#a6fd4fcdf0e5c0425d1cc736d644f234f">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00146.html#aa0e3bb644e9021d0f80ee36b03f228e4">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>lookup()
-: <a class="el" href="a00035.html#a0435730c6b9dbbe2937fb38b9403147c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a2a319cf46fb9cf9a88aab6c0a20c98b3">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html
index 19aba00..292fdb7 100644
--- a/doc/html/functions_func_0x6d.html
+++ b/doc/html/functions_func_0x6d.html
@@ -74,29 +74,32 @@
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>max_size()
-: <a class="el" href="a00029.html#a4b945b3180ea3dfe16dfa048f4591c6d">tbb::cache_aligned_allocator< T ></a>
-, <a class="el" href="a00035.html#aea0a0e5220a0dcb67da57d0280d36005">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00074.html#a2bded8e3fb2cec32b48771e7a1bbb838">tbb::interface6::memory_pool_allocator< T, P ></a>
-, <a class="el" href="a00111.html#afaa85d739b466699cf669116fd10d175">tbb::scalable_allocator< T ></a>
-, <a class="el" href="a00046.html#a0ec9c3ab3360e04bdaa5174956a3206d">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00144.html#a0a2676fb8a2f931961d373b88848c93e">tbb::tbb_allocator< T ></a>
+: <a class="el" href="a00032.html#a4b945b3180ea3dfe16dfa048f4591c6d">tbb::cache_aligned_allocator< T ></a>
+, <a class="el" href="a00043.html#aea0a0e5220a0dcb67da57d0280d36005">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00093.html#a2bded8e3fb2cec32b48771e7a1bbb838">tbb::interface6::memory_pool_allocator< T, P ></a>
+, <a class="el" href="a00129.html#afaa85d739b466699cf669116fd10d175">tbb::scalable_allocator< T ></a>
+, <a class="el" href="a00053.html#a0ec9c3ab3360e04bdaa5174956a3206d">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00159.html#a0a2676fb8a2f931961d373b88848c93e">tbb::tbb_allocator< T ></a>
+</li>
+<li>may_sleep()
+: <a class="el" href="a00157.html#a2390325945912ee7ce58cd9700664ea4">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>memory_pool()
-: <a class="el" href="a00073.html#af4c36829a159eac04d630ac5a99b9354">tbb::interface6::memory_pool< Alloc ></a>
+: <a class="el" href="a00092.html#af4c36829a159eac04d630ac5a99b9354">tbb::interface6::memory_pool< Alloc ></a>
 </li>
 <li>move()
-: <a class="el" href="a00078.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00146.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>
+: <a class="el" href="a00097.html#aeb47d3ac90a1f01fe642b572f6ac519d">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00035.html#abb221485cd260349efdef681f633a6a4">tbb::captured_exception</a>
+, <a class="el" href="a00161.html#a4bd4ba0d501021013d1473d21b020b69">tbb::tbb_exception</a>
 </li>
 <li>mutex()
-: <a class="el" href="a00081.html#ad1b280c954ffc8b8b3e63e4ee4144035">tbb::mutex</a>
+: <a class="el" href="a00099.html#ad1b280c954ffc8b8b3e63e4ee4144035">tbb::mutex</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html
index 8242622..da211cf 100644
--- a/doc/html/functions_func_0x6e.html
+++ b/doc/html/functions_func_0x6e.html
@@ -74,18 +74,18 @@
 
 <h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
 <li>name()
-: <a class="el" href="a00146.html#a282bb7dce5f157d044d14d50cd6ff35c">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#a23426113851b78d3f0069956afd21976">tbb::captured_exception</a>
-, <a class="el" href="a00078.html#a65dd805ed2424f1d2d0998f5567a9690">tbb::movable_exception< ExceptionData ></a>
+: <a class="el" href="a00161.html#a282bb7dce5f157d044d14d50cd6ff35c">tbb::tbb_exception</a>
+, <a class="el" href="a00035.html#a23426113851b78d3f0069956afd21976">tbb::captured_exception</a>
+, <a class="el" href="a00097.html#a65dd805ed2424f1d2d0998f5567a9690">tbb::movable_exception< ExceptionData ></a>
 </li>
 <li>now()
-: <a class="el" href="a00155.html#a74dcecde7431ff4591d7c46fc1d50d7e">tbb::tick_count</a>
+: <a class="el" href="a00170.html#a74dcecde7431ff4591d7c46fc1d50d7e">tbb::tick_count</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html
index 952aa95..829855f 100644
--- a/doc/html/functions_func_0x6f.html
+++ b/doc/html/functions_func_0x6f.html
@@ -74,69 +74,65 @@
 
 <h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
 <li>observe()
-: <a class="el" href="a00143.html#a40209b347e3c82bb5bfda05941304309">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a40209b347e3c82bb5bfda05941304309">tbb::internal::task_scheduler_observer_v3</a>
+, <a class="el" href="a00157.html#ad5b33790cea52c61e1fb004a8ed26365">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>on_scheduler_entry()
-: <a class="el" href="a00143.html#af4282a27725fbe86052bb785bdd9c5d3">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#af4282a27725fbe86052bb785bdd9c5d3">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>on_scheduler_exit()
-: <a class="el" href="a00143.html#a657e90f833568e217b807d0122fa7668">tbb::internal::task_scheduler_observer_v3</a>
-</li>
-<li>on_scheduler_leaving()
-: <a class="el" href="a00142.html#afd3842518d9a37efb3c8455b22950bb8">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00158.html#a657e90f833568e217b807d0122fa7668">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>operator delete()
-: <a class="el" href="a00146.html#a6a973c37078afedf7d457ff4704bf8cd">tbb::tbb_exception</a>
+: <a class="el" href="a00161.html#a6a973c37078afedf7d457ff4704bf8cd">tbb::tbb_exception</a>
 </li>
 <li>operator!=()
-: <a class="el" href="a00062.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#af3f6d2cc6cbec2dc1194f7d5f4091a73">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator()()
-: <a class="el" href="a00026.html#a16e714a5e77dbf8daf81973df30722d4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
+: <a class="el" href="a00029.html#a16e714a5e77dbf8daf81973df30722d4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a>
 </li>
 <li>operator*()
-: <a class="el" href="a00047.html#a8adf04e33e7c8c876ba849f26807713a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#a8adf04e33e7c8c876ba849f26807713a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 , <a class="el" href="a00010.html#a4e03905a33fbdafdb99113cc68d2bd4b">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
-, <a class="el" href="a00062.html#a1daffd203bebae367ed0f32917048f22">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00071.html#a1daffd203bebae367ed0f32917048f22">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator++()
-: <a class="el" href="a00062.html#ab84587ed134f01886f6a0d64d5a6ccef">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#ab84587ed134f01886f6a0d64d5a6ccef">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator+=()
-: <a class="el" href="a00066.html#a19bf32f4541252daaa6b09fd33fa9177">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a19bf32f4541252daaa6b09fd33fa9177">tbb::tick_count::interval_t</a>
 </li>
 <li>operator-=()
-: <a class="el" href="a00066.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#a3394d9f3678e6a4c3d6e1be840fe2ff2">tbb::tick_count::interval_t</a>
 </li>
 <li>operator->()
 : <a class="el" href="a00010.html#ab04f73bd4a4ca7df0dc91a7b4d66f987">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
-, <a class="el" href="a00062.html#abfb28c989f76822e26b47211febe3d72">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
-, <a class="el" href="a00047.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00071.html#abfb28c989f76822e26b47211febe3d72">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00054.html#a28fa9b9e6c35d7e80217e69a7afe1ee5">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 </li>
 <li>operator=()
-: <a class="el" href="a00035.html#a63e01b1f79c287ae0257ccfd483fd90a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00042.html#adac1da59fdf8b536f95ea5be3134785f">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00046.html#a1fe7f0b60bbf304890a9293a35e6819d">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00044.html#ab8bc097b955ce129641eb3cf9f4cd4d5">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00043.html#a01e685fab9a39cbd69c53bb3b8befce6">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00037.html#a32eb9c65caf399b62fac7c13e65af05f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00062.html#ada73cea77a417f0df629eeaf4c1e2002">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
-, <a class="el" href="a00037.html#ac0c3f41b10f04547f3438517c40cf8a5">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00046.html#a6e57d73b199ccd03922898e9da4888fb">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00040.html#ad641e7a34077b6a490625da4858b509a">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a>
-, <a class="el" href="a00046.html#a920384aece0eb8beea3049956320ec91">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00043.html#a63e01b1f79c287ae0257ccfd483fd90a">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00053.html#a8498a1335a3bbac2f4925a4e8d70cdb8">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#a9b21bd56aff8c412c5fcdd0d88b48c98">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00043.html#aac73665b1a55e3de7332f36598488252">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00071.html#ada73cea77a417f0df629eeaf4c1e2002">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+, <a class="el" href="a00045.html#a7eaa05dcb74604e45e0e2c55e1e456e9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00043.html#a92b506ceed93d1c25979948961054380">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00053.html#a920384aece0eb8beea3049956320ec91">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#ac0c3f41b10f04547f3438517c40cf8a5">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>operator==()
-: <a class="el" href="a00062.html#a3b0d834dffd2a99a596e9541b7a96d2a">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
+: <a class="el" href="a00071.html#a3b0d834dffd2a99a596e9541b7a96d2a">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a>
 </li>
 <li>operator[]()
-: <a class="el" href="a00046.html#a3097cb46511504acfc9de7da5235f4a6">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#abd6ca67f2f97fafca48395af2e693e73">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html
index 6e9eef1..53b986c 100644
--- a/doc/html/functions_func_0x70.html
+++ b/doc/html/functions_func_0x70.html
@@ -74,45 +74,40 @@
 
 <h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
 <li>pages()
-: <a class="el" href="a00023.html#a5b794fd53ba92106aeafa4eed85731d4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+: <a class="el" href="a00026.html#a5b794fd53ba92106aeafa4eed85731d4">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>parallel_while()
-: <a class="el" href="a00088.html#a220a7307358aa36802c8754ea45ca385">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00106.html#a220a7307358aa36802c8754ea45ca385">tbb::parallel_while< Body ></a>
 </li>
 <li>pipeline()
-: <a class="el" href="a00089.html#afe7b7bd9b2617c2b69170675a478b2bd">tbb::pipeline</a>
+: <a class="el" href="a00107.html#afe7b7bd9b2617c2b69170675a478b2bd">tbb::pipeline</a>
 </li>
 <li>pop()
-: <a class="el" href="a00034.html#a87926c31967a918ce80690a9ed5d6fa8">tbb::concurrent_bounded_queue< T, A ></a>
-</li>
-<li>pop_if_present()
-: <a class="el" href="a00039.html#a8d6825341ca673ea316202474a021174">tbb::deprecated::concurrent_queue< T, A ></a>
+: <a class="el" href="a00042.html#a87926c31967a918ce80690a9ed5d6fa8">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>priority_queue_node()
-: <a class="el" href="a00091.html#ab295c7b50ff804f7276609a25016e7ca">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
+: <a class="el" href="a00109.html#ab295c7b50ff804f7276609a25016e7ca">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a>
 </li>
 <li>process()
-: <a class="el" href="a00012.html#ae55b16ec6af204aa00d6a716fccec9f7">tbb::interface6::aggregator_ext< handler_type ></a>
+: <a class="el" href="a00013.html#ae55b16ec6af204aa00d6a716fccec9f7">tbb::interface6::aggregator_ext< handler_type ></a>
 </li>
 <li>process_item()
-: <a class="el" href="a00150.html#ac99258407f382d84568a510075074fc7">tbb::thread_bound_filter</a>
+: <a class="el" href="a00165.html#ac99258407f382d84568a510075074fc7">tbb::thread_bound_filter</a>
 </li>
 <li>push()
-: <a class="el" href="a00034.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00037.html#a1bfa0e7269b3407d6bb5c706264d2406">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#a9330ca6590980d80ef7b1ea3613a699a">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00045.html#a1bfa0e7269b3407d6bb5c706264d2406">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#a9330ca6590980d80ef7b1ea3613a699a">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#ae5e9051772bbc93b2ccb8fd0a98a21f5">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00045.html#a72ff26945c61b4ce3ce7ca0f9b9aaa48">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 <li>push_back()
-: <a class="el" href="a00046.html#a4a5c85a9e6ff82e15c18da47a95b518f">tbb::concurrent_vector< T, A ></a>
-</li>
-<li>push_if_not_full()
-: <a class="el" href="a00039.html#a129cde9f5f101ddd623619c838be07f3">tbb::deprecated::concurrent_queue< T, A ></a>
+: <a class="el" href="a00053.html#ad68d1675fedef232bfae35f200ba007d">tbb::concurrent_vector< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x71.html b/doc/html/functions_func_0x71.html
index 1769964..bd608be 100644
--- a/doc/html/functions_func_0x71.html
+++ b/doc/html/functions_func_0x71.html
@@ -74,19 +74,19 @@
 
 <h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
 <li>queue_node()
-: <a class="el" href="a00092.html#a503d3fe4f98302549e36f74633de5716">tbb::flow::interface7::queue_node< T, A ></a>
+: <a class="el" href="a00110.html#a503d3fe4f98302549e36f74633de5716">tbb::flow::interface7::queue_node< T, A ></a>
 </li>
 <li>queuing_mutex()
-: <a class="el" href="a00093.html#a0e58fce2062ae349a30b320b7fdc9155">tbb::queuing_mutex</a>
+: <a class="el" href="a00111.html#a0e58fce2062ae349a30b320b7fdc9155">tbb::queuing_mutex</a>
 </li>
 <li>queuing_rw_mutex()
-: <a class="el" href="a00094.html#a23de1ac415b6f54b778c8fd6ec6073e0">tbb::queuing_rw_mutex</a>
+: <a class="el" href="a00112.html#a23de1ac415b6f54b778c8fd6ec6073e0">tbb::queuing_rw_mutex</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html
index 8f5cf37..cc49ac7 100644
--- a/doc/html/functions_func_0x72.html
+++ b/doc/html/functions_func_0x72.html
@@ -74,93 +74,93 @@
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>range()
-: <a class="el" href="a00046.html#a8201f65735edcc28aeec95b6e73d75b6">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a25b9153dfe994c8122a7f0227cffe793">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00053.html#a8201f65735edcc28aeec95b6e73d75b6">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a25b9153dfe994c8122a7f0227cffe793">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>rbegin()
-: <a class="el" href="a00046.html#a9a2f8dce0adcbef8e29273c23723a78e">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a9a2f8dce0adcbef8e29273c23723a78e">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>reader_writer_lock()
-: <a class="el" href="a00095.html#abceda6c50b0c36eacbef51f4682742f3">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#abceda6c50b0c36eacbef51f4682742f3">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>recursive_mutex()
-: <a class="el" href="a00107.html#a47eb6e7e7ffa5d35341125792b17236b">tbb::recursive_mutex</a>
+: <a class="el" href="a00125.html#a47eb6e7e7ffa5d35341125792b17236b">tbb::recursive_mutex</a>
 </li>
 <li>register_predecessor()
-: <a class="el" href="a00106.html#a16427aa709505de93ffe0d79136e4251">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#a9ff043995b7b4d39ab0ec41c9e3628bf">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00072.html#aca5ef5cec3b26227d71686d99ee04f7e">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00124.html#a16427aa709505de93ffe0d79136e4251">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#a9ff043995b7b4d39ab0ec41c9e3628bf">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00091.html#aca5ef5cec3b26227d71686d99ee04f7e">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>register_successor()
-: <a class="el" href="a00027.html#ab458d9fa2c7d6f39ec62d4027c9da376">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00072.html#ad2cfd954eb06732f7bae8f2c8fe28735">tbb::flow::interface7::limiter_node< T ></a>
-, <a class="el" href="a00124.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#abf1627cf40dc62fa456fbf23bbcd2efa">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00086.html#aed811ce5f59a555396c7bcd56316b4da">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00025.html#a36b5c86faa58a264d899b7c26286c80e">tbb::flow::interface7::broadcast_node< T ></a>
+: <a class="el" href="a00030.html#a5e87f7e8fd8698f62f2cad8b52b6e565">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00091.html#ad2cfd954eb06732f7bae8f2c8fe28735">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00142.html#a4dac8f53a1f8373c1f3a874b9617e4ec">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a27aa895c54d59f570f267c26f14f0cf1">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00104.html#aed811ce5f59a555396c7bcd56316b4da">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00028.html#a36b5c86faa58a264d899b7c26286c80e">tbb::flow::interface7::broadcast_node< T ></a>
 </li>
 <li>rehash()
-: <a class="el" href="a00035.html#adf1fa9470c605731063e5949f0418eb7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#adf1fa9470c605731063e5949f0418eb7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>release()
-: <a class="el" href="a00047.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00116.html#a1a1590281ccca912229a689d920fd78a">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#aaa065e48b428b8d43e9bb931ba9e6f6c">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a50fb02b77f02a01c74754d163157ec77">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a7e801b0c28fd8395fec400b96acc5c34">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00054.html#a18390cb369369d72bdf7c867755b5190">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00140.html#a1a1590281ccca912229a689d920fd78a">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#aaa065e48b428b8d43e9bb931ba9e6f6c">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a50fb02b77f02a01c74754d163157ec77">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a2fe3246ffc26bdb5a58f33ca513b6c0f">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a7e801b0c28fd8395fec400b96acc5c34">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a99e279a995a51abfb87b865e886949f8">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>remove_predecessor()
-: <a class="el" href="a00106.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#aea58a2200f20acd9cda829ba6958b22a">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00072.html#a8aca7b4bd4ee13faf713021eb0d86735">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00124.html#a55adae6228bbdc1539695e1ec20e9762">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#aea58a2200f20acd9cda829ba6958b22a">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00091.html#a8aca7b4bd4ee13faf713021eb0d86735">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>remove_successor()
-: <a class="el" href="a00025.html#a22d463b071df6e0b7ca11df27bb2637e">tbb::flow::interface7::broadcast_node< T ></a>
-, <a class="el" href="a00027.html#a70d3c1fb1af11deb9b92fa753fa8604c">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00072.html#ac7b092dcc2808abf02816d4ac9c86e66">tbb::flow::interface7::limiter_node< T ></a>
-, <a class="el" href="a00086.html#ab5ff89d56e2e3c3848d84a09c88b1d52">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00124.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a97c80882ddbdfdcf50761e606f231123">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00028.html#a22d463b071df6e0b7ca11df27bb2637e">tbb::flow::interface7::broadcast_node< T ></a>
+, <a class="el" href="a00030.html#a3c31300c060bffbbad7798219e702aba">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00091.html#ac7b092dcc2808abf02816d4ac9c86e66">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00104.html#ab5ff89d56e2e3c3848d84a09c88b1d52">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00142.html#ac1ae19f49e31c6ca94dcf14732eb7a64">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a313af00af7584f4b9aee1e1bacff4041">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>rend()
-: <a class="el" href="a00046.html#a618f38279a370c18f73ea2c29ded9cb9">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a618f38279a370c18f73ea2c29ded9cb9">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>reserve()
-: <a class="el" href="a00046.html#a0b3284684328c58c0228c9a697ef3594">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a0b3284684328c58c0228c9a697ef3594">tbb::concurrent_vector< T, A ></a>
 </li>
-<li>reset()
-: <a class="el" href="a00126.html#a1874ab9048214245bff7b26c0d9e814b">tbb::flow::interface7::source_node< Output ></a>
+<li>reset_node()
+: <a class="el" href="a00144.html#aed1fa277170d6cee6d1437f1258ac544">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>resize()
-: <a class="el" href="a00046.html#a941917a8a840ff08ce8810ca9476ff46">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#a941917a8a840ff08ce8810ca9476ff46">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>resolution()
-: <a class="el" href="a00155.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">tbb::tick_count</a>
+: <a class="el" href="a00170.html#aaf6a0d91e7d40f7d68e0ad6b79350e58">tbb::tick_count</a>
 </li>
 <li>root_task()
-: <a class="el" href="a00061.html#ae5f59627a7d130cf289f105a849ad3f0">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#ae5f59627a7d130cf289f105a849ad3f0">tbb::flow::interface7::graph</a>
 </li>
 <li>rows()
-: <a class="el" href="a00022.html#a4f7299e74c40df57dee2433c07ce65ae">tbb::blocked_range2d< RowValue, ColValue ></a>
-, <a class="el" href="a00023.html#aeac1def585af81467573f30ebb42cb4f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+: <a class="el" href="a00025.html#a4f7299e74c40df57dee2433c07ce65ae">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#aeac1def585af81467573f30ebb42cb4f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>run()
-: <a class="el" href="a00089.html#a270dba81f7dd9935be7f3d69db907ff4">tbb::pipeline</a>
-, <a class="el" href="a00061.html#ac0a03f1d59dc2ccb9526995599c2c83c">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00089.html#ac9ee9080cfc080c40a7ee7cb03a62637">tbb::pipeline</a>
-, <a class="el" href="a00061.html#a6e428c2d7c8780f3c2587a71c4d92466">tbb::flow::interface7::graph</a>
-, <a class="el" href="a00088.html#a20607ba5faa958144787d980aa850c16">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00107.html#a270dba81f7dd9935be7f3d69db907ff4">tbb::pipeline</a>
+, <a class="el" href="a00070.html#ac0a03f1d59dc2ccb9526995599c2c83c">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00107.html#ac9ee9080cfc080c40a7ee7cb03a62637">tbb::pipeline</a>
+, <a class="el" href="a00070.html#a6e428c2d7c8780f3c2587a71c4d92466">tbb::flow::interface7::graph</a>
+, <a class="el" href="a00106.html#a20607ba5faa958144787d980aa850c16">tbb::parallel_while< Body ></a>
 </li>
 <li>runtime_loader()
-: <a class="el" href="a00110.html#a3e0932074d2f3ad04605e7e5da88c561">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a3e0932074d2f3ad04605e7e5da88c561">tbb::interface6::runtime_loader</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html
index 2f27402..a140f8b 100644
--- a/doc/html/functions_func_0x73.html
+++ b/doc/html/functions_func_0x73.html
@@ -74,71 +74,71 @@
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
 <li>scoped_lock()
-: <a class="el" href="a00116.html#a23122745ccd5fc2498fcbbd5ced09e06">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#aa82d9da0dcfe5b21f1c08473f8223105">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a0a9962a3932cfbd0d12cb197494f951b">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a1ae3792726dcff8da1f2c5366fb2b754">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a4287be975cf2448c95f068b065c45107">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#a0afe0107eb0aae613e726f67624d2fca">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#af1b55ca1839c9c7c2cd779cd2dd9c474">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a285b355121772c874a7ecaaf4d347224">tbb::spin_rw_mutex_v3::scoped_lock</a>
-, <a class="el" href="a00118.html#aaed982d8c3f1e84298f9842063694f3c">tbb::interface5::reader_writer_lock::scoped_lock</a>
+: <a class="el" href="a00140.html#a23122745ccd5fc2498fcbbd5ced09e06">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#aa82d9da0dcfe5b21f1c08473f8223105">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a0a9962a3932cfbd0d12cb197494f951b">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a1ae3792726dcff8da1f2c5366fb2b754">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a4287be975cf2448c95f068b065c45107">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#a0afe0107eb0aae613e726f67624d2fca">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#af1b55ca1839c9c7c2cd779cd2dd9c474">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a285b355121772c874a7ecaaf4d347224">tbb::spin_rw_mutex_v3::scoped_lock</a>
+, <a class="el" href="a00133.html#aaed982d8c3f1e84298f9842063694f3c">tbb::interface5::reader_writer_lock::scoped_lock</a>
 </li>
 <li>scoped_lock_read()
-: <a class="el" href="a00123.html#a9d3120a23016dabd4cc2683fa561ee5a">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
+: <a class="el" href="a00141.html#a9d3120a23016dabd4cc2683fa561ee5a">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
 </li>
 <li>seconds()
-: <a class="el" href="a00066.html#abe81446bbbb6b6e98d854b91acf47809">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#abe81446bbbb6b6e98d854b91acf47809">tbb::tick_count::interval_t</a>
 </li>
 <li>sequencer_node()
-: <a class="el" href="a00125.html#a0e8d3d486edc7f70c81b36ce9421c11a">tbb::flow::interface7::sequencer_node< T, A ></a>
+: <a class="el" href="a00143.html#a0e8d3d486edc7f70c81b36ce9421c11a">tbb::flow::interface7::sequencer_node< T, A ></a>
 </li>
 <li>set_capacity()
-: <a class="el" href="a00034.html#a768699675813575eec08c1f43afda395">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a768699675813575eec08c1f43afda395">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>set_state()
-: <a class="el" href="a00081.html#a0857c4596d7d5de09fe402ccd41d3e42">tbb::mutex</a>
+: <a class="el" href="a00099.html#a0857c4596d7d5de09fe402ccd41d3e42">tbb::mutex</a>
 </li>
 <li>shrink_to_fit()
-: <a class="el" href="a00046.html#aba805b5225ad3399550f78ea15e51e93">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#aba805b5225ad3399550f78ea15e51e93">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>size()
-: <a class="el" href="a00037.html#a7d86ba200474b51ec99a6b917429c6bb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00021.html#a347ef8caa40edca3b7f475f182281140">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00035.html#ad2ce6da7cd62bc7425f0a29498332ab4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
-, <a class="el" href="a00034.html#a9d6c20fd8c193c12b6a7b0c3101fd966">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00046.html#a803268c16e3688ff4681251947d257c7">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00052.html#a4c33c5390783e17daf2b25d53ae919fb">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00045.html#a7d86ba200474b51ec99a6b917429c6bb">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00024.html#a347ef8caa40edca3b7f475f182281140">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00043.html#ad2ce6da7cd62bc7425f0a29498332ab4">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+, <a class="el" href="a00042.html#a9d6c20fd8c193c12b6a7b0c3101fd966">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00053.html#a803268c16e3688ff4681251947d257c7">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00061.html#a4c33c5390783e17daf2b25d53ae919fb">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>source_node()
-: <a class="el" href="a00126.html#a5730a4677f5bfdf6ff6e45e31a249d37">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a5730a4677f5bfdf6ff6e45e31a249d37">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>spin_mutex()
-: <a class="el" href="a00127.html#a6c96196965bf7df426311d282ad3c378">tbb::spin_mutex</a>
+: <a class="el" href="a00145.html#a6c96196965bf7df426311d282ad3c378">tbb::spin_mutex</a>
 </li>
 <li>spin_rw_mutex_v3()
-: <a class="el" href="a00128.html#ad30fc1ffa0a2b8134e177e02c5821d7f">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#ad30fc1ffa0a2b8134e177e02c5821d7f">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>start()
-: <a class="el" href="a00013.html#adc0e032aa604f1da85ffc7ec269b157f">tbb::interface6::aggregator_operation</a>
+: <a class="el" href="a00014.html#adc0e032aa604f1da85ffc7ec269b157f">tbb::interface6::aggregator_operation</a>
 </li>
 <li>start_routine()
-: <a class="el" href="a00152.html#a33d533b3301c45708c6252d040f855a6">tbb::internal::thread_closure_1< F, X ></a>
-, <a class="el" href="a00153.html#a29003179f98d768622c72b9ab5cfe8f6">tbb::internal::thread_closure_2< F, X, Y ></a>
+: <a class="el" href="a00167.html#a33d533b3301c45708c6252d040f855a6">tbb::internal::thread_closure_1< F, X ></a>
+, <a class="el" href="a00168.html#a29003179f98d768622c72b9ab5cfe8f6">tbb::internal::thread_closure_2< F, X, Y ></a>
 </li>
 <li>status()
-: <a class="el" href="a00110.html#a85bf9ee021a2076a3ac7cfd70aae7345">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#a85bf9ee021a2076a3ac7cfd70aae7345">tbb::interface6::runtime_loader</a>
 </li>
 <li>swap()
-: <a class="el" href="a00046.html#a8603bd57324fb6b60ba006884c95279d">tbb::concurrent_vector< T, A ></a>
-, <a class="el" href="a00037.html#aa6ee6d356e538b67a7cb4e242e6e36c9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00035.html#a4c8edf603bc776a6c84c007702c1808e">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00053.html#a8603bd57324fb6b60ba006884c95279d">tbb::concurrent_vector< T, A ></a>
+, <a class="el" href="a00045.html#aa6ee6d356e538b67a7cb4e242e6e36c9">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00043.html#a4c8edf603bc776a6c84c007702c1808e">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x74.html b/doc/html/functions_func_0x74.html
index 5875a17..c6a82df 100644
--- a/doc/html/functions_func_0x74.html
+++ b/doc/html/functions_func_0x74.html
@@ -74,94 +74,94 @@
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>task_arena()
-: <a class="el" href="a00135.html#a6035737ce1a8db376d06880dae9d0c40">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a6035737ce1a8db376d06880dae9d0c40">tbb::interface7::task_arena</a>
 </li>
 <li>task_scheduler_observer()
-: <a class="el" href="a00142.html#a36e7e0c466320029d5a3e50a573e04c1">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00157.html#a36e7e0c466320029d5a3e50a573e04c1">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>task_scheduler_observer_v3()
-: <a class="el" href="a00143.html#a25bffb05efaaab36bc58590969e29745">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a25bffb05efaaab36bc58590969e29745">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 <li>tbb_thread_v3()
-: <a class="el" href="a00149.html#a672a5367e687635c869926bf8a986296">tbb::internal::tbb_thread_v3</a>
+: <a class="el" href="a00164.html#a672a5367e687635c869926bf8a986296">tbb::internal::tbb_thread_v3</a>
 </li>
 <li>terminate()
-: <a class="el" href="a00135.html#aecb3eedeacfe8469a91c17525dae7fc9">tbb::interface7::task_arena</a>
-, <a class="el" href="a00141.html#a15d5dca7f79c5769bb96f674e4da0c04">tbb::task_scheduler_init</a>
+: <a class="el" href="a00150.html#aecb3eedeacfe8469a91c17525dae7fc9">tbb::interface7::task_arena</a>
+, <a class="el" href="a00156.html#a15d5dca7f79c5769bb96f674e4da0c04">tbb::task_scheduler_init</a>
 </li>
 <li>throw_self()
-: <a class="el" href="a00146.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>
-, <a class="el" href="a00031.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>
-, <a class="el" href="a00078.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00147.html#a1713aa9a6a3850049d34358397a8ed81">tbb::internal::tbb_exception_ptr</a>
+: <a class="el" href="a00161.html#ae45c08d36c7ec7ae91785da3515a8828">tbb::tbb_exception</a>
+, <a class="el" href="a00035.html#ac9ae925678fcc0cc02a74df7d06b8d63">tbb::captured_exception</a>
+, <a class="el" href="a00097.html#a3d1570b53220fbcb45eb81552b57827a">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00162.html#a1713aa9a6a3850049d34358397a8ed81">tbb::internal::tbb_exception_ptr</a>
 </li>
 <li>tick_count()
-: <a class="el" href="a00155.html#a9f1daa0b7a4feb800f802b4be1f1e497">tbb::tick_count</a>
+: <a class="el" href="a00170.html#a9f1daa0b7a4feb800f802b4be1f1e497">tbb::tick_count</a>
 </li>
 <li>try_acquire()
-: <a class="el" href="a00116.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#ab4800ba9e743cd91f152036a6689b0e9">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a4843d40dddc37c1aa3444e27d35d2433">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00120.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00113.html#a76acbd67c74906f6ea33a1de6fd443ce">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#abf17ada91882fd70f139c503c0220f16">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00140.html#a46f983371aa852d2427ce69f9a571f78">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#ab4800ba9e743cd91f152036a6689b0e9">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a4843d40dddc37c1aa3444e27d35d2433">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00139.html#a160bba506f4033980ddb69ab7a02c4fb">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00134.html#a76acbd67c74906f6ea33a1de6fd443ce">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#abf17ada91882fd70f139c503c0220f16">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>try_consume()
-: <a class="el" href="a00124.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00027.html#a335072bc547c5e9b40f58dfeab525953">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00142.html#ad404d5218c7ae2556261ffa880cdf804">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#ad38a58c2f8f74f4c5cf72a2625ac26bf">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00030.html#a335072bc547c5e9b40f58dfeab525953">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_get()
-: <a class="el" href="a00124.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a038c6b2b406d496244617a2d6dc01581">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00086.html#a575642eb611ca4e2012df5604634d341">tbb::flow::interface7::overwrite_node< T ></a>
-, <a class="el" href="a00027.html#a175cb77dfbdd0e322097a833a2271c1e">tbb::flow::interface7::buffer_node< T, A ></a>
+: <a class="el" href="a00142.html#ad50b8ac93e79cbdcd2bba11d35432f2c">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a038c6b2b406d496244617a2d6dc01581">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00104.html#aa655eef6671b35f99dfbddd0f3cf2309">tbb::flow::interface7::overwrite_node< T ></a>
+, <a class="el" href="a00030.html#a175cb77dfbdd0e322097a833a2271c1e">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_lock()
-: <a class="el" href="a00107.html#a8b181d9aaa95444145222cfe206e8094">tbb::recursive_mutex</a>
-, <a class="el" href="a00127.html#a003ffb196d22bf22ca22142338b7eeab">tbb::spin_mutex</a>
-, <a class="el" href="a00128.html#ab6ec20b1ec43a49c8c2908984e35b5e8">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00095.html#a1739e842af52925a2d4a7e821b9b3b8d">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00081.html#a480283933106941125717499f9c5ad42">tbb::mutex</a>
+: <a class="el" href="a00113.html#a1739e842af52925a2d4a7e821b9b3b8d">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00125.html#a8b181d9aaa95444145222cfe206e8094">tbb::recursive_mutex</a>
+, <a class="el" href="a00145.html#a003ffb196d22bf22ca22142338b7eeab">tbb::spin_mutex</a>
+, <a class="el" href="a00146.html#ab6ec20b1ec43a49c8c2908984e35b5e8">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00099.html#a480283933106941125717499f9c5ad42">tbb::mutex</a>
 </li>
 <li>try_lock_read()
-: <a class="el" href="a00095.html#a9c7aa04e00202c9a1197cb6d870cabb4">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00128.html#ac932f65b0b66320688e7957ce9c3e2c1">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#ac932f65b0b66320688e7957ce9c3e2c1">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00113.html#a9c7aa04e00202c9a1197cb6d870cabb4">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>try_pop()
-: <a class="el" href="a00037.html#a954177b09e184cf3db47f1b180a7ef5e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#aabb1acef18196fa11ed7db8e046c3943">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a3086cb4dcdeee245ef5cf34f72fb3e10">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00045.html#a954177b09e184cf3db47f1b180a7ef5e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#aabb1acef18196fa11ed7db8e046c3943">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a3086cb4dcdeee245ef5cf34f72fb3e10">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>try_process_item()
-: <a class="el" href="a00150.html#a12cfa43c620066a8783529cc8519c6f9">tbb::thread_bound_filter</a>
+: <a class="el" href="a00165.html#a12cfa43c620066a8783529cc8519c6f9">tbb::thread_bound_filter</a>
 </li>
 <li>try_push()
-: <a class="el" href="a00034.html#a03d93a240841a21788396bebd71c51bd">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#a93f35e9d9381629e0a2993f9fdd96d92">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>try_put()
-: <a class="el" href="a00106.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#aee5067bb4f4b71ffa786c1b33cb9aa6a">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>try_put_task()
-: <a class="el" href="a00025.html#a07d030b43c6e2d9169a7e58db30a547b">tbb::flow::interface7::broadcast_node< T ></a>
-, <a class="el" href="a00027.html#aa4517c0a58649ea5eb140ab4b786e1ec">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00072.html#a0551cf104b35669b5f5153c1d03d5d2d">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00028.html#a07d030b43c6e2d9169a7e58db30a547b">tbb::flow::interface7::broadcast_node< T ></a>
+, <a class="el" href="a00091.html#a0551cf104b35669b5f5153c1d03d5d2d">tbb::flow::interface7::limiter_node< T ></a>
+, <a class="el" href="a00030.html#aa4517c0a58649ea5eb140ab4b786e1ec">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 <li>try_release()
-: <a class="el" href="a00027.html#aaa3745fd4705345df16fb33954d93e30">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00126.html#a309c65a2d0208a1072f7e852198d461d">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00124.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>
+: <a class="el" href="a00144.html#a309c65a2d0208a1072f7e852198d461d">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00030.html#aaa3745fd4705345df16fb33954d93e30">tbb::flow::interface7::buffer_node< T, A ></a>
+, <a class="el" href="a00142.html#a97ac316ddfb6bd7c7f2f56e3e819a30a">tbb::flow::interface7::sender< T ></a>
 </li>
 <li>try_reserve()
-: <a class="el" href="a00124.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00027.html#a3b12cdebf8cef15b90e3c9cd9e51019f">tbb::flow::interface7::buffer_node< T, A ></a>
-, <a class="el" href="a00126.html#aabb0d505d684d173b1a2c976bf0781a6">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00142.html#aa1b9dcf77ab558530ff93a706b4c4b5d">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#aabb0d505d684d173b1a2c976bf0781a6">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00030.html#a3b12cdebf8cef15b90e3c9cd9e51019f">tbb::flow::interface7::buffer_node< T, A ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html
index d348db6..3130ed8 100644
--- a/doc/html/functions_func_0x75.html
+++ b/doc/html/functions_func_0x75.html
@@ -74,24 +74,24 @@
 
 <h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
 <li>unlock()
-: <a class="el" href="a00081.html#a721eeae7ba16f8b92535f4534b583874">tbb::mutex</a>
-, <a class="el" href="a00095.html#a4c55c4dbde63e950fdc843c9b01a174f">tbb::interface5::reader_writer_lock</a>
-, <a class="el" href="a00127.html#adfcf8fe840aa73c08c2cadd570fd48fd">tbb::spin_mutex</a>
-, <a class="el" href="a00128.html#ab04321ed2cdf12ac5825c54591028fc0">tbb::spin_rw_mutex_v3</a>
-, <a class="el" href="a00107.html#af57e8d25e0e7614e98bcfa50bc9416c8">tbb::recursive_mutex</a>
+: <a class="el" href="a00099.html#a721eeae7ba16f8b92535f4534b583874">tbb::mutex</a>
+, <a class="el" href="a00113.html#a4c55c4dbde63e950fdc843c9b01a174f">tbb::interface5::reader_writer_lock</a>
+, <a class="el" href="a00145.html#adfcf8fe840aa73c08c2cadd570fd48fd">tbb::spin_mutex</a>
+, <a class="el" href="a00146.html#ab04321ed2cdf12ac5825c54591028fc0">tbb::spin_rw_mutex_v3</a>
+, <a class="el" href="a00125.html#af57e8d25e0e7614e98bcfa50bc9416c8">tbb::recursive_mutex</a>
 </li>
 <li>unsafe_size()
-: <a class="el" href="a00038.html#aad4b253ba595637b0b146eb6565556f2">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#aad4b253ba595637b0b146eb6565556f2">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>upgrade_to_writer()
-: <a class="el" href="a00119.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#afbe5de57eadc457518df7a1bb0d30c00">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00131.html#ae0f28ecfbbc5f8b3024cd47048b72b5b">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#afbe5de57eadc457518df7a1bb0d30c00">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html
index 82b29d8..df834bd 100644
--- a/doc/html/functions_func_0x77.html
+++ b/doc/html/functions_func_0x77.html
@@ -74,21 +74,21 @@
 
 <h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
 <li>wait_for_all()
-: <a class="el" href="a00061.html#a397208ce3b432c83cd24f416b082e8db">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a397208ce3b432c83cd24f416b082e8db">tbb::flow::interface7::graph</a>
 </li>
 <li>what()
-: <a class="el" href="a00146.html#ae0ad81121d4b722ecc466b5d3cc4e919">tbb::tbb_exception</a>
-, <a class="el" href="a00078.html#a41a2a7b61537ecd684bae760366f611c">tbb::movable_exception< ExceptionData ></a>
-, <a class="el" href="a00031.html#ac97ee315d8613c803dae2f6d3e0b91a7">tbb::captured_exception</a>
+: <a class="el" href="a00161.html#ae0ad81121d4b722ecc466b5d3cc4e919">tbb::tbb_exception</a>
+, <a class="el" href="a00097.html#a41a2a7b61537ecd684bae760366f611c">tbb::movable_exception< ExceptionData ></a>
+, <a class="el" href="a00035.html#ac97ee315d8613c803dae2f6d3e0b91a7">tbb::captured_exception</a>
 </li>
 <li>write_once_node()
-: <a class="el" href="a00159.html#a68b94bb09b608522462080fe99125e07">tbb::flow::interface7::write_once_node< T ></a>
+: <a class="el" href="a00176.html#a68b94bb09b608522462080fe99125e07">tbb::flow::interface7::write_once_node< T ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html
index 9efbbaa..b7f9d02 100644
--- a/doc/html/functions_func_0x7e.html
+++ b/doc/html/functions_func_0x7e.html
@@ -74,94 +74,94 @@
 
 <h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
 <li>~combinable()
-: <a class="el" href="a00032.html#a52f00cf262d768048db72ab73c8f3ca4">tbb::combinable< T ></a>
+: <a class="el" href="a00036.html#a52f00cf262d768048db72ab73c8f3ca4">tbb::combinable< T ></a>
 </li>
 <li>~concurrent_bounded_queue()
-: <a class="el" href="a00034.html#ab1291bf6837ecfb8836c24dde5dd80b5">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00042.html#ab1291bf6837ecfb8836c24dde5dd80b5">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>~concurrent_hash_map()
-: <a class="el" href="a00035.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
+: <a class="el" href="a00043.html#a9ce9ab8c954bf6979c2c57d10fd8a8ed">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a>
 </li>
 <li>~concurrent_queue()
-: <a class="el" href="a00038.html#aa0056b242f280f5e25332ce998f9f670">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00046.html#aa0056b242f280f5e25332ce998f9f670">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>~concurrent_vector()
-: <a class="el" href="a00046.html#ab5bcaededc9a00e7aaecd6c262fd0b38">tbb::concurrent_vector< T, A ></a>
+: <a class="el" href="a00053.html#ab5bcaededc9a00e7aaecd6c262fd0b38">tbb::concurrent_vector< T, A ></a>
 </li>
 <li>~const_accessor()
-: <a class="el" href="a00047.html#afbc0c85a146c912b9a0f94a7695957c7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+: <a class="el" href="a00054.html#afbc0c85a146c912b9a0f94a7695957c7">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
 </li>
 <li>~continue_receiver()
-: <a class="el" href="a00050.html#a2ca2de23e1e1eeb7071a838a457a50b2">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00057.html#a2ca2de23e1e1eeb7071a838a457a50b2">tbb::flow::interface7::continue_receiver</a>
 </li>
 <li>~enumerable_thread_specific()
-: <a class="el" href="a00052.html#a6ea8d717f770acb63efc406df52d4585">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+: <a class="el" href="a00061.html#a6ea8d717f770acb63efc406df52d4585">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
 </li>
 <li>~fixed_pool()
-: <a class="el" href="a00056.html#ab854a85575e5c1e9c9f4d3eafcc28044">tbb::interface6::fixed_pool</a>
+: <a class="el" href="a00065.html#ab854a85575e5c1e9c9f4d3eafcc28044">tbb::interface6::fixed_pool</a>
 </li>
 <li>~graph()
-: <a class="el" href="a00061.html#a3412df4d4bf0113aed93c958bbb49ec4">tbb::flow::interface7::graph</a>
+: <a class="el" href="a00070.html#a3412df4d4bf0113aed93c958bbb49ec4">tbb::flow::interface7::graph</a>
 </li>
 <li>~memory_pool()
-: <a class="el" href="a00073.html#ad2c7645b39b7280b1b3cf393d05fbaf7">tbb::interface6::memory_pool< Alloc ></a>
+: <a class="el" href="a00092.html#ad2c7645b39b7280b1b3cf393d05fbaf7">tbb::interface6::memory_pool< Alloc ></a>
 </li>
 <li>~parallel_while()
-: <a class="el" href="a00088.html#ac2fd559c8a38639fa1ba97a0d5639ca8">tbb::parallel_while< Body ></a>
+: <a class="el" href="a00106.html#ac2fd559c8a38639fa1ba97a0d5639ca8">tbb::parallel_while< Body ></a>
 </li>
 <li>~pipeline()
-: <a class="el" href="a00089.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">tbb::pipeline</a>
+: <a class="el" href="a00107.html#ac3a7b33217b3f3bb0682ec3a40fd2c39">tbb::pipeline</a>
 </li>
 <li>~queuing_rw_mutex()
-: <a class="el" href="a00094.html#ae67fe828d7e07222e7876ef9fd780fcc">tbb::queuing_rw_mutex</a>
+: <a class="el" href="a00112.html#ae67fe828d7e07222e7876ef9fd780fcc">tbb::queuing_rw_mutex</a>
 </li>
 <li>~reader_writer_lock()
-: <a class="el" href="a00095.html#aeee96b648c7b5ff6126c8a2e13ec7241">tbb::interface5::reader_writer_lock</a>
+: <a class="el" href="a00113.html#aeee96b648c7b5ff6126c8a2e13ec7241">tbb::interface5::reader_writer_lock</a>
 </li>
 <li>~receiver()
-: <a class="el" href="a00106.html#a733889a9053478ef2fb2528e2205bf07">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#a733889a9053478ef2fb2528e2205bf07">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>~runtime_loader()
-: <a class="el" href="a00110.html#aa3b96f53e165e3d692c3c36292ba0737">tbb::interface6::runtime_loader</a>
+: <a class="el" href="a00128.html#aa3b96f53e165e3d692c3c36292ba0737">tbb::interface6::runtime_loader</a>
 </li>
 <li>~scoped_lock()
-: <a class="el" href="a00113.html#a9940d6e494466d9c53846ed347d79d83">tbb::spin_mutex::scoped_lock</a>
-, <a class="el" href="a00116.html#a08c399ee0bb9762039b29e570ec46fe9">tbb::mutex::scoped_lock</a>
-, <a class="el" href="a00119.html#a6cb16cc55f884bbbd5a69430c47b288f">tbb::queuing_rw_mutex::scoped_lock</a>
-, <a class="el" href="a00118.html#a41e77cf094ed30b0a9a39ee217c3653b">tbb::interface5::reader_writer_lock::scoped_lock</a>
-, <a class="el" href="a00120.html#a90a966e19120aac99b36a3d6d04af1a2">tbb::recursive_mutex::scoped_lock</a>
-, <a class="el" href="a00121.html#a469ec43836a8dd250ce0a22b02945630">tbb::queuing_mutex::scoped_lock</a>
-, <a class="el" href="a00114.html#a5c27ca2e0c9db960a9a7430082ff7edd">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00134.html#a9940d6e494466d9c53846ed347d79d83">tbb::spin_mutex::scoped_lock</a>
+, <a class="el" href="a00140.html#a08c399ee0bb9762039b29e570ec46fe9">tbb::mutex::scoped_lock</a>
+, <a class="el" href="a00131.html#a6cb16cc55f884bbbd5a69430c47b288f">tbb::queuing_rw_mutex::scoped_lock</a>
+, <a class="el" href="a00133.html#a41e77cf094ed30b0a9a39ee217c3653b">tbb::interface5::reader_writer_lock::scoped_lock</a>
+, <a class="el" href="a00139.html#a90a966e19120aac99b36a3d6d04af1a2">tbb::recursive_mutex::scoped_lock</a>
+, <a class="el" href="a00132.html#a469ec43836a8dd250ce0a22b02945630">tbb::queuing_mutex::scoped_lock</a>
+, <a class="el" href="a00135.html#a5c27ca2e0c9db960a9a7430082ff7edd">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>~scoped_lock_read()
-: <a class="el" href="a00123.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
+: <a class="el" href="a00141.html#acf0e23fb4d3aeb6bde18d5d1236bd9d5">tbb::interface5::reader_writer_lock::scoped_lock_read</a>
 </li>
 <li>~sequencer_node()
-: <a class="el" href="a00125.html#a01fd0321c7bd0f2112458cec2a636d7d">tbb::flow::interface7::sequencer_node< T, A ></a>
+: <a class="el" href="a00143.html#a01fd0321c7bd0f2112458cec2a636d7d">tbb::flow::interface7::sequencer_node< T, A ></a>
 </li>
 <li>~source_node()
-: <a class="el" href="a00126.html#a5ce12e348e121b9f4dffda9d1035c490">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00144.html#a5ce12e348e121b9f4dffda9d1035c490">tbb::flow::interface7::source_node< Output ></a>
 </li>
 <li>~spin_rw_mutex_v3()
-: <a class="el" href="a00128.html#acc7cf2e4b14d3a2a591a3552d74ba99d">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#acc7cf2e4b14d3a2a591a3552d74ba99d">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>~task_arena()
-: <a class="el" href="a00135.html#a9ff5a35a219953a4f3d99b833fa5f683">tbb::interface7::task_arena</a>
+: <a class="el" href="a00150.html#a9ff5a35a219953a4f3d99b833fa5f683">tbb::interface7::task_arena</a>
 </li>
 <li>~task_scheduler_init()
-: <a class="el" href="a00141.html#a20b121334ec39c1d91bd4fe9a51892b0">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a20b121334ec39c1d91bd4fe9a51892b0">tbb::task_scheduler_init</a>
 </li>
 <li>~task_scheduler_observer()
-: <a class="el" href="a00142.html#a9ef3f1853439b46e5a9db7fd1c0f9116">tbb::interface6::task_scheduler_observer</a>
+: <a class="el" href="a00157.html#a9ef3f1853439b46e5a9db7fd1c0f9116">tbb::interface6::task_scheduler_observer</a>
 </li>
 <li>~task_scheduler_observer_v3()
-: <a class="el" href="a00143.html#a151e475ebba39172fcc13f43bed426cc">tbb::internal::task_scheduler_observer_v3</a>
+: <a class="el" href="a00158.html#a151e475ebba39172fcc13f43bed426cc">tbb::internal::task_scheduler_observer_v3</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
index 17184d5..b06e5f5 100644
--- a/doc/html/functions_rela.html
+++ b/doc/html/functions_rela.html
@@ -46,26 +46,26 @@
 <div class="contents">
  <ul>
 <li>limiter_node
-: <a class="el" href="a00106.html#a05ec930a348f7eed564236d00edbda24">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#a05ec930a348f7eed564236d00edbda24">tbb::flow::interface7::receiver< T ></a>
 </li>
 <li>make_filter
-: <a class="el" href="a00054.html#a21460fde704da22caa222778f5abb140">tbb::interface6::filter_t< T, U ></a>
+: <a class="el" href="a00063.html#a21460fde704da22caa222778f5abb140">tbb::interface6::filter_t< T, U ></a>
 </li>
 <li>operator+
-: <a class="el" href="a00066.html#ac8910ee3b69f68eb905af787c273e9a8">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00085.html#ac8910ee3b69f68eb905af787c273e9a8">tbb::tick_count::interval_t</a>
 </li>
 <li>operator-
-: <a class="el" href="a00155.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count</a>
-, <a class="el" href="a00066.html#a3d11133daa9a7d3c903d070293278f8f">tbb::tick_count::interval_t</a>
+: <a class="el" href="a00170.html#ab5ceaed3ebf5a0d41088a5bc7c8dc653">tbb::tick_count</a>
+, <a class="el" href="a00085.html#a3d11133daa9a7d3c903d070293278f8f">tbb::tick_count::interval_t</a>
 </li>
 <li>run_and_put_task
-: <a class="el" href="a00106.html#abaf9bf74ca5f2854d09f5f07337280eb">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00124.html#abaf9bf74ca5f2854d09f5f07337280eb">tbb::flow::interface7::receiver< T ></a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
index 0b88ecb..cbe0ebd 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -45,6 +45,7 @@
   <div id="navrow4" class="tabs3">
     <ul class="tablist">
       <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
       <li><a href="#index_c"><span>c</span></a></li>
       <li><a href="#index_d"><span>d</span></a></li>
       <li><a href="#index_i"><span>i</span></a></li>
@@ -62,111 +63,118 @@
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>allocator_type
-: <a class="el" href="a00037.html#a1d2cebf242fa83d88eebdc3ad6891fb1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00052.html#ad50ceae1b0e91d0fd31fe506e690692b">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
-, <a class="el" href="a00034.html#acbfceb845de1c770e2b56409f09b0364">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#acbdd1a5bd034358fb0774b322a66b1ed">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00045.html#a1d2cebf242fa83d88eebdc3ad6891fb1">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00061.html#ad50ceae1b0e91d0fd31fe506e690692b">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a>
+, <a class="el" href="a00042.html#acbfceb845de1c770e2b56409f09b0364">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#acbdd1a5bd034358fb0774b322a66b1ed">tbb::strict_ppl::concurrent_queue< T, A ></a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>built_successors_type
+: <a class="el" href="a00142.html#a8aba8b2c5950f113a88f43a97c2207f5">tbb::flow::interface7::sender< T ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
 <li>const_iterator
-: <a class="el" href="a00021.html#ad56ca70af46acf8870b4970d8a809791">tbb::blocked_range< Value ></a>
+: <a class="el" href="a00024.html#ad56ca70af46acf8870b4970d8a809791">tbb::blocked_range< Value ></a>
 </li>
 <li>const_reference
-: <a class="el" href="a00034.html#af838e520ce0db2c22369748c019b11cb">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#a478c2b7f763b2e821e01cc14e13baf4c">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00037.html#a0bd617fe8e4657777e86f0ae15d8094f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00042.html#af838e520ce0db2c22369748c019b11cb">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#a478c2b7f763b2e821e01cc14e13baf4c">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00045.html#a0bd617fe8e4657777e86f0ae15d8094f">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
 <li>difference_type
-: <a class="el" href="a00037.html#ae010b1fa9c0942504737228474b51a0b">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#a72725361e050c5a981035a20ef1b773e">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#a63b42d83a9ed13fc6741e0b4388b0e96">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00045.html#ae010b1fa9c0942504737228474b51a0b">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#a72725361e050c5a981035a20ef1b773e">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#a63b42d83a9ed13fc6741e0b4388b0e96">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
 <li>input_type
-: <a class="el" href="a00106.html#a16eccc851b858604344bb8f1bb9eedc8">tbb::flow::interface7::receiver< T ></a>
-, <a class="el" href="a00050.html#a7474ed0edad2bb26d9f86065ecf2c93d">tbb::flow::interface7::continue_receiver</a>
+: <a class="el" href="a00124.html#a16eccc851b858604344bb8f1bb9eedc8">tbb::flow::interface7::receiver< T ></a>
+, <a class="el" href="a00057.html#a7474ed0edad2bb26d9f86065ecf2c93d">tbb::flow::interface7::continue_receiver</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
 <li>native_handle_type
-: <a class="el" href="a00081.html#abbe0cd12246121753ace00a5a12a90b0">tbb::mutex</a>
-, <a class="el" href="a00107.html#a3d40334b0e26d5addfde5596e7f9aaec">tbb::recursive_mutex</a>
+: <a class="el" href="a00099.html#abbe0cd12246121753ace00a5a12a90b0">tbb::mutex</a>
+, <a class="el" href="a00125.html#a3d40334b0e26d5addfde5596e7f9aaec">tbb::recursive_mutex</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
 <li>output_type
-: <a class="el" href="a00124.html#add86fddf72758d8e5b05b07650c6eeed">tbb::flow::interface7::sender< T ></a>
-, <a class="el" href="a00126.html#a0308ffc2e5c24739cd85e769ec8a8f5f">tbb::flow::interface7::source_node< Output ></a>
+: <a class="el" href="a00142.html#add86fddf72758d8e5b05b07650c6eeed">tbb::flow::interface7::sender< T ></a>
+, <a class="el" href="a00144.html#a0308ffc2e5c24739cd85e769ec8a8f5f">tbb::flow::interface7::source_node< Output ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
 <li>page_range_type
-: <a class="el" href="a00023.html#a8cdc866378a12ce198da870d0439676f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
+: <a class="el" href="a00026.html#a8cdc866378a12ce198da870d0439676f">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>predecessor_type
-: <a class="el" href="a00050.html#a86d210b5614d47aaa43731b7e303751f">tbb::flow::interface7::continue_receiver</a>
-, <a class="el" href="a00106.html#afbadf5511bd568d283040cd88bd4e81e">tbb::flow::interface7::receiver< T ></a>
+: <a class="el" href="a00057.html#a86d210b5614d47aaa43731b7e303751f">tbb::flow::interface7::continue_receiver</a>
+, <a class="el" href="a00124.html#afbadf5511bd568d283040cd88bd4e81e">tbb::flow::interface7::receiver< T ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>reference
-: <a class="el" href="a00037.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00038.html#ab26ddf11b15d61ac87e6c1ae67af92a2">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00034.html#a5fa4002bcd265d9d3ed305e3b686f1da">tbb::concurrent_bounded_queue< T, A ></a>
+: <a class="el" href="a00045.html#ae4b7ed2ddc8ec6cc910f935c9d299c7a">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00046.html#ab26ddf11b15d61ac87e6c1ae67af92a2">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00042.html#a5fa4002bcd265d9d3ed305e3b686f1da">tbb::concurrent_bounded_queue< T, A ></a>
 </li>
 <li>row_range_type
-: <a class="el" href="a00022.html#ada609b296a9af0591cc34761b8538100">tbb::blocked_range2d< RowValue, ColValue ></a>
+: <a class="el" href="a00025.html#ada609b296a9af0591cc34761b8538100">tbb::blocked_range2d< RowValue, ColValue ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
 <li>size_type
-: <a class="el" href="a00021.html#a89b300cecd9d617e4ee801c786756e55">tbb::blocked_range< Value ></a>
-, <a class="el" href="a00037.html#a7d3da9b47ec58e1c09e3550f702edcfc">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
-, <a class="el" href="a00034.html#ae73fa352d781bdb9d01bfb77f2a8bc28">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00057.html#a8b84f8f2cc4499f49d17141eaedc99c0">tbb::interface6::flattened2d< Container ></a>
-, <a class="el" href="a00038.html#a9f883e49afea16293ba92da779981bb8">tbb::strict_ppl::concurrent_queue< T, A ></a>
+: <a class="el" href="a00024.html#a89b300cecd9d617e4ee801c786756e55">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00045.html#a7d3da9b47ec58e1c09e3550f702edcfc">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+, <a class="el" href="a00042.html#ae73fa352d781bdb9d01bfb77f2a8bc28">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00066.html#a8b84f8f2cc4499f49d17141eaedc99c0">tbb::interface6::flattened2d< Container ></a>
+, <a class="el" href="a00046.html#a9f883e49afea16293ba92da779981bb8">tbb::strict_ppl::concurrent_queue< T, A ></a>
 </li>
 <li>successor_type
-: <a class="el" href="a00126.html#ae354d135ba9aceb6ca41464fff027666">tbb::flow::interface7::source_node< Output ></a>
-, <a class="el" href="a00124.html#a7779627063a29d4d2a1fc905a5cae8db">tbb::flow::interface7::sender< T ></a>
+: <a class="el" href="a00144.html#ae354d135ba9aceb6ca41464fff027666">tbb::flow::interface7::source_node< Output ></a>
+, <a class="el" href="a00142.html#a7779627063a29d4d2a1fc905a5cae8db">tbb::flow::interface7::sender< T ></a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
 <li>value_type
-: <a class="el" href="a00047.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
-, <a class="el" href="a00088.html#a2442f019427e608d46801376267e44a8">tbb::parallel_while< Body ></a>
-, <a class="el" href="a00034.html#a6eb564625fef03dd9a5881d5d4e52f9f">tbb::concurrent_bounded_queue< T, A ></a>
-, <a class="el" href="a00038.html#aeeee93a7ac2eecc80bbf3e857e900538">tbb::strict_ppl::concurrent_queue< T, A ></a>
-, <a class="el" href="a00037.html#a2c75d97ae429019363ab6fd1a872512e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
+: <a class="el" href="a00054.html#aa8ca5aef4ee14b7eddb64767b8cd5fda">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a>
+, <a class="el" href="a00106.html#a2442f019427e608d46801376267e44a8">tbb::parallel_while< Body ></a>
+, <a class="el" href="a00042.html#a6eb564625fef03dd9a5881d5d4e52f9f">tbb::concurrent_bounded_queue< T, A ></a>
+, <a class="el" href="a00046.html#aeeee93a7ac2eecc80bbf3e857e900538">tbb::strict_ppl::concurrent_queue< T, A ></a>
+, <a class="el" href="a00045.html#a2c75d97ae429019363ab6fd1a872512e">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a>
 , <a class="el" href="a00010.html#a850178bbdcdbc4cf5955cab37eb8c42c">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
index 24488b7..dd729e3 100644
--- a/doc/html/functions_vars.html
+++ b/doc/html/functions_vars.html
@@ -46,49 +46,54 @@
 <div class="contents">
  <ul>
 <li>automatic
-: <a class="el" href="a00141.html#a945886f5ef48300a8ebff2d077c166b1">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a945886f5ef48300a8ebff2d077c166b1">tbb::task_scheduler_init</a>
 </li>
 <li>decrement
-: <a class="el" href="a00072.html#ac313b6586bf183a33c3196037964547d">tbb::flow::interface7::limiter_node< T ></a>
+: <a class="el" href="a00091.html#ac313b6586bf183a33c3196037964547d">tbb::flow::interface7::limiter_node< T ></a>
 </li>
 <li>deferred
-: <a class="el" href="a00141.html#af0e49ff2f59a4e53c9c07897b57f084d">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#af0e49ff2f59a4e53c9c07897b57f084d">tbb::task_scheduler_init</a>
 </li>
 <li>exact_exception_propagation
-: <a class="el" href="a00053.html#aab9689e23a96c6c9bf1c8caae74d92ee">tbb::filter</a>
+: <a class="el" href="a00062.html#aab9689e23a96c6c9bf1c8caae74d92ee">tbb::filter</a>
 </li>
 <li>filter_is_bound
-: <a class="el" href="a00053.html#a1382f216bd094064a18eb48ecc43c86b">tbb::filter</a>
+: <a class="el" href="a00062.html#a1382f216bd094064a18eb48ecc43c86b">tbb::filter</a>
 </li>
 <li>filter_is_out_of_order
-: <a class="el" href="a00053.html#a091fcf6abc79edfa5c8bf01f742e2392">tbb::filter</a>
+: <a class="el" href="a00062.html#a091fcf6abc79edfa5c8bf01f742e2392">tbb::filter</a>
 </li>
 <li>filter_is_serial
-: <a class="el" href="a00053.html#ae9dab2e01b0963b341ab04b59eec1475">tbb::filter</a>
+: <a class="el" href="a00062.html#ae9dab2e01b0963b341ab04b59eec1475">tbb::filter</a>
 </li>
 <li>filter_may_emit_null
-: <a class="el" href="a00053.html#a6645ec56872b6ba2056dcaa467e292f7">tbb::filter</a>
+: <a class="el" href="a00062.html#a6645ec56872b6ba2056dcaa467e292f7">tbb::filter</a>
+</li>
+<li>is_splittable_in_proportion
+: <a class="el" href="a00024.html#ae2b0210e2468092b408123adeb54b01c">tbb::blocked_range< Value ></a>
+, <a class="el" href="a00025.html#aa0519760654368000f7ebc87d9bfe898">tbb::blocked_range2d< RowValue, ColValue ></a>
+, <a class="el" href="a00026.html#a5940c1bd6ba0e8184ef83dea0ae56884">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a>
 </li>
 <li>is_writer
-: <a class="el" href="a00114.html#acfd129dc5106ad1129ba803e67311050">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00135.html#acfd129dc5106ad1129ba803e67311050">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>mutex
-: <a class="el" href="a00114.html#a8d70c5a2348e30a6979bfbf677328dc4">tbb::spin_rw_mutex_v3::scoped_lock</a>
+: <a class="el" href="a00135.html#a8d70c5a2348e30a6979bfbf677328dc4">tbb::spin_rw_mutex_v3::scoped_lock</a>
 </li>
 <li>my_exception_data
-: <a class="el" href="a00078.html#adba063da80054afe64d5268711084d9b">tbb::movable_exception< ExceptionData ></a>
+: <a class="el" href="a00097.html#adba063da80054afe64d5268711084d9b">tbb::movable_exception< ExceptionData ></a>
 </li>
 <li>state
-: <a class="el" href="a00128.html#aa28625051072472ccd8a2b19405d6fb3">tbb::spin_rw_mutex_v3</a>
+: <a class="el" href="a00146.html#aa28625051072472ccd8a2b19405d6fb3">tbb::spin_rw_mutex_v3</a>
 </li>
 <li>thread_stack_size
-: <a class="el" href="a00141.html#a8310e807e1199d0f23b3a57aeb4fde51">tbb::task_scheduler_init</a>
+: <a class="el" href="a00156.html#a8310e807e1199d0f23b3a57aeb4fde51">tbb::task_scheduler_init</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/globals.html b/doc/html/globals.html
index 960b695..47afb0c 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -40,43 +40,43 @@
 <div class="contents">
 <div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
 <li>scalable_aligned_free()
-: <a class="el" href="a00236.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_allocator.h</a>
 </li>
 <li>scalable_aligned_malloc()
-: <a class="el" href="a00236.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_allocator.h</a>
 </li>
 <li>scalable_aligned_realloc()
-: <a class="el" href="a00236.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_allocator.h</a>
 </li>
 <li>scalable_allocation_command()
-: <a class="el" href="a00236.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocator.h</a>
 </li>
 <li>scalable_allocation_mode()
-: <a class="el" href="a00236.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocator.h</a>
 </li>
 <li>scalable_calloc()
-: <a class="el" href="a00236.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_allocator.h</a>
 </li>
 <li>scalable_free()
-: <a class="el" href="a00236.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_allocator.h</a>
 </li>
 <li>scalable_malloc()
-: <a class="el" href="a00236.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_allocator.h</a>
 </li>
 <li>scalable_msize()
-: <a class="el" href="a00236.html#ga2b718206e50acb6392b86e4877d98213">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2b718206e50acb6392b86e4877d98213">scalable_allocator.h</a>
 </li>
 <li>scalable_posix_memalign()
-: <a class="el" href="a00236.html#gaf117b4994f719d539804da8dd115e28c">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gaf117b4994f719d539804da8dd115e28c">scalable_allocator.h</a>
 </li>
 <li>scalable_realloc()
-: <a class="el" href="a00236.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_allocator.h</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
index 89d5fea..0f3dbc7 100644
--- a/doc/html/globals_func.html
+++ b/doc/html/globals_func.html
@@ -40,43 +40,43 @@
 <div class="contents">
  <ul>
 <li>scalable_aligned_free()
-: <a class="el" href="a00236.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gad9aa7595581a7bc5be193d7e034c8f61">scalable_allocator.h</a>
 </li>
 <li>scalable_aligned_malloc()
-: <a class="el" href="a00236.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga903307de17bc1611515f8e6ae782a3d6">scalable_allocator.h</a>
 </li>
 <li>scalable_aligned_realloc()
-: <a class="el" href="a00236.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gaa07391c54330b2e4dd1743ae9c9c4f2d">scalable_allocator.h</a>
 </li>
 <li>scalable_allocation_command()
-: <a class="el" href="a00236.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gabe5acd876b4d89bf89787c4e779c2518">scalable_allocator.h</a>
 </li>
 <li>scalable_allocation_mode()
-: <a class="el" href="a00236.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga7f5029970f72ebbffee896c46a23958e">scalable_allocator.h</a>
 </li>
 <li>scalable_calloc()
-: <a class="el" href="a00236.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga3b4ff39555cd9e929fce2958325cd8ea">scalable_allocator.h</a>
 </li>
 <li>scalable_free()
-: <a class="el" href="a00236.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2ad3952b8c4dd7d293e02ae18fc37b84">scalable_allocator.h</a>
 </li>
 <li>scalable_malloc()
-: <a class="el" href="a00236.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2a5bdc71439a70b20f2eadf6e1a489e1">scalable_allocator.h</a>
 </li>
 <li>scalable_msize()
-: <a class="el" href="a00236.html#ga2b718206e50acb6392b86e4877d98213">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga2b718206e50acb6392b86e4877d98213">scalable_allocator.h</a>
 </li>
 <li>scalable_posix_memalign()
-: <a class="el" href="a00236.html#gaf117b4994f719d539804da8dd115e28c">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#gaf117b4994f719d539804da8dd115e28c">scalable_allocator.h</a>
 </li>
 <li>scalable_realloc()
-: <a class="el" href="a00236.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_allocator.h</a>
+: <a class="el" href="a00257.html#ga40d6e0bc19cdfa3005b2b935c62077a1">scalable_allocator.h</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
index dbaf3c4..ee73559 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -40,237 +40,260 @@
 <div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00009.html" target="_self">__TBB_malloc_proxy_caller</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img id="arr_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>aggregated_operation</b></td><td class="desc"></td></tr>
-<tr id="row_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><img id="arr_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00013.html" target="_self">tbb::interface6::aggregator_operation</a></td><td class="desc"></td></tr>
-<tr id="row_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('2_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00020.html" target="_self">tbb::interface6::internal::basic_operation_base</a></td><td class="desc"></td></tr>
-<tr id="row_2_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00019.html" target="_self">tbb::interface6::internal::basic_operation< Body ></a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00014.html" target="_self">tbb::aligned_space< T, N ></a></td><td class="desc">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img id="arr_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Allocator</b></td><td class="desc"></td></tr>
-<tr id="row_4_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00160.html" target="_self">tbb::zero_allocator< T, Allocator ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_4_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00161.html" target="_self">tbb::zero_allocator< void, Allocator ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_5_"><td class="entry"><img id="arr_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>allocator_base</b></td><td class="desc"></td></tr>
-<tr id="row_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">tbb::concurrent_vector< padded_element, padded_allocator_type ></a></td><td class="desc"></td></tr>
-<tr id="row_5_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">tbb::concurrent_vector< T, A ></a></td><td class="desc">Concurrent vector container </td></tr>
-<tr id="row_6_" class="even"><td class="entry"><img id="arr_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>atomic_impl</b></td><td class="desc"></td></tr>
-<tr id="row_6_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< internal::Token ></a></td><td class="desc"></td></tr>
-<tr id="row_6_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< intptr_t ></a></td><td class="desc"></td></tr>
-<tr id="row_6_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< state_t ></a></td><td class="desc"></td></tr>
-<tr id="row_6_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< status_t ></a></td><td class="desc"></td></tr>
-<tr id="row_6_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< tbb::interface5::reader_writer_lock::scoped_lock * ></a></td><td class="desc"></td></tr>
-<tr id="row_6_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< tbb::interface5::reader_writer_lock::scoped_lock_read * ></a></td><td class="desc"></td></tr>
-<tr id="row_6_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< tbb::interface6::aggregator_operation * ></a></td><td class="desc"></td></tr>
-<tr id="row_6_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< tbb::queuing_mutex::scoped_lock * ></a></td><td class="desc"></td></tr>
-<tr id="row_6_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< tbb::queuing_rw_mutex::scoped_lock * ></a></td><td class="desc"></td></tr>
-<tr id="row_6_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< uintptr_t ></a></td><td class="desc"></td></tr>
-<tr id="row_6_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::atomic< T ></a></td><td class="desc">Primary template for atomic </td></tr>
-<tr id="row_6_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00016.html" target="_self">tbb::atomic< void * ></a></td><td class="desc">Specialization for <a class="el" href="a00016.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. "> [...]
-<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>bad_alloc</b></td><td class="desc"></td></tr>
-<tr id="row_7_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">tbb::bad_last_alloc</a></td><td class="desc">Exception for concurrent containers </td></tr>
-<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::interface6::internal::basic_handler</a></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><img id="arr_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>binary_function</b></td><td class="desc"></td></tr>
-<tr id="row_9_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00157.html" target="_self">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::blocked_range< Value ></a></td><td class="desc">A range over which to iterate </td></tr>
-<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00022.html" target="_self">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="desc">A 2-dimensional range that models the Range concept </td></tr>
-<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00023.html" target="_self">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="desc">A 3-dimensional range that models the Range concept </td></tr>
-<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::blocked_range< ColValue ></a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::blocked_range< I ></a></td><td class="desc"></td></tr>
-<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::blocked_range< PageValue ></a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::blocked_range< RowValue ></a></td><td class="desc"></td></tr>
-<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< T, M ></a></td><td class="desc"></td></tr>
-<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< output_type ></a></td><td class="desc"></td></tr>
-<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< T ></a></td><td class="desc"></td></tr>
-<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< T, tbb::null_rw_mutex ></a></td><td class="desc"></td></tr>
-<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00029.html" target="_self">tbb::cache_aligned_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">tbb::cache_aligned_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00032.html" target="_self">tbb::combinable< T ></a></td><td class="desc">Thread-local storage with optional reduction </td></tr>
-<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00033.html" target="_self">tbb::interface6::internal::concrete_filter< T, U, Body ></a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00037.html" target="_self">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="desc">Concurrent priority queue </td></tr>
-<tr id="row_26_" class="even"><td class="entry"><img id="arr_26_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('26_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_queue_base_v3</b></td><td class="desc"></td></tr>
-<tr id="row_26_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_26_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('26_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00034.html" target="_self">tbb::concurrent_bounded_queue< T, A ></a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
-<tr id="row_26_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00039.html" target="_self">tbb::deprecated::concurrent_queue< T, A ></a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
-<tr id="row_26_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00038.html" target="_self">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="desc">A high-performance thread-safe non-blocking concurrent queue </td></tr>
-<tr id="row_27_"><td class="entry"><img id="arr_27_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('27_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_unordered_base</b></td><td class="desc"></td></tr>
-<tr id="row_27_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00040.html" target="_self">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_27_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00042.html" target="_self">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_27_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00043.html" target="_self">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_27_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00044.html" target="_self">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00041.html" target="_self">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="desc"></td></tr>
-<tr id="row_29_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00045.html" target="_self">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="desc"></td></tr>
-<tr id="row_30_" class="even"><td class="entry"><img id="arr_30_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('30_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_vector_base</b></td><td class="desc"></td></tr>
-<tr id="row_30_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">tbb::concurrent_vector< padded_element, padded_allocator_type ></a></td><td class="desc"></td></tr>
-<tr id="row_30_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">tbb::concurrent_vector< T, A ></a></td><td class="desc">Concurrent vector container </td></tr>
-<tr id="row_31_"><td class="entry"><img id="arr_31_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('31_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>continue_input</b></td><td class="desc"></td></tr>
-<tr id="row_31_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el" href="a00048.html" title="An empty class used for messages  [...]
-<tr id="row_32_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00048.html" target="_self">tbb::flow::interface7::continue_msg</a></td><td class="desc">An empty class used for messages that mean "I'm done" </td></tr>
-<tr id="row_33_"><td class="entry"><img id="arr_33_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('33_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>ets_base</b></td><td class="desc"></td></tr>
-<tr id="row_33_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00052.html" target="_self">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="desc">The <a class="el" href="a00052.html" title="The enumerable_thread_specific container. ">en [...]
-<tr id="row_34_" class="even"><td class="entry"><img id="arr_34_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('34_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>exception</b></td><td class="desc"></td></tr>
-<tr id="row_34_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00065.html" target="_self">tbb::improper_lock</a></td><td class="desc">Exception for PPL locks </td></tr>
-<tr id="row_34_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00067.html" target="_self">tbb::invalid_multiple_scheduling</a></td><td class="desc">Exception for repeated scheduling of the same <a class="el" href="a00139.html">task_handle</a> </td></tr>
-<tr id="row_34_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00077.html" target="_self">tbb::missing_wait</a></td><td class="desc">Exception for missing wait on <a class="el" href="a00133.html">structured_task_group</a> </td></tr>
-<tr id="row_34_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_34_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('34_3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00146.html" target="_self">tbb::tbb_exception</a></td><td class="desc">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
-<tr id="row_34_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00031.html" target="_self">tbb::captured_exception</a></td><td class="desc">This class is used by TBB to propagate information about unhandled exceptions into the root thread < [...]
-<tr id="row_34_3_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00078.html" target="_self">tbb::movable_exception< ExceptionData ></a></td><td class="desc">Template that can be used to implement exception that transfers arbitrary  [...]
-<tr id="row_34_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00156.html" target="_self">tbb::user_abort</a></td><td class="desc">Exception for user-initiated abort </td></tr>
-<tr id="row_35_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00054.html" target="_self">tbb::interface6::filter_t< T, U ></a></td><td class="desc">Class representing a chain of type-safe pipeline filters </td></tr>
-<tr id="row_36_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00055.html" target="_self">tbb::final_scan_tag</a></td><td class="desc">Used to indicate that the final scan is being performed </td></tr>
-<tr id="row_37_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00057.html" target="_self">tbb::interface6::flattened2d< Container ></a></td><td class="desc"></td></tr>
-<tr id="row_38_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00058.html" target="_self">tbb::interface6::flow_control</a></td><td class="desc">Input_filter control to signal end-of-input for parallel_pipeline </td></tr>
-<tr id="row_39_"><td class="entry"><img id="arr_39_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('39_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>function_input</b></td><td class="desc"></td></tr>
-<tr id="row_39_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
-<tr id="row_39_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00060.html" target="_self">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
-<tr id="row_40_" class="even"><td class="entry"><img id="arr_40_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('40_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>function_output</b></td><td class="desc"></td></tr>
-<tr id="row_40_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el" href="a00048.html" title="An empty class used for messages that mean "I [...]
-<tr id="row_40_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
-<tr id="row_40_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00060.html" target="_self">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
-<tr id="row_41_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00062.html" target="_self">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="desc"></td></tr>
-<tr id="row_42_" class="even"><td class="entry"><img id="arr_42_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('42_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>hash_map_base</b></td><td class="desc"></td></tr>
-<tr id="row_42_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00035.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="desc">Unordered map from Key to T </td></tr>
-<tr id="row_43_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00064.html" target="_self">tbb::internal::tbb_thread_v3::id</a></td><td class="desc"></td></tr>
-<tr id="row_44_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00066.html" target="_self">tbb::tick_count::interval_t</a></td><td class="desc">Relative time interval </td></tr>
-<tr id="row_45_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, JP ></a></td><td class="desc"></td></tr>
-<tr id="row_46_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00074.html" target="_self">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_47_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00075.html" target="_self">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_48_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00076.html" target="_self">rml::MemPoolPolicy</a></td><td class="desc"></td></tr>
-<tr id="row_49_"><td class="entry"><img id="arr_49_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('49_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>multifunction_input</b></td><td class="desc"></td></tr>
-<tr id="row_49_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_49_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('49_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_49_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00130.html" target="_self">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="desc">Split_node: accepts a tuple as input, forwa [...]
-<tr id="row_49_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> (set of outputs) </td></tr>
-<tr id="row_49_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00080.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_50_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00081.html" target="_self">tbb::mutex</a></td><td class="desc">Wrapper around the platform's native reader-writer lock </td></tr>
-<tr id="row_51_"><td class="entry"><img id="arr_51_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('51_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_assign</b></td><td class="desc"></td></tr>
-<tr id="row_51_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_51_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('51_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00063.html" target="_self">tbb::flow::interface7::graph_node</a></td><td class="desc">The base of all graph nodes </td></tr>
-<tr id="row_51_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_51_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
-<tr id="row_51_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_51_0_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('51_0_2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards me [...]
-<tr id="row_51_0_2_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td [...]
-<tr id="row_51_0_2_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_51_0_2_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('51_0_2_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00092.html" target="_self">tbb::flow::int [...]
-<tr id="row_51_0_2_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00125.html" target="_self">tbb: [...]
-<tr id="row_51_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el"  [...]
-<tr id="row_51_0_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::function_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="desc">Implements a functi [...]
-<tr id="row_51_0_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00060.html" target="_self">tbb::flow::interface7::function_node< Input, Output, queueing, Allocator ></a></td><td class="desc">Implements a function node tha [...]
-<tr id="row_51_0_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
-<tr id="row_51_0_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, graph_buffer_policy, Allocator ></a></td><td class="desc">Implements a f [...]
-<tr id="row_51_0_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00080.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, queueing, Allocator ></a></td><td class="desc"></td></tr>
-<tr id="row_51_0_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_51_0_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('51_0_9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
-<tr id="row_51_0_9_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00159.html" target="_self">tbb::flow::interface7::write_once_node< T ></a></td><td class=" [...]
-<tr id="row_51_0_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">tbb::flow::interface7::source_node< Output ></a></td><td class="desc">An executable node that acts as a source, i.e. it has n [...]
-<tr id="row_51_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00036.html" target="_self">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="desc"></td></tr>
-<tr id="row_51_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00139.html" target="_self">tbb::task_handle< F ></a></td><td class="desc"></td></tr>
-<tr id="row_52_" class="even"><td class="entry"><img id="arr_52_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('52_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_assign</b></td><td class="desc"></td></tr>
-<tr id="row_52_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00019.html" target="_self">tbb::interface6::internal::basic_operation< Body ></a></td><td class="desc"></td></tr>
-<tr id="row_53_"><td class="entry"><img id="arr_53_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('53_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_copy</b></td><td class="desc"></td></tr>
-<tr id="row_53_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_53_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('53_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00012.html" target="_self">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="desc"></td></tr>
-<tr id="row_53_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00011.html" target="_self">tbb::interface6::aggregator</a></td><td class="desc">Basic aggregator interface </td></tr>
-<tr id="row_53_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_53_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('53_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">tbb::filter</a></td><td class="desc">A stage in a pipeline </td></tr>
-<tr id="row_53_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00150.html" target="_self">tbb::thread_bound_filter</a></td><td class="desc">A stage in a pipeline served by a user thread </td></tr>
-<tr id="row_53_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00061.html" target="_self">tbb::flow::interface7::graph</a></td><td class="desc">The graph class </td></tr>
-<tr id="row_53_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00095.html" target="_self">tbb::interface5::reader_writer_lock</a></td><td class="desc">Writer-preference reader-writer lock with local-only spinning on readers </td></tr>
-<tr id="row_53_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00118.html" target="_self">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="desc">The scoped lock pattern for write locks </td></tr>
-<tr id="row_53_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00123.html" target="_self">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="desc">The scoped lock pattern for read locks </td></tr>
-<tr id="row_53_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00012.html" target="_self">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="desc">Aggregator base class and expert interface </td></tr>
-<tr id="row_53_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00110.html" target="_self">tbb::interface6::runtime_loader</a></td><td class="desc">Load TBB at runtime </td></tr>
-<tr id="row_53_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00051.html" target="_self">tbb::internal::critical_section_v4</a></td><td class="desc"></td></tr>
-<tr id="row_53_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00122.html" target="_self">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="desc"></td></tr>
-<tr id="row_53_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_53_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('53_10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00137.html" target="_self">tbb::internal::task_group_base</a></td><td class="desc"></td></tr>
-<tr id="row_53_10_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00133.html" target="_self">tbb::structured_task_group</a></td><td class="desc"></td></tr>
-<tr id="row_53_10_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00136.html" target="_self">tbb::task_group</a></td><td class="desc"></td></tr>
-<tr id="row_53_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00116.html" target="_self">tbb::mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_53_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00087.html" target="_self">tbb::parallel_do_feeder< Item ></a></td><td class="desc">Class the user supplied algorithm body uses to add new tasks </td></tr>
-<tr id="row_53_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00088.html" target="_self">tbb::parallel_while< Body ></a></td><td class="desc">Parallel iteration over a stream, with optional addition of more work </td></tr>
-<tr id="row_53_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00121.html" target="_self">tbb::queuing_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_53_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00119.html" target="_self">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_53_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00120.html" target="_self">tbb::recursive_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_53_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00113.html" target="_self">tbb::spin_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_53_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00114.html" target="_self">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
-<tr id="row_53_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00141.html" target="_self">tbb::task_scheduler_init</a></td><td class="desc">Class delimiting the scope of task scheduler activity </td></tr>
-<tr id="row_54_" class="even"><td class="entry"><img id="arr_54_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('54_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>node_base</b></td><td class="desc"></td></tr>
-<tr id="row_54_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00082.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="desc"></td></tr>
-<tr id="row_55_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00083.html" target="_self">tbb::null_mutex</a></td><td class="desc">A mutex which does nothing </td></tr>
-<tr id="row_56_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00084.html" target="_self">tbb::null_rw_mutex</a></td><td class="desc">A rw mutex which does nothing </td></tr>
-<tr id="row_57_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00089.html" target="_self">tbb::pipeline</a></td><td class="desc">A processing pipeline that applies filters to items </td></tr>
-<tr id="row_58_" class="even"><td class="entry"><img id="arr_58_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('58_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>pool_base</b></td><td class="desc"></td></tr>
-<tr id="row_58_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">tbb::interface6::fixed_pool</a></td><td class="desc"></td></tr>
-<tr id="row_58_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00073.html" target="_self">tbb::interface6::memory_pool< Alloc ></a></td><td class="desc">Thread-safe growable pool allocator for variable-size requests </td></tr>
-<tr id="row_59_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00090.html" target="_self">tbb::pre_scan_tag</a></td><td class="desc">Used to indicate that the initial scan is being performed </td></tr>
-<tr id="row_60_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00093.html" target="_self">tbb::queuing_mutex</a></td><td class="desc">Queuing mutex with local-only spinning </td></tr>
-<tr id="row_61_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00094.html" target="_self">tbb::queuing_rw_mutex</a></td><td class="desc">Queuing reader-writer mutex with local-only spinning </td></tr>
-<tr id="row_62_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00096.html" target="_self">tbb::cache_aligned_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_63_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00097.html" target="_self">tbb::scalable_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_64_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">tbb::tbb_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_65_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00099.html" target="_self">tbb::tbb_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_66_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00100.html" target="_self">tbb::zero_allocator< T, Allocator >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_67_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00101.html" target="_self">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_68_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00102.html" target="_self">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_69_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00103.html" target="_self">tbb::zero_allocator< void, Allocator >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_70_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">tbb::cache_aligned_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_71_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00105.html" target="_self">tbb::scalable_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
-<tr id="row_72_" class="even"><td class="entry"><img id="arr_72_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('72_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00106.html" target="_self">tbb::flow::interface7::receiver< T ></a></td><td class="desc">Pure virtual template class that defines a receiver of messages of type T </td></tr>
-<tr id="row_72_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
-<tr id="row_72_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
-<tr id="row_72_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
-<tr id="row_72_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
-<tr id="row_73_"><td class="entry"><img id="arr_73_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('73_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00106.html" target="_self">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="desc"></td></tr>
-<tr id="row_73_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00050.html" target="_self">tbb::flow::interface7::continue_receiver</a></td><td class="desc">Base class for receivers of completion messages </td></tr>
-<tr id="row_74_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00107.html" target="_self">tbb::recursive_mutex</a></td><td class="desc"></td></tr>
-<tr id="row_75_"><td class="entry"><img id="arr_75_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('75_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>reservable_item_buffer</b></td><td class="desc"></td></tr>
-<tr id="row_75_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
-<tr id="row_76_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00108.html" target="_self">tbb::flow::interface7::internal::round_robin_cache< T, M ></a></td><td class="desc"></td></tr>
-<tr id="row_77_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00108.html" target="_self">tbb::flow::interface7::internal::round_robin_cache< T, tbb::null_rw_mutex ></a></td><td class="desc"></td></tr>
-<tr id="row_78_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00109.html" target="_self">tbb::flow::interface7::run_and_put_task< R, B ></a></td><td class="desc"></td></tr>
-<tr id="row_79_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00111.html" target="_self">tbb::scalable_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_80_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00112.html" target="_self">tbb::scalable_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_81_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00115.html" target="_self">tbb::null_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_82_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00117.html" target="_self">tbb::null_rw_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
-<tr id="row_83_"><td class="entry"><img id="arr_83_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('83_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>scoped_t</b></td><td class="desc"></td></tr>
-<tr id="row_83_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_83_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('83_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00047.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="desc">Combines data access, locking, and gar [...]
-<tr id="row_83_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00010.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="desc">Allows write access to ele [...]
-<tr id="row_84_" class="even"><td class="entry"><img id="arr_84_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('84_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>scoped_t</b></td><td class="desc"></td></tr>
-<tr id="row_84_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00026.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="desc">Bucket accessor is to find, rehash, acquire a lock, and access a bucket </td></tr>
-<tr id="row_85_"><td class="entry"><img id="arr_85_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('85_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">tbb::flow::interface7::sender< T ></a></td><td class="desc">Pure virtual template class that defines a sender of messages of type T </td></tr>
-<tr id="row_85_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
-<tr id="row_85_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
-<tr id="row_85_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
-<tr id="row_85_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
-<tr id="row_86_" class="even"><td class="entry"><img id="arr_86_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('86_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">tbb::flow::interface7::sender< Output ></a></td><td class="desc"></td></tr>
-<tr id="row_86_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">tbb::flow::interface7::source_node< Output ></a></td><td class="desc">An executable node that acts as a source, i.e. it has no predecessors </td></tr>
-<tr id="row_87_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00127.html" target="_self">tbb::spin_mutex</a></td><td class="desc">A lock that occupies a single byte </td></tr>
-<tr id="row_88_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00128.html" target="_self">tbb::spin_rw_mutex_v3</a></td><td class="desc">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
-<tr id="row_89_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00129.html" target="_self">tbb::split</a></td><td class="desc">Dummy type that distinguishes splitting constructor from copy constructor </td></tr>
-<tr id="row_90_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00131.html" target="_self">tbb::internal::STATIC_ASSERTION_FAILED< condition ></a></td><td class="desc"></td></tr>
-<tr id="row_91_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00132.html" target="_self">tbb::internal::STATIC_ASSERTION_FAILED< false ></a></td><td class="desc"></td></tr>
-<tr id="row_92_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00134.html" target="_self">tbb::flow::interface7::internal::successor_cache< T, M ></a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00011.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img id="arr_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>aggregated_operation</b></td><td class="desc"></td></tr>
+<tr id="row_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00031.html" target="_self">tbb::flow::interface7::buffer_node< T, A >::buffer_operation</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img id="arr_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00014.html" target="_self">tbb::interface6::aggregator_operation</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00023.html" target="_self">tbb::interface6::internal::basic_operation_base</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00022.html" target="_self">tbb::interface6::internal::basic_operation< Body ></a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00015.html" target="_self">tbb::aligned_space< T, N ></a></td><td class="desc">Block of space aligned sufficiently to construct an array T with N elements </td></tr>
+<tr id="row_5_"><td class="entry"><img id="arr_5_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Allocator</b></td><td class="desc"></td></tr>
+<tr id="row_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00177.html" target="_self">tbb::zero_allocator< T, Allocator ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_5_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00178.html" target="_self">tbb::zero_allocator< void, Allocator ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img id="arr_6_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>allocator_base</b></td><td class="desc"></td></tr>
+<tr id="row_6_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">tbb::concurrent_vector< padded_element, padded_allocator_type ></a></td><td class="desc"></td></tr>
+<tr id="row_6_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">tbb::concurrent_vector< T, A ></a></td><td class="desc">Concurrent vector container </td></tr>
+<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00016.html" target="_self">tbb::flow::interface7::internal::async_gateway< Output ></a></td><td class="desc">Pure virtual template class that defines interface for async communication </td></tr>
+<tr id="row_7_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="desc">Implements a async node </td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img id="arr_8_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>async_input</b></td><td class="desc"></td></tr>
+<tr id="row_8_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="desc">Implements a async node </td></tr>
+<tr id="row_9_"><td class="entry"><img id="arr_9_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>atomic_impl</b></td><td class="desc"></td></tr>
+<tr id="row_9_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< internal::Token ></a></td><td class="desc"></td></tr>
+<tr id="row_9_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< intptr_t ></a></td><td class="desc"></td></tr>
+<tr id="row_9_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< state_t ></a></td><td class="desc"></td></tr>
+<tr id="row_9_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< status_t ></a></td><td class="desc"></td></tr>
+<tr id="row_9_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< tbb::interface5::reader_writer_lock::scoped_lock * ></a></td><td class="desc"></td></tr>
+<tr id="row_9_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< tbb::interface5::reader_writer_lock::scoped_lock_read * ></a></td><td class="desc"></td></tr>
+<tr id="row_9_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< tbb::interface6::aggregator_operation * ></a></td><td class="desc"></td></tr>
+<tr id="row_9_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< tbb::queuing_mutex::scoped_lock * ></a></td><td class="desc"></td></tr>
+<tr id="row_9_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< tbb::queuing_rw_mutex::scoped_lock * ></a></td><td class="desc"></td></tr>
+<tr id="row_9_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< uintptr_t ></a></td><td class="desc"></td></tr>
+<tr id="row_9_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00018.html" target="_self">tbb::atomic< T ></a></td><td class="desc">Primary template for atomic </td></tr>
+<tr id="row_9_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00019.html" target="_self">tbb::atomic< void * ></a></td><td class="desc">Specialization for <a class="el" href="a00019.html" title="Specialization for atomic<void*>, for sake of not allowing arithmetic or oper [...]
+<tr id="row_10_" class="even"><td class="entry"><img id="arr_10_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>bad_alloc</b></td><td class="desc"></td></tr>
+<tr id="row_10_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00020.html" target="_self">tbb::bad_last_alloc</a></td><td class="desc">Exception for concurrent containers </td></tr>
+<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00021.html" target="_self">tbb::interface6::internal::basic_handler</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><img id="arr_12_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('12_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>binary_function</b></td><td class="desc"></td></tr>
+<tr id="row_12_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00174.html" target="_self">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::blocked_range< Value ></a></td><td class="desc">A range over which to iterate </td></tr>
+<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00025.html" target="_self">tbb::blocked_range2d< RowValue, ColValue ></a></td><td class="desc">A 2-dimensional range that models the Range concept </td></tr>
+<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00026.html" target="_self">tbb::blocked_range3d< PageValue, RowValue, ColValue ></a></td><td class="desc">A 3-dimensional range that models the Range concept </td></tr>
+<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::blocked_range< ColValue ></a></td><td class="desc"></td></tr>
+<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::blocked_range< I ></a></td><td class="desc"></td></tr>
+<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::blocked_range< PageValue ></a></td><td class="desc"></td></tr>
+<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00024.html" target="_self">tbb::blocked_range< RowValue ></a></td><td class="desc"></td></tr>
+<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< T, M ></a></td><td class="desc"></td></tr>
+<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< input_type ></a></td><td class="desc"></td></tr>
+<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< input_type, tbb::null_rw_mutex ></a></td><td class="desc"></td></tr>
+<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< output_type ></a></td><td class="desc"></td></tr>
+<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00027.html" target="_self">tbb::flow::interface7::internal::broadcast_cache< T ></a></td><td class="desc"></td></tr>
+<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00032.html" target="_self">tbb::cache_aligned_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00033.html" target="_self">tbb::cache_aligned_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00034.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave</a></td><td class="desc"></td></tr>
+<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00036.html" target="_self">tbb::combinable< T ></a></td><td class="desc">Thread-local storage with optional reduction </td></tr>
+<tr id="row_29_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00037.html" target="_self">tbb::flow::interface7::composite_node< InputTuple, OutputTuple ></a></td><td class="desc"></td></tr>
+<tr id="row_30_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00041.html" target="_self">tbb::interface6::internal::concrete_filter< T, U, Body ></a></td><td class="desc"></td></tr>
+<tr id="row_31_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00045.html" target="_self">tbb::interface5::concurrent_priority_queue< T, Compare, A ></a></td><td class="desc">Concurrent priority queue </td></tr>
+<tr id="row_32_" class="even"><td class="entry"><img id="arr_32_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('32_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_queue_base_v3</b></td><td class="desc"></td></tr>
+<tr id="row_32_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00046.html" target="_self">tbb::strict_ppl::concurrent_queue< T, A ></a></td><td class="desc">A high-performance thread-safe non-blocking concurrent queue </td></tr>
+<tr id="row_33_"><td class="entry"><img id="arr_33_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('33_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_queue_base_v8</b></td><td class="desc"></td></tr>
+<tr id="row_33_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00042.html" target="_self">tbb::concurrent_bounded_queue< T, A ></a></td><td class="desc">A high-performance thread-safe blocking concurrent bounded queue </td></tr>
+<tr id="row_34_" class="even"><td class="entry"><img id="arr_34_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('34_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_unordered_base</b></td><td class="desc"></td></tr>
+<tr id="row_34_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00047.html" target="_self">tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_34_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00049.html" target="_self">tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_34_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00050.html" target="_self">tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_34_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00051.html" target="_self">tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_35_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00048.html" target="_self">tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="desc"></td></tr>
+<tr id="row_36_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00052.html" target="_self">tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping ></a></td><td class="desc"></td></tr>
+<tr id="row_37_"><td class="entry"><img id="arr_37_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('37_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>concurrent_vector_base</b></td><td class="desc"></td></tr>
+<tr id="row_37_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">tbb::concurrent_vector< padded_element, padded_allocator_type ></a></td><td class="desc"></td></tr>
+<tr id="row_37_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00053.html" target="_self">tbb::concurrent_vector< T, A ></a></td><td class="desc">Concurrent vector container </td></tr>
+<tr id="row_38_" class="even"><td class="entry"><img id="arr_38_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('38_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>continue_input</b></td><td class="desc"></td></tr>
+<tr id="row_38_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el" href="a00055.html" title="An empty class used for messages that mean &qu [...]
+<tr id="row_39_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00055.html" target="_self">tbb::flow::interface7::continue_msg</a></td><td class="desc">An empty class used for messages that mean "I'm done" </td></tr>
+<tr id="row_40_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::internal::edge_container< C ></a></td><td class="desc"></td></tr>
+<tr id="row_41_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::internal::edge_container< predecessor_type ></a></td><td class="desc"></td></tr>
+<tr id="row_42_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00059.html" target="_self">tbb::flow::interface7::internal::edge_container< tbb::flow::interface7::sender ></a></td><td class="desc"></td></tr>
+<tr id="row_43_"><td class="entry"><img id="arr_43_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('43_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>ets_base</b></td><td class="desc"></td></tr>
+<tr id="row_43_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00061.html" target="_self">tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type ></a></td><td class="desc">The <a class="el" href="a00061.html" title="The enumerable_thread_specific container. ">en [...]
+<tr id="row_44_" class="even"><td class="entry"><img id="arr_44_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('44_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>exception</b></td><td class="desc"></td></tr>
+<tr id="row_44_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00074.html" target="_self">tbb::improper_lock</a></td><td class="desc">Exception for PPL locks </td></tr>
+<tr id="row_44_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00086.html" target="_self">tbb::invalid_multiple_scheduling</a></td><td class="desc">Exception for repeated scheduling of the same <a class="el" href="a00154.html">task_handle</a> </td></tr>
+<tr id="row_44_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00096.html" target="_self">tbb::missing_wait</a></td><td class="desc">Exception for missing wait on <a class="el" href="a00148.html">structured_task_group</a> </td></tr>
+<tr id="row_44_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_44_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('44_3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00161.html" target="_self">tbb::tbb_exception</a></td><td class="desc">Interface to be implemented by all exceptions TBB recognizes and propagates across the threads </td></tr>
+<tr id="row_44_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00035.html" target="_self">tbb::captured_exception</a></td><td class="desc">This class is used by TBB to propagate information about unhandled exceptions into the root thread < [...]
+<tr id="row_44_3_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00097.html" target="_self">tbb::movable_exception< ExceptionData ></a></td><td class="desc">Template that can be used to implement exception that transfers arbitrary  [...]
+<tr id="row_44_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00173.html" target="_self">tbb::user_abort</a></td><td class="desc">Exception for user-initiated abort </td></tr>
+<tr id="row_45_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00063.html" target="_self">tbb::interface6::filter_t< T, U ></a></td><td class="desc">Class representing a chain of type-safe pipeline filters </td></tr>
+<tr id="row_46_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00064.html" target="_self">tbb::final_scan_tag</a></td><td class="desc">Used to indicate that the final scan is being performed </td></tr>
+<tr id="row_47_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00066.html" target="_self">tbb::interface6::flattened2d< Container ></a></td><td class="desc"></td></tr>
+<tr id="row_48_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00067.html" target="_self">tbb::interface6::flow_control</a></td><td class="desc">Input_filter control to signal end-of-input for parallel_pipeline </td></tr>
+<tr id="row_49_"><td class="entry"><img id="arr_49_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('49_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>function_input</b></td><td class="desc"></td></tr>
+<tr id="row_49_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
+<tr id="row_50_" class="even"><td class="entry"><img id="arr_50_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('50_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>function_output</b></td><td class="desc"></td></tr>
+<tr id="row_50_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="desc">Implements a async node </td></tr>
+<tr id="row_50_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el" href="a00055.html" title="An empty class used for messages that mean "I [...]
+<tr id="row_50_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> Output </td></tr>
+<tr id="row_51_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00069.html" target="_self">tbb::interface9::global_control</a></td><td class="desc"></td></tr>
+<tr id="row_52_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00071.html" target="_self">tbb::flow::interface7::graph_iterator< GraphContainerType, GraphNodeType ></a></td><td class="desc"></td></tr>
+<tr id="row_53_"><td class="entry"><img id="arr_53_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('53_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>hash_map_base</b></td><td class="desc"></td></tr>
+<tr id="row_53_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00043.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A ></a></td><td class="desc">Unordered map from Key to T </td></tr>
+<tr id="row_54_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00073.html" target="_self">tbb::internal::tbb_thread_v3::id</a></td><td class="desc"></td></tr>
+<tr id="row_55_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00085.html" target="_self">tbb::tick_count::interval_t</a></td><td class="desc">Relative time interval </td></tr>
+<tr id="row_56_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00087.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, JP ></a></td><td class="desc"></td></tr>
+<tr id="row_57_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00093.html" target="_self">tbb::interface6::memory_pool_allocator< T, P ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_58_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00094.html" target="_self">tbb::interface6::memory_pool_allocator< void, P ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_59_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00095.html" target="_self">rml::MemPoolPolicy</a></td><td class="desc"></td></tr>
+<tr id="row_60_" class="even"><td class="entry"><img id="arr_60_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('60_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>multifunction_input</b></td><td class="desc"></td></tr>
+<tr id="row_60_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_60_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('60_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_60_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00147.html" target="_self">tbb::flow::interface7::split_node< TupleType, Allocator ></a></td><td class="desc">Split_node: accepts a tuple as input, forwards each elem [...]
+<tr id="row_60_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="desc">Implements a function node that supports Input -> (set of outputs) </td></tr>
+<tr id="row_61_"><td class="entry"><img id="arr_61_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('61_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>mutex_copy_deprecated_and_disabled</b></td><td class="desc"></td></tr>
+<tr id="row_61_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00099.html" target="_self">tbb::mutex</a></td><td class="desc">Wrapper around the platform's native reader-writer lock </td></tr>
+<tr id="row_61_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00101.html" target="_self">tbb::null_mutex</a></td><td class="desc">A mutex which does nothing </td></tr>
+<tr id="row_61_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00102.html" target="_self">tbb::null_rw_mutex</a></td><td class="desc">A rw mutex which does nothing </td></tr>
+<tr id="row_61_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00111.html" target="_self">tbb::queuing_mutex</a></td><td class="desc">Queuing mutex with local-only spinning </td></tr>
+<tr id="row_61_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00112.html" target="_self">tbb::queuing_rw_mutex</a></td><td class="desc">Queuing reader-writer mutex with local-only spinning </td></tr>
+<tr id="row_61_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00125.html" target="_self">tbb::recursive_mutex</a></td><td class="desc"></td></tr>
+<tr id="row_61_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00145.html" target="_self">tbb::spin_mutex</a></td><td class="desc">A lock that occupies a single byte </td></tr>
+<tr id="row_61_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00146.html" target="_self">tbb::spin_rw_mutex_v3</a></td><td class="desc">Fast, unfair, spinning reader-writer lock with backoff and writer-preference </td></tr>
+<tr id="row_62_" class="even"><td class="entry"><img id="arr_62_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('62_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_assign</b></td><td class="desc"></td></tr>
+<tr id="row_62_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_62_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('62_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00072.html" target="_self">tbb::flow::interface7::graph_node</a></td><td class="desc">The base of all graph nodes </td></tr>
+<tr id="row_62_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">tbb::flow::interface7::multifunction_node< TupleType, TupleType, rejecting, Allocator ></a></td><td class="desc"></td></tr>
+<tr id="row_62_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00017.html" target="_self">tbb::flow::interface7::async_node< Input, Output, Allocator ></a></td><td class="desc">Implements a async node </td></tr>
+<tr id="row_62_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
+<tr id="row_62_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_62_0_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('62_0_3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arb [...]
+<tr id="row_62_0_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00109.html" target="_self">tbb::flow::interface7::priority_queue_node< T, Compare, A ></a></td><td class="d [...]
+<tr id="row_62_0_3_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_62_0_3_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('62_0_3_1_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00110.html" target="_self">tbb::flow::interface7::queu [...]
+<tr id="row_62_0_3_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00143.html" target="_self">tbb::flow::interf [...]
+<tr id="row_62_0_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00038.html" target="_self">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="des [...]
+<tr id="row_62_0_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00039.html" target="_self">tbb::flow::interface7::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> ></a></td><td class="desc"></td></tr>
+<tr id="row_62_0_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00040.html" target="_self">tbb::flow::interface7::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> ></a></td><td class="desc"></td></tr>
+<tr id="row_62_0_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00056.html" target="_self">tbb::flow::interface7::continue_node< Output ></a></td><td class="desc">Implements an executable node that supports <a class="el" href="a00055. [...]
+<tr id="row_62_0_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00068.html" target="_self">tbb::flow::interface7::function_node< Input, Output, G, Allocator ></a></td><td class="desc">Implements a function node that supports Input -&g [...]
+<tr id="row_62_0_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
+<tr id="row_62_0_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00098.html" target="_self">tbb::flow::interface7::multifunction_node< Input, Output, G, Allocator ></a></td><td class="desc">Implements a function node that supports Inp [...]
+<tr id="row_62_0_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_62_0_11_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('62_0_11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
+<tr id="row_62_0_11_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00176.html" target="_self">tbb::flow::interface7::write_once_node< T ></a></td><td class="desc"></td></tr>
+<tr id="row_62_0_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00144.html" target="_self">tbb::flow::interface7::source_node< Output ></a></td><td class="desc">An executable node that acts as a source, i.e. it has no predecessor [...]
+<tr id="row_62_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00044.html" target="_self">tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type ></a></td><td class="desc"></td></tr>
+<tr id="row_62_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00154.html" target="_self">tbb::task_handle< F ></a></td><td class="desc"></td></tr>
+<tr id="row_63_"><td class="entry"><img id="arr_63_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('63_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_assign</b></td><td class="desc"></td></tr>
+<tr id="row_63_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00022.html" target="_self">tbb::interface6::internal::basic_operation< Body ></a></td><td class="desc"></td></tr>
+<tr id="row_64_" class="even"><td class="entry"><img id="arr_64_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('64_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>no_copy</b></td><td class="desc"></td></tr>
+<tr id="row_64_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_64_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('64_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00013.html" target="_self">tbb::interface6::aggregator_ext< internal::basic_handler ></a></td><td class="desc"></td></tr>
+<tr id="row_64_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00012.html" target="_self">tbb::interface6::aggregator</a></td><td class="desc">Basic aggregator interface </td></tr>
+<tr id="row_64_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00060.html" target="_self">tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard</a></td><td class="desc"></td></tr>
+<tr id="row_64_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_64_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('64_2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00062.html" target="_self">tbb::filter</a></td><td class="desc">A stage in a pipeline </td></tr>
+<tr id="row_64_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00165.html" target="_self">tbb::thread_bound_filter</a></td><td class="desc">A stage in a pipeline served by a user thread </td></tr>
+<tr id="row_64_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00070.html" target="_self">tbb::flow::interface7::graph</a></td><td class="desc">The graph class </td></tr>
+<tr id="row_64_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00113.html" target="_self">tbb::interface5::reader_writer_lock</a></td><td class="desc">Writer-preference reader-writer lock with local-only spinning on readers </td></tr>
+<tr id="row_64_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00133.html" target="_self">tbb::interface5::reader_writer_lock::scoped_lock</a></td><td class="desc">The scoped lock pattern for write locks </td></tr>
+<tr id="row_64_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00141.html" target="_self">tbb::interface5::reader_writer_lock::scoped_lock_read</a></td><td class="desc">The scoped lock pattern for read locks </td></tr>
+<tr id="row_64_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00013.html" target="_self">tbb::interface6::aggregator_ext< handler_type ></a></td><td class="desc">Aggregator base class and expert interface </td></tr>
+<tr id="row_64_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00128.html" target="_self">tbb::interface6::runtime_loader</a></td><td class="desc">Load TBB at runtime </td></tr>
+<tr id="row_64_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00058.html" target="_self">tbb::internal::critical_section_v4</a></td><td class="desc"></td></tr>
+<tr id="row_64_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00136.html" target="_self">tbb::internal::critical_section_v4::scoped_lock</a></td><td class="desc"></td></tr>
+<tr id="row_64_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_64_11_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('64_11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00152.html" target="_self">tbb::internal::task_group_base</a></td><td class="desc"></td></tr>
+<tr id="row_64_11_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00148.html" target="_self">tbb::structured_task_group</a></td><td class="desc"></td></tr>
+<tr id="row_64_11_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00151.html" target="_self">tbb::task_group</a></td><td class="desc"></td></tr>
+<tr id="row_64_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00140.html" target="_self">tbb::mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_64_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00137.html" target="_self">tbb::null_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_64_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00138.html" target="_self">tbb::null_rw_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_64_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00105.html" target="_self">tbb::parallel_do_feeder< Item ></a></td><td class="desc">Class the user supplied algorithm body uses to add new tasks </td></tr>
+<tr id="row_64_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00106.html" target="_self">tbb::parallel_while< Body ></a></td><td class="desc">Parallel iteration over a stream, with optional addition of more work </td></tr>
+<tr id="row_64_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00132.html" target="_self">tbb::queuing_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_64_18_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00131.html" target="_self">tbb::queuing_rw_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_64_19_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00139.html" target="_self">tbb::recursive_mutex::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_64_20_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00134.html" target="_self">tbb::spin_mutex::scoped_lock</a></td><td class="desc">Represents acquisition of a mutex </td></tr>
+<tr id="row_64_21_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00135.html" target="_self">tbb::spin_rw_mutex_v3::scoped_lock</a></td><td class="desc">The scoped locking pattern </td></tr>
+<tr id="row_64_22_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00156.html" target="_self">tbb::task_scheduler_init</a></td><td class="desc">Class delimiting the scope of task scheduler activity </td></tr>
+<tr id="row_65_"><td class="entry"><img id="arr_65_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('65_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>node_base</b></td><td class="desc"></td></tr>
+<tr id="row_65_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00100.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node</a></td><td class="desc"></td></tr>
+<tr id="row_66_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00103.html" target="_self">tbb::flow::interface7::null_type</a></td><td class="desc"></td></tr>
+<tr id="row_67_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00107.html" target="_self">tbb::pipeline</a></td><td class="desc">A processing pipeline that applies filters to items </td></tr>
+<tr id="row_68_" class="even"><td class="entry"><img id="arr_68_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('68_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>pool_base</b></td><td class="desc"></td></tr>
+<tr id="row_68_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00065.html" target="_self">tbb::interface6::fixed_pool</a></td><td class="desc"></td></tr>
+<tr id="row_68_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00092.html" target="_self">tbb::interface6::memory_pool< Alloc ></a></td><td class="desc">Thread-safe growable pool allocator for variable-size requests </td></tr>
+<tr id="row_69_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00108.html" target="_self">tbb::pre_scan_tag</a></td><td class="desc">Used to indicate that the initial scan is being performed </td></tr>
+<tr id="row_70_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00114.html" target="_self">tbb::cache_aligned_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_71_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00115.html" target="_self">tbb::scalable_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_72_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00116.html" target="_self">tbb::scalable_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_73_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00117.html" target="_self">tbb::tbb_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_74_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00118.html" target="_self">tbb::tbb_allocator< void >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_75_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00119.html" target="_self">tbb::zero_allocator< T, Allocator >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_76_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00120.html" target="_self">tbb::zero_allocator< void, Allocator >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_77_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00121.html" target="_self">tbb::cache_aligned_allocator< T >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_78_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00122.html" target="_self">tbb::interface6::memory_pool_allocator< T, P >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_79_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00123.html" target="_self">tbb::interface6::memory_pool_allocator< void, P >::rebind< U ></a></td><td class="desc"></td></tr>
+<tr id="row_80_" class="even"><td class="entry"><img id="arr_80_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('80_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">tbb::flow::interface7::receiver< T ></a></td><td class="desc">Pure virtual template class that defines a receiver of messages of type T </td></tr>
+<tr id="row_80_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
+<tr id="row_80_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
+<tr id="row_80_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
+<tr id="row_80_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
+<tr id="row_81_"><td class="entry"><img id="arr_81_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('81_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00124.html" target="_self">tbb::flow::interface7::receiver< continue_msg ></a></td><td class="desc"></td></tr>
+<tr id="row_81_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00057.html" target="_self">tbb::flow::interface7::continue_receiver</a></td><td class="desc">Base class for receivers of completion messages </td></tr>
+<tr id="row_82_" class="even"><td class="entry"><img id="arr_82_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('82_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>reservable_item_buffer</b></td><td class="desc"></td></tr>
+<tr id="row_82_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
+<tr id="row_83_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">tbb::flow::interface7::internal::round_robin_cache< T, M ></a></td><td class="desc"></td></tr>
+<tr id="row_84_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00126.html" target="_self">tbb::flow::interface7::internal::round_robin_cache< T, tbb::null_rw_mutex ></a></td><td class="desc"></td></tr>
+<tr id="row_85_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00127.html" target="_self">tbb::flow::interface7::run_and_put_task< R, B ></a></td><td class="desc"></td></tr>
+<tr id="row_86_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00129.html" target="_self">tbb::scalable_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_87_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00130.html" target="_self">tbb::scalable_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_88_" class="even"><td class="entry"><img id="arr_88_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('88_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>scoped_t</b></td><td class="desc"></td></tr>
+<tr id="row_88_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00029.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor</a></td><td class="desc">Bucket accessor is to find, rehash, acquire a lock, and access a bucket </td></tr>
+<tr id="row_89_"><td class="entry"><img id="arr_89_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('89_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>scoped_t</b></td><td class="desc"></td></tr>
+<tr id="row_89_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_89_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('89_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00054.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor</a></td><td class="desc">Combines data access, locking, and gar [...]
+<tr id="row_89_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00010.html" target="_self">tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor</a></td><td class="desc">Allows write access to ele [...]
+<tr id="row_90_" class="even"><td class="entry"><img id="arr_90_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('90_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00142.html" target="_self">tbb::flow::interface7::sender< T ></a></td><td class="desc">Pure virtual template class that defines a sender of messages of type T </td></tr>
+<tr id="row_90_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00028.html" target="_self">tbb::flow::interface7::broadcast_node< T ></a></td><td class="desc">Forwards messages of type T to all successors </td></tr>
+<tr id="row_90_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00030.html" target="_self">tbb::flow::interface7::buffer_node< T, A ></a></td><td class="desc">Forwards messages in arbitrary order </td></tr>
+<tr id="row_90_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00091.html" target="_self">tbb::flow::interface7::limiter_node< T ></a></td><td class="desc">Forwards messages only if the threshold has not been reached </td></tr>
+<tr id="row_90_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00104.html" target="_self">tbb::flow::interface7::overwrite_node< T ></a></td><td class="desc"></td></tr>
+<tr id="row_91_"><td class="entry"><img id="arr_91_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('91_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00142.html" target="_self">tbb::flow::interface7::sender< Output ></a></td><td class="desc"></td></tr>
+<tr id="row_91_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00144.html" target="_self">tbb::flow::interface7::source_node< Output ></a></td><td class="desc">An executable node that acts as a source, i.e. it has no predecessors </td></tr>
+<tr id="row_92_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00149.html" target="_self">tbb::flow::interface7::internal::successor_cache< T, M ></a></td><td class="desc"></td></tr>
 <tr id="row_93_"><td class="entry"><img id="arr_93_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('93_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>task</b></td><td class="desc"></td></tr>
-<tr id="row_93_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00140.html" target="_self">tbb::internal::task_handle_task< F ></a></td><td class="desc"></td></tr>
+<tr id="row_93_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00155.html" target="_self">tbb::internal::task_handle_task< F ></a></td><td class="desc"></td></tr>
 <tr id="row_94_" class="even"><td class="entry"><img id="arr_94_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('94_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>task_arena_base</b></td><td class="desc"></td></tr>
-<tr id="row_94_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00135.html" target="_self">tbb::interface7::task_arena</a></td><td class="desc"></td></tr>
-<tr id="row_95_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00138.html" target="_self">tbb::task_group_context</a></td><td class="desc"></td></tr>
-<tr id="row_96_" class="even"><td class="entry"><img id="arr_96_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('96_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00143.html" target="_self">tbb::internal::task_scheduler_observer_v3</a></td><td class="desc"></td></tr>
-<tr id="row_96_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00142.html" target="_self">tbb::interface6::task_scheduler_observer</a></td><td class="desc"></td></tr>
-<tr id="row_97_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00144.html" target="_self">tbb::tbb_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
-<tr id="row_98_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00145.html" target="_self">tbb::tbb_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
-<tr id="row_99_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00147.html" target="_self">tbb::internal::tbb_exception_ptr</a></td><td class="desc">Exception container that preserves the exact copy of the original exception </td></tr>
-<tr id="row_100_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00148.html" target="_self">tbb::tbb_hash_compare< Key ></a></td><td class="desc">Hash_compare that is default argument for concurrent_hash_map </td></tr>
-<tr id="row_101_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00149.html" target="_self">tbb::internal::tbb_thread_v3</a></td><td class="desc">Versioned thread class </td></tr>
-<tr id="row_102_" class="even"><td class="entry"><img id="arr_102_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('102_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00154.html" target="_self">tbb::internal::thread_closure_base</a></td><td class="desc"></td></tr>
-<tr id="row_102_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00151.html" target="_self">tbb::internal::thread_closure_0< F ></a></td><td class="desc"></td></tr>
-<tr id="row_102_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00152.html" target="_self">tbb::internal::thread_closure_1< F, X ></a></td><td class="desc">Structure used to pass user function with 1 argument to thread </td></tr>
-<tr id="row_102_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00153.html" target="_self">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="desc"></td></tr>
-<tr id="row_103_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00155.html" target="_self">tbb::tick_count</a></td><td class="desc">Absolute timestamp </td></tr>
-<tr id="row_104_" class="even"><td class="entry"><img id="arr_104_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('104_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>unfolded_join_node</b></td><td class="desc"></td></tr>
-<tr id="row_104_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00069.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="desc"></td></tr>
-<tr id="row_104_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00070.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="desc"></td></tr>
-<tr id="row_104_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00071.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="desc"></td></tr>
-<tr id="row_105_"><td class="entry"><img id="arr_105_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('105_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>unfolded_or_node</b></td><td class="desc"></td></tr>
-<tr id="row_105_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00085.html" target="_self">tbb::flow::interface7::or_node< InputTuple ></a></td><td class="desc"></td></tr>
-<tr id="row_106_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00158.html" target="_self">tbb::vector_iterator< Container, Value ></a></td><td class="desc"></td></tr>
+<tr id="row_94_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00150.html" target="_self">tbb::interface7::task_arena</a></td><td class="desc"></td></tr>
+<tr id="row_95_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00153.html" target="_self">tbb::task_group_context</a></td><td class="desc"></td></tr>
+<tr id="row_96_" class="even"><td class="entry"><img id="arr_96_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('96_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00158.html" target="_self">tbb::internal::task_scheduler_observer_v3</a></td><td class="desc"></td></tr>
+<tr id="row_96_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00157.html" target="_self">tbb::interface6::task_scheduler_observer</a></td><td class="desc"></td></tr>
+<tr id="row_97_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00159.html" target="_self">tbb::tbb_allocator< T ></a></td><td class="desc">Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5 </td></tr>
+<tr id="row_98_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00160.html" target="_self">tbb::tbb_allocator< void ></a></td><td class="desc">Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1 </td></tr>
+<tr id="row_99_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00162.html" target="_self">tbb::internal::tbb_exception_ptr</a></td><td class="desc">Exception container that preserves the exact copy of the original exception </td></tr>
+<tr id="row_100_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00163.html" target="_self">tbb::tbb_hash_compare< Key ></a></td><td class="desc">Hash_compare that is default argument for concurrent_hash_map </td></tr>
+<tr id="row_101_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00164.html" target="_self">tbb::internal::tbb_thread_v3</a></td><td class="desc">Versioned thread class </td></tr>
+<tr id="row_102_" class="even"><td class="entry"><img id="arr_102_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('102_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00169.html" target="_self">tbb::internal::thread_closure_base</a></td><td class="desc"></td></tr>
+<tr id="row_102_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00166.html" target="_self">tbb::internal::thread_closure_0< F ></a></td><td class="desc"></td></tr>
+<tr id="row_102_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00167.html" target="_self">tbb::internal::thread_closure_1< F, X ></a></td><td class="desc">Structure used to pass user function with 1 argument to thread </td></tr>
+<tr id="row_102_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00168.html" target="_self">tbb::internal::thread_closure_2< F, X, Y ></a></td><td class="desc"></td></tr>
+<tr id="row_103_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00170.html" target="_self">tbb::tick_count</a></td><td class="desc">Absolute timestamp </td></tr>
+<tr id="row_104_" class="even"><td class="entry"><img id="arr_104_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('104_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>unfolded_indexer_node</b></td><td class="desc"></td></tr>
+<tr id="row_104_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00075.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00076.html" target="_self">tbb::flow::interface7::indexer_node< T0 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00077.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00078.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00079.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00080.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00081.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00082.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00083.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 ></a></td><td class="desc"></td></tr>
+<tr id="row_104_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00084.html" target="_self">tbb::flow::interface7::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 ></a></td><td class="desc"></td></tr>
+<tr id="row_105_"><td class="entry"><img id="arr_105_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('105_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>unfolded_join_node</b></td><td class="desc"></td></tr>
+<tr id="row_105_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00088.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, queueing ></a></td><td class="desc"></td></tr>
+<tr id="row_105_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00089.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, reserving ></a></td><td class="desc"></td></tr>
+<tr id="row_105_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00090.html" target="_self">tbb::flow::interface7::join_node< OutputTuple, tag_matching ></a></td><td class="desc"></td></tr>
+<tr id="row_106_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00171.html" target="_self">tbb::interface5::internal::use_element_copy_constructor< T, C ></a></td><td class="desc"></td></tr>
+<tr id="row_107_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00172.html" target="_self">tbb::interface5::internal::use_element_copy_constructor< T, false ></a></td><td class="desc"></td></tr>
+<tr id="row_108_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="a00175.html" target="_self">tbb::vector_iterator< Container, Value ></a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/index.html b/doc/html/index.html
index 9b291e2..7ca7590 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -44,7 +44,7 @@
 </div></div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/modules.html b/doc/html/modules.html
index 5cd5b8f..f2da163 100644
--- a/doc/html/modules.html
+++ b/doc/html/modules.html
@@ -32,18 +32,18 @@
 <div class="contents">
 <div class="textblock">Here is a list of all modules:</div><div class="directory">
 <table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00234.html" target="_self">Algorithms</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00235.html" target="_self">Containers</a></td><td class="desc"></td></tr>
-<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00236.html" target="_self">Memory Allocation</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00237.html" target="_self">Synchronization</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00238.html" target="_self">Timing</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="a00239.html" target="_self">Task Scheduling</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00255.html" target="_self">Algorithms</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00256.html" target="_self">Containers</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00257.html" target="_self">Memory Allocation</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00258.html" target="_self">Synchronization</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00259.html" target="_self">Timing</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="a00260.html" target="_self">Task Scheduling</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html
index 35d906a..9104177 100644
--- a/doc/html/namespacemembers.html
+++ b/doc/html/namespacemembers.html
@@ -58,96 +58,96 @@
 
 <h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
 <li>__TBB_DECL_ATOMIC_ALT()
-: <a class="el" href="a00222.html#a59425abdcb421136e9f5954cfb975e5f">tbb</a>
+: <a class="el" href="a00240.html#a59425abdcb421136e9f5954cfb975e5f">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
 <li>acquire
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
 <li>ets_key_usage_type
-: <a class="el" href="a00222.html#ac5bcb6154c8307fa9f97806afddf2288">tbb</a>
+: <a class="el" href="a00240.html#ac5bcb6154c8307fa9f97806afddf2288">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
 <li>full_fence
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
 <li>memory_semantics
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
 <li>parallel_deterministic_reduce()
-: <a class="el" href="a00234.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb</a>
+: <a class="el" href="a00255.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb</a>
 </li>
 <li>parallel_do()
-: <a class="el" href="a00234.html#ga533f6732498ade8634a9470cbf89192d">tbb</a>
+: <a class="el" href="a00255.html#ga533f6732498ade8634a9470cbf89192d">tbb</a>
 </li>
 <li>parallel_for()
-: <a class="el" href="a00234.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb</a>
+: <a class="el" href="a00255.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb</a>
 </li>
 <li>parallel_for_each()
-: <a class="el" href="a00234.html#gaef59e9baf9141a19c99a291e4532bd98">tbb</a>
+: <a class="el" href="a00255.html#ga72131543fd218b67dbb048b768d534e4">tbb</a>
 </li>
 <li>parallel_invoke()
-: <a class="el" href="a00234.html#ga14459dcbcd631194df803b155a7f610b">tbb</a>
+: <a class="el" href="a00255.html#ga3c6fe4bf1076c82132e666fb545451cd">tbb</a>
 </li>
 <li>parallel_reduce()
-: <a class="el" href="a00234.html#ga6e83e121490df24fa5893b14e68f5e2a">tbb</a>
+: <a class="el" href="a00255.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">tbb</a>
 </li>
 <li>parallel_scan()
-: <a class="el" href="a00234.html#gae7eaaf124471a6c603b28fc925e8fbbb">tbb</a>
+: <a class="el" href="a00255.html#ga3548041731b7fa14f30f155541ceebb9">tbb</a>
 </li>
 <li>parallel_sort()
-: <a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb</a>
+: <a class="el" href="a00255.html#ga541b2fd91e88842a7b823161107779e9">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
 <li>relaxed
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb</a>
 </li>
 <li>release
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
 <li>speculative_spin_mutex
-: <a class="el" href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">tbb</a>
+: <a class="el" href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>TBB_runtime_interface_version()
-: <a class="el" href="a00222.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">tbb</a>
+: <a class="el" href="a00240.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">tbb</a>
 </li>
 <li>tbb_thread
-: <a class="el" href="a00222.html#a7805ca254302ff88b566f7dcde7e56b0">tbb</a>
+: <a class="el" href="a00240.html#a7805ca254302ff88b566f7dcde7e56b0">tbb</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespacemembers_enum.html b/doc/html/namespacemembers_enum.html
index 815a483..3ec2d2e 100644
--- a/doc/html/namespacemembers_enum.html
+++ b/doc/html/namespacemembers_enum.html
@@ -43,16 +43,16 @@
 <div class="contents">
  <ul>
 <li>ets_key_usage_type
-: <a class="el" href="a00222.html#ac5bcb6154c8307fa9f97806afddf2288">tbb</a>
+: <a class="el" href="a00240.html#ac5bcb6154c8307fa9f97806afddf2288">tbb</a>
 </li>
 <li>memory_semantics
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3a">tbb</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespacemembers_eval.html b/doc/html/namespacemembers_eval.html
index 6d25b9b..7cfc43f 100644
--- a/doc/html/namespacemembers_eval.html
+++ b/doc/html/namespacemembers_eval.html
@@ -43,22 +43,22 @@
 <div class="contents">
  <ul>
 <li>acquire
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aaa92646b4dc7618530d3a9f51dd10a418">tbb</a>
 </li>
 <li>full_fence
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa6a315190cf4509ec388ecb423432f36a">tbb</a>
 </li>
 <li>relaxed
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa73cb2e2bcb94442b8b2b72e93a76f2e5">tbb</a>
 </li>
 <li>release
-: <a class="el" href="a00222.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">tbb</a>
+: <a class="el" href="a00240.html#adb86d08473679d6fe0eabcdc766ffe3aa412563418e657114a102db610f726632">tbb</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html
index 79c29e2..d5cecfa 100644
--- a/doc/html/namespacemembers_func.html
+++ b/doc/html/namespacemembers_func.html
@@ -52,48 +52,48 @@
 
 <h3><a class="anchor" id="index__"></a>- _ -</h3><ul>
 <li>__TBB_DECL_ATOMIC_ALT()
-: <a class="el" href="a00222.html#a59425abdcb421136e9f5954cfb975e5f">tbb</a>
+: <a class="el" href="a00240.html#a59425abdcb421136e9f5954cfb975e5f">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
 <li>parallel_deterministic_reduce()
-: <a class="el" href="a00234.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb</a>
+: <a class="el" href="a00255.html#ga1fd7e3c43592dfe1ae3e3572bd80d4f6">tbb</a>
 </li>
 <li>parallel_do()
-: <a class="el" href="a00234.html#ga533f6732498ade8634a9470cbf89192d">tbb</a>
+: <a class="el" href="a00255.html#ga533f6732498ade8634a9470cbf89192d">tbb</a>
 </li>
 <li>parallel_for()
-: <a class="el" href="a00234.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb</a>
+: <a class="el" href="a00255.html#ga9722d2bc7e5edb4fae9f3b55268a1ecc">tbb</a>
 </li>
 <li>parallel_for_each()
-: <a class="el" href="a00234.html#gaef59e9baf9141a19c99a291e4532bd98">tbb</a>
+: <a class="el" href="a00255.html#ga72131543fd218b67dbb048b768d534e4">tbb</a>
 </li>
 <li>parallel_invoke()
-: <a class="el" href="a00234.html#ga14459dcbcd631194df803b155a7f610b">tbb</a>
+: <a class="el" href="a00255.html#ga3c6fe4bf1076c82132e666fb545451cd">tbb</a>
 </li>
 <li>parallel_reduce()
-: <a class="el" href="a00234.html#ga6e83e121490df24fa5893b14e68f5e2a">tbb</a>
+: <a class="el" href="a00255.html#gac26c35d1983e7ac2ab003cc8e49dd7e6">tbb</a>
 </li>
 <li>parallel_scan()
-: <a class="el" href="a00234.html#gae7eaaf124471a6c603b28fc925e8fbbb">tbb</a>
+: <a class="el" href="a00255.html#ga3548041731b7fa14f30f155541ceebb9">tbb</a>
 </li>
 <li>parallel_sort()
-: <a class="el" href="a00234.html#gabdc90813499f91d3e32298cd6dc2fe45">tbb</a>
+: <a class="el" href="a00255.html#ga541b2fd91e88842a7b823161107779e9">tbb</a>
 </li>
 </ul>
 
 
 <h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
 <li>TBB_runtime_interface_version()
-: <a class="el" href="a00222.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">tbb</a>
+: <a class="el" href="a00240.html#ade8a8bc300d5ef09d38cbfb8baff5cd2">tbb</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html
index 3720824..d26566a 100644
--- a/doc/html/namespacemembers_type.html
+++ b/doc/html/namespacemembers_type.html
@@ -43,16 +43,16 @@
 <div class="contents">
  <ul>
 <li>speculative_spin_mutex
-: <a class="el" href="a00237.html#ga69722571e9e4406693c4a1379f0b47eb">tbb</a>
+: <a class="el" href="a00258.html#ga69722571e9e4406693c4a1379f0b47eb">tbb</a>
 </li>
 <li>tbb_thread
-: <a class="el" href="a00222.html#a7805ca254302ff88b566f7dcde7e56b0">tbb</a>
+: <a class="el" href="a00240.html#a7805ca254302ff88b566f7dcde7e56b0">tbb</a>
 </li>
 </ul>
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html
index 1ee7607..592e176 100644
--- a/doc/html/namespaces.html
+++ b/doc/html/namespaces.html
@@ -38,14 +38,14 @@
 <div class="contents">
 <div class="textblock">Here is a list of all documented namespaces with brief descriptions:</div><div class="directory">
 <table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00219.html" target="_self">rml</a></td><td class="desc">The namespace rml contains components of low-level memory pool interface </td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00222.html" target="_self">tbb</a></td><td class="desc">The namespace tbb contains all components of the library </td></tr>
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00237.html" target="_self">rml</a></td><td class="desc">The namespace rml contains components of low-level memory pool interface </td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="a00240.html" target="_self">tbb</a></td><td class="desc">The namespace tbb contains all components of the library </td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/doc/html/pages.html b/doc/html/pages.html
index f59a0ca..843ac8b 100644
--- a/doc/html/pages.html
+++ b/doc/html/pages.html
@@ -32,14 +32,13 @@
 <div class="contents">
 <div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
 <table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="a00005.html" target="_self">Requirements on parallel_reduce anonymous function objects (lambda functions)</a></td><td class="desc"></td></tr>
-<tr id="row_1_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="a00240.html" target="_self">Deprecated List</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="a00005.html" target="_self">Requirements on parallel_reduce anonymous function objects (lambda functions)</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
 <hr>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <p></p>
 Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
 registered trademarks or trademarks of Intel Corporation or its
diff --git a/examples/GettingStarted/index.html b/examples/GettingStarted/index.html
index 3cad871..2aaeaba 100644
--- a/examples/GettingStarted/index.html
+++ b/examples/GettingStarted/index.html
@@ -13,7 +13,7 @@ This directory contains the examples referenced by the Intel® Threading Buil
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/GettingStarted/sub_string_finder/Makefile b/examples/GettingStarted/sub_string_finder/Makefile
index c3ecf14..c1a91e2 100644
--- a/examples/GettingStarted/sub_string_finder/Makefile
+++ b/examples/GettingStarted/sub_string_finder/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/GettingStarted/sub_string_finder/Makefile.windows b/examples/GettingStarted/sub_string_finder/Makefile.windows
index d286010..b3bc58b 100644
--- a/examples/GettingStarted/sub_string_finder/Makefile.windows
+++ b/examples/GettingStarted/sub_string_finder/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs examples.
 PROG=sub_string_finder_extended
@@ -35,18 +27,21 @@ CXX1 = $(TBB_CXX)-
 CXX2 = $(CXX1:icl.exe-=icl.exe)
 CXX  = $(CXX2:-=cl.exe)
 
-MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(CXXFLAGS)
+MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(offload:mic=/D__TBB_MIC_OFFLOAD /Qdiag-disable:3335,3440,3441) $(CXXFLAGS)
 MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS)
 
+TBB_MIC_LIB = $(offload:mic=/Qtbb)
+TBB_DEBUG_MIC_LIB = $(offload:mic=/Qoffload-option,mic,link,"-ltbb_debug")
+
 all: release test
 release: compiler_check
-	$(CXX) sub_string_finder.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe
-	$(CXX) sub_string_finder_extended.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe
-	$(CXX) sub_string_finder_pretty.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe
+	$(CXX) sub_string_finder.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe
+	$(CXX) sub_string_finder_extended.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe
+	$(CXX) sub_string_finder_pretty.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe
 debug: compiler_check
-	$(CXX) sub_string_finder.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe
-	$(CXX) sub_string_finder_extended.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe
-	$(CXX) sub_string_finder_pretty.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe
+	$(CXX) sub_string_finder.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe
+	$(CXX) sub_string_finder_extended.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe
+	$(CXX) sub_string_finder_pretty.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe
 clean:
 	@cmd.exe /C del sub_string_finder*.exe *.obj *.?db *.manifest
 test:
diff --git a/examples/GettingStarted/sub_string_finder/index.html b/examples/GettingStarted/sub_string_finder/index.html
index 2e4594b..f33a41f 100644
--- a/examples/GettingStarted/sub_string_finder/index.html
+++ b/examples/GettingStarted/sub_string_finder/index.html
@@ -31,7 +31,7 @@ demonstrates offload programming for Intel&reg Many Integrated Core (Intel&reg M
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -56,7 +56,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.icproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.icproj
deleted file mode 100644
index fb1bb75..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="sub_string_finder"
-	ProjectGUID="{3929DD8E-420D-4360-BCBA-3C14C674EFC7}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2525}"
-	VCNestedProjectFileName="sub_string_finder.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln
new file mode 100644
index 0000000..9120fb6
--- /dev/null
+++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln
@@ -0,0 +1,46 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder", "sub_string_finder.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2525}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_extended", "sub_string_finder_extended.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2526}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_pretty", "sub_string_finder_pretty.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2524}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.Build.0 = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.Build.0 = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcproj
deleted file mode 100644
index b228041..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcproj
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="sub_string_finder"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2525}"
-	RootNamespace="sub_string_finder"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\sub_string_finder.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj
new file mode 100644
index 0000000..4a5f943
--- /dev/null
+++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>sub_string_finder</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A2525}</ProjectGuid>
+    <RootNamespace>sub_string_finder</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\sub_string_finder.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_cl.sln b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_cl.sln
deleted file mode 100644
index 0054e4f..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_cl.sln
+++ /dev/null
@@ -1,50 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder", "sub_string_finder.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A2525}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_extended", "sub_string_finder_extended.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A2526}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_pretty", "sub_string_finder_pretty.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A2524}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A26B588D-97F7-4466-9672-8A7E3173FBA1}"
-	ProjectSection(SolutionItems) = preProject
-		..\index.html = ..\index.html
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.icproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.icproj
deleted file mode 100644
index 576e473..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="sub_string_finder_extended"
-	ProjectGUID="{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2526}"
-	VCNestedProjectFileName="sub_string_finder_extended.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcproj
deleted file mode 100644
index 33374e3..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcproj
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="sub_string_finder_extended"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2526}"
-	RootNamespace="sub_string_finder_extended"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\sub_string_finder_extended.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj
new file mode 100644
index 0000000..3324d7c
--- /dev/null
+++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>sub_string_finder_extended</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A2526}</ProjectGuid>
+    <RootNamespace>sub_string_finder_extended</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\sub_string_finder_extended.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_icl.sln b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_icl.sln
deleted file mode 100644
index 5dcab35..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_icl.sln
+++ /dev/null
@@ -1,74 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "sub_string_finder", "sub_string_finder.icproj", "{3929DD8E-420D-4360-BCBA-3C14C674EFC7}"
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "sub_string_finder_extended", "sub_string_finder_extended.icproj", "{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}"
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "sub_string_finder_pretty", "sub_string_finder_pretty.icproj", "{8ADCDB85-B3E0-4376-9378-0C349F9E6140}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A26B588D-97F7-4466-9672-8A7E3173FBA1}"
-	ProjectSection(SolutionItems) = preProject
-		..\index.html = ..\index.html
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Debug|Win32.Build.0 = Debug|Win32
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Debug|x64.ActiveCfg = Debug|x64
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Debug|x64.Build.0 = Debug|x64
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Release|Win32.ActiveCfg = Release|Win32
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Release|Win32.Build.0 = Release|Win32
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Release|x64.ActiveCfg = Release|x64
-		{3929DD8E-420D-4360-BCBA-3C14C674EFC7}.Release|x64.Build.0 = Release|x64
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Debug|Win32.Build.0 = Debug|Win32
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Debug|x64.ActiveCfg = Debug|x64
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Debug|x64.Build.0 = Debug|x64
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Release|Win32.ActiveCfg = Release|Win32
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Release|Win32.Build.0 = Release|Win32
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Release|x64.ActiveCfg = Release|x64
-		{BFF3077B-EB9A-4AF5-998B-7C1BA757C06F}.Release|x64.Build.0 = Release|x64
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Debug|Win32.Build.0 = Debug|Win32
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Debug|x64.ActiveCfg = Debug|x64
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Debug|x64.Build.0 = Debug|x64
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Release|Win32.ActiveCfg = Release|Win32
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Release|Win32.Build.0 = Release|Win32
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Release|x64.ActiveCfg = Release|x64
-		{8ADCDB85-B3E0-4376-9378-0C349F9E6140}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.icproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.icproj
deleted file mode 100644
index a303820..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="sub_string_finder_pretty"
-	ProjectGUID="{8ADCDB85-B3E0-4376-9378-0C349F9E6140}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2524}"
-	VCNestedProjectFileName="sub_string_finder_pretty.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcproj
deleted file mode 100644
index 6d28b05..0000000
--- a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcproj
+++ /dev/null
@@ -1,352 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="sub_string_finder_pretty"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2524}"
-	RootNamespace="sub_string_finder_pretty"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\sub_string_finder_pretty.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj
new file mode 100644
index 0000000..d599556
--- /dev/null
+++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>sub_string_finder_pretty</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A2524}</ProjectGuid>
+    <RootNamespace>sub_string_finder_pretty</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\sub_string_finder_pretty.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp
index 37537dc..f12df41 100644
--- a/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp
+++ b/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <iostream>
diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp
index 69c62c3..a13f9e2 100644
--- a/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp
+++ b/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if __TBB_MIC_OFFLOAD
diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp
index f79575a..0cdb988 100644
--- a/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp
+++ b/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <iostream>
diff --git a/examples/Makefile b/examples/Makefile
index d81f9b1..232bf69 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # This file should be always located and called in $(tbb_root)/examples
 
@@ -76,7 +68,7 @@ else
     ifeq ($(arch),ia64)
         override CXXFLAGS += $(PIC_KEY)
     endif
-    ifeq ($(subst suncc,gcc,$(compiler)),gcc)
+    ifneq ($(filter suncc gcc clang,$(compiler)),)
         ifeq ($(compiler),suncc)
             override CXXFLAGS += -I$(tbb_root)$(SLASH)include -library=stlport4 -M$(tbb_root)/build/suncc.map.pause -erroff=unassigned,attrskipunsup,badargtype2w,badbinaryopw,wbadasg,wvarhidemem,wbadinit
         endif
@@ -148,7 +140,7 @@ $(COMMON_TARGETS):: % : $(addsuffix %,$(EXAMPLES_DIRS))
 # proxy rule for calling appropriate example
 $(EXAMPLES_TARGETS)::
 	@echo ------------------------ $@ ------------------------
-	-$(MAKE) -C $(@D)  -f $(EXAMPLE_MAKEFILE) $(notdir $@) CXX="$(CPLUS)" $(if $(run_cmd),run_cmd="$(run_cmd)",) $(if $(args),ARGS="$(args)",)
+	-$(MAKE) -C $(@D)  -f $(EXAMPLE_MAKEFILE) $(notdir $@) CXX="$(CPLUS)" $(if $(run_cmd),run_cmd="$(run_cmd)",) $(if $(args),ARGS="$(args)",)  $(if $(UI),UI="$(UI)")
 
 printenv:
 ifeq ($(tbb_os),windows)
diff --git a/examples/common/copy_libraries.bat b/examples/common/copy_libraries.bat
index bfe3f21..9e94e9c 100644
--- a/examples/common/copy_libraries.bat
+++ b/examples/common/copy_libraries.bat
@@ -1,30 +1,22 @@
 @echo off
 REM
-REM Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+REM Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 REM
-REM This file is part of Threading Building Blocks.
+REM This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+REM you can redistribute it and/or modify it under the terms of the GNU General Public License
+REM version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+REM See  the GNU General Public License for more details.   You should have received a copy of
+REM the  GNU General Public License along with Threading Building Blocks; if not, write to the
+REM Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 REM
-REM Threading Building Blocks is free software; you can redistribute it
-REM and/or modify it under the terms of the GNU General Public License
-REM version 2 as published by the Free Software Foundation.
-REM
-REM Threading Building Blocks is distributed in the hope that it will be
-REM useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-REM of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Threading Building Blocks; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-REM
-REM As a special exception, you may use this file as part of a free software
-REM library without restriction.  Specifically, if other files instantiate
-REM templates or use macros or inline functions from this file, or you compile
-REM this file and link it with other files to produce an executable, this
-REM file does not by itself cause the resulting executable to be covered by
-REM the GNU General Public License.  This exception does not however
-REM invalidate any other reasons why the executable file might be covered by
-REM the GNU General Public License.
+REM As a special exception,  you may use this file  as part of a free software library without
+REM restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+REM functions from this file, or you compile this file and link it with other files to produce
+REM an executable,  this file does not by itself cause the resulting executable to be covered
+REM by the GNU General Public License. This exception does not however invalidate any other
+REM reasons why the executable file might be covered by the GNU General Public License.
 REM
 
 :: Getting parameters
diff --git a/examples/common/gui/Makefile.gmake b/examples/common/gui/Makefile.gmake
index 60e201b..8937826 100644
--- a/examples/common/gui/Makefile.gmake
+++ b/examples/common/gui/Makefile.gmake
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # The C++ compiler
 #CXX=g++
@@ -43,40 +35,56 @@ arch ?= $(shell uname -m)
 # Possible values of interest: intel64 x86_64 amd64 ia64 ppc64 sparc sparc64
 x64 ?= $(findstring 64,$(subst sparc,sparc64,$(arch)))
 
+# see https://wiki.debian.org/Multiarch/Tuples
+MULTIARCH = $(arch)
+ifeq ($(arch),ia32)
+MULTIARCH = i386
+endif
+ifeq ($(arch),intel64)
+MULTIARCH = x86_64
+endif
+ifeq ($(arch),ppc32)
+MULTIARCH = powerpc
+endif
+ifeq ($(arch),sparc)
+MULTIARCH = sparc64
+endif
+MULTIARCHTUPLE ?= $(MULTIARCH)-linux-gnu
+
 # detecting UI ("mac", "x" or "con")
 ifeq ($(shell uname),Darwin)
-UI ?= mac
+  UI ?= mac
 else
-UI ?= $(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libX11.so -o -f /usr/lib$(x64)/libX11.so ] && echo x || echo con")
+  UI ?= $(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libX11.so -o -f /usr/lib$(x64)/libX11.so -o -f /usr/lib/$(MULTIARCHTUPLE)/libX11.so ] && echo x")
 endif
 
 ifeq ($(UI),x)
-EXE = $(NAME)$(SUFFIX)
-UI_CXXFLAGS += -I/usr/X11R6/include
-LIBS += -lpthread -L/usr/X11R6/lib$(x64) -lX11
-# detect if libXext can be found
-ifeq ($(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libXext.so -o -f /usr/lib$(x64)/libXext.so ] && echo 0"),0)
-LIBS += -lXext
-else  # no libXext
-UI_CXXFLAGS += -DX_NOSHMEM
-endif # libXext
+  EXE = $(NAME)$(SUFFIX)
+  UI_CXXFLAGS += -I/usr/X11R6/include
+  LIBS += -lpthread -L/usr/X11R6/lib$(x64) -lX11
+  # detect if libXext can be found
+  ifeq ($(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libXext.so -o -f /usr/lib$(x64)/libXext.so -o -f /usr/lib/$(MULTIARCHTUPLE)/libXext.so ] && echo 0"),0)
+    LIBS += -lXext
+  else  # no libXext
+    UI_CXXFLAGS += -DX_NOSHMEM
+  endif # libXext
 
 else # ! X
-ifeq ($(UI),mac)
-CXX_UI?=g++
-LIBS += -framework OpenGL -framework Foundation -framework Cocoa
-MACUISOURCES = ../../common/gui/xcode/tbbExample/OpenGLView.m ../../common/gui/xcode/tbbExample/main.m ../../common/gui/xcode/tbbExample/tbbAppDelegate.m 
-MACUIOBJS = OpenGLView.o main.o tbbAppDelegate.o
-APPRES = $(NAME)$(SUFFIX).app/Contents/Resources
-EXE = $(NAME)$(SUFFIX).app/Contents/MacOS/$(NAME)$(SUFFIX)
+  ifeq ($(UI),mac)
+    CXX_UI?=g++
+    LIBS += -framework OpenGL -framework Foundation -framework Cocoa
+    MACUISOURCES = ../../common/gui/xcode/tbbExample/OpenGLView.m ../../common/gui/xcode/tbbExample/main.m ../../common/gui/xcode/tbbExample/tbbAppDelegate.m 
+    MACUIOBJS = OpenGLView.o main.o tbbAppDelegate.o
+    APPRES = $(NAME)$(SUFFIX).app/Contents/Resources
+    EXE = $(NAME)$(SUFFIX).app/Contents/MacOS/$(NAME)$(SUFFIX)
 
-else # ! OS X*
-UI = con
-EXE = $(NAME)$(SUFFIX)
-ifeq (file,$(origin UI))
-$(warning Note: no graphics output capability detected, building for console output.)
-endif
+  else # ! OS X*
 
-endif # OS X*
+    EXE = $(NAME)$(SUFFIX)
+    ifeq (,$(strip $(UI)))
+       UI = con
+       $(warning Note: no graphics output capability detected, building for console output.)
+    endif
+  endif # OS X*
 endif # X
 endif # Windows vs. other
diff --git a/examples/common/gui/Makefile.win b/examples/common/gui/Makefile.win
index 9e2c51e..42ea77f 100644
--- a/examples/common/gui/Makefile.win
+++ b/examples/common/gui/Makefile.win
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Per-build Makefile rules (for recursive $(MAKE) calls from Makefile)
 
@@ -65,12 +57,12 @@ build_gdi_debug: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check
 	$(CXX) $(CXXFLAGS_DEBUG) /D _WINDOWS $(MYCXXFLAGS) $(SOURCE) $(UISRC) $(MYLFLAGS) msvs/$(RCNAME).res /debug /subsystem:windows /machine:$(XARCH) /OUT:$(EXE)
 	@cmd.exe /C del *.obj
 
-build_dd: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check
+build_d2d: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check
 	- at echo Using DirectX SDK from "$(DDLIB_DIR)"
 	$(CXX) $(CXXFLAGS_NDEBUG) /D _WINDOWS $(MYCXXFLAGS) /I "$(DXSDK_DIR)\include" $(SOURCE) $(UISRC) $(MYLFLAGS) /LIBPATH:"$(DDLIB_DIR)" msvs/$(RCNAME).res /subsystem:windows /machine:$(XARCH) /OUT:$(EXE)
 	@cmd.exe /C del *.obj
 
-build_dd_debug: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check
+build_d2d_debug: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check
 	- at echo Using DirectX SDK from "$(DDLIB_DIR)"
 	$(CXX) $(CXXFLAGS_DEBUG) /D _WINDOWS $(MYCXXFLAGS) /I "$(DXSDK_DIR)\include" $(SOURCE) $(UISRC) $(MYLFLAGS) /LIBPATH:"$(DDLIB_DIR)" msvs/$(RCNAME).res /debug /subsystem:windows /machine:$(XARCH) /OUT:$(EXE)
 	@cmd.exe /C del *.obj
diff --git a/examples/common/gui/convideo.cpp b/examples/common/gui/convideo.cpp
index 99fcc97..fd3d76f 100644
--- a/examples/common/gui/convideo.cpp
+++ b/examples/common/gui/convideo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "video.h"
@@ -38,6 +30,7 @@ static int g_fps = 0;
 #if _WIN32 || _WIN64
 
 static DWORD g_msec = 0;
+
 #ifdef _WINDOWS
 HINSTANCE video::win_hInstance = 0;
 int video::win_iCmdShow = 0;
@@ -46,13 +39,13 @@ void video::win_load_accelerators(int idc)  { }
 #endif //_WINDOWS
 
 #else
-
 #include <sched.h>
 #include <sys/time.h>
 struct timeval g_time;
-
 #endif //_WIN32||_WIN64
 
+#define CALC_FPS_ENABLED ((WINAPI_FAMILY != WINAPI_FAMILY_APP) && (!__ANDROID__))
+
 video::video()
     // OpenGL* RGBA byte order for little-endian CPU
     : red_mask(0xff), red_shift(0), green_mask(0xff00),
@@ -78,6 +71,7 @@ bool video::init_console()
 
 void video::terminate()
 {
+#if CALC_FPS_ENABLED
     if(calc_fps) {
         double fps = g_fps;
 #if _WIN32 || _WIN64
@@ -87,7 +81,8 @@ void video::terminate()
         fps /= (end_time.tv_sec+1.0*end_time.tv_usec/1000000.0) - (g_time.tv_sec+1.0*g_time.tv_usec/1000000.0);
 #endif
         printf("%s: %.1f fps\n", title, fps);
-  	}
+    }
+#endif
     g_video = 0; running = false;
     if(g_pImg) { delete[] g_pImg; g_pImg = 0; }
 }
@@ -100,16 +95,18 @@ video::~video()
 //! Count and display FPS count in titlebar
 bool video::next_frame()
 {
+#if CALC_FPS_ENABLED
     if(calc_fps){
-	    if(!g_fps) {
+        if(!g_fps) {
 #if _WIN32 || _WIN64
             g_msec = GetTickCount();
 #else
             struct timezone tz; gettimeofday(&g_time, &tz);
 #endif
-	    }
+        }
         g_fps++;
     }
+#endif
     return running;
 }
 
diff --git a/examples/common/gui/d2dvideo.cpp b/examples/common/gui/d2dvideo.cpp
index 74befd4..64f4cc5 100644
--- a/examples/common/gui/d2dvideo.cpp
+++ b/examples/common/gui/d2dvideo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // common Windows parts
@@ -111,7 +103,7 @@ LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lPa
                 Sleep(0);
             }
             break;
-        // Proccess all mouse and keyboard events
+        // Process all mouse and keyboard events
         case WM_LBUTTONDOWN:    mouse( 1, lParam ); break;
         case WM_LBUTTONUP:      mouse(-1, lParam ); break;
         case WM_RBUTTONDOWN:    mouse( 2, lParam ); break;
diff --git a/examples/common/gui/ddvideo.cpp b/examples/common/gui/ddvideo.cpp
deleted file mode 100644
index 7e89cd6..0000000
--- a/examples/common/gui/ddvideo.cpp
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-// common Windows parts
-#include "winvideo.h"
-
-#include <dxsdkver.h>
-#if _DXSDK_PRODUCT_MAJOR >= 9
-// new implementation based on Direct2D
-#include "d2dvideo.cpp"
-#else // _DXSDK_PRODUCT_MAJOR >= 9
-
-// and another headers
-#include <cassert>
-#include <stdio.h>
-#include <ddraw.h>
-
-#pragma comment(lib, "ddraw.lib")
-#pragma comment(lib, "dxguid.lib")
-
-LPDIRECTDRAW7               g_pDD = NULL;        // DirectDraw object
-LPDIRECTDRAWSURFACE7        g_pDDSPrimary = NULL;// DirectDraw primary surface
-LPDIRECTDRAWSURFACE7        g_pDDSBack = NULL;   // DirectDraw back surface
-LPDIRECTDRAWSURFACE7        g_pDDSOverlay = NULL;// DirectDraw overlay surface
-LPDIRECTDRAWCLIPPER         g_pClipper = NULL;   // DirectDraw clipping struct
-DDOVERLAYFX                 g_OverlayFX;         // DirectDraw overlay effects struct
-DDCAPS                      g_DDCaps;            // DirectDraw hardware capabilities struct
-DWORD                       g_OverlayFlags = 0;  // DirectDraw overlay flags variable
-DWORD                       g_dwXRatio,
-                            g_dwYRatio;          // The ratios between the src and dst rects
-RECT                        g_rcSrc = {0, 0, 0, 0},
-                            g_rcDst = {0, 0, 0, 0};
-HANDLE                      g_hVSync;
-
-// check for new DX SDK (8 & 9)
-#ifdef DDSCAPS_PRIMARYSURFACELEFT
-#include <dxerr8.h>
-#pragma comment(lib, "dxerr8.lib")
-#else
-// old SDK (7)
-#include <d3dx.h>
-#pragma comment(lib, "d3dx.lib")
-#endif
-
-//! Create a dialog box and tell the user what went wrong
-bool DisplayError(LPSTR lpstrErr, HRESULT hres)
-{
-    static bool InError = false;
-    int retval = 0;
-    if (!InError)
-    {
-        InError = true;
-#ifdef DDSCAPS_PRIMARYSURFACELEFT
-        const char *message = hres?DXGetErrorString8A(hres):0;
-#else
-        char message[256]; if(hres) D3DXGetErrorString(hres, 256, message);
-#endif
-        retval = MessageBoxA(g_hAppWnd, lpstrErr, hres?message:"Error!", MB_OK|MB_ICONERROR);
-        InError = false;
-    }
-    return false;
-}
-
-//! Releases the overlay surface
-void DestroyOverlay()
-{
-    if (g_pClipper)
-        g_pClipper->Release();
-    if (g_pDDSOverlay) {
-        g_pImg = 0; LPDIRECTDRAWSURFACE7 pDDSOverlay(g_pDDSOverlay);
-        g_pDDSOverlay = NULL;
-        YIELD_TO_THREAD();
-        pDDSOverlay->Release(); // be sure nobody uses old value
-    }
-}
-
-//! Releases the primary surface
-void DestroyPrimary()
-{
-    if (g_pDDSPrimary)
-    {
-        g_pDDSPrimary->Release();
-        g_pDDSPrimary = NULL;
-    }
-}
-
-//! Releases core DirectDraw objects
-void DestroyDDraw()
-{
-    DestroyPrimary();
-    // Release the DDraw object
-    if (g_pDD) {
-        LPDIRECTDRAW7 pDD(g_pDD); // be sure nobody uses old value
-        g_pDD = NULL; Sleep(1); pDD->Release();
-    }
-}
-
-//! Checks and corrects all boundries for alignment and stretching
-void CheckBoundries(void)
-{
-    // Make sure the coordinates fulfill the stretching requirements.  Often
-    // the hardware will require a certain ammount of stretching to do
-    // overlays. This stretch factor is held in dwMinOverlayStretch as the
-    // stretch factor multiplied by 1000 (to keep an accuracy of 3 decimal places).
-    if ((g_DDCaps.dwCaps & DDCAPS_OVERLAYSTRETCH) && (g_DDCaps.dwMinOverlayStretch)
-        && (g_dwXRatio < g_DDCaps.dwMinOverlayStretch))
-    {
-        g_rcDst.right = 2 * GetSystemMetrics(SM_CXSIZEFRAME) + g_rcDst.left + (g_sizex
-                                 * (g_DDCaps.dwMinOverlayStretch + 1)) / 1000;
-        SetWindowTextA(g_hAppWnd, "Window is too small!");
-    }
-    else if ((g_DDCaps.dwCaps & DDCAPS_OVERLAYSTRETCH) && (g_DDCaps.dwMaxOverlayStretch)
-        && (g_dwXRatio > g_DDCaps.dwMaxOverlayStretch))
-    {
-        g_rcDst.right = 2 * GetSystemMetrics(SM_CXSIZEFRAME) + g_rcDst.left + (g_sizey
-                               * (g_DDCaps.dwMaxOverlayStretch + 999)) / 1000;
-        SetWindowTextA(g_hAppWnd, "Window is too large!");
-    }
-    else if(!g_video->calc_fps) SetWindowText(g_hAppWnd, g_video->title);
-
-    // Recalculate the ratio's for the upcoming calculations
-    g_dwXRatio = (g_rcDst.right - g_rcDst.left) * 1000 / (g_rcSrc.right - g_rcSrc.left);
-    g_dwYRatio = (g_rcDst.bottom - g_rcDst.top) * 1000 / (g_rcSrc.bottom - g_rcSrc.top);
-
-    // Check to make sure we're within the screen's boundries, if not then fix
-    // the problem by adjusting the source rectangle which we draw from.
-    if (g_rcDst.left < 0)
-    {
-        g_rcSrc.left = -g_rcDst.left * 1000 / g_dwXRatio;
-        g_rcDst.left = 0;
-    }
-    if (g_rcDst.right > GetSystemMetrics(SM_CXSCREEN))
-    {
-        g_rcSrc.right = g_sizex - ((g_rcDst.right - GetSystemMetrics(SM_CXSCREEN)) * 1000 / g_dwXRatio);
-        g_rcDst.right = GetSystemMetrics(SM_CXSCREEN);
-    }
-    if (g_rcDst.bottom > GetSystemMetrics(SM_CYSCREEN))
-    {
-        g_rcSrc.bottom = g_sizey - ((g_rcDst.bottom - GetSystemMetrics(SM_CYSCREEN)) * 1000 / g_dwYRatio);
-        g_rcDst.bottom = GetSystemMetrics(SM_CYSCREEN);
-    }
-    // I don't know how useful this is... but just in case someone can do it - here's the check.
-    if (g_rcDst.top < 0)
-    {
-        g_rcSrc.top = -g_rcDst.top * 1000 / g_dwYRatio;
-        g_rcDst.top = 0;
-    }
-
-    // Make sure the coordinates fulfill the alignment requirements
-    // these expressions (x & -y) just do alignment by dropping low order bits...
-    // so to round up, we add first, then truncate.
-    if ((g_DDCaps.dwCaps & DDCAPS_ALIGNBOUNDARYSRC) && g_DDCaps.dwAlignBoundarySrc)
-        g_rcSrc.left = (g_rcSrc.left + g_DDCaps.dwAlignBoundarySrc / 2) & -(signed)
-            (g_DDCaps.dwAlignBoundarySrc);
-    if ((g_DDCaps.dwCaps & DDCAPS_ALIGNSIZESRC) && g_DDCaps.dwAlignSizeSrc)
-        g_rcSrc.right = g_rcSrc.left + (g_rcSrc.right - g_rcSrc.left + g_DDCaps.dwAlignSizeSrc
-                                   / 2) & -(signed) (g_DDCaps.dwAlignSizeSrc);
-    if ((g_DDCaps.dwCaps & DDCAPS_ALIGNBOUNDARYDEST) && g_DDCaps.dwAlignBoundaryDest)
-        g_rcDst.left = (g_rcDst.left + g_DDCaps.dwAlignBoundaryDest / 2) & -(signed)
-            (g_DDCaps.dwAlignBoundaryDest);
-    if ((g_DDCaps.dwCaps & DDCAPS_ALIGNSIZEDEST) && g_DDCaps.dwAlignSizeDest)
-        g_rcDst.right = g_rcDst.left + (g_rcDst.right - g_rcDst.left) & -(signed) (g_DDCaps.dwAlignSizeDest);
-}
-
-//! Get translated by system color value
-DWORD DDColorMatch(IDirectDrawSurface7 * pdds, COLORREF rgb)
-{
-    COLORREF       rgbT;
-    HDC            hdc;
-    DWORD          dw = CLR_INVALID;
-    DDSURFACEDESC2 ddsd;
-    HRESULT        hres;
-
-    //  Use GDI SetPixel to color match for us
-    if (rgb != CLR_INVALID && pdds->GetDC(&hdc) == DD_OK) {
-        rgbT = GetPixel(hdc, 0, 0);     // Save current pixel value
-        SetPixel(hdc, 0, 0, rgb);       // Set our value
-        pdds->ReleaseDC(hdc);
-    }
-    // Now lock the surface so we can read back the converted color
-    ddsd.dwSize = sizeof(ddsd);
-    while ((hres = pdds->Lock(NULL, &ddsd, 0, NULL)) == DDERR_WASSTILLDRAWING)
-        YIELD_TO_THREAD();
-    if (hres == DD_OK) {
-        dw = *(DWORD *) ddsd.lpSurface;                 // Get DWORD
-        if (ddsd.ddpfPixelFormat.dwRGBBitCount < 32)
-            dw &= (1 << ddsd.ddpfPixelFormat.dwRGBBitCount) - 1;  // Mask it to bpp
-        pdds->Unlock(NULL);
-    }
-    else return DisplayError("Can't lock primary surface", hres);
-    //  Now put the color that was there back.
-    if (rgb != CLR_INVALID && pdds->GetDC(&hdc) == DD_OK) {
-        SetPixel(hdc, 0, 0, rgbT);
-        pdds->ReleaseDC(hdc);
-    }
-    return dw;
-}
-
-//! Load the bitmap and copy it to the overlay surface
-bool DrawOverlay()
-{
-    HRESULT        hRet;       // This is where we put return values from DirectDraw.
-    DDSURFACEDESC2 surfDesc;
-    // Setup structure
-    memset(&surfDesc, 0, sizeof(surfDesc)); surfDesc.dwSize = sizeof(surfDesc);
-
-    hRet = g_pDDSOverlay->Lock(NULL, &surfDesc, DDLOCK_SURFACEMEMORYPTR | DDLOCK_NOSYSLOCK | DDLOCK_WRITEONLY, NULL);
-    if (hRet != DD_OK ||  surfDesc.lpSurface == NULL)
-        return DisplayError("Can't lock overlay surface", hRet);
-    else {
-        g_pImg = (unsigned int *)surfDesc.lpSurface;
-        //g_pDDSOverlay->Unlock(NULL); is not needed?
-    }
-    // Setup effects structure
-    memset(&g_OverlayFX, 0, sizeof(g_OverlayFX)); g_OverlayFX.dwSize = sizeof(g_OverlayFX);
-    // Setup overlay flags.
-    g_OverlayFlags = DDOVER_SHOW;
-    // Check for destination color keying capability
-    if ((g_DDCaps.dwCKeyCaps & DDCKEYCAPS_DESTOVERLAY) && ((g_DDCaps.dwCaps & DDCAPS_OVERLAYCANTCLIP) || (g_DDCaps.dwCKeyCaps & DDCKEYCAPS_NOCOSTOVERLAY) ))
-    {
-        // If so, we'll use it to clip the bitmap when other windows go on top
-        // of us. Just for the record - this color range for color keying (the
-        // high/low values) are not heavily supported right now, so for almost
-        // all cards, just use the same color for both.
-        g_OverlayFX.dckDestColorkey.dwColorSpaceLowValue =
-        g_OverlayFX.dckDestColorkey.dwColorSpaceHighValue = DDColorMatch(g_pDDSPrimary, RGBKEY);
-        g_OverlayFlags |= DDOVER_DDFX | DDOVER_KEYDESTOVERRIDE;
-    } else {
-        // If not, we'll setup a clipper for the window.  This will fix the
-        // problem on a few video cards - but the ones that don't shouldn't care.
-        hRet = g_pDD->CreateClipper(0, &g_pClipper, NULL);
-        if (hRet != DD_OK)
-            return DisplayError("Can't create clipper", hRet);
-        hRet = g_pClipper->SetHWnd(0, g_hAppWnd);
-        if (hRet != DD_OK)
-            return DisplayError("Can't attach clipper", hRet);
-        hRet = g_pDDSPrimary->SetClipper(g_pClipper);
-        if (hRet != DD_OK)
-            return DisplayError("Can't set clipper", hRet);
-    }
-    return true;
-}
-
-//! Init the primary surface
-bool DDPrimaryInit()
-{
-    HRESULT        hRet;
-    DDSURFACEDESC2 ddsd;  // A surface description structure
-
-    // Create the primary surface.  The primary surface is the full screen -
-    // since we're a windowed app - we'll just write to the portion of the
-    // screen within our window.
-    memset(&ddsd, 0, sizeof(ddsd)); // Set all fields of struct to 0 and set .dwSize to
-    ddsd.dwSize = sizeof(ddsd);     // Sizeof the variable - these two steps required for most DDraw structs
-    ddsd.dwFlags = DDSD_CAPS;       // Set flags for variables we're using...
-    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;  // Set the variables we said we would in dwFlags
-    hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL);
-    if (hRet != DD_OK)
-        return DisplayError("Can't create primary surface", hRet);
-    return true;
-}
-
-//! Init DirectDraw Stuff
-bool DDInit()
-{
-    HRESULT hRet;
-    g_rcSrc.right = g_sizex;
-    g_rcSrc.bottom = g_sizey;
-
-    hRet = DirectDrawCreateEx(NULL, (VOID**)&g_pDD, IID_IDirectDraw7, NULL);
-    if (hRet != DD_OK)
-        return DisplayError("Can't create DirectDraw7 instance", hRet);
-
-    // Set cooperation level with other windows to be normal (ie. not full screen)
-    // You MUST set the cooperation level to be SOMETHING, for windowed apps use
-    // DDSCL_NORMAL, for full screen use: DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN.
-    hRet = g_pDD->SetCooperativeLevel(g_hAppWnd, DDSCL_NORMAL);
-    if (hRet != DD_OK)
-        return DisplayError("Can't set cooperative level", hRet);
-    return DDPrimaryInit();
-}
-
-//! Setup the overlay object
-bool DDOverlayInit()
-{
-    // Get hardware's CAPabilitieS
-    memset(&g_DDCaps, 0, sizeof(g_DDCaps));
-    g_DDCaps.dwSize = sizeof(g_DDCaps);
-    if (g_pDD->GetCaps(&g_DDCaps, 0))
-        return DisplayError("Can't get capabilities");
-
-    // Make sure it supports overlays
-    if (!(g_DDCaps.dwCaps & DDCAPS_OVERLAY))
-        return DisplayError("Hardware doesn't support overlays");
-
-    //DO NOT Make sure it supports stretching (scaling)
-    //if (!(g_DDCaps.dwCaps & DDCAPS_OVERLAYSTRETCH)) return false;
-
-    DDSURFACEDESC2              ddsd;  // DirectDraw surface descriptor
-    HRESULT                     hRet;  // I'm not even going to try...
-    // The pixel formats that we want the surface to be in
-    DDPIXELFORMAT               ddpfOverlayFormats[] = {
-        {sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0xFF0000, 0x0FF00, 0x0000FF, 0}, // 32-bit RGB
-        {sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x007C00, 0x003e0, 0x00001F, 0}, // 16-bit RGB 5:5:5
-        {sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x00F800, 0x007e0, 0x00001F, 0}, // 16-bit RGB 5:6:5
-        {sizeof(DDPIXELFORMAT), DDPF_FOURCC, mmioFOURCC('U','Y','V','Y'), 16, 0, 0, 0, 0}, // UYVY
-        {sizeof(DDPIXELFORMAT), DDPF_FOURCC, mmioFOURCC('Y','4','2','2'), 16, 0, 0, 0, 0}, // the same as UYVY
-        {sizeof(DDPIXELFORMAT), DDPF_FOURCC, mmioFOURCC('Y','U','Y','2'), 16, 0, 0, 0, 0}, // YUY2 is unsupported color-space here
-        {0}};
-
-    // Setup the overlay surface's attributes in the surface descriptor
-    memset(&ddsd, 0, sizeof(ddsd));
-    ddsd.dwSize = sizeof(ddsd);
-    ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY | g_DDCaps.ddsCaps.dwCaps&DDSCAPS_VIDEOMEMORY;
-    ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
-    ddsd.dwBackBufferCount = 0;
-    ddsd.dwWidth = g_sizex;
-    ddsd.dwHeight = g_sizey;
-    for(int format = 0; ddpfOverlayFormats[format].dwSize; format++) {
-        ddsd.ddpfPixelFormat = ddpfOverlayFormats[format];
-        // Attempt to create the surface with theses settings
-        hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSOverlay, NULL);
-        if(hRet == DD_OK) break;
-    }
-    if (hRet != DD_OK)
-        return DisplayError("Can't create appropriate overlay surface", hRet);
-    return true;
-}
-
-inline void mouse(int k, LPARAM lParam)
-{
-    int x = (int)LOWORD(lParam), y = (int)HIWORD(lParam);
-    g_video->on_mouse( x*g_sizex/(g_rcDst.right - g_rcDst.left),
-        y*g_sizey/(g_rcDst.bottom - g_rcDst.top), k);
-}
-
-LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
-    PAINTSTRUCT                 ps;         // Structure for the paint message
-    POINT                       p = {0, 0}; // Translation point for the window's client region
-    HRESULT                     hRet;
-
-    switch (iMsg)
-    {
-        case WM_MOVE:
-            // Make sure we're not moving to be minimized - because otherwise
-            // our ratio varialbes (g_dwXRatio and g_dwYRatio) will end up
-            // being 0, and once we hit CheckBoundries it divides by 0.
-            if (!IsIconic(hwnd))
-            {
-                g_rcSrc.left = 0;
-                g_rcSrc.right = g_sizex;
-                g_rcSrc.top = 0;
-                g_rcSrc.bottom = g_sizey;
-                GetClientRect(hwnd, &g_rcDst);
-                g_dwXRatio = (g_rcDst.right - g_rcDst.left) * 1000 /
-                             (g_rcSrc.right - g_rcSrc.left);
-                g_dwYRatio = (g_rcDst.bottom - g_rcDst.top) * 1000 /
-                             (g_rcSrc.bottom - g_rcSrc.top);
-                ClientToScreen(hwnd, &p);
-                g_rcDst.left = p.x;
-                g_rcDst.top = p.y;
-                g_rcDst.bottom += p.y;
-                g_rcDst.right += p.x;
-                CheckBoundries();
-            }
-            else
-                // Else, hide the overlay... just in case we can't do
-                // destination color keying, this will pull the overlay
-                // off of the screen for the user.
-                if (g_pDDSOverlay && g_pDDSPrimary)
-                    g_pDDSOverlay->UpdateOverlay(NULL, g_pDDSPrimary, NULL, DDOVER_HIDE, NULL);
-            // Check to make sure our window exists before we tell it to
-            // repaint. This will fail the first time (while the window is being created).
-            if (hwnd)
-            {
-                InvalidateRect(hwnd, NULL, FALSE);
-                UpdateWindow(hwnd);
-            }
-            return 0L;
-
-        case WM_SIZE:
-            // Another check for the minimization action.  This check is
-            // quicker though...
-            if (wParam != SIZE_MINIMIZED)
-            {
-                GetClientRect(hwnd, &g_rcDst);
-                ClientToScreen(hwnd, &p);
-                g_rcDst.left = p.x;
-                g_rcDst.top = p.y;
-                g_rcDst.bottom += p.y;
-                g_rcDst.right += p.x;
-                g_rcSrc.left = 0;
-                g_rcSrc.right = g_sizex;
-                g_rcSrc.top = 0;
-                g_rcSrc.bottom = g_sizey;
-                // Here we multiply by 1000 to preserve 3 decimal places in the
-                // division opperation (we picked 1000 to be on the same order
-                // of magnitude as the stretch factor for easier comparisons)
-                g_dwXRatio = (g_rcDst.right - g_rcDst.left) * 1000 /
-                             (g_rcSrc.right - g_rcSrc.left);
-                g_dwYRatio = (g_rcDst.bottom - g_rcDst.top) * 1000 /
-                             (g_rcSrc.bottom - g_rcSrc.top);
-                CheckBoundries();
-            }
-            return 0L;
-
-        case WM_PAINT:
-            BeginPaint(hwnd, &ps);
-            // Check the primary surface to see if it's lost - if so you can
-            // pretty much bet that the other surfaces are also lost - thus
-            // restore EVERYTHING!  If we got our surfaces stolen by a full
-            // screen app - then we'll destroy our primary - and won't be able
-            // to initialize it again. When we get our next paint message (the
-            // full screen app closed for example) we'll want to try to reinit
-            // the surfaces again - that's why there is a check for
-            // g_pDDSPrimary == NULL.  The other option, is that our program
-            // went through this process, could init the primary again, but it
-            // couldn't init the overlay, that's why there's a third check for
-            // g_pDDSOverlay == NULL.  Make sure that the check for
-            // !g_pDDSPrimary is BEFORE the IsLost call - that way if the
-            // pointer is NULL (ie. !g_pDDSPrimary is TRUE) - the compiler
-            // won't try to evaluate the IsLost function (which, since the
-            // g_pDDSPrimary surface is NULL, would be bad...).
-            if (!g_pDDSPrimary || (g_pDDSPrimary->IsLost() != DD_OK) ||
-                (g_pDDSOverlay == NULL))
-            {
-                DestroyOverlay();
-                DestroyPrimary();
-                if (DDPrimaryInit())
-                    if (DDOverlayInit())
-                        if (!DrawOverlay())
-                            DestroyOverlay();
-            }
-            // UpdateOverlay is how we put the overlay on the screen.
-            if (g_pDDSOverlay && g_pDDSPrimary && g_video->updating)
-            {
-                hRet = g_pDDSOverlay->UpdateOverlay(&g_rcSrc, g_pDDSPrimary,
-                                                    &g_rcDst, g_OverlayFlags,
-                                                    &g_OverlayFX);
-#ifdef _DEBUG
-                if(hRet != DD_OK) DisplayError("Can't update overlay", hRet);
-#endif
-            }
-            EndPaint(hwnd, &ps);
-            return 0L;
-
-        // process mouse and keyboard events
-        case WM_LBUTTONDOWN:    mouse(1, lParam); break;
-        case WM_LBUTTONUP:      mouse(-1, lParam); break;
-        case WM_RBUTTONDOWN:    mouse(2, lParam); break;
-        case WM_RBUTTONUP:      mouse(-2, lParam); break;
-        case WM_MBUTTONDOWN:    mouse(3, lParam); break;
-        case WM_MBUTTONUP:      mouse(-3, lParam); break;
-        case WM_CHAR:           g_video->on_key(wParam); break;
-
-        case WM_DISPLAYCHANGE:  return 0L;
-
-        case WM_DESTROY:
-            // Now, shut down the window...
-            PostQuitMessage(0);
-            return 0L;
-    }
-    return g_pUserProc? g_pUserProc(hwnd, iMsg, wParam, lParam) : DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-
-DWORD WINAPI thread_vsync(LPVOID lpParameter)
-{
-    BOOL vblank = false;
-    while(g_video && g_video->running) {
-        while(!vblank && g_video && g_video->running) {
-            YIELD_TO_THREAD();
-            LPDIRECTDRAW7 pDD(g_pDD);
-            if(pDD) pDD->GetVerticalBlankStatus(&vblank);
-        }
-        LPDIRECTDRAWSURFACE7 pDDSOverlay(g_pDDSOverlay);
-        if(pDDSOverlay) pDDSOverlay->UpdateOverlay(&g_rcSrc, g_pDDSPrimary, &g_rcDst, g_OverlayFlags | DDOVER_REFRESHALL, &g_OverlayFX);
-        do {
-            Sleep(1);
-            LPDIRECTDRAW7 pDD(g_pDD);
-            if(pDD) pDD->GetVerticalBlankStatus(&vblank);
-        } while(vblank && g_video && g_video->running);
-        while(g_video && !g_video->updating && g_video->running) Sleep(10);
-    }
-    return 0;
-}
-
-///////////////////////////////////////////// public methods of video class ///////////////////////
-
-inline void mask2bits(unsigned int mask, color_t &save, depth_t &shift)
-{
-    save  = mask; if(!mask) { shift = 8; return; }
-    shift = 0; while(!(mask&1)) ++shift, mask >>= 1;
-    int bits = 0; while(mask&1) ++bits,  mask >>= 1;
-    shift += bits - 8;
-}
-
-bool video::init_window(int sizex, int sizey)
-{
-    assert(win_hInstance != 0);
-    g_sizex = sizex; g_sizey = sizey;
-    if( !WinInit(win_hInstance, win_iCmdShow, gWndClass, title, false) )
-        return DisplayError("Unable to initialize the program's window.");
-    running = true;
-    if( !DDInit() ) {
-        DestroyDDraw();
-        goto fail;
-    }
-    if( !DDOverlayInit() || !DrawOverlay() ) {
-        DestroyOverlay();
-        DestroyDDraw();
-        goto fail;
-    }
-    DDPIXELFORMAT PixelFormat; memset(&PixelFormat, 0, sizeof(PixelFormat)); PixelFormat.dwSize = sizeof(PixelFormat);
-    g_pDDSOverlay->GetPixelFormat(&PixelFormat);
-    mask2bits(PixelFormat.dwRBitMask, red_mask, red_shift);
-    mask2bits(PixelFormat.dwGBitMask, green_mask, green_shift);
-    mask2bits(PixelFormat.dwBBitMask, blue_mask, blue_shift);
-    if(PixelFormat.dwFlags == DDPF_RGB)
-         depth = depth_t(PixelFormat.dwRGBBitCount);
-    else depth = -depth_t(PixelFormat.dwFourCC);
-    for(int i = 0, e = sizex * sizey * PixelFormat.dwRGBBitCount / 32, c = get_color(0, 0, 0); i < e; i++)
-        g_pImg[i] = c; // clear surface
-    ShowWindow(g_hAppWnd, SW_SHOW);
-    g_hVSync = CreateThread (
-        NULL,          // LPSECURITY_ATTRIBUTES security_attrs
-        0,             // SIZE_T stacksize
-        (LPTHREAD_START_ROUTINE) thread_vsync,
-        this,               // argument
-        0, 0);
-    SetPriorityClass(g_hVSync, IDLE_PRIORITY_CLASS); // questionable
-    return true;
-fail:
-    g_pImg = new unsigned int[g_sizex * g_sizey];
-    return false;
-}
-
-void video::terminate()
-{
-    running = false;
-    DestroyOverlay();
-    if(WaitForSingleObject(g_hVSync, 100) == WAIT_TIMEOUT) TerminateThread(g_hVSync, 0);
-    CloseHandle(g_hVSync);
-    DestroyDDraw();
-    if(g_pImg) delete[] g_pImg;
-    g_pImg = 0; g_video = 0;
-}
-//////////// drawing area constructor & destructor /////////////
-
-drawing_area::drawing_area(int x, int y, int sizex, int sizey)
-: start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(g_video->depth),
-    base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg)
-{
-    assert(ptr32); assert(x < g_sizex); assert(y < g_sizey);
-    assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey);
-
-    index = base_index; // current index
-}
-
-void drawing_area::update()
-{
-}
-
-#endif //_DXSDK_PRODUCT_MAJOR >= 9
diff --git a/examples/common/gui/dxcheck.bat b/examples/common/gui/dxcheck.bat
index 5d17ad1..5c0e282 100644
--- a/examples/common/gui/dxcheck.bat
+++ b/examples/common/gui/dxcheck.bat
@@ -1,30 +1,22 @@
 @echo off
 REM
-REM Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+REM Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 REM
-REM This file is part of Threading Building Blocks.
+REM This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+REM you can redistribute it and/or modify it under the terms of the GNU General Public License
+REM version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+REM See  the GNU General Public License for more details.   You should have received a copy of
+REM the  GNU General Public License along with Threading Building Blocks; if not, write to the
+REM Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 REM
-REM Threading Building Blocks is free software; you can redistribute it
-REM and/or modify it under the terms of the GNU General Public License
-REM version 2 as published by the Free Software Foundation.
-REM
-REM Threading Building Blocks is distributed in the hope that it will be
-REM useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-REM of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Threading Building Blocks; if not, write to the Free Software
-REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-REM
-REM As a special exception, you may use this file as part of a free software
-REM library without restriction.  Specifically, if other files instantiate
-REM templates or use macros or inline functions from this file, or you compile
-REM this file and link it with other files to produce an executable, this
-REM file does not by itself cause the resulting executable to be covered by
-REM the GNU General Public License.  This exception does not however
-REM invalidate any other reasons why the executable file might be covered by
-REM the GNU General Public License.
+REM As a special exception,  you may use this file  as part of a free software library without
+REM restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+REM functions from this file, or you compile this file and link it with other files to produce
+REM an executable,  this file does not by itself cause the resulting executable to be covered
+REM by the GNU General Public License. This exception does not however invalidate any other
+REM reasons why the executable file might be covered by the GNU General Public License.
 REM
 if "%DXSDK_DIR%"=="" goto error_no_DXSDK
 goto end
diff --git a/examples/common/gui/gdivideo.cpp b/examples/common/gui/gdivideo.cpp
index db96d07..64d6a64 100644
--- a/examples/common/gui/gdivideo.cpp
+++ b/examples/common/gui/gdivideo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // common Windows parts
@@ -85,7 +77,7 @@ LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lPa
             }
             return 0L;
 
-        // Proccess all mouse and keyboard events
+        // Process all mouse and keyboard events
         case WM_LBUTTONDOWN:    g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), 1); break;
         case WM_LBUTTONUP:      g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), -1); break;
         case WM_RBUTTONDOWN:    g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), 2); break;
diff --git a/examples/common/gui/macvideo.cpp b/examples/common/gui/macvideo.cpp
index 06318a7..e18910e 100644
--- a/examples/common/gui/macvideo.cpp
+++ b/examples/common/gui/macvideo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "video.h"
diff --git a/examples/common/gui/video.h b/examples/common/gui/video.h
index bf8273f..35823ca 100644
--- a/examples/common/gui/video.h
+++ b/examples/common/gui/video.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __VIDEO_H__
@@ -171,7 +163,12 @@ inline color_t video::get_color(colorcomp_t red, colorcomp_t green, colorcomp_t
     if(red_shift == 16) // only for depth == 24 && red_shift > blue_shift
         return (red<<16) | (green<<8) | blue;
     else if(depth >= 24)
-        return (red<<red_shift) | (green<<green_shift) | (blue<<blue_shift);
+        return
+#if __ANDROID__
+                // Setting Alpha to 0xFF
+                0xFF000000 |
+#endif
+                (red<<red_shift) | (green<<green_shift) | (blue<<blue_shift);
     else if(depth > 0) {
         register depth_t bs = blue_shift, rs = red_shift;
         if(blue_shift < 0) blue >>= -bs, bs = 0;
diff --git a/examples/common/gui/winvideo.h b/examples/common/gui/winvideo.h
index 13bae5a..b31cd90 100644
--- a/examples/common/gui/winvideo.h
+++ b/examples/common/gui/winvideo.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /////// Common internal implementation of Windows-specific stuff //////////////
diff --git a/examples/common/gui/xcode/tbbExample/Info.plist b/examples/common/gui/xcode/tbbExample/Info.plist
index 23d7a2b..db4faae 100644
--- a/examples/common/gui/xcode/tbbExample/Info.plist
+++ b/examples/common/gui/xcode/tbbExample/Info.plist
@@ -50,7 +50,7 @@
 	<key>LSMinimumSystemVersion</key>
 	<string>10.7</string>
 	<key>NSHumanReadableCopyright</key>
-	<string>Copyright 2005-2014 Intel Corporation.  All Rights Reserved.</string>
+	<string>Copyright 2005-2015 Intel Corporation.  All Rights Reserved.</string>
 	<key>NSMainNibFile</key>
 	<string>MainMenu</string>
 	<key>NSPrincipalClass</key>
diff --git a/examples/common/gui/xcode/tbbExample/OpenGLView.h b/examples/common/gui/xcode/tbbExample/OpenGLView.h
index 093d06c..5b47e3d 100644
--- a/examples/common/gui/xcode/tbbExample/OpenGLView.h
+++ b/examples/common/gui/xcode/tbbExample/OpenGLView.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #import <Foundation/Foundation.h>
diff --git a/examples/common/gui/xcode/tbbExample/OpenGLView.m b/examples/common/gui/xcode/tbbExample/OpenGLView.m
index 2d4c9d4..19a76d4 100644
--- a/examples/common/gui/xcode/tbbExample/OpenGLView.m
+++ b/examples/common/gui/xcode/tbbExample/OpenGLView.m
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #import "OpenGLView.h"
diff --git a/examples/common/gui/xcode/tbbExample/main.m b/examples/common/gui/xcode/tbbExample/main.m
index 4ff3c68..24fea1b 100644
--- a/examples/common/gui/xcode/tbbExample/main.m
+++ b/examples/common/gui/xcode/tbbExample/main.m
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #import <Cocoa/Cocoa.h>
diff --git a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h
index ab2061f..7669ef6 100644
--- a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h
+++ b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m
index 8321eed..9338508 100644
--- a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m
+++ b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist b/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist
index 962010e..77ce710 100644
--- a/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist
+++ b/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist
@@ -36,7 +36,7 @@
 	<key>LSMinimumSystemVersion</key>
 	<string>${MACOSX_DEPLOYMENT_TARGET}</string>
 	<key>NSHumanReadableCopyright</key>
-	<string>Copyright 2005-2014 Intel Corporation.  All Rights Reserved.</string>
+	<string>Copyright 2005-2015 Intel Corporation.  All Rights Reserved.</string>
 	<key>NSMainNibFile</key>
 	<string>MainMenu</string>
 	<key>NSPrincipalClass</key>
diff --git a/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch b/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch
index 6e713af..5a809d4 100644
--- a/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch
+++ b/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/common/gui/xvideo.cpp b/examples/common/gui/xvideo.cpp
index 3f13d96..de62123 100644
--- a/examples/common/gui/xvideo.cpp
+++ b/examples/common/gui/xvideo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Uncomment next line to disable shared memory features if you do not have libXext
diff --git a/examples/common/index.html b/examples/common/index.html
index 0fe0ab5..777b98b 100644
--- a/examples/common/index.html
+++ b/examples/common/index.html
@@ -58,7 +58,7 @@ tbb::task_scheduler_init::default_num_threads().
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/common/toolset.props b/examples/common/toolset.props
new file mode 100644
index 0000000..a99e238
--- /dev/null
+++ b/examples/common/toolset.props
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <PlatformToolset Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\Intel C++ Compiler XE 14.0')">Intel C++ Compiler XE 14.0</PlatformToolset>
+    <PlatformToolset Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\Intel C++ Compiler 15.0 [Intel(R) System Studio]')">Intel C++ Compiler 15.0 [Intel(R) System Studio]</PlatformToolset>
+    <PlatformToolset Condition="Exists('$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\Intel C++ Compiler XE 15.0')">Intel C++ Compiler XE 15.0</PlatformToolset>
+    <UseIntelTBB Condition="'$(UseIntelTBB)' == ''">true</UseIntelTBB>
+  </PropertyGroup>
+</Project>
diff --git a/examples/common/utility/fast_random.h b/examples/common/utility/fast_random.h
index 4843f94..c360ebc 100644
--- a/examples/common/utility/fast_random.h
+++ b/examples/common/utility/fast_random.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef FAST_RANDOM_H_
diff --git a/examples/common/utility/utility.h b/examples/common/utility/utility.h
index 6672467..3f534be 100644
--- a/examples/common/utility/utility.h
+++ b/examples/common/utility/utility.h
@@ -1,34 +1,33 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef UTILITY_H_
 #define UTILITY_H_
 
+#if __TBB_MIC_OFFLOAD
+#pragma offload_attribute (push,target(mic))
+#include <exception>
+#include <cstdio>
+#pragma offload_attribute (pop)
+#endif // __TBB_MIC_OFFLOAD
+
 #include <string>
 #include <cstring>
 #include <vector>
diff --git a/examples/concurrent_hash_map/count_strings/Makefile b/examples/concurrent_hash_map/count_strings/Makefile
index 1b3787c..b5a4a5f 100644
--- a/examples/concurrent_hash_map/count_strings/Makefile
+++ b/examples/concurrent_hash_map/count_strings/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/concurrent_hash_map/count_strings/Makefile.windows b/examples/concurrent_hash_map/count_strings/Makefile.windows
index 87dc268..a2ddf82 100644
--- a/examples/concurrent_hash_map/count_strings/Makefile.windows
+++ b/examples/concurrent_hash_map/count_strings/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/concurrent_hash_map/count_strings/count_strings.cpp b/examples/concurrent_hash_map/count_strings/count_strings.cpp
index 39c28a8..203319d 100644
--- a/examples/concurrent_hash_map/count_strings/count_strings.cpp
+++ b/examples/concurrent_hash_map/count_strings/count_strings.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Workaround for ICC 11.0 not finding __sync_fetch_and_add_4 on some of the Linux platforms.
@@ -98,7 +90,7 @@ static void CountOccurrences(int nthreads) {
 
 struct Sound {
     const char *chars;
-    int rates[3];// begining, middle, ending
+    int rates[3];// beginning, middle, ending
 };
 Sound Vowels[] = {
     {"e", {445,6220,1762}}, {"a", {704,5262,514}}, {"i", {402,5224,162}}, {"o", {248,3726,191}},
diff --git a/examples/concurrent_hash_map/count_strings/index.html b/examples/concurrent_hash_map/count_strings/index.html
index d5d39ea..3ecf322 100644
--- a/examples/concurrent_hash_map/count_strings/index.html
+++ b/examples/concurrent_hash_map/count_strings/index.html
@@ -16,7 +16,7 @@ The example counts the number of unique words in a text.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example (Windows* systems only). 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only). 
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only). 
 </DL>
@@ -44,7 +44,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.icproj b/examples/concurrent_hash_map/count_strings/msvs/count_strings.icproj
deleted file mode 100644
index c873cd5..0000000
--- a/examples/concurrent_hash_map/count_strings/msvs/count_strings.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="count_strings"
-	ProjectGUID="{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252C}"
-	VCNestedProjectFileName="count_strings.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln b/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln
new file mode 100644
index 0000000..536455b
--- /dev/null
+++ b/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "count_strings", "count_strings.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcproj b/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcproj
deleted file mode 100644
index 797141c..0000000
--- a/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="count_strings"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252C}"
-	RootNamespace="count_strings"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\count_strings.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj b/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj
new file mode 100644
index 0000000..4929fd5
--- /dev/null
+++ b/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>count_strings</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252C}</ProjectGuid>
+    <RootNamespace>count_strings</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\count_strings.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings_cl.sln b/examples/concurrent_hash_map/count_strings/msvs/count_strings_cl.sln
deleted file mode 100644
index 5a9c27e..0000000
--- a/examples/concurrent_hash_map/count_strings/msvs/count_strings_cl.sln
+++ /dev/null
@@ -1,26 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "count_strings", "count_strings.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings_icl.sln b/examples/concurrent_hash_map/count_strings/msvs/count_strings_icl.sln
deleted file mode 100644
index ff1ba24..0000000
--- a/examples/concurrent_hash_map/count_strings/msvs/count_strings_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "count_strings", "count_strings.icproj", "{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Debug|Win32.Build.0 = Debug|Win32
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Debug|x64.ActiveCfg = Debug|x64
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Debug|x64.Build.0 = Debug|x64
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Release|Win32.ActiveCfg = Release|Win32
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Release|Win32.Build.0 = Release|Win32
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Release|x64.ActiveCfg = Release|x64
-		{ACC0CC2E-3102-4ED2-AFA2-996AF7DEC9A8}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/concurrent_hash_map/index.html b/examples/concurrent_hash_map/index.html
index b9a52d2..33b7ca5 100644
--- a/examples/concurrent_hash_map/index.html
+++ b/examples/concurrent_hash_map/index.html
@@ -13,7 +13,7 @@ This directory has examples of the template <code>concurrent_hash_map</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/concurrent_priority_queue/shortpath/Makefile b/examples/concurrent_priority_queue/shortpath/Makefile
index df79684..f5cdbf6 100644
--- a/examples/concurrent_priority_queue/shortpath/Makefile
+++ b/examples/concurrent_priority_queue/shortpath/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/concurrent_priority_queue/shortpath/Makefile.windows b/examples/concurrent_priority_queue/shortpath/Makefile.windows
index 12bbf25..0fab8f6 100644
--- a/examples/concurrent_priority_queue/shortpath/Makefile.windows
+++ b/examples/concurrent_priority_queue/shortpath/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/concurrent_priority_queue/shortpath/index.html b/examples/concurrent_priority_queue/shortpath/index.html
index 8a04077..a3ad551 100644
--- a/examples/concurrent_priority_queue/shortpath/index.html
+++ b/examples/concurrent_priority_queue/shortpath/index.html
@@ -40,7 +40,7 @@ etc.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2008 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains OS X* Xcode* workspace for building and running the example (OS X* systems only).
 </DL>
@@ -72,7 +72,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.icproj b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.icproj
deleted file mode 100644
index 38334ea..0000000
--- a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="shortpath"
-	ProjectGUID="{D731702C-B704-468D-9497-A75EE0521C89}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	VCNestedProjectFileName="shortpath.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln
new file mode 100644
index 0000000..664ee97
--- /dev/null
+++ b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shortpath", "shortpath.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcproj b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcproj
deleted file mode 100644
index a1f740d..0000000
--- a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="shortpath"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	RootNamespace="shortpath"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\shortpath.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj
new file mode 100644
index 0000000..2935e0e
--- /dev/null
+++ b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>shortpath</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252A}</ProjectGuid>
+    <RootNamespace>shortpath</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\shortpath.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath_cl.sln b/examples/concurrent_priority_queue/shortpath/msvs/shortpath_cl.sln
deleted file mode 100644
index cf1789a..0000000
--- a/examples/concurrent_priority_queue/shortpath/msvs/shortpath_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shortpath", "shortpath.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath_icl.sln b/examples/concurrent_priority_queue/shortpath/msvs/shortpath_icl.sln
deleted file mode 100644
index 70881aa..0000000
--- a/examples/concurrent_priority_queue/shortpath/msvs/shortpath_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "shortpath", "shortpath.icproj", "{D731702C-B704-468D-9497-A75EE0521C89}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|Win32.Build.0 = Debug|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|x64.ActiveCfg = Debug|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|x64.Build.0 = Debug|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|Win32.ActiveCfg = Release|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|Win32.Build.0 = Release|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|x64.ActiveCfg = Release|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/concurrent_priority_queue/shortpath/shortpath.cpp b/examples/concurrent_priority_queue/shortpath/shortpath.cpp
index f8ff58a..f90f66e 100644
--- a/examples/concurrent_priority_queue/shortpath/shortpath.cpp
+++ b/examples/concurrent_priority_queue/shortpath/shortpath.cpp
@@ -1,35 +1,23 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-// This header should come before any other one.
-// For details, see Known Issues in the Release Notes.
-#include "tbb/tbb_stddef.h"
-
 #include <cstdio>
 #include <vector>
 #include <math.h>
@@ -106,7 +94,7 @@ size_t dst = N-1;              // end of path
 double INF=100000.0;           // infinity
 size_t grainsize = 16;         // number of vertices per task on average
 size_t max_spawn;              // max tasks to spawn
-atomic<size_t> num_spawn;      // number of active tasks
+tbb::atomic<size_t> num_spawn;      // number of active tasks
 
 point_set vertices;            // vertices
 edge_set edges;                // edges
@@ -114,7 +102,7 @@ vector<vertex_id> predecessor; // for recreating path from src to dst
 
 vector<double> f_distance;     // estimated distances at particular vertex
 vector<double> g_distance;     // current shortest distances from src vertex
-vector<spin_mutex> locks;      // a lock for each vertex
+spin_mutex    *locks;          // a lock for each vertex
 task_group *sp_group;          // task group for tasks executing sub-problems
 
 class compare_f {
@@ -137,6 +125,7 @@ public:
 #endif
 
 void shortpath() {
+    sp_group = new task_group;
     g_distance[src] = 0.0; // src's distance from src is zero
     f_distance[src] = get_distance(vertices[src], vertices[dst]); // estimate distance from src to dst
     open_set.push(make_pair(src,f_distance[src])); // push src into open_set
@@ -146,6 +135,7 @@ void shortpath() {
     sp_group->run( shortpath_helper_functor() );
 #endif
     sp_group->wait();
+    delete sp_group;
 }
 
 void shortpath_helper() {
@@ -268,14 +258,13 @@ public:
 #endif
 
 void InitializeGraph() {
-    sp_group = new task_group;
+    task_scheduler_init init(get_default_num_threads());
     vertices.resize(N);
     edges.resize(N);
     predecessor.resize(N);
     g_distance.resize(N);
     f_distance.resize(N);
-    locks.resize(N);
-    task_scheduler_init init(get_default_num_threads());
+    locks = new spin_mutex[N];
     if (verbose) printf("Generating vertices...\n");
 #if __TBB_LAMBDAS_PRESENT
     parallel_for(blocked_range<size_t>(0,N,64), 
@@ -312,6 +301,10 @@ void InitializeGraph() {
     if (verbose) printf("Done.\n");
 }
 
+void ReleaseGraph() {
+    delete []locks;
+}
+
 void ResetGraph() {
     task_scheduler_init init(get_default_num_threads());
 #if __TBB_LAMBDAS_PRESENT
@@ -375,6 +368,7 @@ int main(int argc, char *argv[]) {
             } else
                 utility::report_elapsed_time((t1-t0).seconds());
         }
+        ReleaseGraph();
         return 0;
     } catch(std::exception& e) {
         cerr<<"error occurred. error text is :\"" <<e.what()<<"\"\n";
diff --git a/examples/graph/binpack/Makefile b/examples/graph/binpack/Makefile
index 98dda74..cce987f 100644
--- a/examples/graph/binpack/Makefile
+++ b/examples/graph/binpack/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/graph/binpack/Makefile.windows b/examples/graph/binpack/Makefile.windows
index 1564f02..ee373a2 100644
--- a/examples/graph/binpack/Makefile.windows
+++ b/examples/graph/binpack/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/graph/binpack/binpack.cpp b/examples/graph/binpack/binpack.cpp
index 2bfb4bb..b1d5e4f 100644
--- a/examples/graph/binpack/binpack.cpp
+++ b/examples/graph/binpack/binpack.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 
@@ -73,9 +65,9 @@ size_type min_B;                 // lower bound on the optimal number of bins
 size_type B;                     // the answer, i.e. number of bins used by the algorithm
 size_type *input_array;          // stores randomly generated input values
 value_type item_sum;             // sum of all randomly generated input values
-atomic<value_type> packed_sum;   // sum of all values currently packed into all bins
-atomic<size_type> packed_items;  // number of values currently packed into all bins
-atomic<size_type> active_bins;   // number of active bin_packers
+tbb::atomic<value_type> packed_sum;   // sum of all values currently packed into all bins
+tbb::atomic<size_type> packed_items;  // number of values currently packed into all bins
+tbb::atomic<size_type> active_bins;   // number of active bin_packers
 bin_packer **bins;               // the array of bin packers
 
 // This class is the Body type for bin_packer
diff --git a/examples/graph/binpack/index.html b/examples/graph/binpack/index.html
index eaabbe9..16e0ab9 100644
--- a/examples/graph/binpack/index.html
+++ b/examples/graph/binpack/index.html
@@ -29,7 +29,7 @@ summary of the quality of the bin-packing.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2008 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -62,7 +62,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/graph/binpack/msvs/binpack.icproj b/examples/graph/binpack/msvs/binpack.icproj
deleted file mode 100644
index 74a4049..0000000
--- a/examples/graph/binpack/msvs/binpack.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="binpack"
-	ProjectGUID="{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-	VCNestedProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	VCNestedProjectFileName="binpack.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/graph/binpack/msvs/binpack.sln b/examples/graph/binpack/msvs/binpack.sln
new file mode 100644
index 0000000..df23fe4
--- /dev/null
+++ b/examples/graph/binpack/msvs/binpack.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binpack", "binpack.vcxproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/graph/binpack/msvs/binpack.vcproj b/examples/graph/binpack/msvs/binpack.vcproj
deleted file mode 100644
index 2e3bb3d..0000000
--- a/examples/graph/binpack/msvs/binpack.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="binpack"
-	ProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	RootNamespace="binpack"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\binpack.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/graph/binpack/msvs/binpack.vcxproj b/examples/graph/binpack/msvs/binpack.vcxproj
new file mode 100644
index 0000000..336c27b
--- /dev/null
+++ b/examples/graph/binpack/msvs/binpack.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>binpack</ProjectName>
+    <ProjectGuid>{C931C7A2-074E-4150-9E7A-39A03250411E}</ProjectGuid>
+    <RootNamespace>binpack</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\binpack.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/graph/binpack/msvs/binpack_cl.sln b/examples/graph/binpack/msvs/binpack_cl.sln
deleted file mode 100644
index ac5cd2f..0000000
--- a/examples/graph/binpack/msvs/binpack_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binpack", "binpack.vcproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/binpack/msvs/binpack_icl.sln b/examples/graph/binpack/msvs/binpack_icl.sln
deleted file mode 100644
index 4f86c03..0000000
--- a/examples/graph/binpack/msvs/binpack_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "binpack", "binpack.icproj", "{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.Build.0 = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.ActiveCfg = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.Build.0 = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.ActiveCfg = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.Build.0 = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.ActiveCfg = Release|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/dining_philosophers/Makefile b/examples/graph/dining_philosophers/Makefile
index caffae9..334d381 100644
--- a/examples/graph/dining_philosophers/Makefile
+++ b/examples/graph/dining_philosophers/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/graph/dining_philosophers/Makefile.windows b/examples/graph/dining_philosophers/Makefile.windows
index 4b45dea..1776ade 100644
--- a/examples/graph/dining_philosophers/Makefile.windows
+++ b/examples/graph/dining_philosophers/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/graph/dining_philosophers/dining_philosophers.cpp b/examples/graph/dining_philosophers/dining_philosophers.cpp
index 39f37d4..c9a3a70 100644
--- a/examples/graph/dining_philosophers/dining_philosophers.cpp
+++ b/examples/graph/dining_philosophers/dining_philosophers.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _MSC_VER
@@ -34,6 +26,7 @@
 #include "tbb/flow_graph.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
+#include "tbb/tbb_thread.h"
 #include "tbb/atomic.h"
 #include "tbb/spin_mutex.h"
 #include <iostream>
@@ -41,13 +34,6 @@
 #include <cstdlib>
 #include <cstdio>
 
-#if _WIN32 || _WIN64
-#include "windows.h"
-#define SLEEP(a) Sleep(a*1000)
-#else
-#define SLEEP(a) sleep(a)
-#endif
-
 // Each philosopher is an object, and is invoked in the think() function_node, the
 // eat() function_node and forward() multifunction_node.
 //
@@ -63,8 +49,8 @@
 // eat() function_node.  The output of the eat() function_node is sent to the forward()
 // multifunction_node.
 
-const int think_time = 1;
-const int eat_time = 1;
+const tbb::tick_count::interval_t think_time(1.0);
+const tbb::tick_count::interval_t eat_time(1.0);
 const int num_times = 10;
 
 tbb::tick_count t0;
@@ -126,7 +112,7 @@ typedef multifunction_node<continue_msg, join_output> forward_node_type;
 class philosopher {
 public:
 
-    philosopher( const char *name ) : 
+    philosopher( const char *name ) :
         my_name(name), my_count(num_times) { }
 
     ~philosopher() {
@@ -152,7 +138,7 @@ private:
 };
 
 std::ostream& operator<<(std::ostream& o, philosopher const &p) {
-    o << "< philosopher[" << reinterpret_cast<uintptr_t>(const_cast<philosopher *>(&p)) << "] " << p.name() 
+    o << "< philosopher[" << reinterpret_cast<uintptr_t>(const_cast<philosopher *>(&p)) << "] " << p.name()
         << ", my_count=" << p.my_count;
     return o;
 }
@@ -165,7 +151,7 @@ public:
     continue_msg operator()( continue_msg /*m*/) {
         my_philosopher.think();
         return continue_msg();
-    } 
+    }
 };
 
 class eat_node_body {
@@ -216,19 +202,19 @@ void philosopher::eat() {
         tbb::spin_mutex::scoped_lock lock(my_mutex);
         std::printf("%s eating\n", name());
     }
-    SLEEP(eat_time); 
+    tbb::this_tbb_thread::sleep(eat_time);
     if(verbose) {
         tbb::spin_mutex::scoped_lock lock(my_mutex);
         std::printf("%s done eating\n", name());
     }
 }
 
-void philosopher::think() { 
+void philosopher::think() {
     if(verbose) {
         tbb::spin_mutex::scoped_lock lock(my_mutex);
         std::printf("%s thinking\n", name());
     }
-    SLEEP(think_time); 
+    tbb::this_tbb_thread::sleep(think_time);
     if(verbose) {
         tbb::spin_mutex::scoped_lock lock(my_mutex);
         std::printf("%s done thinking\n", name());
@@ -248,7 +234,7 @@ int main(int argc, char *argv[]) {
         verbose = !options.silent;
 
     for(num_threads = options.threads.first; num_threads <= options.threads.last; num_threads = options.threads.step(num_threads)) {
-    
+
         tbb::task_scheduler_init init(num_threads);
 
             graph g;
diff --git a/examples/graph/dining_philosophers/index.html b/examples/graph/dining_philosophers/index.html
index 6a02665..82e6a8b 100644
--- a/examples/graph/dining_philosophers/index.html
+++ b/examples/graph/dining_philosophers/index.html
@@ -20,7 +20,7 @@ to be available before eating.  Eating and thinking are implemented with sleep()
 <DT><A HREF="src">src</A>
 <DD>Contains source file mentioned above.
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -32,7 +32,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.icproj b/examples/graph/dining_philosophers/msvs/dining_philosophers.icproj
deleted file mode 100644
index c27e179..0000000
--- a/examples/graph/dining_philosophers/msvs/dining_philosophers.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="dining_philosophers"
-	ProjectGUID="{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}"
-	VCNestedProjectGUID="{3894d1d2-a574-4937-ad56-726758efe5b7}"
-	VCNestedProjectFileName="dining_philosophers.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.sln b/examples/graph/dining_philosophers/msvs/dining_philosophers.sln
new file mode 100644
index 0000000..efcaa6f
--- /dev/null
+++ b/examples/graph/dining_philosophers/msvs/dining_philosophers.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dining_philosophers", "dining_philosophers.vcxproj", "{3894D1D2-A574-4937-AD56-726758EFE5B7}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.Build.0 = Debug|Win32
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.ActiveCfg = Debug|x64
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.Build.0 = Debug|x64
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.ActiveCfg = Release|Win32
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.Build.0 = Release|Win32
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.ActiveCfg = Release|x64
+		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.vcproj b/examples/graph/dining_philosophers/msvs/dining_philosophers.vcproj
deleted file mode 100644
index 1474b9c..0000000
--- a/examples/graph/dining_philosophers/msvs/dining_philosophers.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="dining_philosophers"
-	ProjectGUID="{3894d1d2-a574-4937-ad56-726758efe5b7}"
-	RootNamespace="dining_philosophers"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{64630469-f82d-4c18-a957-20e5b93130f8}"
-			>
-			<File
-				RelativePath="..\dining_philosophers.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj b/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj
new file mode 100644
index 0000000..ec2968d
--- /dev/null
+++ b/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>dining_philosophers</ProjectName>
+    <ProjectGuid>{3894d1d2-a574-4937-ad56-726758efe5b7}</ProjectGuid>
+    <RootNamespace>dining_philosophers</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\dining_philosophers.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers_cl.sln b/examples/graph/dining_philosophers/msvs/dining_philosophers_cl.sln
deleted file mode 100644
index ed55faa..0000000
--- a/examples/graph/dining_philosophers/msvs/dining_philosophers_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{3EC5FFF9-397F-47A7-BAF9-FDD602956644}") = "dining_philosophers", "dining_philosophers.vcproj", "{3894D1D2-A574-4937-AD56-726758EFE5B7}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.Build.0 = Debug|Win32
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.ActiveCfg = Debug|x64
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.Build.0 = Debug|x64
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.ActiveCfg = Release|Win32
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.Build.0 = Release|Win32
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.ActiveCfg = Release|x64
-		{3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers_icl.sln b/examples/graph/dining_philosophers/msvs/dining_philosophers_icl.sln
deleted file mode 100644
index d86e64b..0000000
--- a/examples/graph/dining_philosophers/msvs/dining_philosophers_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{b651a8c1-851b-4873-ab7a-428d9f15be2d}") = "dining_philosophers", "dining_philosophers.icproj", "{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Debug|Win32.Build.0 = Debug|Win32
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Debug|x64.ActiveCfg = Debug|x64
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Debug|x64.Build.0 = Debug|x64
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Release|Win32.ActiveCfg = Release|Win32
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Release|Win32.Build.0 = Release|Win32
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Release|x64.ActiveCfg = Release|x64
-		{bbdf68ee-c8b2-4836-b3fc-385ce2265dc0}.Release|x64.Build.0 = Release|x64
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Release|x64.Build.0 = Release|x64
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Release|x64.ActiveCfg = Release|x64
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Release|Win32.Build.0 = Release|Win32
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Release|Win32.ActiveCfg = Release|Win32
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Debug|x64.Build.0 = Debug|x64
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Debug|x64.ActiveCfg = Debug|x64
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Debug|Win32.Build.0 = Debug|Win32
-		{3894d1d2-a574-4937-ad56-726758efe5b7}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/index.html b/examples/graph/index.html
index 5ca004c..df37e75 100644
--- a/examples/graph/index.html
+++ b/examples/graph/index.html
@@ -19,7 +19,7 @@ This directory has examples of <code>tbb::flow</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/graph/logic_sim/D_latch.h b/examples/graph/logic_sim/D_latch.h
index f2f6da9..bbe056a 100644
--- a/examples/graph/logic_sim/D_latch.h
+++ b/examples/graph/logic_sim/D_latch.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBBexample_graph_logicsim_dlatch_H
@@ -31,34 +23,38 @@
 
 #include "basics.h"
 
-class D_latch {
+class D_latch : public composite_node< tuple< signal_t, signal_t >, tuple< signal_t, signal_t > > {
     broadcast_node<signal_t> D_port;
     broadcast_node<signal_t> E_port;
     not_gate a_not;
-    and_gate<two_input> first_and;
-    and_gate<two_input> second_and;
-    nor_gate<two_input> first_nor;
-    nor_gate<two_input> second_nor;
+    and_gate<2> first_and;
+    and_gate<2> second_and;
+    nor_gate<2> first_nor;
+    nor_gate<2> second_nor;
     graph& my_graph;
+    typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t, signal_t > > base_type;
+
  public:
-    D_latch(graph& g) : my_graph(g), D_port(g), E_port(g), a_not(g), first_and(g), second_and(g), 
+    D_latch(graph& g) : base_type(g), my_graph(g), D_port(g), E_port(g), a_not(g), first_and(g), second_and(g), 
                         first_nor(g), second_nor(g) 
     {
-        make_edge(D_port, a_not.get_in(0));
-        make_edge(D_port, second_and.get_in(1));
-        make_edge(E_port, first_and.get_in(1));
-        make_edge(E_port, second_and.get_in(0));
-        make_edge(a_not.get_out(), first_and.get_in(0));
-        make_edge(first_and.get_out(), first_nor.get_in(0));
-        make_edge(second_and.get_out(), second_nor.get_in(1));
-        make_edge(first_nor.get_out(), second_nor.get_in(0));
-        make_edge(second_nor.get_out(), first_nor.get_in(1));
+        make_edge(D_port, input_port<0>(a_not));
+        make_edge(D_port, input_port<1>(second_and));
+        make_edge(E_port, input_port<1>(first_and));
+        make_edge(E_port, input_port<0>(second_and));
+        make_edge(a_not, input_port<0>(first_and));
+        make_edge(first_and, input_port<0>(first_nor));
+        make_edge(second_and, input_port<1>(second_nor));
+        make_edge(first_nor, input_port<0>(second_nor));
+        make_edge(second_nor, input_port<1>(first_nor));
+ 
+        base_type::input_ports_type input_tuple(D_port, E_port);
+        base_type::output_ports_type output_tuple(output_port<0>(first_nor), output_port<0>(second_nor)); 
+
+        base_type::set_external_ports(input_tuple, output_tuple); 
+        base_type::add_visible_nodes(D_port, E_port, a_not, first_and, second_and, first_nor, second_nor);
     }
     ~D_latch() {}
-    receiver<signal_t>& get_D() { return D_port; }
-    receiver<signal_t>& get_E() { return E_port; }
-    sender<signal_t>& get_Q() { return first_nor.get_out(); }
-    sender<signal_t>& get_notQ() { return second_nor.get_out(); }
 };
 
 #endif /* __TBBexample_graph_logicsim_dlatch_H */
diff --git a/examples/graph/logic_sim/Makefile b/examples/graph/logic_sim/Makefile
index 35d38b5..e5a985a 100644
--- a/examples/graph/logic_sim/Makefile
+++ b/examples/graph/logic_sim/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
@@ -47,10 +39,10 @@ endif
 all:    release test
 
 release: *.cpp
-	$(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -ltbb $(LIBS) $(CXX0XFLAGS)
+	$(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -std=c++0x -ltbb $(LIBS) 
 
 debug: *.cpp
-	$(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -ltbb_debug $(LIBS) $(CXX0XFLAGS)
+	$(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -std=c++0x -ltbb_debug $(LIBS) 
 clean:
 	$(RM) $(PROG) *.o *.d
 
diff --git a/examples/graph/logic_sim/Makefile.windows b/examples/graph/logic_sim/Makefile.windows
index a561cb0..5c162b6 100644
--- a/examples/graph/logic_sim/Makefile.windows
+++ b/examples/graph/logic_sim/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 PROG=test_all
diff --git a/examples/graph/logic_sim/basics.h b/examples/graph/logic_sim/basics.h
index 3989277..eeced8e 100644
--- a/examples/graph/logic_sim/basics.h
+++ b/examples/graph/logic_sim/basics.h
@@ -1,36 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBBexample_graph_logicsim_basics_H
 #define __TBBexample_graph_logicsim_basics_H 1
 
-#define TBB_PREVIEW_GRAPH_NODES 1
-
 #include <cstdio>
 #include <string>
 #include "tbb/atomic.h"
@@ -59,53 +49,57 @@ void rt_sleep(int msec) {
 }
 #endif  /*  _WIN32  */
 
-
 using namespace std;
 using namespace tbb;
 using namespace tbb::flow;
 
 typedef enum { low=0, high, undefined } signal_t;
 
-typedef tuple<signal_t> one_input;
-typedef tuple<signal_t, signal_t> two_input;
-typedef tuple<signal_t, signal_t, signal_t> three_input;
-typedef tuple<signal_t, signal_t, signal_t, signal_t> four_input;
+template<int N> class gate;
 
-template <int N>
-struct gate_helper {
-    template <typename TupleType>
-    static inline receiver<signal_t>& get_inport(or_node<TupleType>& in_ports, int port) {
-        if (N-1 == port) return input_port<N-1>(in_ports);
-        else return gate_helper<N-1>::get_inport(in_ports, port);
-    }
-};
-template <>
-struct gate_helper<1> {
-    template <typename TupleType>
-    static inline receiver<signal_t>& get_inport(or_node<TupleType>& in_ports, int port) {
-        return input_port<0>(in_ports);
+template<>
+class gate<1> : public composite_node< tuple< signal_t >, tuple< signal_t > > {
+protected:
+    typedef indexer_node<signal_t> input_port_t;
+    typedef multifunction_node< input_port_t::output_type, tuple<signal_t> > gate_fn_t;
+    typedef gate_fn_t::output_ports_type ports_type;
+    typedef composite_node< tuple< signal_t >, tuple< signal_t > > base_type;
+public:
+    template <typename Body>
+    gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) {
+        make_edge(in_ports, gate_fn);
+        base_type::input_ports_type input_tuple(input_port<0>(in_ports));
+        base_type::output_ports_type output_tuple(output_port<0>(gate_fn));
+        base_type::set_external_ports(input_tuple, output_tuple);
+        base_type::add_visible_nodes(in_ports, gate_fn);
     }
+    virtual ~gate() {}
+    gate& operator=(const gate& src) { return *this; }
+protected:
+    graph& my_graph;
+private:
+    input_port_t in_ports;
+    gate_fn_t gate_fn;
 };
 
-template <typename GateInput>
-class gate {
+template<>
+class gate<2> : public composite_node< tuple< signal_t, signal_t >, tuple< signal_t > > {
 protected:
-    typedef or_node<GateInput> input_port_t;
-    typedef multifunction_node< typename input_port_t::output_type, tuple<signal_t> > gate_fn_t;
-    typedef typename gate_fn_t::output_ports_type ports_type;
+    typedef indexer_node<signal_t,signal_t> input_port_t;
+    typedef multifunction_node< input_port_t::output_type, tuple<signal_t> > gate_fn_t;
+    typedef gate_fn_t::output_ports_type ports_type;
+    typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t > > base_type;
 public:
-    static const int N = tbb::flow::tuple_size<GateInput>::value;
-
     template <typename Body>
-    gate(graph& g, Body b) : my_graph(g), in_ports(g), gate_fn(g, 1, b) {
+    gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) {
         make_edge(in_ports, gate_fn);
+        base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports));
+        base_type::output_ports_type output_tuple(output_port<0>(gate_fn));
+        base_type::set_external_ports(input_tuple, output_tuple);
+        base_type::add_visible_nodes(in_ports, gate_fn);
     }
     virtual ~gate() {}
     gate& operator=(const gate& src) { return *this; }
-    sender<signal_t>& get_out() { return output_port<0>(gate_fn); }
-    receiver<signal_t>& get_in(size_t port) {
-        return gate_helper<N>::get_inport(in_ports, (int)port);
-    }
 protected:
     graph& my_graph;
 private:
@@ -113,21 +107,54 @@ private:
     gate_fn_t gate_fn;
 };
 
-
-template <int N>
-struct or_output_helper {
-    template <typename OrOutputType>
-    static inline signal_t get_or_output(const OrOutputType& out) {
-        if (N-1 == out.indx) return tbb::flow::get<N-1>(out.result);
-        else return or_output_helper<N-1>::get_or_output(out);
+template<>
+class gate<3> : public composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t > > {
+protected:
+    typedef indexer_node<signal_t, signal_t, signal_t> input_port_t;
+    typedef multifunction_node< input_port_t::output_type, tuple<signal_t> > gate_fn_t;
+    typedef gate_fn_t::output_ports_type ports_type;
+    typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t > > base_type;
+public:
+    template <typename Body>
+    gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) {
+        make_edge(in_ports, gate_fn);
+        base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports),input_port<2>(in_ports));
+        base_type::output_ports_type output_tuple(output_port<0>(gate_fn));
+        base_type::set_external_ports(input_tuple, output_tuple);
+        base_type::add_visible_nodes(in_ports, gate_fn);
     }
+    virtual ~gate() {}
+    gate& operator=(const gate& src) { return *this; }
+protected:
+    graph& my_graph;
+private:
+    input_port_t in_ports;
+    gate_fn_t gate_fn;
 };
-template <>
-struct or_output_helper<1> {
-    template <typename OrOutputType>
-    static inline signal_t get_or_output(const OrOutputType& out) {
-        return tbb::flow::get<0>(out.result);
+
+template<>
+class gate<4> : public composite_node< tuple< signal_t, signal_t, signal_t, signal_t >, tuple< signal_t > > {
+protected:
+    typedef indexer_node<signal_t, signal_t, signal_t, signal_t> input_port_t;
+    typedef multifunction_node< input_port_t::output_type, tuple<signal_t> > gate_fn_t;
+    typedef gate_fn_t::output_ports_type ports_type;
+    typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t >, tuple< signal_t > > base_type;
+public:
+    template <typename Body>
+    gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) {
+        make_edge(in_ports, gate_fn);
+        base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports),input_port<2>(in_ports), input_port<3>(in_ports)); 
+        base_type::output_ports_type output_tuple(output_port<0>(gate_fn));
+        base_type::set_external_ports(input_tuple, output_tuple);
+        base_type::add_visible_nodes(in_ports, gate_fn);
     }
+    virtual ~gate() {}
+    gate& operator=(const gate& src) { return *this; }
+protected:
+    graph& my_graph;
+private:
+    input_port_t in_ports;
+    gate_fn_t gate_fn;
 };
 
 // Input devices
@@ -189,7 +216,7 @@ public:
     void activate() { clock_node.activate(); }
     void reset() { reps = init_reps; }
 };
-    
+
 class push_button {
     graph& my_graph;
     overwrite_node<signal_t> push_button_node;
@@ -233,39 +260,39 @@ class toggle {
 };
 
 // Basic gates
-class buffer : public gate<one_input> {
-    using gate<one_input>::my_graph;
-    typedef gate<one_input>::ports_type ports_type;
+class buffer : public gate<1> {
+    using gate<1>::my_graph;
+    typedef gate<1>::ports_type ports_type;
     class buffer_body {
         signal_t state;
         bool touched;
     public:
         buffer_body() : state(undefined), touched(false) {}
         void operator()(const input_port_t::output_type &v, ports_type& p) { 
-            if (!touched || state != tbb::flow::get<0>(v.result)) {
-                state = tbb::flow::get<0>(v.result); 
+            if (!touched || state != cast_to<signal_t>(v)) {
+                state = cast_to<signal_t>(v); 
                 tbb::flow::get<0>(p).try_put(state); 
                 touched = true;
             }
         }
     };
 public: 
-    buffer(graph& g) : gate<one_input>(g, buffer_body()) {}
-    buffer(const buffer& src) : gate<one_input>(src.my_graph, buffer_body()) {}
+    buffer(graph& g) : gate<1>(g, buffer_body()) {}
+    buffer(const buffer& src) : gate<1>(src.my_graph, buffer_body()) {}
     ~buffer() {}
 };
 
-class not_gate : public gate<one_input> {
-    using gate<one_input>::my_graph;
-    typedef gate<one_input>::ports_type ports_type;
+class not_gate : public gate<1> {
+    using gate<1>::my_graph;
+    typedef gate<1>::ports_type ports_type;
     class not_body {
         signal_t port;
         bool touched;
     public:
     not_body() : port(undefined), touched(false) {}
         void operator()(const input_port_t::output_type &v, ports_type& p) {
-            if (!touched || port != tbb::flow::get<0>(v.result)) {
-                port = tbb::flow::get<0>(v.result);
+            if (!touched || port != cast_to<signal_t>(v)) {
+                port = cast_to<signal_t>(v); 
                 signal_t state = low;
                 if (port==low) state = high; 
                 tbb::flow::get<0>(p).try_put(state);
@@ -274,18 +301,16 @@ class not_gate : public gate<one_input> {
         }
     };
  public: 
-    not_gate(graph& g) : gate<one_input>(g, not_body()) {}
-    not_gate(const not_gate& src) : gate<one_input>(src.my_graph, not_body()) {}
+    not_gate(graph& g) : gate<1>(g, not_body()) {}
+    not_gate(const not_gate& src) : gate<1>(src.my_graph, not_body()) {}
     ~not_gate() {}
 };
 
-template <typename GateInput>
-class and_gate : public gate<GateInput> {
-    using gate<GateInput>::N;
-    using gate<GateInput>::my_graph;
-    typedef typename gate<GateInput>::ports_type ports_type;
-    typedef typename gate<GateInput>::input_port_t::output_type from_input;
-    typedef or_output_helper< gate<GateInput>::N > or_output;
+template <int N>
+class and_gate : public gate<N> {
+    using gate<N>::my_graph;
+    typedef typename gate<N>::ports_type ports_type;
+    typedef typename gate<N>::input_port_t::output_type from_input;
     class and_body {
         signal_t *ports;
         signal_t state;
@@ -296,7 +321,7 @@ class and_gate : public gate<GateInput> {
             for (int i=0; i<N; ++i) ports[i] = undefined;
         }
         void operator()(const from_input& v, ports_type& p) {
-            ports[v.indx] = or_output::get_or_output(v);
+            ports[v.tag()] = cast_to<signal_t>(v);
             signal_t new_state=high;
             size_t i=0;
             while (i<N) {
@@ -312,18 +337,16 @@ class and_gate : public gate<GateInput> {
         }
     };
  public:
-    and_gate(graph& g) : gate<GateInput>(g, and_body()) {}
-    and_gate(const and_gate<GateInput>& src) : gate<GateInput>(src.my_graph, and_body()) {}
+    and_gate(graph& g) : gate<N>(g, and_body()) {}
+    and_gate(const and_gate<N>& src) : gate<N>(src.my_graph, and_body()) {}
     ~and_gate() {}
 };
 
-template <typename GateInput>
-class or_gate : public gate<GateInput> {
-    using gate<GateInput>::N;
-    using gate<GateInput>::my_graph;
-    typedef typename gate<GateInput>::ports_type ports_type;
-    typedef typename gate<GateInput>::input_port_t::output_type from_input;
-    typedef or_output_helper< gate<GateInput>::N > or_output;
+template<int N>
+class or_gate : public gate<N> {
+    using gate<N>::my_graph;
+    typedef typename gate<N>::ports_type ports_type;
+    typedef typename gate<N>::input_port_t::output_type from_input;
     class or_body {
         signal_t *ports;
         signal_t state;
@@ -334,7 +357,7 @@ class or_gate : public gate<GateInput> {
             for (int i=0; i<N; ++i) ports[i] = undefined;
         }
         void operator()(const from_input& v, ports_type& p) {
-            ports[v.indx] = or_output::get_or_output(v);
+            ports[v.tag()] = cast_to<signal_t>(v);
             signal_t new_state=low;
             size_t i=0;
             while (i<N) {
@@ -350,18 +373,16 @@ class or_gate : public gate<GateInput> {
         }
     };
 public:
-    or_gate(graph& g) : gate<GateInput>(g, or_body()) {}
-    or_gate(const or_gate& src) : gate<GateInput>(src.my_graph, or_body()) {}
+    or_gate(graph& g) : gate<N>(g, or_body()) {}
+    or_gate(const or_gate& src) : gate<N>(src.my_graph, or_body()) {}
     ~or_gate() {}
 };
 
-template <typename GateInput>
-class xor_gate : public gate<GateInput> {
-    using gate<GateInput>::N;
-    using gate<GateInput>::my_graph;
-    typedef typename gate<GateInput>::ports_type ports_type;
-    typedef typename gate<GateInput>::input_port_t input_port_t;
-    typedef or_output_helper< gate<GateInput>::N > or_output;
+template <int N>
+class xor_gate : public gate<N> {
+    using gate<N>::my_graph;
+    typedef typename gate<N>::ports_type ports_type;
+    typedef typename gate<N>::input_port_t input_port_t;
     class xor_body {
         signal_t *ports;
         signal_t state;
@@ -372,7 +393,7 @@ class xor_gate : public gate<GateInput> {
             for (int i=0; i<N; ++i) ports[i] = undefined;
         }
         void operator()(const typename input_port_t::output_type &v, ports_type& p) {
-            ports[v.indx] = or_output::get_or_output(v);
+            ports[v.tag()] = cast_to<signal_t>(v);
             signal_t new_state=low;
             size_t i=0, highs=0;
             while (i<N) {
@@ -390,18 +411,16 @@ class xor_gate : public gate<GateInput> {
         }
     };
  public:
-    xor_gate(graph& g) : gate<GateInput>(g, xor_body()) {}
-    xor_gate(const xor_gate& src) : gate<GateInput>(src.my_graph, xor_body()) {}
+    xor_gate(graph& g) : gate<N>(g, xor_body()) {}
+    xor_gate(const xor_gate& src) : gate<N>(src.my_graph, xor_body()) {}
     ~xor_gate() {}
 };
 
-template <typename GateInput>
-class nor_gate : public gate<GateInput> {
-    using gate<GateInput>::N;
-    using gate<GateInput>::my_graph;
-    typedef typename gate<GateInput>::ports_type ports_type;
-    typedef typename gate<GateInput>::input_port_t input_port_t;
-    typedef or_output_helper< gate<GateInput>::N > or_output;
+template <int N>
+class nor_gate : public gate<N> {
+    using gate<N>::my_graph;
+    typedef typename gate<N>::ports_type ports_type;
+    typedef typename gate<N>::input_port_t input_port_t;
     class nor_body {
         signal_t *ports;
         signal_t state;
@@ -412,7 +431,7 @@ class nor_gate : public gate<GateInput> {
             for (int i=0; i<N; ++i) ports[i] = undefined;
         }
         void operator()(const typename input_port_t::output_type &v, ports_type& p) {
-            ports[v.indx] = or_output::get_or_output(v);
+            ports[v.tag()] = cast_to<signal_t>(v);
             signal_t new_state=low;
             size_t i=0;
             while (i<N) {
@@ -430,8 +449,8 @@ class nor_gate : public gate<GateInput> {
         }
     };
  public:
-    nor_gate(graph& g) : gate<GateInput>(g, nor_body()) {}
-    nor_gate(const nor_gate& src) : gate<GateInput>(src.my_graph, nor_body()) {}
+    nor_gate(graph& g) : gate<N>(g, nor_body()) {}
+    nor_gate(const nor_gate& src) : gate<N>(src.my_graph, nor_body()) {}
     ~nor_gate() {}
 };
 
@@ -488,12 +507,13 @@ class led {
     signal_t get_value() { return state; }
 };
 
-class digit : public gate<four_input> {
-    using gate<four_input>::my_graph;
-    typedef gate<four_input>::ports_type ports_type;
-    typedef gate<four_input>::input_port_t input_port_t;
+class digit : public gate<4> {
+    using gate<4>::my_graph;
+    typedef gate<4>::ports_type ports_type;
+    typedef gate<4>::input_port_t input_port_t;
     class digit_body {
         signal_t ports[4];
+        static const int N = 4;
         unsigned int &state;
         string &label;
         bool& report_changes;
@@ -503,10 +523,7 @@ class digit : public gate<four_input> {
         }
         void operator()(const input_port_t::output_type& v, ports_type& p) {
             unsigned int new_state = 0;
-            if (v.indx == 0) ports[0] = tbb::flow::get<0>(v.result);
-            else if (v.indx == 1) ports[1] = tbb::flow::get<1>(v.result);
-            else if (v.indx == 2) ports[2] = tbb::flow::get<2>(v.result);
-            else if (v.indx == 3) ports[3] = tbb::flow::get<3>(v.result);
+            ports[v.tag()] = cast_to<signal_t>(v);
             if (ports[0] == high) ++new_state;
             if (ports[1] == high) new_state += 2;
             if (ports[2] == high) new_state += 4;
@@ -524,10 +541,10 @@ class digit : public gate<four_input> {
     bool report_changes;
  public:
     digit(graph& g, string l, bool rc=false) : 
-        gate<four_input>(g, digit_body(state, label, report_changes)), 
+        gate<4>(g, digit_body(state, label, report_changes)), 
         label(l), state(0), report_changes(rc) {}
     digit(const digit& src) : 
-        gate<four_input>(src.my_graph, digit_body(state, label, report_changes)), 
+        gate<4>(src.my_graph, digit_body(state, label, report_changes)), 
         label(src.label), state(0), report_changes(src.report_changes) {}
     ~digit() {}
     // Assignment changes the behavior of LHS to that of the RHS, but doesn't change owning graph.
diff --git a/examples/graph/logic_sim/four_bit_adder.h b/examples/graph/logic_sim/four_bit_adder.h
index e7e03c5..026a365 100644
--- a/examples/graph/logic_sim/four_bit_adder.h
+++ b/examples/graph/logic_sim/four_bit_adder.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBBexample_graph_logicsim_fba_H
@@ -31,39 +23,38 @@
 
 #include "one_bit_adder.h"
 
-class four_bit_adder {
+typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t >,
+                      tuple< signal_t, signal_t, signal_t, signal_t, signal_t > > fba_base_type;
+
+class four_bit_adder : public fba_base_type {
     graph& my_graph;
     std::vector<one_bit_adder> four_adders; 
- public:
-    four_bit_adder(graph& g) : my_graph(g), four_adders(4, one_bit_adder(g)) {
+public:
+    four_bit_adder(graph& g) : fba_base_type(g), my_graph(g), four_adders(4, one_bit_adder(g)) {
         make_connections();
+        set_up_composite();
     }
     four_bit_adder(const four_bit_adder& src) : 
-        my_graph(src.my_graph), four_adders(4, one_bit_adder(src.my_graph)) 
+        fba_base_type(src.my_graph), my_graph(src.my_graph), four_adders(4, one_bit_adder(src.my_graph)) 
     {
         make_connections();
+        set_up_composite();
     }
     ~four_bit_adder() {}
-    receiver<signal_t>& get_A(size_t bit) {
-        return four_adders[bit].get_A();
-    }
-    receiver<signal_t>& get_B(size_t bit) {
-        return four_adders[bit].get_B();
-    }
-    receiver<signal_t>& get_CI() {
-        return four_adders[0].get_CI();
-    }
-    sender<signal_t>& get_out(size_t bit) {
-        return four_adders[bit].get_out();
-    }
-    sender<signal_t>& get_CO() {
-        return four_adders[3].get_CO();
-    }
+
 private:
     void make_connections() {
-        make_edge(four_adders[0].get_CO(), four_adders[1].get_CI());
-        make_edge(four_adders[1].get_CO(), four_adders[2].get_CI());
-        make_edge(four_adders[2].get_CO(), four_adders[3].get_CI());
+        make_edge(output_port<1>(four_adders[0]), input_port<0>(four_adders[1]));
+        make_edge(output_port<1>(four_adders[1]), input_port<0>(four_adders[2]));
+        make_edge(output_port<1>(four_adders[2]), input_port<0>(four_adders[3]));
+    }
+    void set_up_composite() {
+
+        fba_base_type::input_ports_type input_tuple(input_port<0>(four_adders[0]/*CI*/), input_port<1>(four_adders[0]), input_port<2>(four_adders[0]), input_port<1>(four_adders[1]), input_port<2>(four_adders[1]), input_port<1>(four_adders[2]), input_port<2>(four_adders[2]), input_port<1>(four_adders[3]), input_port<2>(four_adders[3])); 
+
+       fba_base_type::output_ports_type output_tuple(output_port<0>(four_adders[0]), output_port<0>(four_adders[1]), output_port<0>(four_adders[2]), output_port<0>(four_adders[3]),output_port<1>(four_adders[3]/*CO*/));
+
+        fba_base_type::set_external_ports(input_tuple, output_tuple);
     }
 };
 
diff --git a/examples/graph/logic_sim/index.html b/examples/graph/logic_sim/index.html
index 5f6a2d8..56ed19f 100644
--- a/examples/graph/logic_sim/index.html
+++ b/examples/graph/logic_sim/index.html
@@ -6,7 +6,7 @@
 This directory contains a simple tbb::flow example that performs
 simplistic digital logic simulations with basic logic gates that can
 be easily composed to create more interesting circuits.  It
-exemplifies the multifunction_node and the or_node CPF, among others.
+exemplifies the multifunction_node and the indexer_node CPF, among others.
 
 <H2>Files</H2>
 <DL>
@@ -29,7 +29,7 @@ exemplifies the multifunction_node and the or_node CPF, among others.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2008 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -57,7 +57,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/graph/logic_sim/msvs/logic_sim.sln b/examples/graph/logic_sim/msvs/logic_sim.sln
new file mode 100644
index 0000000..cb397b1
--- /dev/null
+++ b/examples/graph/logic_sim/msvs/logic_sim.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logic_sim", "logic_sim.vcxproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.Build.0 = Debug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.ActiveCfg = Debug|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.Build.0 = Debug|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.ActiveCfg = Release|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.Build.0 = Release|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.ActiveCfg = Release|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/graph/logic_sim/msvs/logic_sim.vcxproj b/examples/graph/logic_sim/msvs/logic_sim.vcxproj
new file mode 100644
index 0000000..e82a581
--- /dev/null
+++ b/examples/graph/logic_sim/msvs/logic_sim.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>logic_sim</ProjectName>
+    <ProjectGuid>{6E9B1702-78E0-4D64-B771-8B274D963B58}</ProjectGuid>
+    <RootNamespace>test_all</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\test_all.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/graph/logic_sim/msvs/logic_sim_cl.sln b/examples/graph/logic_sim/msvs/logic_sim_cl.sln
deleted file mode 100644
index a28e18b..0000000
--- a/examples/graph/logic_sim/msvs/logic_sim_cl.sln
+++ /dev/null
@@ -1,52 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_all", "test_all.vcproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.Build.0 = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.ActiveCfg = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.Build.0 = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.ActiveCfg = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.Build.0 = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.ActiveCfg = Release|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.Build.0 = Release|x64
-
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.Release|x64.Build.0 = Release|x64
-
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.Release|x64.Build.0 = Release|x64
-
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/logic_sim/msvs/logic_sim_icl.sln b/examples/graph/logic_sim/msvs/logic_sim_icl.sln
deleted file mode 100644
index f269562..0000000
--- a/examples/graph/logic_sim/msvs/logic_sim_icl.sln
+++ /dev/null
@@ -1,132 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "test_all", "test_all.icproj", "{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}"
-        ProjectSection(ProjectDependencies) = postProject
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830} = {5F685DBD-9A04-4E94-A1CA-FC48FE799830}
-        EndProjectSection
-EndProject
-Global
-        GlobalSection(SolutionConfigurationPlatforms) = preSolution
-                DD Debug|Win32 = DD Debug|Win32
-                DD Debug|x64 = DD Debug|x64
-                DD Release|Win32 = DD Release|Win32
-                DD Release|x64 = DD Release|x64
-        EndGlobalSection
-        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|Win32.Build.0 = DDDebug|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|x64.ActiveCfg = DDDebug|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|x64.Build.0 = DDDebug|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|Win32.Build.0 = DDRelease|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|x64.ActiveCfg = DDRelease|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|x64.Build.0 = DDRelease|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|x64.Build.0 = Debug|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|Win32.Build.0 = Release|Win32
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|x64.ActiveCfg = Release|x64
-                {2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|x64.Build.0 = Release|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|Win32.Build.0 = DDDebug|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|x64.ActiveCfg = DDDebug|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|x64.Build.0 = DDDebug|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|Win32.Build.0 = DDRelease|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|x64.ActiveCfg = DDRelease|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|x64.Build.0 = DDRelease|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|x64.Build.0 = Debug|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|Win32.Build.0 = Release|Win32
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|x64.ActiveCfg = Release|x64
-                {5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|x64.Build.0 = Release|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|Win32.Build.0 = DDDebug|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|x64.ActiveCfg = DDDebug|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|x64.Build.0 = DDDebug|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|Win32.Build.0 = DDRelease|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|x64.ActiveCfg = DDRelease|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|x64.Build.0 = DDRelease|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|x64.Build.0 = Debug|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|Win32.Build.0 = Release|Win32
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|x64.ActiveCfg = Release|x64
-                {E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|x64.Build.0 = Release|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|Win32.Build.0 = DDDebug|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|x64.ActiveCfg = DDDebug|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|x64.Build.0 = DDDebug|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|Win32.Build.0 = DDRelease|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|x64.ActiveCfg = DDRelease|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|x64.Build.0 = DDRelease|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|x64.Build.0 = Debug|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|Win32.Build.0 = Release|Win32
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|x64.ActiveCfg = Release|x64
-                {4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|x64.Build.0 = Release|x64
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.ActiveCfg = Debug|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.ActiveCfg = Debug|x64
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.ActiveCfg = Release|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.ActiveCfg = Release|x64
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.ActiveCfg = Debug|x64
-y                {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.Build.0 = Debug|x64
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.Build.0 = Release|Win32
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.ActiveCfg = Release|x64
-                {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.Build.0 = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.Build.0 = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.Build.0 = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.Build.0 = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-                {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-        EndGlobalSection
-        GlobalSection(SolutionProperties) = preSolution
-                HideSolutionNode = FALSE
-        EndGlobalSection
-EndGlobal
diff --git a/examples/graph/logic_sim/msvs/test_all.icproj b/examples/graph/logic_sim/msvs/test_all.icproj
deleted file mode 100644
index 259a8ce..0000000
--- a/examples/graph/logic_sim/msvs/test_all.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="test_all"
-	ProjectGUID="{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-	VCNestedProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	VCNestedProjectFileName="test_all.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/graph/logic_sim/msvs/test_all.vcproj b/examples/graph/logic_sim/msvs/test_all.vcproj
deleted file mode 100644
index 2d2500a..0000000
--- a/examples/graph/logic_sim/msvs/test_all.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="test_all"
-	ProjectGUID="{6E9B1702-78E0-4D64-B771-8B274D963B58}"
-	RootNamespace="test_all"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\test_all.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/graph/logic_sim/one_bit_adder.h b/examples/graph/logic_sim/one_bit_adder.h
index 32ebd81..5fc8703 100644
--- a/examples/graph/logic_sim/one_bit_adder.h
+++ b/examples/graph/logic_sim/one_bit_adder.h
@@ -1,81 +1,102 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBBexample_graph_logicsim_oba_H
 #define __TBBexample_graph_logicsim_oba_H 1
 
+namespace P {
+    //input ports 
+    const int CI = 0;
+    const int A0 = 1;
+    const int B0 = 2;
+    const int A1 = 3;
+    const int B1 = 4;
+    const int A2 = 5;
+    const int B2 = 6;
+    const int A3 = 7;
+    const int B3 = 8;
+    
+    //output_ports
+    const int S0 = 0;
+    const int S1 = 1;
+    const int S2 = 2;
+    const int S3 = 3;
+
+#if USE_TWO_BIT_FULL_ADDER
+    const int CO = 2;
+#else   
+    const int CO = 4;
+#endif
+}
+
 #include "basics.h"
 
-class one_bit_adder {
+class one_bit_adder : public composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t, signal_t > > {
     broadcast_node<signal_t> A_port;
     broadcast_node<signal_t> B_port;
     broadcast_node<signal_t> CI_port;
-    xor_gate<two_input> FirstXOR;
-    xor_gate<two_input> SecondXOR;
-    and_gate<two_input> FirstAND;
-    and_gate<two_input> SecondAND;
-    or_gate<two_input> FirstOR;
+    xor_gate<2> FirstXOR;
+    xor_gate<2> SecondXOR;
+    and_gate<2> FirstAND;
+    and_gate<2> SecondAND;
+    or_gate<2> FirstOR;
     graph& my_graph;
+    typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t, signal_t > > base_type;
+
 public:
-    one_bit_adder(graph& g) : my_graph(g), A_port(g), B_port(g), CI_port(g), FirstXOR(g), 
+    one_bit_adder(graph& g) : base_type(g), my_graph(g), A_port(g), B_port(g), CI_port(g), FirstXOR(g), 
                               SecondXOR(g), FirstAND(g), SecondAND(g), FirstOR(g) {
         make_connections();
+        set_up_composite();
     }
     one_bit_adder(const one_bit_adder& src) : 
-        my_graph(src.my_graph), A_port(src.my_graph), B_port(src.my_graph), 
+        base_type(src.my_graph), my_graph(src.my_graph), A_port(src.my_graph), B_port(src.my_graph), 
         CI_port(src.my_graph), FirstXOR(src.my_graph), SecondXOR(src.my_graph), 
         FirstAND(src.my_graph), SecondAND(src.my_graph), FirstOR(src.my_graph) 
     {
         make_connections();
+        set_up_composite();
     }
-        
+
     ~one_bit_adder() {}
-    receiver<signal_t>& get_A() { return A_port; }
-    receiver<signal_t>& get_B() { return B_port; }
-    receiver<signal_t>& get_CI() { return CI_port; }
-    sender<signal_t>& get_out() {
-        return SecondXOR.get_out();
-    }
-    sender<signal_t>& get_CO() {
-        return FirstOR.get_out();
-    }
+
 private:
     void make_connections() {
-        make_edge(A_port, FirstXOR.get_in(0));
-        make_edge(A_port, FirstAND.get_in(0));
-        make_edge(B_port, FirstXOR.get_in(1));
-        make_edge(B_port, FirstAND.get_in(1));
-        make_edge(CI_port, SecondXOR.get_in(1));
-        make_edge(CI_port, SecondAND.get_in(1));
-        make_edge(FirstXOR.get_out(), SecondXOR.get_in(0));
-        make_edge(FirstXOR.get_out(), SecondAND.get_in(0));
-        make_edge(SecondAND.get_out(), FirstOR.get_in(0));
-        make_edge(FirstAND.get_out(), FirstOR.get_in(1));
+  
+        make_edge(A_port, input_port<0>(FirstXOR));
+        make_edge(A_port, input_port<0>(FirstAND));
+        make_edge(B_port, input_port<1>(FirstXOR));
+        make_edge(B_port, input_port<1>(FirstAND));
+        make_edge(CI_port, input_port<1>(SecondXOR));
+        make_edge(CI_port, input_port<1>(SecondAND));
+        make_edge(FirstXOR, input_port<0>(SecondXOR));
+        make_edge(FirstXOR, input_port<0>(SecondAND));
+        make_edge(SecondAND, input_port<0>(FirstOR));
+        make_edge(FirstAND, input_port<1>(FirstOR));
+    }
+
+    void set_up_composite() {
+        base_type::input_ports_type input_tuple(CI_port, A_port, B_port);
+        base_type::output_ports_type output_tuple(output_port<0>(SecondXOR), output_port<0>(FirstOR));
+        base_type::set_external_ports( input_tuple, output_tuple);
+        base_type::add_visible_nodes(A_port, B_port, CI_port, FirstXOR, SecondXOR, FirstAND, SecondAND, FirstOR );
     }
 };
 
diff --git a/examples/graph/logic_sim/test_all.cpp b/examples/graph/logic_sim/test_all.cpp
index 28429a0..d689393 100644
--- a/examples/graph/logic_sim/test_all.cpp
+++ b/examples/graph/logic_sim/test_all.cpp
@@ -1,38 +1,43 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define TBB_PREVIEW_FLOW_GRAPH_NODES 1
+
+#include "tbb/tbb_config.h"
+#include <cstdio>
+
+#if __TBB_PREVIEW_COMPOSITE_NODE
+
 #if _MSC_VER
 #pragma warning (disable: 4503) // Suppress "decorated name length exceeded, name was truncated" warning
 #endif
 
+#define USE_TWO_BIT_FULL_ADDER 1
+
 #include "basics.h"
 #include "one_bit_adder.h"
+#if USE_TWO_BIT_FULL_ADDER
+#include "two_bit_adder.h"
+#else
 #include "four_bit_adder.h"
+#endif
 #include "D_latch.h"
 #include <cassert>
 
@@ -46,8 +51,10 @@ int get_default_num_threads() {
         threads = tbb::task_scheduler_init::default_num_threads();
     return threads;
 }
+#endif
 
 int main(int argc, char *argv[]) {
+#if __TBB_PREVIEW_COMPOSITE_NODE
     try {
         utility::thread_number_range threads(get_default_num_threads);
         utility::parse_cli_arguments(argc, argv,
@@ -72,8 +79,8 @@ int main(int argc, char *argv[]) {
                 toggle input(g);
                 led output(g, "OUTPUT", false); // false means we will explicitly call display to see LED
                 
-                make_edge(input.get_out(), b.get_in(0));
-                make_edge(b.get_out(), output.get_in());
+                make_edge(input.get_out(), input_port<0>(b));
+                make_edge(output_port<0>(b), output.get_in());
                 
                 if (!silent) printf("Testing buffer...\n");
                 input.activate(); // 0
@@ -91,8 +98,8 @@ int main(int argc, char *argv[]) {
                 toggle input(g);
                 led output(g, "OUTPUT", false);
                 
-                make_edge(input.get_out(), n.get_in(0));
-                make_edge(n.get_out(), output.get_in());
+                make_edge(input.get_out(), input_port<0>(n));
+                make_edge(output_port<0>(n), output.get_in());
                 
                 if (!silent) printf("Testing not_gate...\n");
                 input.activate(); // 0
@@ -106,14 +113,14 @@ int main(int argc, char *argv[]) {
             }
 
             { // test two-input and_gate: 00, 01, 10, 11
-                and_gate<two_input> a(g);
+                and_gate<2> a(g);
                 toggle input0(g);
                 toggle input1(g);
                 led output(g, "OUTPUT", false);
                 
-                make_edge(input0.get_out(), a.get_in(0));
-                make_edge(input1.get_out(), a.get_in(1));
-                make_edge(a.get_out(), output.get_in());
+                make_edge(input0.get_out(), input_port<0>(a));
+                make_edge(input1.get_out(), input_port<1>(a));
+                make_edge(output_port<0>(a), output.get_in());
                 
                 if (!silent) printf("Testing and_gate...\n");
                 input1.activate();  input0.activate();  // 0 0
@@ -135,16 +142,16 @@ int main(int argc, char *argv[]) {
             }
 
             { // test three-input or_gate: 000, 001, 010, 100, 011, 101, 110, 111
-                or_gate<three_input> o(g);
+                or_gate<3> o(g);
                 toggle input0(g);
                 toggle input1(g);
                 toggle input2(g);
                 led output(g, "OUTPUT", false);
                 
-                make_edge(input0.get_out(), o.get_in(0));
-                make_edge(input1.get_out(), o.get_in(1));
-                make_edge(input2.get_out(), o.get_in(2));
-                make_edge(o.get_out(), output.get_in());
+                make_edge(input0.get_out(), input_port<0>(o));
+                make_edge(input1.get_out(), input_port<1>(o));
+                make_edge(input2.get_out(), input_port<2>(o));
+                make_edge(output_port<0>(o), output.get_in());
                 
                 if (!silent) printf("Testing or_gate...\n");
                 input2.activate();  input1.activate();  input0.activate();  // 0 0 0
@@ -182,14 +189,14 @@ int main(int argc, char *argv[]) {
             }
 
             { // test two-input xor_gate: 00, 01, 10, 11
-                xor_gate<two_input> x(g);
+                xor_gate<2> x(g);
                 toggle input0(g);
                 toggle input1(g);
                 led output(g, "OUTPUT", false);
                 
-                make_edge(input0.get_out(), x.get_in(0));
-                make_edge(input1.get_out(), x.get_in(1));
-                make_edge(x.get_out(), output.get_in());
+                make_edge(input0.get_out(), input_port<0>(x));
+                make_edge(input1.get_out(), input_port<1>(x));
+                make_edge(output_port<0>(x), output.get_in());
                 
                 if (!silent) printf("Testing xor_gate...\n");
                 input1.activate();  input0.activate();  // 0 0
@@ -212,14 +219,14 @@ int main(int argc, char *argv[]) {
 
 
             { // test two-input nor_gate: 00, 01, 10, 11
-                nor_gate<two_input> n(g);
+                nor_gate<2> n(g);
                 toggle input0(g);
                 toggle input1(g);
                 led output(g, "OUTPUT", false);
                 
-                make_edge(input0.get_out(), n.get_in(0));
-                make_edge(input1.get_out(), n.get_in(1));
-                make_edge(n.get_out(), output.get_in());
+                make_edge(input0.get_out(), input_port<0>(n));
+                make_edge(input1.get_out(), input_port<1>(n));
+                make_edge(output_port<0>(n), output.get_in());
                 
                 if (!silent) printf("Testing nor_gate...\n");
                 input1.activate();  input0.activate();  // 0 0
@@ -243,27 +250,27 @@ int main(int argc, char *argv[]) {
             { // test steady_signal and digit
                 steady_signal input0(g, high);
                 steady_signal input1(g, low);
-                and_gate<two_input> a(g);
-                or_gate<two_input> o(g);
-                xor_gate<two_input> x(g);
-                nor_gate<two_input> n(g);
+                and_gate<2> a(g);
+                or_gate<2> o(g);
+                xor_gate<2> x(g);
+                nor_gate<2> n(g);
                 digit output(g, "OUTPUT", false);
                 
-                make_edge(input0.get_out(), a.get_in(0));
-                make_edge(input1.get_out(), a.get_in(1));
-                make_edge(a.get_out(), output.get_in(0));
+                make_edge(input0.get_out(), input_port<0>(a));
+                make_edge(input1.get_out(), input_port<1>(a));
+                make_edge(output_port<0>(a), input_port<0>(output));
 
-                make_edge(input0.get_out(), o.get_in(0));
-                make_edge(input1.get_out(), o.get_in(1));
-                make_edge(o.get_out(), output.get_in(1));
+                make_edge(input0.get_out(), input_port<0>(o));
+                make_edge(input1.get_out(), input_port<1>(o));
+                make_edge(output_port<0>(o), input_port<1>(output));
 
-                make_edge(input0.get_out(), x.get_in(0));
-                make_edge(input1.get_out(), x.get_in(1));
-                make_edge(x.get_out(), output.get_in(2));
+                make_edge(input0.get_out(), input_port<0>(x));
+                make_edge(input1.get_out(), input_port<1>(x));
+                make_edge(output_port<0>(x), input_port<2>(output));
 
-                make_edge(input0.get_out(), n.get_in(0));
-                make_edge(input1.get_out(), n.get_in(1));
-                make_edge(n.get_out(), output.get_in(3));
+                make_edge(input0.get_out(), input_port<0>(n));
+                make_edge(input1.get_out(), input_port<1>(n));
+                make_edge(output_port<0>(n), input_port<3>(output));
                 
                 if (!silent) printf("Testing steady_signal...\n");
                 input0.activate();  // 1
@@ -278,8 +285,8 @@ int main(int argc, char *argv[]) {
                 buffer b(g);
                 led output(g, "OUTPUT", !silent); // true means print all LED state changes
 
-                make_edge(p.get_out(), b.get_in(0));
-                make_edge(b.get_out(), output.get_in());
+                make_edge(p.get_out(), input_port<0>(b));
+                make_edge(output_port<0>(b), output.get_in());
 
                 if (!silent) printf("Testing push_button...\n");
                 p.press();
@@ -297,11 +304,11 @@ int main(int argc, char *argv[]) {
                 led Sum(g, "SUM");
                 led CarryOUT(g, "CarryOUT");
                 
-                make_edge(A.get_out(), my_adder.get_A());
-                make_edge(B.get_out(), my_adder.get_B());
-                make_edge(CarryIN.get_out(), my_adder.get_CI());
-                make_edge(my_adder.get_out(), Sum.get_in());
-                make_edge(my_adder.get_CO(), CarryOUT.get_in());
+                make_edge(A.get_out(), input_port<P::A0>(my_adder));
+                make_edge(B.get_out(), input_port<P::B0>(my_adder));
+                make_edge(CarryIN.get_out(), input_port<P::CI>(my_adder));
+                make_edge(output_port<P::S0>(my_adder), Sum.get_in());
+                make_edge(output_port<1>(my_adder), CarryOUT.get_in());
                 
                 A.activate();
                 B.activate();
@@ -410,6 +417,50 @@ int main(int argc, char *argv[]) {
                 assert((Sum.get_value() == low) && (CarryOUT.get_value() == low));
             }
 
+#if USE_TWO_BIT_FULL_ADDER
+            { // test two_bit_adder
+                if (!silent) printf("testing two_bit adder\n");
+                two_bit_adder two_adder(g);
+                std::vector<toggle> A(2, toggle(g));
+                std::vector<toggle> B(2, toggle(g));
+                toggle CarryIN(g);
+                digit Sum(g, "SUM");
+                led CarryOUT(g, "CarryOUT");
+
+                make_edge(A[0].get_out(), input_port<P::A0>(two_adder));
+                make_edge(B[0].get_out(), input_port<P::B0>(two_adder));
+                make_edge(output_port<P::S0>(two_adder), input_port<0>(Sum));
+
+                make_edge(A[1].get_out(), input_port<P::A1>(two_adder));
+                make_edge(B[1].get_out(), input_port<P::B1>(two_adder)); 
+                make_edge(output_port<P::S1>(two_adder), input_port<1>(Sum));
+
+                make_edge(CarryIN.get_out(), input_port<P::CI>(two_adder));
+                make_edge(output_port<P::CO>(two_adder), CarryOUT.get_in());
+
+                // Activate all switches at low state
+                for (int i=0; i<2; ++i) {
+                    A[i].activate();
+                    B[i].activate();
+                }
+                CarryIN.activate();
+
+                if (!silent) printf("1+0\n");
+                A[0].flip();
+                g.wait_for_all();
+                if (!silent) Sum.display();
+                if (!silent) CarryOUT.display();
+                assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low));
+
+                if (!silent) printf("0+1\n");
+                A[0].flip();
+                B[0].flip();
+                g.wait_for_all();
+                if (!silent) Sum.display();
+                if (!silent) CarryOUT.display();
+                assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low));
+            }
+#else
             { // test four_bit_adder
                 four_bit_adder four_adder(g);
                 std::vector<toggle> A(4, toggle(g));
@@ -417,14 +468,25 @@ int main(int argc, char *argv[]) {
                 toggle CarryIN(g);
                 digit Sum(g, "SUM");
                 led CarryOUT(g, "CarryOUT");
-                
-                for (int i=0; i<4; ++i) {
-                    make_edge(A[i].get_out(), four_adder.get_A(i));
-                    make_edge(B[i].get_out(), four_adder.get_B(i));
-                    make_edge(four_adder.get_out(i), Sum.get_in(i));
-                }
-                make_edge(CarryIN.get_out(), four_adder.get_CI());
-                make_edge(four_adder.get_CO(), CarryOUT.get_in());
+
+                    make_edge(A[0].get_out(), input_port<P::A0>(four_adder));
+                    make_edge(B[0].get_out(), input_port<P::B0>(four_adder));
+                    make_edge(output_port<P::S0>(four_adder), input_port<0>(Sum));
+
+                    make_edge(A[1].get_out(), input_port<P::A1>(four_adder));
+                    make_edge(B[1].get_out(), input_port<P::B1>(four_adder));
+                    make_edge(output_port<P::S1>(four_adder), input_port<1>(Sum));
+
+                    make_edge(A[2].get_out(), input_port<P::A2>(four_adder));
+                    make_edge(B[2].get_out(), input_port<P::B2>(four_adder));
+                    make_edge(output_port<P::S2>(four_adder), input_port<2>(Sum));
+
+                    make_edge(A[3].get_out(), input_port<P::A3>(four_adder));
+                    make_edge(B[3].get_out(), input_port<P::B3>(four_adder));
+                    make_edge(output_port<P::S3>(four_adder), input_port<3>(Sum));
+
+                    make_edge(CarryIN.get_out(), input_port<P::CI>(four_adder));
+                    make_edge(output_port<P::CO>(four_adder), CarryOUT.get_in());
                 
                 // Activate all switches at low state
                 for (int i=0; i<4; ++i) {
@@ -513,6 +575,7 @@ int main(int argc, char *argv[]) {
                 if (!silent) CarryOUT.display();
                 assert((Sum.get_value() == 0) && (CarryOUT.get_value() == low));
             }
+#endif
 
             { // test D_latch
                 D_latch my_d_latch(g);
@@ -520,14 +583,14 @@ int main(int argc, char *argv[]) {
                 pulse E(g, 500, 4); // clock changes every 500ms; stops after 4 changes
                 led Q(g, " Q", verbose); // if true, LEDs print at every state change
                 led notQ(g, "~Q", verbose);
-                
-                make_edge(D.get_out(), my_d_latch.get_D());
-                make_edge(E.get_out(), my_d_latch.get_E());
-                make_edge(my_d_latch.get_Q(), Q.get_in());
-                make_edge(my_d_latch.get_notQ(), notQ.get_in());
-                
+
+                make_edge(D.get_out(), input_port<0>(my_d_latch)); 
+                make_edge(E.get_out(), input_port<1>(my_d_latch));
+                make_edge(output_port<0>(my_d_latch), Q.get_in());
+                make_edge(output_port<1>(my_d_latch), notQ.get_in());
+
                 D.activate();
-                
+
                 if (!silent) printf("Toggling D\n");
                 E.activate();
                 D.flip();
@@ -574,4 +637,9 @@ int main(int argc, char *argv[]) {
         cerr<<"error occurred. error text is :\"" <<e.what()<<"\"\n";
         return 1;
     }
+#else
+    printf("skipped\n");
+    return 0;
+#endif // __TBB_PREVIEW_COMPOSITE_NODE
 }
+
diff --git a/examples/graph/logic_sim/two_bit_adder.h b/examples/graph/logic_sim/two_bit_adder.h
new file mode 100644
index 0000000..ae86cd2
--- /dev/null
+++ b/examples/graph/logic_sim/two_bit_adder.h
@@ -0,0 +1,59 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBBexample_graph_logicsim_tba_H
+#define __TBBexample_graph_logicsim_tba_H 1
+
+#include "one_bit_adder.h"
+
+class two_bit_adder : public composite_node< tuple< signal_t, signal_t, signal_t, signal_t, signal_t >, 
+                                            tuple< signal_t, signal_t, signal_t > > {
+    graph& my_graph;
+    std::vector<one_bit_adder> two_adders; 
+    typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, signal_t >, 
+                          tuple< signal_t, signal_t, signal_t > > base_type;
+ public:
+    two_bit_adder(graph& g) : base_type(g), my_graph(g), two_adders(2, one_bit_adder(g)) {
+        make_connections();
+        set_up_composite();
+    }
+    two_bit_adder(const two_bit_adder& src) : 
+        base_type(src.my_graph), my_graph(src.my_graph), two_adders(2, one_bit_adder(src.my_graph)) 
+    {
+        make_connections();
+        set_up_composite();
+    }
+    ~two_bit_adder() {}
+
+private:
+    void make_connections() {
+        make_edge(output_port<1>(two_adders[0]), input_port<0>(two_adders[1]));
+    }
+    void set_up_composite() {
+
+        base_type::input_ports_type input_tuple(input_port<0>(two_adders[0]/*CI*/), input_port<1>(two_adders[0]), input_port<2>(two_adders[0]), input_port<1>(two_adders[1]), input_port<2>(two_adders[1]));
+
+       base_type::output_ports_type output_tuple(output_port<0>(two_adders[0]), output_port<0>(two_adders[1]),output_port<1>(two_adders[1]/*CO*/));
+       base_type::set_external_ports(input_tuple, output_tuple);
+    }
+};
+
+#endif /* __TBBexample_graph_logicsim_tba_H */
+
diff --git a/examples/graph/som/Makefile b/examples/graph/som/Makefile
index 16d8ae7..da4954c 100644
--- a/examples/graph/som/Makefile
+++ b/examples/graph/som/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 NAME=som
diff --git a/examples/graph/som/Makefile.windows.windows b/examples/graph/som/Makefile.windows.windows
index 111a37f..06c4a64 100644
--- a/examples/graph/som/Makefile.windows.windows
+++ b/examples/graph/som/Makefile.windows.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/graph/som/index.html b/examples/graph/som/index.html
index 86f7b99..21a0997 100644
--- a/examples/graph/som/index.html
+++ b/examples/graph/som/index.html
@@ -27,10 +27,10 @@ updated for the next example are cancelled and restarted after the update.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2008 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the
     example (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
-<DD>Contains Xcode* IDE workspace for building and running the example (Mac OS* X 
+<DD>Contains Xcode* IDE workspace for building and running the example (OS X*
     systems only).</DL>
 
 <H2>To Build</H2>
@@ -40,7 +40,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/graph/som/msvs/som.icproj b/examples/graph/som/msvs/som.icproj
deleted file mode 100644
index f2df6b6..0000000
--- a/examples/graph/som/msvs/som.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="som"
-	ProjectGUID="{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}"
-	VCNestedProjectGUID="{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}"
-	VCNestedProjectFileName="som.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/graph/som/msvs/som.sln b/examples/graph/som/msvs/som.sln
new file mode 100644
index 0000000..88b536f
--- /dev/null
+++ b/examples/graph/som/msvs/som.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "som", "som.vcxproj", "{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|Win32.Build.0 = Debug|Win32
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|x64.ActiveCfg = Debug|x64
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|x64.Build.0 = Debug|x64
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|Win32.ActiveCfg = Release|Win32
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|Win32.Build.0 = Release|Win32
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.ActiveCfg = Release|x64
+		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/graph/som/msvs/som.vcproj b/examples/graph/som/msvs/som.vcproj
deleted file mode 100644
index 56c5b33..0000000
--- a/examples/graph/som/msvs/som.vcproj
+++ /dev/null
@@ -1,361 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="som"
-	ProjectGUID="{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}"
-	RootNamespace="som"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc8;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc8"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				FixedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc8;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc8"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				FixedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc8;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc8"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				FixedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc8;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc8"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				FixedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{3b7f0884-fd0b-41cc-baec-12d32e88ace3}"
-			>
-			<File
-				RelativePath="..\som.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\som.h"
-				>
-			</File>
-			<File
-				RelativePath="..\som_graph.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/graph/som/msvs/som.vcxproj b/examples/graph/som/msvs/som.vcxproj
new file mode 100644
index 0000000..c4b97d2
--- /dev/null
+++ b/examples/graph/som/msvs/som.vcxproj
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>som</ProjectName>
+    <ProjectGuid>{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}</ProjectGuid>
+    <RootNamespace>som</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <FixedBaseAddress>false</FixedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\som.cpp" />
+    <ClCompile Include="..\som_graph.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\som.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/graph/som/msvs/som_cl.sln b/examples/graph/som/msvs/som_cl.sln
deleted file mode 100644
index 360dec9..0000000
--- a/examples/graph/som/msvs/som_cl.sln
+++ /dev/null
@@ -1,22 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "som", "som.vcproj", "{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.ActiveCfg = Release|x64
-		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.Build.0 = Release|x64
-		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|x64.ActiveCfg = Debug|x64
-		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|Win32.ActiveCfg = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/som/msvs/som_icl.sln b/examples/graph/som/msvs/som_icl.sln
deleted file mode 100644
index 70fdc45..0000000
--- a/examples/graph/som/msvs/som_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{b0b51c77-6a57-47e6-b25b-4c5a4af67c6f}") = "som", "som.icproj", "{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Debug|Win32.ActiveCfg = Debug|Win32
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Debug|Win32.Build.0 = Debug|Win32
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Debug|x64.ActiveCfg = Debug|x64
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Debug|x64.Build.0 = Debug|x64
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Release|Win32.ActiveCfg = Release|Win32
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Release|Win32.Build.0 = Release|Win32
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Release|x64.ActiveCfg = Release|x64
-		{fdd223e1-7f29-4ad2-91bb-bf6c0284cd5f}.Release|x64.Build.0 = Release|x64
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Release|x64.Build.0 = Release|x64
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Release|x64.ActiveCfg = Release|x64
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Release|Win32.Build.0 = Release|Win32
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Release|Win32.ActiveCfg = Release|Win32
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Debug|x64.Build.0 = Debug|x64
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Debug|x64.ActiveCfg = Debug|x64
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Debug|Win32.Build.0 = Debug|Win32
-		{b2ae2edc-697b-4c85-ac0d-e3e523d20d6d}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/graph/som/som.cpp b/examples/graph/som/som.cpp
index f5d842a..895801f 100644
--- a/examples/graph/som/som.cpp
+++ b/examples/graph/som/som.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/graph/som/som.h b/examples/graph/som/som.h
index 2acba1a..1590db3 100644
--- a/examples/graph/som/som.h
+++ b/examples/graph/som/som.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/graph/som/som_graph.cpp b/examples/graph/som/som_graph.cpp
index 9955676..bf5e13f 100644
--- a/examples/graph/som/som_graph.cpp
+++ b/examples/graph/som/som_graph.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/index.html b/examples/index.html
index b66cb30..532d945 100644
--- a/examples/index.html
+++ b/examples/index.html
@@ -53,14 +53,7 @@ sh, bash, csh, ksh, etc. (or compatible) shell window (Windows*, Linux* or OS X*
 <A name="build_1"><H4>To build by using a Microsoft* Visual Studio* project (Windows* systems):</H4></A>
 Perform the following steps:
 <OL>
-<LI>Identify the solution (*.sln) file for the example you wish to build and run.For Microsoft* Visual Studio* 2005, the *.sln file is in the example's msvs sub-directory. For other versions please use Microsoft*
-    Visual Studio* project converter
-    <UL>
-      <li><example_name>_cl.sln  - Solution for Microsoft* Visual C++* compiler
-      </li>
-        <li><example_name>_icl.sln - Solution for Intel® C++ Compiler </li>
-    </UL>
-</LI>
+<LI>Identify the solution (*.sln) file for the example you wish to build and run. For Microsoft* Visual Studio* 2010, the *.sln file is in the example's msvs sub-directory.</LI>
 <LI>Open the project by using one of the following methods:
     <UL>
     <LI>Navigate to the *.sln file from My Computer, by using Windows Explorer, or by using another file browser. Double-click the *.sln file to invoke Microsoft* Visual Studio* and open the project.</LI>
@@ -137,10 +130,9 @@ it may be set up, for a given type of shell window, by using one of the followin
        ia32         : Set up for IA-32  architecture
        intel64      : Set up for Intel® 64  architecture
    (vs) should be one of the following
-       vs2005      : Set to use with Microsoft Visual Studio 2005 runtime DLLs
-       vs2008      : Set to use with Microsoft Visual Studio 2008 runtime DLLs
        vs2010      : Set to use with Microsoft Visual Studio 2010 runtime DLLs
        vs2012      : Set to use with Microsoft Visual Studio 2012 runtime DLLs
+       vs2013      : Set to use with Microsoft Visual Studio 2013 runtime DLLs
        all         : Set to use TBB statically linked with Microsoft Visual C++ runtime
    if (vs) is not set TBB statically linked with Microsoft Visual C++ runtime will be used.
 </pre>
@@ -164,7 +156,7 @@ The environment may be set up, for a given type of shell window, by using one of
 <HR>
 <A href="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_do/index.html b/examples/parallel_do/index.html
index 7aff198..ef1c3b5 100644
--- a/examples/parallel_do/index.html
+++ b/examples/parallel_do/index.html
@@ -13,7 +13,7 @@ This directory has examples of the template <code>parallel_do</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_do/parallel_preorder/Graph.cpp b/examples/parallel_do/parallel_preorder/Graph.cpp
index a9786e8..8729a1c 100644
--- a/examples/parallel_do/parallel_preorder/Graph.cpp
+++ b/examples/parallel_do/parallel_preorder/Graph.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstdlib>
diff --git a/examples/parallel_do/parallel_preorder/Graph.h b/examples/parallel_do/parallel_preorder/Graph.h
index 9ff0431..1369c33 100644
--- a/examples/parallel_do/parallel_preorder/Graph.h
+++ b/examples/parallel_do/parallel_preorder/Graph.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "Matrix.h"
diff --git a/examples/parallel_do/parallel_preorder/Makefile b/examples/parallel_do/parallel_preorder/Makefile
index 12b7dfb..b76ece9 100644
--- a/examples/parallel_do/parallel_preorder/Makefile
+++ b/examples/parallel_do/parallel_preorder/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/parallel_do/parallel_preorder/Makefile.windows b/examples/parallel_do/parallel_preorder/Makefile.windows
index 8388688..e0cb7ab 100644
--- a/examples/parallel_do/parallel_preorder/Makefile.windows
+++ b/examples/parallel_do/parallel_preorder/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/parallel_do/parallel_preorder/Matrix.h b/examples/parallel_do/parallel_preorder/Matrix.h
index b32ebfb..9576512 100644
--- a/examples/parallel_do/parallel_preorder/Matrix.h
+++ b/examples/parallel_do/parallel_preorder/Matrix.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 class Matrix {
diff --git a/examples/parallel_do/parallel_preorder/index.html b/examples/parallel_do/parallel_preorder/index.html
index 55e01db..e94f16f 100644
--- a/examples/parallel_do/parallel_preorder/index.html
+++ b/examples/parallel_do/parallel_preorder/index.html
@@ -61,7 +61,7 @@ if the cell values are changed to type "float".  The reason is twofold.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -88,7 +88,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_do/parallel_preorder/main.cpp b/examples/parallel_do/parallel_preorder/main.cpp
index 98fc580..0fe20b2 100644
--- a/examples/parallel_do/parallel_preorder/main.cpp
+++ b/examples/parallel_do/parallel_preorder/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* Example program that shows how to use parallel_do to do parallel preorder
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.icproj b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.icproj
deleted file mode 100644
index f63923f..0000000
--- a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="parallel_preorder"
-	ProjectGUID="{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252B}"
-	VCNestedProjectFileName="parallel_preorder.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.sln b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.sln
new file mode 100644
index 0000000..2ac357d
--- /dev/null
+++ b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parallel_preorder", "parallel_preorder.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252B}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcproj b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcproj
deleted file mode 100644
index 9f73787..0000000
--- a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcproj
+++ /dev/null
@@ -1,378 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="parallel_preorder"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252B}"
-	RootNamespace="parallel_preorder"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\Graph.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\parallel_preorder.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\Graph.h"
-				>
-			</File>
-			<File
-				RelativePath="..\Matrix.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcxproj b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcxproj
new file mode 100644
index 0000000..f85c0ed
--- /dev/null
+++ b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder.vcxproj
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>parallel_preorder</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252B}</ProjectGuid>
+    <RootNamespace>parallel_preorder</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\Graph.cpp" />
+    <ClCompile Include="..\main.cpp" />
+    <ClCompile Include="..\parallel_preorder.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\Graph.h" />
+    <ClInclude Include="..\Matrix.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_cl.sln b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_cl.sln
deleted file mode 100644
index 665106e..0000000
--- a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "parallel_preorder", "parallel_preorder.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252B}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_icl.sln b/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_icl.sln
deleted file mode 100644
index b0ba4ac..0000000
--- a/examples/parallel_do/parallel_preorder/msvs/parallel_preorder_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "parallel_preorder", "parallel_preorder.icproj", "{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Debug|Win32.Build.0 = Debug|Win32
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Debug|x64.ActiveCfg = Debug|x64
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Debug|x64.Build.0 = Debug|x64
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Release|Win32.ActiveCfg = Release|Win32
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Release|Win32.Build.0 = Release|Win32
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Release|x64.ActiveCfg = Release|x64
-		{68C4AFEA-1847-4EEE-9CC5-D4FCB712D09F}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252B}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_do/parallel_preorder/parallel_preorder.cpp b/examples/parallel_do/parallel_preorder/parallel_preorder.cpp
index 7202380..197e691 100644
--- a/examples/parallel_do/parallel_preorder/parallel_preorder.cpp
+++ b/examples/parallel_do/parallel_preorder/parallel_preorder.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/parallel_do.h"
diff --git a/examples/parallel_for/game_of_life/Makefile b/examples/parallel_for/game_of_life/Makefile
index 106bd5f..df52391 100644
--- a/examples/parallel_for/game_of_life/Makefile
+++ b/examples/parallel_for/game_of_life/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/parallel_for/game_of_life/Makefile.windows b/examples/parallel_for/game_of_life/Makefile.windows
index 9b56f3a..d22cb6f 100644
--- a/examples/parallel_for/game_of_life/Makefile.windows
+++ b/examples/parallel_for/game_of_life/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/parallel_for/game_of_life/index.html b/examples/parallel_for/game_of_life/index.html
index 5cd33fa..7fb36bd 100644
--- a/examples/parallel_for/game_of_life/index.html
+++ b/examples/parallel_for/game_of_life/index.html
@@ -26,7 +26,7 @@ The visualization is written in managed C++ and uses .NET CLR.
 <DT><A HREF="src">src</A>
 <DD>Contains source files mentioned above.
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -43,7 +43,7 @@ For Windows* systems, Microsoft* Visual Studio* projects are provided for each o
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_for/game_of_life/msvs/Game_of_life.sln b/examples/parallel_for/game_of_life/msvs/Game_of_life.sln
index 2aabfd5..0501236 100644
--- a/examples/parallel_for/game_of_life/msvs/Game_of_life.sln
+++ b/examples/parallel_for/game_of_life/msvs/Game_of_life.sln
@@ -1,6 +1,7 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game of Life", "Game_of_life.vcproj", "{731C7E2E-2766-41D9-96FC-0A3548973803}"
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game of Life", "Game_of_life.vcxproj", "{731C7E2E-2766-41D9-96FC-0A3548973803}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/examples/parallel_for/game_of_life/msvs/Game_of_life.vcproj b/examples/parallel_for/game_of_life/msvs/Game_of_life.vcproj
deleted file mode 100644
index 031cd02..0000000
--- a/examples/parallel_for/game_of_life/msvs/Game_of_life.vcproj
+++ /dev/null
@@ -1,794 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="Game of Life"
-	ProjectGUID="{731C7E2E-2766-41D9-96FC-0A3548973803}"
-	RootNamespace="Game_of_life"
-	Keyword="ManagedCProj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG;USE_SSE"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				GenerateXMLDocumentationFiles="false"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="false"
-				AdditionalDependencies="tbb_debug.lib user32.lib $(NOINHERIT)"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;"
-				GenerateDebugInformation="true"
-				AssemblyDebug="1"
-				SubSystem="2"
-				EntryPointSymbol="main"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-        />
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_WINDOWS;_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				GenerateXMLDocumentationFiles="false"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="false"
-				AdditionalDependencies="tbb_debug.lib user32.lib $(NOINHERIT)"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				AssemblyDebug="1"
-				SubSystem="2"
-				EntryPointSymbol="main"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="-S -03&#x0D;&#x0A;"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="false"
-				AdditionalDependencies="tbb.lib user32.lib $(NOINHERIT)"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				EntryPointSymbol="main"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="-S -03&#x0D;&#x0A;"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				IgnoreImportLibrary="false"
-				AdditionalDependencies="tbb.lib user32.lib $(NOINHERIT)"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				EntryPointSymbol="main"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug(console)|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			ManagedExtensions="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-				Description=""
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE"
-				ExceptionHandling="1"
-				RuntimeLibrary="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug(console)|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			ManagedExtensions="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-				Description=""
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				ExceptionHandling="1"
-				RuntimeLibrary="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release(console)|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			ManagedExtensions="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-				Description=""
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE"
-				RuntimeLibrary="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release(console)|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			ManagedExtensions="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-				Description=""
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE"
-				RuntimeLibrary="2"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-        CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-		<AssemblyReference
-			RelativePath="System.dll"
-			AssemblyName="System, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-		/>
-		<AssemblyReference
-			RelativePath="System.Data.dll"
-			AssemblyName="System.Data, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86"
-		/>
-		<AssemblyReference
-			RelativePath="System.Drawing.dll"
-			AssemblyName="System.Drawing, Version=2.0.0.0, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
-		/>
-		<AssemblyReference
-			RelativePath="System.Windows.Forms.dll"
-			AssemblyName="System.Windows.Forms, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-		/>
-		<AssemblyReference
-			RelativePath="System.XML.dll"
-			AssemblyName="System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-		/>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\src\AssemblyInfo.cpp"
-				>
-				<FileConfiguration
-					Name="Debug(console)|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug(console)|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release(console)|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release(console)|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\src\Evolution.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\Game_of_life.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\Update_state.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\src\Board.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\Evolution.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\Form1.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\app.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\app.rc"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj b/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj
new file mode 100644
index 0000000..96da786
--- /dev/null
+++ b/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug(console)|Win32">
+      <Configuration>Debug(console)</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug(console)|x64">
+      <Configuration>Debug(console)</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release(console)|Win32">
+      <Configuration>Release(console)</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release(console)|x64">
+      <Configuration>Release(console)</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>Game of Life</ProjectName>
+    <ProjectGuid>{731C7E2E-2766-41D9-96FC-0A3548973803}</ProjectGuid>
+    <RootNamespace>Game_of_life</RootNamespace>
+    <Keyword>ManagedCProj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <CLRSupport>false</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <CLRSupport>false</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <CLRSupport>false</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <CLRSupport>false</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;USE_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <GenerateXMLDocumentationFiles>false</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;user32.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <SubSystem>Windows</SubSystem>
+      <EntryPointSymbol>main</EntryPointSymbol>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <GenerateXMLDocumentationFiles>false</GenerateXMLDocumentationFiles>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;user32.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <SubSystem>Windows</SubSystem>
+      <EntryPointSymbol>main</EntryPointSymbol>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalOptions>-S -03
+ %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;user32.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <EntryPointSymbol>main</EntryPointSymbol>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalOptions>-S -03
+ %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;user32.lib</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <EntryPointSymbol>main</EntryPointSymbol>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">
+    <CustomBuildStep>
+      <Message>
+      </Message>
+    </CustomBuildStep>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">
+    <CustomBuildStep>
+      <Message>
+      </Message>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">
+    <CustomBuildStep>
+      <Message>
+      </Message>
+    </CustomBuildStep>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">
+    <CustomBuildStep>
+      <Message>
+      </Message>
+    </CustomBuildStep>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Data">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Drawing">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Windows.Forms">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Xml">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\AssemblyInfo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug(console)|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug(console)|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release(console)|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release(console)|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\src\Evolution.cpp" />
+    <ClCompile Include="..\src\Game_of_life.cpp" />
+    <ClCompile Include="..\src\Update_state.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\src\Board.h" />
+    <ClInclude Include="..\src\Evolution.h" />
+    <ClInclude Include="..\src\Form1.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="app.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp b/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp
index 559a5c9..7f3c960 100644
--- a/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp
+++ b/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 using namespace System;
diff --git a/examples/parallel_for/game_of_life/src/Board.h b/examples/parallel_for/game_of_life/src/Board.h
index a10d4ef..aff6b56 100644
--- a/examples/parallel_for/game_of_life/src/Board.h
+++ b/examples/parallel_for/game_of_life/src/Board.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __BOARD_H__ 
diff --git a/examples/parallel_for/game_of_life/src/Evolution.cpp b/examples/parallel_for/game_of_life/src/Evolution.cpp
index 8cc1197..603dcea 100644
--- a/examples/parallel_for/game_of_life/src/Evolution.cpp
+++ b/examples/parallel_for/game_of_life/src/Evolution.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/game_of_life/src/Evolution.h b/examples/parallel_for/game_of_life/src/Evolution.h
index 0a7871e..99280b8 100644
--- a/examples/parallel_for/game_of_life/src/Evolution.h
+++ b/examples/parallel_for/game_of_life/src/Evolution.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /** 
diff --git a/examples/parallel_for/game_of_life/src/Form1.h b/examples/parallel_for/game_of_life/src/Form1.h
index 708928d..976b053 100644
--- a/examples/parallel_for/game_of_life/src/Form1.h
+++ b/examples/parallel_for/game_of_life/src/Form1.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _CONSOLE
diff --git a/examples/parallel_for/game_of_life/src/Game_of_life.cpp b/examples/parallel_for/game_of_life/src/Game_of_life.cpp
index 0732059..80b86ed 100644
--- a/examples/parallel_for/game_of_life/src/Game_of_life.cpp
+++ b/examples/parallel_for/game_of_life/src/Game_of_life.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* 
diff --git a/examples/parallel_for/game_of_life/src/Update_state.cpp b/examples/parallel_for/game_of_life/src/Update_state.cpp
index f578998..e640567 100644
--- a/examples/parallel_for/game_of_life/src/Update_state.cpp
+++ b/examples/parallel_for/game_of_life/src/Update_state.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "Evolution.h"
diff --git a/examples/parallel_for/index.html b/examples/parallel_for/index.html
index d7afc5d..8df0cd1 100644
--- a/examples/parallel_for/index.html
+++ b/examples/parallel_for/index.html
@@ -19,7 +19,7 @@ This directory has examples of the template <code>parallel_for</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_for/polygon_overlay/Makefile b/examples/parallel_for/polygon_overlay/Makefile
index 339c322..76ada47 100644
--- a/examples/parallel_for/polygon_overlay/Makefile
+++ b/examples/parallel_for/polygon_overlay/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 NAME=pover
diff --git a/examples/parallel_for/polygon_overlay/Makefile.windows b/examples/parallel_for/polygon_overlay/Makefile.windows
index b294621..972d9c1 100644
--- a/examples/parallel_for/polygon_overlay/Makefile.windows
+++ b/examples/parallel_for/polygon_overlay/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/parallel_for/polygon_overlay/index.html b/examples/parallel_for/polygon_overlay/index.html
index 62ae291..262eaa1 100644
--- a/examples/parallel_for/polygon_overlay/index.html
+++ b/examples/parallel_for/polygon_overlay/index.html
@@ -80,7 +80,7 @@ One limitation of the program is that if the number of polygons in the source ma
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -111,7 +111,7 @@ named pover.exe.  To run these executables directly, use one or more of the foll
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.icproj b/examples/parallel_for/polygon_overlay/msvs/pover.icproj
deleted file mode 100644
index d8886d7..0000000
--- a/examples/parallel_for/polygon_overlay/msvs/pover.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="pover"
-	ProjectGUID="{B175D396-7260-45F8-9E18-842ED8A32A16}"
-	VCNestedProjectGUID="{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}"
-	VCNestedProjectFileName="pover.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.sln b/examples/parallel_for/polygon_overlay/msvs/pover.sln
new file mode 100644
index 0000000..c1df0ca
--- /dev/null
+++ b/examples/parallel_for/polygon_overlay/msvs/pover.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pover", "pover.vcxproj", "{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		_GDIRelease|Win32 = _GDIRelease|Win32
+		_GDIRelease|x64 = _GDIRelease|x64
+		DD Debug|Win32 = DD Debug|Win32
+		DD Debug|x64 = DD Debug|x64
+		DD Release|Win32 = DD Release|Win32
+		DD Release|x64 = DD Release|x64
+		GDIDebug|Win32 = GDIDebug|Win32
+		GDIDebug|x64 = GDIDebug|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|Win32.ActiveCfg = Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|Win32.Build.0 = Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|x64.ActiveCfg = Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|x64.Build.0 = Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.Build.0 = DD Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.ActiveCfg = DD Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.Build.0 = DD Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.ActiveCfg = DD Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.Build.0 = DD Release|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.ActiveCfg = DD Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.Build.0 = DD Release|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|Win32.ActiveCfg = Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|Win32.Build.0 = Debug|Win32
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|x64.ActiveCfg = Debug|x64
+		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|x64.Build.0 = Debug|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.vcproj b/examples/parallel_for/polygon_overlay/msvs/pover.vcproj
deleted file mode 100644
index e474903..0000000
--- a/examples/parallel_for/polygon_overlay/msvs/pover.vcproj
+++ /dev/null
@@ -1,832 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="pover"
-	ProjectGUID="{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}"
-	RootNamespace="pover"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DD Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DD Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DD Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;"$(DXSDK_DIR)\lib\x86""
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DD Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;"$(DXSDK_DIR)\lib\x64""
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;h;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\polymain.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\polymain.h"
-				>
-			</File>
-			<File
-				RelativePath="..\polyover.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\polyover.h"
-				>
-			</File>
-			<File
-				RelativePath="..\pover_global.h"
-				>
-			</File>
-			<File
-				RelativePath="..\pover_video.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\pover_video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\rpolygon.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<Filter
-			Name="Video Layer"
-			>
-			<File
-				RelativePath="..\..\..\common\gui\ddvideo.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\gdivideo.cpp"
-				>
-				<FileConfiguration
-					Name="DD Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DD Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DD Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DD Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\winvideo.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj b/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj
new file mode 100644
index 0000000..3efcc75
--- /dev/null
+++ b/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DD Debug|Win32">
+      <Configuration>DD Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DD Debug|x64">
+      <Configuration>DD Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DD Release|Win32">
+      <Configuration>DD Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DD Release|x64">
+      <Configuration>DD Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>pover</ProjectName>
+    <ProjectGuid>{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}</ProjectGuid>
+    <RootNamespace>pover</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\polymain.cpp" />
+    <ClCompile Include="..\polyover.cpp" />
+    <ClCompile Include="..\pover_video.cpp" />
+    <ClCompile Include="..\..\..\common\gui\d2dvideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\..\common\gui\gdivideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DD Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DD Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DD Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DD Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\polymain.h" />
+    <ClInclude Include="..\polyover.h" />
+    <ClInclude Include="..\pover_global.h" />
+    <ClInclude Include="..\pover_video.h" />
+    <ClInclude Include="..\rpolygon.h" />
+    <ClInclude Include="..\..\..\common\gui\video.h" />
+    <ClInclude Include="..\..\..\common\gui\winvideo.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover_cl.sln b/examples/parallel_for/polygon_overlay/msvs/pover_cl.sln
deleted file mode 100644
index 50f9b86..0000000
--- a/examples/parallel_for/polygon_overlay/msvs/pover_cl.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pover", "pover.vcproj", "{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.Build.0 = DD Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.ActiveCfg = DD Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.Build.0 = DD Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.ActiveCfg = DD Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.Build.0 = DD Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.ActiveCfg = DD Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.Build.0 = DD Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.Build.0 = Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|Win32.Build.0 = Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|x64.ActiveCfg = Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/polygon_overlay/msvs/pover_icl.sln b/examples/parallel_for/polygon_overlay/msvs/pover_icl.sln
deleted file mode 100644
index bf88dd2..0000000
--- a/examples/parallel_for/polygon_overlay/msvs/pover_icl.sln
+++ /dev/null
@@ -1,53 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "pover", "pover.icproj", "{B175D396-7260-45F8-9E18-842ED8A32A16}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Debug|Win32.Build.0 = DD Debug|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Debug|x64.ActiveCfg = DD Debug|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Debug|x64.Build.0 = DD Debug|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Release|Win32.ActiveCfg = DD Release|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Release|Win32.Build.0 = DD Release|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Release|x64.ActiveCfg = DD Release|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.DD Release|x64.Build.0 = DD Release|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}.GDI Debug|x64.Build.0 = Debug|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}._GDI Release|Win32.Build.0 = Release|Win32
-		{B175D396-7260-45F8-9E18-842ED8A32A16}._GDI Release|x64.ActiveCfg = Release|x64
-		{B175D396-7260-45F8-9E18-842ED8A32A16}._GDI Release|x64.Build.0 = Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|x64.Build.0 = Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|x64.ActiveCfg = Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|Win32.Build.0 = Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.Build.0 = Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.Build.0 = DD Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.ActiveCfg = DD Release|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.Build.0 = DD Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.ActiveCfg = DD Release|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.Build.0 = DD Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.ActiveCfg = DD Debug|x64
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.Build.0 = DD Debug|Win32
-		{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.ActiveCfg = DD Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/polygon_overlay/polymain.cpp b/examples/parallel_for/polygon_overlay/polymain.cpp
index daa1e69..60f8ec4 100644
--- a/examples/parallel_for/polygon_overlay/polymain.cpp
+++ b/examples/parallel_for/polygon_overlay/polymain.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Polygon overlay
diff --git a/examples/parallel_for/polygon_overlay/polymain.h b/examples/parallel_for/polygon_overlay/polymain.h
index 0a02a3d..86e4b50 100644
--- a/examples/parallel_for/polygon_overlay/polymain.h
+++ b/examples/parallel_for/polygon_overlay/polymain.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "pover_global.h"  // for declaration of DEFINE and INIT
diff --git a/examples/parallel_for/polygon_overlay/polyover.cpp b/examples/parallel_for/polygon_overlay/polyover.cpp
index 58602a5..8f9c6dd 100644
--- a/examples/parallel_for/polygon_overlay/polyover.cpp
+++ b/examples/parallel_for/polygon_overlay/polyover.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Polygon overlay
diff --git a/examples/parallel_for/polygon_overlay/polyover.h b/examples/parallel_for/polygon_overlay/polyover.h
index a3e82c3..477f141 100644
--- a/examples/parallel_for/polygon_overlay/polyover.h
+++ b/examples/parallel_for/polygon_overlay/polyover.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*!
diff --git a/examples/parallel_for/polygon_overlay/pover_global.h b/examples/parallel_for/polygon_overlay/pover_global.h
index ab504de..bbf30ff 100644
--- a/examples/parallel_for/polygon_overlay/pover_global.h
+++ b/examples/parallel_for/polygon_overlay/pover_global.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/parallel_for/polygon_overlay/pover_video.cpp b/examples/parallel_for/polygon_overlay/pover_video.cpp
index fbae26d..fb1d205 100644
--- a/examples/parallel_for/polygon_overlay/pover_video.cpp
+++ b/examples/parallel_for/polygon_overlay/pover_video.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Support for GUI display for Polygon overlay demo
diff --git a/examples/parallel_for/polygon_overlay/pover_video.h b/examples/parallel_for/polygon_overlay/pover_video.h
index 9303d4b..7906359 100644
--- a/examples/parallel_for/polygon_overlay/pover_video.h
+++ b/examples/parallel_for/polygon_overlay/pover_video.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // support for GUI for polygon overlay demo
diff --git a/examples/parallel_for/polygon_overlay/rpolygon.h b/examples/parallel_for/polygon_overlay/rpolygon.h
index 78fe89b..f34ab7d 100644
--- a/examples/parallel_for/polygon_overlay/rpolygon.h
+++ b/examples/parallel_for/polygon_overlay/rpolygon.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // rpolygon.h
diff --git a/examples/parallel_for/seismic/Makefile b/examples/parallel_for/seismic/Makefile
index 6a98ef7..e406ee5 100644
--- a/examples/parallel_for/seismic/Makefile
+++ b/examples/parallel_for/seismic/Makefile
@@ -1,32 +1,24 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 NAME=seismic
-ARGS=0:auto 300
+ARGS=auto 0
 PERF_RUN_ARGS=auto 10000 silent
 LIGHT_ARGS=1:2 100
 
diff --git a/examples/parallel_for/seismic/Makefile.windows b/examples/parallel_for/seismic/Makefile.windows
index e588758..61b431c 100644
--- a/examples/parallel_for/seismic/Makefile.windows
+++ b/examples/parallel_for/seismic/Makefile.windows
@@ -1,38 +1,30 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
 # Just specify your program basename
 PROG=Seismic
-ARGS=0:4 300
+ARGS=auto 0
 PERF_RUN_ARGS=auto 10000 silent
 LIGHT_ARGS=1:2 100
 
-# Trying ot find if icl.exe is set
+# Trying to find if icl.exe is set
 CXX1 = $(TBB_CXX)-
 CXX2 = $(CXX1:icl.exe-=icl.exe)
 CXX  = $(CXX2:-=cl.exe)
diff --git a/examples/parallel_for/seismic/index.html b/examples/parallel_for/seismic/index.html
index d652ece..f7646cb 100644
--- a/examples/parallel_for/seismic/index.html
+++ b/examples/parallel_for/seismic/index.html
@@ -27,7 +27,7 @@ NOTE: Currently, the offload version does not support GUI and can only be used w
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -36,14 +36,13 @@ NOTE: Currently, the offload version does not support GUI and can only be used w
 General build directions can be found <A HREF=../../index.html#build>here</A>.
 The following additional options are supported:
 <DL>
-<DT><TT>make [(general targets: {release, debug} [test])] UI={con, gdi, dd, d2d, x, mac}</TT>
-<DD>Build and run as usual, but build with the specified GUI driver: console, GDI+*, DirectDraw*, 
+<DT><TT>make [(general targets: {release, debug} [test])] UI={con, gdi, d2d, x, mac}</TT>
+<DD>Build and run as usual, but build with the specified GUI driver: console, GDI+*,  
     Direct2D*, X11, or OpenGL*
     (see the description of the <A HREF=../../common/index.html>common GUI code</A>
     for more information on available graphics support).
     For Linux* and OS X* systems, the best available driver is detected automatically by the Makefile.
-    For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=dd or 
-    UI=d2d may offer superior
+    For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=d2d may offer superior
     performance, but can only be used if the Microsoft* DirectX* SDK is installed on your system 
     and if overlay is supported by your graphics card.
     Use UI=con to build without the GUI for use in making performance measurements
@@ -103,7 +102,7 @@ user interface:
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_for/seismic/main.cpp b/examples/parallel_for/seismic/main.cpp
index f290c2d..f776a6d 100644
--- a/examples/parallel_for/seismic/main.cpp
+++ b/examples/parallel_for/seismic/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define VIDEO_WINMAIN_ARGS
@@ -70,7 +62,7 @@ RunOptions ParseCommandLine(int argc, char *argv[]){
     // zero number of threads means to run serial version
     utility::thread_number_range threads(get_default_num_threads,0,get_default_num_threads());
 
-    int numberOfFrames = 1000;
+    int numberOfFrames = 0;
     bool silent = false;
     bool serial = false;
 
@@ -78,7 +70,7 @@ RunOptions ParseCommandLine(int argc, char *argv[]){
         utility::cli_argument_pack()
             //"-h" option for displaying help is present implicitly
             .positional_arg(threads,"n-of-threads",utility::thread_number_range_desc)
-            .positional_arg(numberOfFrames,"n-of-frames","number of frames the example processes internally")
+            .positional_arg(numberOfFrames,"n-of-frames","number of frames the example processes internally (0 means unlimited)")
             .arg(silent,"silent","no output except elapsed time")
             .arg(serial,"serial","in GUI mode start with serial version of algorithm")
     );
@@ -103,6 +95,10 @@ int main(int argc, char *argv[])
         }
         else if(video.init_console()) {
             // do console mode
+            if (options.numberOfFrames == 0) {
+                options.numberOfFrames = 1000;
+                std::cout << "Substituting 1000 for unlimited frames because not running interactively\n";
+            }
             for(int p = options.threads.first;  p <= options.threads.last; p = options.threads.step(p)) {
                 tbb::tick_count xwayParallelismStartTime = tbb::tick_count::now();
                 u.InitializeUniverse(video);
@@ -119,14 +115,14 @@ int main(int argc, char *argv[])
                     dmem.set_address(pMem);
                     u.SetDrawingMemory(dmem);
 #endif // __TBB_MIC_OFFLOAD
-                    if (p==0){
+                    if (p==0) {
                         //run a serial version
-                        for( int i=0; i<numberOfFrames; ++i ){
+                        for( int i=0; i<numberOfFrames; ++i ) {
                             u.SerialUpdateUniverse();
                         }
-                    }else{
+                    } else {
                         tbb::task_scheduler_init init(p);
-                        for( int i=0; i<numberOfFrames; ++i ){
+                        for( int i=0; i<numberOfFrames; ++i ) {
                             u.ParallelUpdateUniverse();
                         }
                     }
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation.icproj b/examples/parallel_for/seismic/msvs/SeismicSimulation.icproj
deleted file mode 100644
index 1af37bc..0000000
--- a/examples/parallel_for/seismic/msvs/SeismicSimulation.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="SeismicSimulation"
-	ProjectGUID="{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-	VCNestedProjectFileName="SeismicSimulation.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation.sln b/examples/parallel_for/seismic/msvs/SeismicSimulation.sln
new file mode 100644
index 0000000..6f3eac0
--- /dev/null
+++ b/examples/parallel_for/seismic/msvs/SeismicSimulation.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeismicSimulation", "SeismicSimulation.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2527}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		_GDIRelease|Win32 = _GDIRelease|Win32
+		_GDIRelease|x64 = _GDIRelease|x64
+		DDDebug|Win32 = DDDebug|Win32
+		DDDebug|x64 = DDDebug|x64
+		DDRelease|Win32 = DDRelease|Win32
+		DDRelease|x64 = DDRelease|x64
+		GDIDebug|Win32 = GDIDebug|Win32
+		GDIDebug|x64 = GDIDebug|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|x64.Build.0 = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|Win32.ActiveCfg = DDDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|Win32.Build.0 = DDDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|x64.ActiveCfg = DDDebug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|x64.Build.0 = DDDebug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|Win32.ActiveCfg = DDRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|Win32.Build.0 = DDRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|x64.ActiveCfg = DDRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|x64.Build.0 = DDRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|x64.Build.0 = Debug|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation.vcproj b/examples/parallel_for/seismic/msvs/SeismicSimulation.vcproj
deleted file mode 100644
index e0683b4..0000000
--- a/examples/parallel_for/seismic/msvs/SeismicSimulation.vcproj
+++ /dev/null
@@ -1,836 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="SeismicSimulation"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-	RootNamespace="SeismicSimulation"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;h;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\seismic_video.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\seismic_video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\universe.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\universe.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\resource.h"
-				>
-			</File>
-			<File
-				RelativePath=".\SeismicSimulation.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\SeismicSimulation.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\small.ico"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Video Layer"
-			>
-			<File
-				RelativePath="..\..\..\common\gui\ddvideo.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\gdivideo.cpp"
-				>
-				<FileConfiguration
-					Name="DDRelease|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\winvideo.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation.vcxproj b/examples/parallel_for/seismic/msvs/SeismicSimulation.vcxproj
new file mode 100644
index 0000000..489975b
--- /dev/null
+++ b/examples/parallel_for/seismic/msvs/SeismicSimulation.vcxproj
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>SeismicSimulation</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A2527}</ProjectGuid>
+    <RootNamespace>SeismicSimulation</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\main.cpp" />
+    <ClCompile Include="..\seismic_video.cpp" />
+    <ClCompile Include="..\universe.cpp" />
+    <ClCompile Include="..\..\..\common\gui\d2dvideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\..\common\gui\gdivideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\seismic_video.h" />
+    <ClInclude Include="..\universe.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="..\..\..\common\gui\video.h" />
+    <ClInclude Include="..\..\..\common\gui\winvideo.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="SeismicSimulation.ico" />
+    <None Include="small.ico" />
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="SeismicSimulation.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation_cl.sln b/examples/parallel_for/seismic/msvs/SeismicSimulation_cl.sln
deleted file mode 100644
index a953c4a..0000000
--- a/examples/parallel_for/seismic/msvs/SeismicSimulation_cl.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SeismicSimulation", "SeismicSimulation.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.Build.0 = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.Build.0 = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/seismic/msvs/SeismicSimulation_icl.sln b/examples/parallel_for/seismic/msvs/SeismicSimulation_icl.sln
deleted file mode 100644
index 6bca0c1..0000000
--- a/examples/parallel_for/seismic/msvs/SeismicSimulation_icl.sln
+++ /dev/null
@@ -1,53 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "SeismicSimulation", "SeismicSimulation.icproj", "{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Debug|x64.Build.0 = DDDebug|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.DD Release|x64.Build.0 = DDRelease|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}.GDI Debug|x64.Build.0 = Debug|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}._GDI Release|Win32.Build.0 = Release|Win32
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}._GDI Release|x64.ActiveCfg = Release|x64
-		{87C5A3E0-E1C8-457F-AA2F-B3E455214E76}._GDI Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.Build.0 = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.Build.0 = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/seismic/seismic_video.cpp b/examples/parallel_for/seismic/seismic_video.cpp
index da6cfd9..50c978f 100644
--- a/examples/parallel_for/seismic/seismic_video.cpp
+++ b/examples/parallel_for/seismic/seismic_video.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "seismic_video.h"
@@ -45,18 +37,18 @@ void SeismicVideo::on_key(int key) {
     else if(char(key) == 'e') updating = true;
     else if(char(key) == 'd') updating = false;
     else if(key == 27) running = false;
-    title = initIsParallel?titles[1]:titles[0];
+    title = titles[initIsParallel?1:0];
 }
 
 void SeismicVideo::on_process() {
     tbb::task_scheduler_init Init(threadsHigh);
-    do {
+    for( int frames = 0; numberOfFrames_==0 || frames<numberOfFrames_; ++frames ) {
         if( initIsParallel )
             u_.ParallelUpdateUniverse();
         else
             u_.SerialUpdateUniverse();
-        if( numberOfFrames_ > 0 ) --numberOfFrames_;
-    } while(next_frame() && numberOfFrames_);
+        if( !next_frame() ) break;
+    }
 }
 
 #ifdef _WINDOWS
@@ -68,7 +60,7 @@ SeismicVideo * gVideo = NULL;
 SeismicVideo::SeismicVideo(    Universe &u, int number_of_frames, int threads_high, bool init_is_parallel)
     :numberOfFrames_(number_of_frames),initIsParallel(init_is_parallel),u_(u),threadsHigh(threads_high)
 {
-    title = initIsParallel?titles[1]:titles[0];
+    title = titles[initIsParallel?1:0];
 #ifdef _WINDOWS
     gVideo = this;
     LoadStringA(video::win_hInstance, IDC_SEISMICSIMULATION, szWindowClass, MAX_LOADSTRING);
diff --git a/examples/parallel_for/seismic/seismic_video.h b/examples/parallel_for/seismic/seismic_video.h
index f2910e9..4197cd7 100644
--- a/examples/parallel_for/seismic/seismic_video.h
+++ b/examples/parallel_for/seismic/seismic_video.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef SEISMIC_VIDEO_H_
@@ -45,7 +37,7 @@ class SeismicVideo : public video
     bool initIsParallel ;
 
     Universe &u_;
-    int numberOfFrames_;
+    int numberOfFrames_; // 0 means forever, positive means number of frames, negative is undefined
     int threadsHigh;
 private:
     void on_mouse(int x, int y, int key);
diff --git a/examples/parallel_for/seismic/universe.cpp b/examples/parallel_for/seismic/universe.cpp
index 816ee9b..dc5e27a 100644
--- a/examples/parallel_for/seismic/universe.cpp
+++ b/examples/parallel_for/seismic/universe.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "../../common/gui/video.h"
@@ -188,14 +180,14 @@ struct UpdateVelocityBody {
     Universe & u_;
     UpdateVelocityBody(Universe & u):u_(u){}
     void operator()( const tbb::blocked_range<int>& y_range ) const {
-        u_.UpdateVelocity(Universe::Rectangle(0,y_range.begin(),u_.UniverseWidth-1,y_range.size()));
+        u_.UpdateVelocity(Universe::Rectangle(1,y_range.begin(),u_.UniverseWidth-1,y_range.size()));
     }
 };
 
 void Universe::ParallelUpdateVelocity(tbb::affinity_partitioner &affinity) {
-    tbb::parallel_for( tbb::blocked_range<int>( 0, UniverseHeight-1 ), // Index space for loop
-                       UpdateVelocityBody(*this),                           // Body of loop
-                       affinity );                                     // Affinity hint
+    tbb::parallel_for( tbb::blocked_range<int>( 1, UniverseHeight ), // Index space for loop
+                       UpdateVelocityBody(*this),                    // Body of loop
+                       affinity );                                   // Affinity hint
 }
 
 void Universe::SerialUpdateUniverse() {
diff --git a/examples/parallel_for/seismic/universe.h b/examples/parallel_for/seismic/universe.h
index ab1a04e..ff1a79a 100644
--- a/examples/parallel_for/seismic/universe.h
+++ b/examples/parallel_for/seismic/universe.h
@@ -1,43 +1,41 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef UNIVERSE_H_
 #define UNIVERSE_H_
 
+#ifndef UNIVERSE_WIDTH
+#define UNIVERSE_WIDTH 1024
+#endif
+#ifndef UNIVERSE_HEIGHT
+#define UNIVERSE_HEIGHT 512
+#endif
+
 #include "../../common/gui/video.h"
 #include "tbb/partitioner.h"
 
-
 class Universe {
 public:
     enum {
-        UniverseWidth = 1024
-        ,UniverseHeight  = 512
+        UniverseWidth  = UNIVERSE_WIDTH,
+        UniverseHeight = UNIVERSE_HEIGHT
     };
 private:
     //in order to avoid performance degradation due to cache aliasing issue
@@ -46,7 +44,7 @@ private:
     //as the compiler is forced to place class members of the same clause in order of the
     //declaration this seems to be the right way of padding.
 
-    //magic constants added below are chosen experimentally.
+    //magic constants added below are chosen experimentally for 1024x512.
     enum {
         MaxWidth = UniverseWidth+1,
         MaxHeight = UniverseHeight+3
diff --git a/examples/parallel_for/tachyon/Makefile b/examples/parallel_for/tachyon/Makefile
index a2deee1..0e8db68 100644
--- a/examples/parallel_for/tachyon/Makefile
+++ b/examples/parallel_for/tachyon/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # The original source for this example is
 # Copyright (c) 1994-2008 John E. Stone
diff --git a/examples/parallel_for/tachyon/Makefile.windows b/examples/parallel_for/tachyon/Makefile.windows
index e52fd49..f738a7f 100644
--- a/examples/parallel_for/tachyon/Makefile.windows
+++ b/examples/parallel_for/tachyon/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # The original source for this example is
 # Copyright (c) 1994-2008 John E. Stone
diff --git a/examples/parallel_for/tachyon/android/jni/Android.mk b/examples/parallel_for/tachyon/android/jni/Android.mk
index 3a3a5c8..f1e69f8 100644
--- a/examples/parallel_for/tachyon/android/jni/Android.mk
+++ b/examples/parallel_for/tachyon/android/jni/Android.mk
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 
 # The original source for this example is
@@ -54,6 +46,10 @@
 
 LOCAL_PATH := $(realpath $(call my-dir)/..)
 
+ifneq (,$(wildcard Android.mk))
+  $(error ndk-build should be run one level up from jni folder)
+endif
+
 #Relative paths
 TBB_PATH := ../../../..
 SRC_PATH := $(TBB_PATH)/examples/parallel_for/tachyon/src
@@ -63,22 +59,32 @@ TBB_FULL_PATH := $(realpath $(TBB_PATH))
 TBB_COMMON_FULL_PATH := $(realpath $(TBB_PATH))/examples/common
 
 #The path is setup for binary package
+ifeq (x86,$(TARGET_ARCH_ABI))
+TBB_LIBRARY_ARCH_PATH:=
+else
+TBB_LIBRARY_ARCH_PATH:=/$(TARGET_ARCH_ABI)
+endif
 #Override if needed
-TBB_LIBRARY_FULL_PATH ?= $(TBB_FULL_PATH)/lib/android
+TBB_LIBRARY_FULL_PATH ?= $(TBB_FULL_PATH)/lib/android$(TBB_LIBRARY_ARCH_PATH)
+
+ifeq (,$(wildcard $(TBB_LIBRARY_FULL_PATH)/libtbb.so))
+  $(info Skipping $(TARGET_ARCH_ABI) target. $(TBB_LIBRARY_FULL_PATH)/libtbb.so library not found. Copy $(TARGET_ARCH_ABI) version of library to $(TBB_LIBRARY_FULL_PATH) folder to enable its build.)
+else
 
 include $(CLEAR_VARS)
 LOCAL_MODULE    := jni-engine
 LOCAL_SRC_FILES := jni/jni-engine.cpp $(TBB_PATH)/examples/common/gui/convideo.cpp $(SRC_PATH)/trace.tbb.cpp $(SRC_PATH)/pthread.cpp $(SRC_PATH)/tachyon_video.cpp $(SRC_PATH)/api.cpp $(SRC_PATH)/apigeom.cpp $(SRC_PATH)/apitrigeom.cpp $(SRC_PATH)/bndbox.cpp $(SRC_PATH)/box.cpp $(SRC_PATH)/camera.cpp $(SRC_PATH)/coordsys.cpp $(SRC_PATH)/cylinder.cpp $(SRC_PATH)/extvol.cpp $(SRC_PATH)/global.cpp $(SRC_PATH)/grid.cpp $(SRC_PATH)/imageio.cpp $(SRC_PATH)/imap.cpp $(SRC_PATH)/intersect.cpp $(SR [...]
 # Add -DMARK_RENDERING_AREA=1 to see graphical threads work
-LOCAL_CFLAGS += -DTBB_USE_EXCEPTIONS=0 -DTBB_USE_GCC_BUILTINS -std=c++11 -fexceptions -Wdeprecated-declarations  -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/include -I$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/$(APP_ABI)/include -I$(TBB_FULL_PATH)/include -I$(TBB_COMMON_FULL_PATH) -I$(realpath $(SRC_PATH)) 
-LOCAL_LDLIBS := -lm -llog -ljnigraphics -ltbb -lgnustl_shared -L./ -L$(TBB_FULL_PATH)/lib/android -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$(NDK_TOOLCHAIN_VERSION)/libs/$(APP_ABI)
-
+# Add -DTBB_USE_GCC_BUILTINS to use gcc atomics
+LOCAL_CFLAGS += -std=c++11 -fexceptions -Wdeprecated-declarations  -I$(TBB_FULL_PATH)/include -I$(TBB_COMMON_FULL_PATH) -I$(realpath $(SRC_PATH)) 
+LOCAL_LDLIBS := -lm -llog -ljnigraphics -L./ -L$(TBB_LIBRARY_FULL_PATH) 
+LOCAL_SHARED_LIBRARIES += libtbb 
 include $(BUILD_SHARED_LIBRARY)
 
 LOCAL_PATH := $(TBB_LIBRARY_FULL_PATH)
-
 include $(CLEAR_VARS)
 LOCAL_MODULE    := libtbb
 LOCAL_SRC_FILES := libtbb.so
 include $(PREBUILT_SHARED_LIBRARY)
 
+endif
diff --git a/examples/parallel_for/tachyon/android/jni/Application.mk b/examples/parallel_for/tachyon/android/jni/Application.mk
index 9c47b3a..d5aef90 100644
--- a/examples/parallel_for/tachyon/android/jni/Application.mk
+++ b/examples/parallel_for/tachyon/android/jni/Application.mk
@@ -1,30 +1,22 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
-APP_ABI:=x86
+APP_ABI:= all
 APP_STL:=gnustl_shared
 APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
 APP_PLATFORM:=android-15
diff --git a/examples/parallel_for/tachyon/android/jni/jni-engine.cpp b/examples/parallel_for/tachyon/android/jni/jni-engine.cpp
index 4816245..e9c38c7 100644
--- a/examples/parallel_for/tachyon/android/jni/jni-engine.cpp
+++ b/examples/parallel_for/tachyon/android/jni/jni-engine.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -251,7 +243,7 @@ extern "C" JNIEXPORT void JNICALL Java_com_intel_tbb_example_tachyon_tachyonView
         LOG_INFO("fn=%s",fn);
         //Starting example_main and returning back to GUI
         pthread_create(&handle, NULL, &example_main, (void*) fn);
-        LOG_INFO("Thread handle is %x", handle);
+        LOG_INFO("Thread handle is %ld", handle);
     }
 }
 
diff --git a/examples/parallel_for/tachyon/android/project.properties b/examples/parallel_for/tachyon/android/project.properties
index 0840b4a..a3ee5ab 100644
--- a/examples/parallel_for/tachyon/android/project.properties
+++ b/examples/parallel_for/tachyon/android/project.properties
@@ -11,4 +11,4 @@
 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
 
 # Project target.
-target=android-15
+target=android-17
diff --git a/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java b/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java
index d8be46d..c3aa24a 100644
--- a/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java
+++ b/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/index.html b/examples/parallel_for/tachyon/index.html
index a49483b..9794d97 100644
--- a/examples/parallel_for/tachyon/index.html
+++ b/examples/parallel_for/tachyon/index.html
@@ -74,7 +74,7 @@ The following versions of the example are provided:
 <DT><A HREF="dat">dat</A>
 <DD>Contains data sets for running the example.
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -109,14 +109,12 @@ Here, <<I>version</I>> is one of the above versions of the example, i.e.,
 <DT><TT>make [(above options or targets)] ARGS=-D</TT>
 <DD>Build and run as above, but run with disabled run-time display updating for use in making performance measurements
     <I>(strongly recommended when measuring performance or scalability; see note below)</I>.
-<DT><TT>make [(above options or targets)] UI={con, gdi, dd, d2d, x, mac}</TT>
-<DD>Build and run as usual, but build with the specified GUI driver: console, GDI+*, DirectDraw*, 
-    Direct2D*, X11, or OpenGL*
+<DT><TT>make [(above options or targets)] UI={con, gdi, d2d, x, mac}</TT>
+<DD>Build and run as usual, but build with the specified GUI driver: console, GDI+*, Direct2D*, X11, or OpenGL*
 	(see the description of the <A HREF=../../common/index.html>common GUI code</A>
 	for more information on available graphics support).
     For Linux* and OS X* systems, the best available driver is detected automatically by the Makefile.
-    For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=dd or 
-    UI=d2d may offer superior
+    For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=d2d may offer superior
 	performance, but can only be used if the Microsoft* DirectX* SDK is installed on your system.
     Use UI=con to build without the GUI for use in making performance measurements
 	<I>(strongly recommended when measuring performance or scalability; see note below)</I>.
@@ -174,7 +172,7 @@ While running with the GUI display turned on the following keyboard keys can be
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.icproj b/examples/parallel_for/tachyon/msvs/tachyon.icproj
deleted file mode 100644
index 4d021eb..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="tachyon.common"
-	ProjectGUID="{5F685DBD-9A04-4E94-A1CA-FC48FE799830}"
-	VCNestedProjectGUID="{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-	VCNestedProjectFileName="tachyon.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.serial.icproj b/examples/parallel_for/tachyon/msvs/tachyon.serial.icproj
deleted file mode 100644
index c449959..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.serial.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="tachyon.serial"
-	ProjectGUID="{E085A8DB-75D4-4927-9631-6368E6D0EE72}"
-	VCNestedProjectGUID="{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}"
-	VCNestedProjectFileName="tachyon.serial.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.serial.vcproj b/examples/parallel_for/tachyon/msvs/tachyon.serial.vcproj
deleted file mode 100644
index e5a13b2..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.serial.vcproj
+++ /dev/null
@@ -1,695 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="tachyon.serial"
-	ProjectGUID="{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}"
-	RootNamespace="tachyon.serial"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\serial"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\serial"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-		<ProjectReference
-			ReferencedProjectIdentifier="{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-			CopyLocal="false"
-			CopyLocalDependencies="false"
-			CopyLocalSatelliteAssemblies="false"
-			RelativePathToProject=".\tachyon.vcproj"
-		/>
-	</References>
-	<Files>
-		<File
-			RelativePath="..\src\trace.serial.cpp"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj
new file mode 100644
index 0000000..f465221
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}</ProjectGuid>
+    <RootNamespace>tachyon.serial</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="tachyon.vcxproj">
+      <Project>{924517df-2b6a-47d5-8a11-cc247cc4d810}</Project>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\trace.serial.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.sln b/examples/parallel_for/tachyon/msvs/tachyon.sln
new file mode 100644
index 0000000..7c1b076
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/tachyon.sln
@@ -0,0 +1,92 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb", "tachyon.tbb.vcxproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.common", "tachyon.vcxproj", "{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.serial", "tachyon.serial.vcxproj", "{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb1d", "tachyon.tbb1d.vcxproj", "{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		_GDI Release|Win32 = _GDI Release|Win32
+		_GDI Release|x64 = _GDI Release|x64
+		DD Debug|Win32 = DD Debug|Win32
+		DD Debug|x64 = DD Debug|x64
+		DD Release|Win32 = DD Release|Win32
+		DD Release|x64 = DD Release|x64
+		GDI Debug|Win32 = GDI Debug|Win32
+		GDI Debug|x64 = GDI Debug|x64
+		Description = Tachyon ray-tracer example
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.ActiveCfg = Release|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.Build.0 = Release|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.ActiveCfg = Release|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.Build.0 = Release|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.Build.0 = DDDebug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.ActiveCfg = DDDebug|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.Build.0 = DDDebug|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.ActiveCfg = DDRelease|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.Build.0 = DDRelease|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.ActiveCfg = DDRelease|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.Build.0 = DDRelease|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.ActiveCfg = Debug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.Build.0 = Debug|Win32
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.ActiveCfg = Debug|x64
+		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.Build.0 = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.ActiveCfg = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.Build.0 = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.ActiveCfg = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.Build.0 = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.Build.0 = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.ActiveCfg = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.Build.0 = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.ActiveCfg = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.Build.0 = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.ActiveCfg = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.Build.0 = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.ActiveCfg = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.Build.0 = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.ActiveCfg = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.Build.0 = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
+		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb.icproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb.icproj
deleted file mode 100644
index 58ec5c6..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.tbb.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="tachyon.tbb"
-	ProjectGUID="{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}"
-	VCNestedProjectGUID="{6E9B1702-78E0-4D64-B771-8B274D963B58}"
-	VCNestedProjectFileName="tachyon.tbb.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcproj
deleted file mode 100644
index 0afcccf..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcproj
+++ /dev/null
@@ -1,731 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="tachyon.tbb"
-	ProjectGUID="{6E9B1702-78E0-4D64-B771-8B274D963B58}"
-	RootNamespace="tachyon.tbb"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-		<ProjectReference
-			ReferencedProjectIdentifier="{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-			CopyLocal="false"
-			CopyLocalDependencies="false"
-			CopyLocalSatelliteAssemblies="false"
-			RelativePathToProject=".\tachyon.vcproj"
-		/>
-	</References>
-	<Files>
-		<File
-			RelativePath="..\src\trace.tbb.cpp"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj
new file mode 100644
index 0000000..c97a91a
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6E9B1702-78E0-4D64-B771-8B274D963B58}</ProjectGuid>
+    <RootNamespace>tachyon.tbb</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="tachyon.vcxproj">
+      <Project>{924517df-2b6a-47d5-8a11-cc247cc4d810}</Project>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\trace.tbb.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.icproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.icproj
deleted file mode 100644
index 1c0f608..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="tachyon.tbb1d"
-	ProjectGUID="{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}"
-	VCNestedProjectGUID="{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}"
-	VCNestedProjectFileName="tachyon.tbb1d.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcproj
deleted file mode 100644
index 70c9c77..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcproj
+++ /dev/null
@@ -1,731 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="tachyon.tbb1d"
-	ProjectGUID="{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}"
-	RootNamespace="tachyon.tbb1d"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)\tbb1d"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				EnableIntrinsicFunctions="true"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="$(IntDir)\$(InputName).pdb"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				LinkTimeCodeGeneration="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-		<ProjectReference
-			ReferencedProjectIdentifier="{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-			CopyLocal="false"
-			CopyLocalDependencies="false"
-			CopyLocalSatelliteAssemblies="false"
-			RelativePathToProject=".\tachyon.vcproj"
-		/>
-	</References>
-	<Files>
-		<File
-			RelativePath="..\src\trace.tbb1d.cpp"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj
new file mode 100644
index 0000000..b3291d8
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}</ProjectGuid>
+    <RootNamespace>tachyon.tbb1d</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <ProgramDataBaseFileName>$(IntDir)%(Filename).pdb</ProgramDataBaseFileName>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ProjectReference Include="tachyon.vcxproj">
+      <Project>{924517df-2b6a-47d5-8a11-cc247cc4d810}</Project>
+      <Private>false</Private>
+      <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\trace.tbb1d.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.vcproj b/examples/parallel_for/tachyon/msvs/tachyon.vcproj
deleted file mode 100644
index ec91a77..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon.vcproj
+++ /dev/null
@@ -1,1046 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="tachyon.common"
-	ProjectGUID="{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-	RootNamespace="tachyon.common"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X64"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X64"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X64"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				EnableEnhancedInstructionSet="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="2"
-			WholeProgramOptimization="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="false"
-				PreprocessorDefinitions="DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="2"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X64"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\src\api.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\apigeom.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\apitrigeom.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\bndbox.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\box.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\camera.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\coordsys.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cylinder.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\extvol.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\global.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\grid.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\imageio.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\imap.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\intersect.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\jpeg.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\light.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\objbound.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\parse.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\plane.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ppm.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pthread.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\quadric.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\render.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ring.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\shade.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\sphere.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tachyon_video.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\texture.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tgafile.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\trace_rest.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\triangle.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ui.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\util.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vector.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vol.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\src\api.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\apitrigeom.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\bndbox.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\box.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\camera.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\coordsys.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\cylinder.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\extvol.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\global.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\grid.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\imageio.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\imap.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\intersect.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\jpeg.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\light.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\machine.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\macros.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\objbound.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\parse.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\plane.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ppm.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\pthread.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\quadric.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\render.h"
-				>
-			</File>
-			<File
-				RelativePath="..\msvs\resource.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ring.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\shade.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\sphere.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tachyon_video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\texture.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\tgafile.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\trace.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\triangle.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\types.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\ui.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\util.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vector.h"
-				>
-			</File>
-			<File
-				RelativePath="..\src\vol.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath="..\msvs\gui.ico"
-				>
-			</File>
-			<File
-				RelativePath="..\msvs\gui.rc"
-				>
-			</File>
-			<File
-				RelativePath="..\msvs\small.ico"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Video Layer"
-			>
-			<File
-				RelativePath="..\..\..\common\gui\ddvideo.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories="$(DXSDK_DIR)\include"
-						PreprocessorDefinitions="_WINDOWS;NDEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories="$(DXSDK_DIR)\include"
-						PreprocessorDefinitions="_WINDOWS;NDEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories="$(DXSDK_DIR)\include"
-						PreprocessorDefinitions="_WINDOWS;_DEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories="$(DXSDK_DIR)\include"
-						PreprocessorDefinitions="_WINDOWS;_DEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\gdivideo.cpp"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions="_WINDOWS;_DEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions="_WINDOWS;_DEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions="_WINDOWS;NDEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions="_WINDOWS;NDEBUG;$(NOINHERIT)"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\winvideo.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_for/tachyon/msvs/tachyon.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.vcxproj
new file mode 100644
index 0000000..c179ceb
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/tachyon.vcxproj
@@ -0,0 +1,447 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>tachyon.common</ProjectName>
+    <ProjectGuid>{924517DF-2B6A-47D5-8A11-CC247CC4D810}</ProjectGuid>
+    <RootNamespace>tachyon.common</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <InterproceduralOptimization>true</InterproceduralOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X64 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X64 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X64 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <PreprocessorDefinitions>DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level2</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X64 %(AdditionalOptions)</AdditionalOptions>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\src\api.cpp" />
+    <ClCompile Include="..\src\apigeom.cpp" />
+    <ClCompile Include="..\src\apitrigeom.cpp" />
+    <ClCompile Include="..\src\bndbox.cpp" />
+    <ClCompile Include="..\src\box.cpp" />
+    <ClCompile Include="..\src\camera.cpp" />
+    <ClCompile Include="..\src\coordsys.cpp" />
+    <ClCompile Include="..\src\cylinder.cpp" />
+    <ClCompile Include="..\src\extvol.cpp" />
+    <ClCompile Include="..\src\global.cpp" />
+    <ClCompile Include="..\src\grid.cpp" />
+    <ClCompile Include="..\src\imageio.cpp" />
+    <ClCompile Include="..\src\imap.cpp" />
+    <ClCompile Include="..\src\intersect.cpp" />
+    <ClCompile Include="..\src\jpeg.cpp" />
+    <ClCompile Include="..\src\light.cpp" />
+    <ClCompile Include="..\src\main.cpp" />
+    <ClCompile Include="..\src\objbound.cpp" />
+    <ClCompile Include="..\src\parse.cpp" />
+    <ClCompile Include="..\src\plane.cpp" />
+    <ClCompile Include="..\src\ppm.cpp" />
+    <ClCompile Include="..\src\pthread.cpp" />
+    <ClCompile Include="..\src\quadric.cpp" />
+    <ClCompile Include="..\src\render.cpp" />
+    <ClCompile Include="..\src\ring.cpp" />
+    <ClCompile Include="..\src\shade.cpp" />
+    <ClCompile Include="..\src\sphere.cpp" />
+    <ClCompile Include="..\src\tachyon_video.cpp" />
+    <ClCompile Include="..\src\texture.cpp" />
+    <ClCompile Include="..\src\tgafile.cpp" />
+    <ClCompile Include="..\src\trace_rest.cpp" />
+    <ClCompile Include="..\src\triangle.cpp" />
+    <ClCompile Include="..\src\ui.cpp" />
+    <ClCompile Include="..\src\util.cpp" />
+    <ClCompile Include="..\src\vector.cpp" />
+    <ClCompile Include="..\src\vol.cpp" />
+    <ClCompile Include="..\..\..\common\gui\d2dvideo.cpp">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">_WINDOWS;_DEBUG</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">_WINDOWS;_DEBUG</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">_WINDOWS;NDEBUG</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">_WINDOWS;NDEBUG</PreprocessorDefinitions>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\..\common\gui\gdivideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">true</ExcludedFromBuild>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_WINDOWS;_DEBUG</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_WINDOWS;_DEBUG</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_WINDOWS;NDEBUG</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;NDEBUG</PreprocessorDefinitions>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\src\api.h" />
+    <ClInclude Include="..\src\apitrigeom.h" />
+    <ClInclude Include="..\src\bndbox.h" />
+    <ClInclude Include="..\src\box.h" />
+    <ClInclude Include="..\src\camera.h" />
+    <ClInclude Include="..\src\coordsys.h" />
+    <ClInclude Include="..\src\cylinder.h" />
+    <ClInclude Include="..\src\extvol.h" />
+    <ClInclude Include="..\src\global.h" />
+    <ClInclude Include="..\src\grid.h" />
+    <ClInclude Include="..\src\imageio.h" />
+    <ClInclude Include="..\src\imap.h" />
+    <ClInclude Include="..\src\intersect.h" />
+    <ClInclude Include="..\src\jpeg.h" />
+    <ClInclude Include="..\src\light.h" />
+    <ClInclude Include="..\src\machine.h" />
+    <ClInclude Include="..\src\macros.h" />
+    <ClInclude Include="..\src\objbound.h" />
+    <ClInclude Include="..\src\parse.h" />
+    <ClInclude Include="..\src\plane.h" />
+    <ClInclude Include="..\src\ppm.h" />
+    <ClInclude Include="..\src\pthread.h" />
+    <ClInclude Include="..\src\quadric.h" />
+    <ClInclude Include="..\src\render.h" />
+    <ClInclude Include="..\msvs\resource.h" />
+    <ClInclude Include="..\src\ring.h" />
+    <ClInclude Include="..\src\shade.h" />
+    <ClInclude Include="..\src\sphere.h" />
+    <ClInclude Include="..\src\tachyon_video.h" />
+    <ClInclude Include="..\src\texture.h" />
+    <ClInclude Include="..\src\tgafile.h" />
+    <ClInclude Include="..\src\trace.h" />
+    <ClInclude Include="..\src\triangle.h" />
+    <ClInclude Include="..\src\types.h" />
+    <ClInclude Include="..\src\ui.h" />
+    <ClInclude Include="..\src\util.h" />
+    <ClInclude Include="..\src\vector.h" />
+    <ClInclude Include="..\src\vol.h" />
+    <ClInclude Include="..\..\..\common\gui\video.h" />
+    <ClInclude Include="..\..\..\common\gui\winvideo.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\msvs\gui.ico" />
+    <None Include="..\msvs\small.ico" />
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\msvs\gui.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/tachyon_cl.sln b/examples/parallel_for/tachyon/msvs/tachyon_cl.sln
deleted file mode 100644
index 8b2ff25..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon_cl.sln
+++ /dev/null
@@ -1,92 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb", "tachyon.tbb.vcproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.common", "tachyon.vcproj", "{924517DF-2B6A-47D5-8A11-CC247CC4D810}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.serial", "tachyon.serial.vcproj", "{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb1d", "tachyon.tbb1d.vcproj", "{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-		Description = Tachyon ray-tracer example
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.Build.0 = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.Build.0 = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.Build.0 = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.Build.0 = DDDebug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.Build.0 = DDRelease|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.Build.0 = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.Build.0 = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.ActiveCfg = Release|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/tachyon/msvs/tachyon_icl.sln b/examples/parallel_for/tachyon/msvs/tachyon_icl.sln
deleted file mode 100644
index f4eca61..0000000
--- a/examples/parallel_for/tachyon/msvs/tachyon_icl.sln
+++ /dev/null
@@ -1,149 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "tachyon.tbb", "tachyon.tbb.icproj", "{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830} = {5F685DBD-9A04-4E94-A1CA-FC48FE799830}
-	EndProjectSection
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "tachyon.common", "tachyon.icproj", "{5F685DBD-9A04-4E94-A1CA-FC48FE799830}"
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "tachyon.serial", "tachyon.serial.icproj", "{E085A8DB-75D4-4927-9631-6368E6D0EE72}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830} = {5F685DBD-9A04-4E94-A1CA-FC48FE799830}
-	EndProjectSection
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "tachyon.tbb1d", "tachyon.tbb1d.icproj", "{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}"
-	ProjectSection(ProjectDependencies) = postProject
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830} = {5F685DBD-9A04-4E94-A1CA-FC48FE799830}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-		Description = Tachyon ray-tracer example
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Debug|x64.Build.0 = DDDebug|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.DD Release|x64.Build.0 = DDRelease|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}.GDI Debug|x64.Build.0 = Debug|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|Win32.Build.0 = Release|Win32
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|x64.ActiveCfg = Release|x64
-		{2D08E05F-D0E0-48A7-9597-28B95ACE70B6}._GDI Release|x64.Build.0 = Release|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Debug|x64.Build.0 = DDDebug|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.DD Release|x64.Build.0 = DDRelease|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}.GDI Debug|x64.Build.0 = Debug|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|Win32.Build.0 = Release|Win32
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|x64.ActiveCfg = Release|x64
-		{5F685DBD-9A04-4E94-A1CA-FC48FE799830}._GDI Release|x64.Build.0 = Release|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Debug|x64.Build.0 = DDDebug|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.DD Release|x64.Build.0 = DDRelease|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}.GDI Debug|x64.Build.0 = Debug|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|Win32.Build.0 = Release|Win32
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|x64.ActiveCfg = Release|x64
-		{E085A8DB-75D4-4927-9631-6368E6D0EE72}._GDI Release|x64.Build.0 = Release|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Debug|x64.Build.0 = DDDebug|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.DD Release|x64.Build.0 = DDRelease|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}.GDI Debug|x64.Build.0 = Debug|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|Win32.Build.0 = Release|Win32
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|x64.ActiveCfg = Release|x64
-		{4F173D3A-AE8C-4F7E-A4D0-6527F46B8495}._GDI Release|x64.Build.0 = Release|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.Build.0 = Debug|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.Build.0 = Release|Win32
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.ActiveCfg = Release|x64
-		{6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.Build.0 = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.Build.0 = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64
-		{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml
new file mode 100644
index 0000000..df49ca8
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml
@@ -0,0 +1,15 @@
+<Application
+    x:Class="tbbTachyon.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:tbbTachyon">
+
+    <Application.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="Common/StandardStyles.xaml"/>
+            </ResourceDictionary.MergedDictionaries>
+
+        </ResourceDictionary>
+    </Application.Resources>
+</Application>
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp
new file mode 100644
index 0000000..c07773a
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp
@@ -0,0 +1,54 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#include "DirectXPage.xaml.h"
+
+using namespace tbbTachyon;
+
+using namespace Platform;
+using namespace Windows::ApplicationModel;
+using namespace Windows::ApplicationModel::Activation;
+using namespace Windows::Foundation;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::Storage;
+using namespace Windows::UI::Xaml;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::UI::Xaml::Controls::Primitives;
+using namespace Windows::UI::Xaml::Data;
+using namespace Windows::UI::Xaml::Input;
+using namespace Windows::UI::Xaml::Interop;
+using namespace Windows::UI::Xaml::Media;
+using namespace Windows::UI::Xaml::Navigation;
+
+#include "src/tachyon_video.h"
+
+App::App()
+{
+    InitializeComponent();
+}
+
+void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs)
+{
+    m_directXPage = ref new DirectXPage();
+
+    // Place the frame in the current Window and ensure that it is active
+    Window::Current->Content = m_directXPage;
+    Window::Current->Activate();
+}
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h
new file mode 100644
index 0000000..3cafe31
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h
@@ -0,0 +1,41 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+
+#pragma once
+
+#include "App.g.h"
+#include "DirectXPage.xaml.h"
+
+namespace tbbTachyon
+{
+    /// <summary>
+    /// Provides application-specific behavior to supplement the default Application class.
+    /// </summary>
+    ref class App sealed
+    {
+    public:
+        App();
+        virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) override;
+
+    private:
+        DirectXPage^ m_directXPage;
+    };
+}
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png
new file mode 100644
index 0000000..bc91a8e
Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png differ
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png
new file mode 100644
index 0000000..cddf7a1
Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png differ
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png
new file mode 100644
index 0000000..37af270
Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png differ
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png
new file mode 100644
index 0000000..42a13f0
Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png differ
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml b/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml
new file mode 100644
index 0000000..81fb398
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml
@@ -0,0 +1,1007 @@
+<!--
+    This file contains XAML styles that simplify application development.
+
+    These are not merely convenient, but are required by most Visual Studio project and item templates.
+    Removing, renaming, or otherwise modifying the content of these files may result in a project that
+    does not build, or that will not build once additional pages are added.  If variations on these
+    styles are desired it is recommended that you copy the content under a new name and modify your
+    private copy.
+-->
+
+<ResourceDictionary
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+
+    <!-- Non-brush values that vary across themes -->
+    
+    <ResourceDictionary.ThemeDictionaries>
+        <ResourceDictionary x:Key="Default">
+            <x:String x:Key="BackButtonGlyph">&#xE071;</x:String>
+            <x:String x:Key="BackButtonSnappedGlyph">&#xE0BA;</x:String>
+        </ResourceDictionary>
+
+        <ResourceDictionary x:Key="HighContrast">
+            <x:String x:Key="BackButtonGlyph">&#xE0A6;</x:String>
+            <x:String x:Key="BackButtonSnappedGlyph">&#xE0C4;</x:String>
+        </ResourceDictionary>
+    </ResourceDictionary.ThemeDictionaries>
+
+    <!-- RichTextBlock styles -->
+
+    <Style x:Key="BasicRichTextStyle" TargetType="RichTextBlock">
+        <Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/>
+        <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/>
+        <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/>
+        <Setter Property="TextTrimming" Value="WordEllipsis"/>
+        <Setter Property="TextWrapping" Value="Wrap"/>
+        <Setter Property="Typography.StylisticSet20" Value="True"/>
+        <Setter Property="Typography.DiscretionaryLigatures" Value="True"/>
+        <Setter Property="Typography.CaseSensitiveForms" Value="True"/>
+    </Style>
+
+    <Style x:Key="BaselineRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BasicRichTextStyle}">
+        <Setter Property="LineHeight" Value="20"/>
+        <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/>
+        <!-- Properly align text along its baseline -->
+        <Setter Property="RenderTransform">
+            <Setter.Value>
+                <TranslateTransform X="-1" Y="4"/>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="ItemRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}"/>
+
+    <Style x:Key="BodyRichTextStyle" TargetType="RichTextBlock" BasedOn="{StaticResource BaselineRichTextStyle}">
+        <Setter Property="FontWeight" Value="SemiLight"/>
+    </Style>
+
+    <!-- TextBlock styles -->
+
+    <Style x:Key="BasicTextStyle" TargetType="TextBlock">
+        <Setter Property="Foreground" Value="{StaticResource ApplicationForegroundThemeBrush}"/>
+        <Setter Property="FontSize" Value="{StaticResource ControlContentThemeFontSize}"/>
+        <Setter Property="FontFamily" Value="{StaticResource ContentControlThemeFontFamily}"/>
+        <Setter Property="TextTrimming" Value="WordEllipsis"/>
+        <Setter Property="TextWrapping" Value="Wrap"/>
+        <Setter Property="Typography.StylisticSet20" Value="True"/>
+        <Setter Property="Typography.DiscretionaryLigatures" Value="True"/>
+        <Setter Property="Typography.CaseSensitiveForms" Value="True"/>
+    </Style>
+
+    <Style x:Key="BaselineTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BasicTextStyle}">
+        <Setter Property="LineHeight" Value="20"/>
+        <Setter Property="LineStackingStrategy" Value="BlockLineHeight"/>
+        <!-- Properly align text along its baseline -->
+        <Setter Property="RenderTransform">
+            <Setter.Value>
+                <TranslateTransform X="-1" Y="4"/>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="HeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
+        <Setter Property="FontSize" Value="56"/>
+        <Setter Property="FontWeight" Value="Light"/>
+        <Setter Property="LineHeight" Value="40"/>
+        <Setter Property="RenderTransform">
+            <Setter.Value>
+                <TranslateTransform X="-2" Y="8"/>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="SubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
+        <Setter Property="FontSize" Value="26.667"/>
+        <Setter Property="FontWeight" Value="Light"/>
+        <Setter Property="LineHeight" Value="30"/>
+        <Setter Property="RenderTransform">
+            <Setter.Value>
+                <TranslateTransform X="-1" Y="6"/>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="TitleTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
+        <Setter Property="FontWeight" Value="SemiBold"/>
+    </Style>
+
+    <Style x:Key="ItemTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}"/>
+
+    <Style x:Key="BodyTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
+        <Setter Property="FontWeight" Value="SemiLight"/>
+    </Style>
+
+    <Style x:Key="CaptionTextStyle" TargetType="TextBlock" BasedOn="{StaticResource BaselineTextStyle}">
+        <Setter Property="FontSize" Value="12"/>
+        <Setter Property="Foreground" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/>
+    </Style>
+
+    <!-- Button styles -->
+
+    <!--
+        TextButtonStyle is used to style a Button using subheader-styled text with no other adornment.  This
+        style is used in the GroupedItemsPage as a group header and in the FileOpenPickerPage for triggering
+        commands.
+    -->
+    <Style x:Key="TextButtonStyle" TargetType="Button">
+        <Setter Property="MinWidth" Value="0"/>
+        <Setter Property="MinHeight" Value="0"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="Button">
+                    <Grid Background="Transparent">
+                        <TextBlock
+                            x:Name="Text"
+                            Text="{TemplateBinding Content}"
+                            Margin="3,-7,3,10"
+                            TextWrapping="NoWrap"
+                            Style="{StaticResource SubheaderTextStyle}"/>
+                        <Rectangle
+                            x:Name="FocusVisualWhite"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="1.5"/>
+                        <Rectangle
+                            x:Name="FocusVisualBlack"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="0.5"/>
+
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup x:Name="CommonStates">
+                                <VisualState x:Name="Normal"/>
+                                <VisualState x:Name="PointerOver">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Pressed">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Disabled">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="FocusStates">
+                                <VisualState x:Name="Focused">
+                                    <Storyboard>
+                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/>
+                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Unfocused"/>
+                            </VisualStateGroup>
+                        </VisualStateManager.VisualStateGroups>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <!--
+        TextRadioButtonStyle is used to style a RadioButton using subheader-styled text with no other adornment.
+        This style is used in the SearchResultsPage to allow selection among filters.
+    -->
+    <Style x:Key="TextRadioButtonStyle" TargetType="RadioButton">
+        <Setter Property="MinWidth" Value="0"/>
+        <Setter Property="MinHeight" Value="0"/>
+        <Setter Property="Margin" Value="0,0,30,0"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="RadioButton">
+                    <Grid Background="Transparent">
+                        <TextBlock
+                            x:Name="Text"
+                            Text="{TemplateBinding Content}"
+                            Margin="3,-7,3,10"
+                            TextWrapping="NoWrap"
+                            Style="{StaticResource SubheaderTextStyle}"/>
+                        <Rectangle
+                            x:Name="FocusVisualWhite"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="1.5"/>
+                        <Rectangle
+                            x:Name="FocusVisualBlack"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="0.5"/>
+
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup x:Name="CommonStates">
+                                <VisualState x:Name="Normal"/>
+                                <VisualState x:Name="PointerOver">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPointerOverForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Pressed">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationPressedForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Disabled">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonDisabledForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="FocusStates">
+                                <VisualState x:Name="Focused">
+                                    <Storyboard>
+                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity"/>
+                                        <DoubleAnimation Duration="0" To="1" Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Unfocused"/>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="CheckStates">
+                                <VisualState x:Name="Checked"/>
+                                <VisualState x:Name="Unchecked">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Text" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ApplicationSecondaryForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Indeterminate"/>
+                            </VisualStateGroup>
+                        </VisualStateManager.VisualStateGroups>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <!--
+        AppBarButtonStyle is used to style a Button for use in an App Bar.  Content will be centered and should fit within
+        the 40-pixel radius glyph provided.  16-point Segoe UI Symbol is used for content text to simplify the use of glyphs
+        from that font.  AutomationProperties.Name is used for the text below the glyph.
+    -->
+    <Style x:Key="AppBarButtonStyle" TargetType="Button">
+        <Setter Property="Foreground" Value="{StaticResource AppBarItemForegroundThemeBrush}"/>
+        <Setter Property="VerticalAlignment" Value="Stretch"/>
+        <Setter Property="FontFamily" Value="Segoe UI Symbol"/>
+        <Setter Property="FontWeight" Value="Normal"/>
+        <Setter Property="FontSize" Value="20"/>
+        <Setter Property="AutomationProperties.ItemType" Value="App Bar Button"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="Button">
+                    <Grid x:Name="RootGrid" Width="100" Background="Transparent">
+                        <StackPanel VerticalAlignment="Top" Margin="0,12,0,11">
+                            <Grid Width="40" Height="40" Margin="0,0,0,5" HorizontalAlignment="Center">
+                                <TextBlock x:Name="BackgroundGlyph" Text="&#xE0A8;" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0" Foreground="{StaticResource AppBarItemBackgroundThemeBrush}"/>
+                                <TextBlock x:Name="OutlineGlyph" Text="&#xE0A7;" FontFamily="Segoe UI Symbol" FontSize="53.333" Margin="-4,-19,0,0"/>
+                                <ContentPresenter x:Name="Content" HorizontalAlignment="Center" Margin="-1,-1,0,0" VerticalAlignment="Center"/>
+                            </Grid>
+                            <TextBlock
+                                x:Name="TextLabel"
+                                Text="{TemplateBinding AutomationProperties.Name}"
+                                Foreground="{StaticResource AppBarItemForegroundThemeBrush}"
+                                Margin="0,0,2,0"
+                                FontSize="12"
+                                TextAlignment="Center"
+                                Width="88"
+                                MaxHeight="32"
+                                TextTrimming="WordEllipsis"
+                                Style="{StaticResource BasicTextStyle}"/>
+                        </StackPanel>
+                        <Rectangle
+                                x:Name="FocusVisualWhite"
+                                IsHitTestVisible="False"
+                                Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
+                                StrokeEndLineCap="Square"
+                                StrokeDashArray="1,1"
+                                Opacity="0"
+                                StrokeDashOffset="1.5"/>
+                        <Rectangle
+                                x:Name="FocusVisualBlack"
+                                IsHitTestVisible="False"
+                                Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
+                                StrokeEndLineCap="Square"
+                                StrokeDashArray="1,1"
+                                Opacity="0"
+                                StrokeDashOffset="0.5"/>
+
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup x:Name="ApplicationViewStates">
+                                <VisualState x:Name="FullScreenLandscape"/>
+                                <VisualState x:Name="Filled"/>
+                                <VisualState x:Name="FullScreenPortrait">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="60"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Snapped">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Visibility">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Width">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="60"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="CommonStates">
+                                <VisualState x:Name="Normal"/>
+                                <VisualState x:Name="PointerOver">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverBackgroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Pressed">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Disabled">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="TextLabel" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemDisabledForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="FocusStates">
+                                <VisualState x:Name="Focused">
+                                    <Storyboard>
+                                        <DoubleAnimation
+                                                Storyboard.TargetName="FocusVisualWhite"
+                                                Storyboard.TargetProperty="Opacity"
+                                                To="1"
+                                                Duration="0"/>
+                                        <DoubleAnimation
+                                                Storyboard.TargetName="FocusVisualBlack"
+                                                Storyboard.TargetProperty="Opacity"
+                                                To="1"
+                                                Duration="0"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Unfocused" />
+                                <VisualState x:Name="PointerFocused" />
+                            </VisualStateGroup>
+                        </VisualStateManager.VisualStateGroups>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <!-- Standard App Bar buttons -->
+  
+    <Style x:Key="SkipBackAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="SkipBackAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Skip Back"/>
+        <Setter Property="Content" Value="&#xE100;"/>
+    </Style>
+    <Style x:Key="SkipAheadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="SkipAheadAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Skip Ahead"/>
+        <Setter Property="Content" Value="&#xE101;"/>
+    </Style>
+    <Style x:Key="PlayAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="PlayAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Play"/>
+        <Setter Property="Content" Value="&#xE102;"/>
+    </Style>
+    <Style x:Key="PauseAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="PauseAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Pause"/>
+        <Setter Property="Content" Value="&#xE103;"/>
+    </Style>
+    <Style x:Key="EditAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="EditAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Edit"/>
+        <Setter Property="Content" Value="&#xE104;"/>
+    </Style>
+    <Style x:Key="SaveAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="SaveAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Save"/>
+        <Setter Property="Content" Value="&#xE105;"/>
+    </Style>
+    <Style x:Key="DeleteAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="DeleteAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Delete"/>
+        <Setter Property="Content" Value="&#xE106;"/>
+    </Style>
+    <Style x:Key="DiscardAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="DiscardAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Discard"/>
+        <Setter Property="Content" Value="&#xE107;"/>
+    </Style>
+    <Style x:Key="RemoveAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="RemoveAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Remove"/>
+        <Setter Property="Content" Value="&#xE108;"/>
+    </Style>
+    <Style x:Key="AddAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="AddAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Add"/>
+        <Setter Property="Content" Value="&#xE109;"/>
+    </Style>
+    <Style x:Key="NoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="NoAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="No"/>
+        <Setter Property="Content" Value="&#xE10A;"/>
+    </Style>
+    <Style x:Key="YesAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="YesAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Yes"/>
+        <Setter Property="Content" Value="&#xE10B;"/>
+    </Style>
+    <Style x:Key="MoreAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="MoreAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="More"/>
+        <Setter Property="Content" Value="&#xE10C;"/>
+    </Style>
+    <Style x:Key="RedoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="RedoAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Redo"/>
+        <Setter Property="Content" Value="&#xE10D;"/>
+    </Style>
+    <Style x:Key="UndoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="UndoAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Undo"/>
+        <Setter Property="Content" Value="&#xE10E;"/>
+    </Style>
+    <Style x:Key="HomeAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="HomeAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Home"/>
+        <Setter Property="Content" Value="&#xE10F;"/>
+    </Style>
+    <Style x:Key="OutAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="OutAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Out"/>
+        <Setter Property="Content" Value="&#xE110;"/>
+    </Style>
+    <Style x:Key="NextAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="NextAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Next"/>
+        <Setter Property="Content" Value="&#xE111;"/>
+    </Style>
+    <Style x:Key="PreviousAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="PreviousAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Previous"/>
+        <Setter Property="Content" Value="&#xE112;"/>
+    </Style>
+    <Style x:Key="FavoriteAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="FavoriteAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Favorite"/>
+        <Setter Property="Content" Value="&#xE113;"/>
+    </Style>
+    <Style x:Key="PhotoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="PhotoAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Photo"/>
+        <Setter Property="Content" Value="&#xE114;"/>
+    </Style>
+    <Style x:Key="SettingsAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="SettingsAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Settings"/>
+        <Setter Property="Content" Value="&#xE115;"/>
+    </Style>
+    <Style x:Key="VideoAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="VideoAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Video"/>
+        <Setter Property="Content" Value="&#xE116;"/>
+    </Style>
+    <Style x:Key="RefreshAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="RefreshAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Refresh"/>
+        <Setter Property="Content" Value="&#xE117;"/>
+    </Style>
+    <Style x:Key="DownloadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="DownloadAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Download"/>
+        <Setter Property="Content" Value="&#xE118;"/>
+    </Style>
+    <Style x:Key="MailAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="MailAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Mail"/>
+        <Setter Property="Content" Value="&#xE119;"/>
+    </Style>
+    <Style x:Key="SearchAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="SearchAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Search"/>
+        <Setter Property="Content" Value="&#xE11A;"/>
+    </Style>
+    <Style x:Key="HelpAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="HelpAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Help"/>
+        <Setter Property="Content" Value="&#xE11B;"/>
+    </Style>
+    <Style x:Key="UploadAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="UploadAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Upload"/>
+        <Setter Property="Content" Value="&#xE11C;"/>
+    </Style>
+    <Style x:Key="PinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="PinAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Pin"/>
+        <Setter Property="Content" Value="&#xE141;"/>
+    </Style>
+    <Style x:Key="UnpinAppBarButtonStyle" TargetType="Button" BasedOn="{StaticResource AppBarButtonStyle}">
+        <Setter Property="AutomationProperties.AutomationId" Value="UnpinAppBarButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Unpin"/>
+        <Setter Property="Content" Value="&#xE196;"/>
+    </Style>
+
+    <!-- Title area styles -->
+
+    <Style x:Key="PageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}">
+        <Setter Property="TextWrapping" Value="NoWrap"/>
+        <Setter Property="VerticalAlignment" Value="Bottom"/>
+        <Setter Property="Margin" Value="0,0,30,40"/>
+    </Style>
+
+    <Style x:Key="PageSubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource SubheaderTextStyle}">
+        <Setter Property="TextWrapping" Value="NoWrap"/>
+        <Setter Property="VerticalAlignment" Value="Bottom"/>
+        <Setter Property="Margin" Value="0,0,0,40"/>
+    </Style>
+
+    <Style x:Key="SnappedPageHeaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource PageSubheaderTextStyle}">
+        <Setter Property="Margin" Value="0,0,18,40"/>
+    </Style>
+
+    <!--
+        BackButtonStyle is used to style a Button for use in the title area of a page.  Margins appropriate for
+        the conventional page layout are included as part of the style.
+    -->
+    <Style x:Key="BackButtonStyle" TargetType="Button">
+        <Setter Property="MinWidth" Value="0"/>
+        <Setter Property="Width" Value="48"/>
+        <Setter Property="Height" Value="48"/>
+        <Setter Property="Margin" Value="36,0,36,36"/>
+        <Setter Property="VerticalAlignment" Value="Bottom"/>
+        <Setter Property="FontFamily" Value="Segoe UI Symbol"/>
+        <Setter Property="FontWeight" Value="Normal"/>
+        <Setter Property="FontSize" Value="56"/>
+        <Setter Property="AutomationProperties.AutomationId" Value="BackButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Back"/>
+        <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="Button">
+                    <Grid x:Name="RootGrid">
+                        <Grid Margin="-1,-16,0,0">
+                            <TextBlock x:Name="BackgroundGlyph" Text="&#xE0A8;" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/>
+                            <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/>
+                            <TextBlock x:Name="ArrowGlyph" Text="&#xE0A6;" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/>
+                        </Grid>
+                        <Rectangle
+                            x:Name="FocusVisualWhite"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="1.5"/>
+                        <Rectangle
+                            x:Name="FocusVisualBlack"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="0.5"/>
+
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup x:Name="CommonStates">
+                                <VisualState x:Name="Normal" />
+                                <VisualState x:Name="PointerOver">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Pressed">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="ArrowGlyph"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="NormalGlyph"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="0"
+                                            Duration="0"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Disabled">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="FocusStates">
+                                <VisualState x:Name="Focused">
+                                    <Storyboard>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="FocusVisualWhite"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="FocusVisualBlack"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Unfocused" />
+                                <VisualState x:Name="PointerFocused" />
+                            </VisualStateGroup>
+                        </VisualStateManager.VisualStateGroups>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <!--
+        PortraitBackButtonStyle is used to style a Button for use in the title area of a portrait page.  Margins appropriate
+        for the conventional page layout are included as part of the style.
+    -->
+    <Style x:Key="PortraitBackButtonStyle" TargetType="Button" BasedOn="{StaticResource BackButtonStyle}">
+        <Setter Property="Margin" Value="26,0,26,36"/>
+    </Style>
+
+    <!--
+        SnappedBackButtonStyle is used to style a Button for use in the title area of a snapped page.  Margins appropriate
+        for the conventional page layout are included as part of the style.
+        
+        The obvious duplication here is necessary as the glyphs used in snapped are not merely smaller versions of the same
+        glyph but are actually distinct.
+    -->
+    <Style x:Key="SnappedBackButtonStyle" TargetType="Button">
+        <Setter Property="MinWidth" Value="0"/>
+        <Setter Property="Margin" Value="20,0,0,0"/>
+        <Setter Property="VerticalAlignment" Value="Bottom"/>
+        <Setter Property="FontFamily" Value="Segoe UI Symbol"/>
+        <Setter Property="FontWeight" Value="Normal"/>
+        <Setter Property="FontSize" Value="26.66667"/>
+        <Setter Property="AutomationProperties.AutomationId" Value="BackButton"/>
+        <Setter Property="AutomationProperties.Name" Value="Back"/>
+        <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="Button">
+                    <Grid x:Name="RootGrid" Width="36" Height="36" Margin="-3,0,7,33">
+                        <Grid Margin="-1,-1,0,0">
+                            <TextBlock x:Name="BackgroundGlyph" Text="&#xE0D4;" Foreground="{StaticResource BackButtonBackgroundThemeBrush}"/>
+                            <TextBlock x:Name="NormalGlyph" Text="{StaticResource BackButtonSnappedGlyph}" Foreground="{StaticResource BackButtonForegroundThemeBrush}"/>
+                            <TextBlock x:Name="ArrowGlyph" Text="&#xE0C4;" Foreground="{StaticResource BackButtonPressedForegroundThemeBrush}" Opacity="0"/>
+                        </Grid>
+                        <Rectangle
+                            x:Name="FocusVisualWhite"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="1.5"/>
+                        <Rectangle
+                            x:Name="FocusVisualBlack"
+                            IsHitTestVisible="False"
+                            Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}"
+                            StrokeEndLineCap="Square"
+                            StrokeDashArray="1,1"
+                            Opacity="0"
+                            StrokeDashOffset="0.5"/>
+
+                        <VisualStateManager.VisualStateGroups>
+                            <VisualStateGroup x:Name="CommonStates">
+                                <VisualState x:Name="Normal" />
+                                <VisualState x:Name="PointerOver">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverBackgroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonPointerOverForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Pressed">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Foreground">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource BackButtonForegroundThemeBrush}"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="ArrowGlyph"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="NormalGlyph"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="0"
+                                            Duration="0"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Disabled">
+                                    <Storyboard>
+                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid" Storyboard.TargetProperty="Visibility">
+                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
+                                        </ObjectAnimationUsingKeyFrames>
+                                    </Storyboard>
+                                </VisualState>
+                            </VisualStateGroup>
+                            <VisualStateGroup x:Name="FocusStates">
+                                <VisualState x:Name="Focused">
+                                    <Storyboard>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="FocusVisualWhite"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                        <DoubleAnimation
+                                            Storyboard.TargetName="FocusVisualBlack"
+                                            Storyboard.TargetProperty="Opacity"
+                                            To="1"
+                                            Duration="0"/>
+                                    </Storyboard>
+                                </VisualState>
+                                <VisualState x:Name="Unfocused" />
+                                <VisualState x:Name="PointerFocused" />
+                            </VisualStateGroup>
+                        </VisualStateManager.VisualStateGroups>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <!-- Item templates -->
+
+    <!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage -->
+    <DataTemplate x:Key="Standard250x250ItemTemplate">
+        <Grid HorizontalAlignment="Left" Width="250" Height="250">
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}">
+                <TextBlock Text="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/>
+                <TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+    <!-- Grid-appropriate 500 by 130 pixel item template as seen in the GroupDetailPage -->
+    <DataTemplate x:Key="Standard500x130ItemTemplate">
+        <Grid Height="110" Width="480" Margin="10">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0">
+                <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+    <!-- List-appropriate 130 pixel high item template as seen in the SplitPage -->
+    <DataTemplate x:Key="Standard130ItemTemplate">
+        <Grid Height="110" Margin="6">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0">
+                <TextBlock Text="{Binding Title}" Style="{StaticResource TitleTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" MaxHeight="60"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+    <!--
+        List-appropriate 80 pixel high item template as seen in the SplitPage when Filled, and
+        the following pages when snapped: GroupedItemsPage, GroupDetailPage, and ItemsPage
+    -->
+    <DataTemplate x:Key="Standard80ItemTemplate">
+        <Grid Margin="6">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="60" Height="60">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel Grid.Column="1" Margin="10,0,0,0">
+                <TextBlock Text="{Binding Title}" Style="{StaticResource ItemTextStyle}" MaxHeight="40"/>
+                <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+    <!-- Grid-appropriate 300 by 70 pixel item template as seen in the SearchResultsPage -->
+    <DataTemplate x:Key="StandardSmallIcon300x70ItemTemplate">
+        <Grid Width="294" Margin="6">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel Grid.Column="1" Margin="10,-10,0,0">
+                <TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+    <!-- List-appropriate 70 pixel high item template as seen in the SearchResultsPage when Snapped -->
+    <DataTemplate x:Key="StandardSmallIcon70ItemTemplate">
+        <Grid Margin="6">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition Width="*"/>
+            </Grid.ColumnDefinitions>
+            <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,0,0,10" Width="40" Height="40">
+                <Image Source="{Binding Image}" Stretch="UniformToFill"/>
+            </Border>
+            <StackPanel Grid.Column="1" Margin="10,-10,0,0">
+                <TextBlock Text="{Binding Title}" Style="{StaticResource BodyTextStyle}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Subtitle}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
+                <TextBlock Text="{Binding Description}" Style="{StaticResource BodyTextStyle}" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" TextWrapping="NoWrap"/>
+            </StackPanel>
+        </Grid>
+    </DataTemplate>
+
+  <!--
+      190x130 pixel item template for displaying file previews as seen in the FileOpenPickerPage
+      Includes an elaborate tooltip to display title and description text
+  -->
+  <DataTemplate x:Key="StandardFileWithTooltip190x130ItemTemplate">
+        <Grid>
+            <Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}">
+                <Image
+                    Source="{Binding Image}"
+                    Width="190"
+                    Height="130"
+                    HorizontalAlignment="Center"
+                    VerticalAlignment="Center"
+                    Stretch="Uniform"/>
+            </Grid>
+            <ToolTipService.Placement>Mouse</ToolTipService.Placement>
+            <ToolTipService.ToolTip>
+                <ToolTip>
+                    <ToolTip.Style>
+                        <Style TargetType="ToolTip">
+                            <Setter Property="BorderBrush" Value="{StaticResource ToolTipBackgroundThemeBrush}" />
+                            <Setter Property="Padding" Value="0" />
+                        </Style>
+                    </ToolTip.Style>
+
+                    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition Width="Auto"/>
+                            <ColumnDefinition Width="*"/>
+                        </Grid.ColumnDefinitions>
+
+                        <Grid Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="20">
+                            <Image
+                                Source="{Binding Image}"
+                                Width="160"
+                                Height="160"
+                                HorizontalAlignment="Center"
+                                VerticalAlignment="Center"
+                                Stretch="Uniform"/>
+                        </Grid>
+                        <StackPanel Width="200" Grid.Column="1" Margin="0,20,20,20">
+                            <TextBlock Text="{Binding Title}" TextWrapping="NoWrap" Style="{StaticResource BodyTextStyle}"/>
+                            <TextBlock Text="{Binding Description}" MaxHeight="140" Foreground="{StaticResource ApplicationSecondaryForegroundThemeBrush}" Style="{StaticResource BodyTextStyle}"/>
+                        </StackPanel>
+                    </Grid>   
+                </ToolTip>                
+            </ToolTipService.ToolTip>
+        </Grid>
+    </DataTemplate>
+
+    <!-- ScrollViewer styles -->
+
+    <Style x:Key="HorizontalScrollViewerStyle" TargetType="ScrollViewer">
+        <Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
+        <Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
+        <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
+        <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
+        <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
+    </Style>
+
+    <Style x:Key="VerticalScrollViewerStyle" TargetType="ScrollViewer">
+        <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
+        <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
+        <Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
+        <Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" />
+        <Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
+    </Style>
+
+    <!-- Page layout roots typically use entrance animations and a theme-appropriate background color -->
+
+    <Style x:Key="LayoutRootStyle" TargetType="Panel">
+        <Setter Property="Background" Value="{StaticResource ApplicationPageBackgroundThemeBrush}"/>
+        <Setter Property="ChildrenTransitions">
+            <Setter.Value>
+                <TransitionCollection>
+                    <EntranceThemeTransition/>
+                </TransitionCollection>
+            </Setter.Value>
+        </Setter>
+    </Style>
+</ResourceDictionary>
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp
new file mode 100644
index 0000000..b97f3ba
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp
@@ -0,0 +1,413 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#include "pch.h"
+#include "DirectXBase.h" 
+#include <windows.ui.xaml.media.dxinterop.h>
+#include <math.h>
+
+using namespace Microsoft::WRL;
+using namespace Windows::UI::Core;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::Foundation;
+using namespace Windows::Graphics::Display;
+using namespace D2D1;
+
+// Constructor.
+DirectXBase::DirectXBase() :
+    m_dpi(-1.0f)
+{
+}
+
+// Initialize the DirectX resources required to run.
+void DirectXBase::Initialize(CoreWindow^ window, SwapChainBackgroundPanel^ panel, float dpi)
+{
+    m_window = window;
+    m_panel = panel;
+
+    CreateDeviceIndependentResources();
+    CreateDeviceResources();
+    SetDpi(dpi);
+}
+
+// These are the resources required independent of the device.
+void DirectXBase::CreateDeviceIndependentResources()
+{
+    D2D1_FACTORY_OPTIONS options;
+    ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS));
+
+#if defined(_DEBUG)
+     // If the project is in a debug build, enable Direct2D debugging via SDK Layers
+    // TODO: investigate resource leaks reported by a debug version of a device.
+    // options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
+#endif
+
+    DX::ThrowIfFailed(
+        D2D1CreateFactory(
+            D2D1_FACTORY_TYPE_SINGLE_THREADED,
+            __uuidof(ID2D1Factory1),
+            &options,
+            &m_d2dFactory
+            )
+        );
+
+    DX::ThrowIfFailed(
+        DWriteCreateFactory(
+            DWRITE_FACTORY_TYPE_SHARED,
+            __uuidof(IDWriteFactory),
+            &m_dwriteFactory
+            )
+        );
+
+    DX::ThrowIfFailed(
+        CoCreateInstance(
+            CLSID_WICImagingFactory,
+            nullptr,
+            CLSCTX_INPROC_SERVER,
+            IID_PPV_ARGS(&m_wicFactory)
+            )
+        );
+}
+
+// These are the resources that depend on the device.
+void DirectXBase::CreateDeviceResources()
+{
+    // This flag adds support for surfaces with a different color channel ordering than the API default.
+    // It is recommended usage, and is required for compatibility with Direct2D.
+    UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
+    ComPtr<IDXGIDevice> dxgiDevice;
+
+#if defined(_DEBUG)
+    // If the project is in a debug build, enable debugging via SDK Layers with this flag.
+    creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
+#endif
+
+    // This array defines the set of DirectX hardware feature levels this app will support.
+    // Note the ordering should be preserved.
+    // Don't forget to declare your application's minimum required feature level in its
+    // description.  All applications are assumed to support 9.1 unless otherwise stated.
+    D3D_FEATURE_LEVEL featureLevels[] = 
+    {
+        D3D_FEATURE_LEVEL_11_1,
+        D3D_FEATURE_LEVEL_11_0,
+        D3D_FEATURE_LEVEL_10_1,
+        D3D_FEATURE_LEVEL_10_0,
+        D3D_FEATURE_LEVEL_9_3,
+        D3D_FEATURE_LEVEL_9_2,
+        D3D_FEATURE_LEVEL_9_1
+    };
+
+    // Create the DX11 API device object, and get a corresponding context.
+    ComPtr<ID3D11Device> device;
+    ComPtr<ID3D11DeviceContext> context;
+    DX::ThrowIfFailed(
+        D3D11CreateDevice(
+            nullptr,                    // specify null to use the default adapter
+            D3D_DRIVER_TYPE_HARDWARE,
+            0,                          // leave as 0 unless software device
+            creationFlags,              // optionally set debug and Direct2D compatibility flags
+            featureLevels,              // list of feature levels this app can support
+            ARRAYSIZE(featureLevels),   // number of entries in above list
+            D3D11_SDK_VERSION,          // always set this to D3D11_SDK_VERSION for Metro style apps
+            &device,                    // returns the Direct3D device created
+            &m_featureLevel,            // returns feature level of device created
+            &context                    // returns the device immediate context
+            )
+        );
+    // Get the DirectX11.1 device by QI off the DirectX11 one.
+    DX::ThrowIfFailed(
+        device.As(&m_d3dDevice)
+        );
+
+    // And get the corresponding device context in the same way.
+    DX::ThrowIfFailed(
+        context.As(&m_d3dContext)
+        );
+
+    // Obtain the underlying DXGI device of the Direct3D11.1 device.
+    DX::ThrowIfFailed(
+        m_d3dDevice.As(&dxgiDevice)
+        );
+
+    // Obtain the Direct2D device for 2-D rendering.
+    DX::ThrowIfFailed(
+        m_d2dFactory->CreateDevice(dxgiDevice.Get(), &m_d2dDevice)
+        );
+
+    // And get its corresponding device context object.
+    DX::ThrowIfFailed(
+        m_d2dDevice->CreateDeviceContext(
+            D2D1_DEVICE_CONTEXT_OPTIONS_NONE,
+            &m_d2dContext
+            )
+        );
+
+    // Release the swap chain (if it exists) as it will be incompatible with the new device.
+    m_swapChain = nullptr;
+}
+
+// Helps track the DPI in the helper class.
+// This is called in the dpiChanged event handler in the view class.
+void DirectXBase::SetDpi(float dpi)
+{
+    if (dpi != m_dpi)
+    {
+        // Save the DPI of this display in our class.
+        m_dpi = dpi;
+        
+        // Update Direct2D's stored DPI.
+        m_d2dContext->SetDpi(m_dpi, m_dpi);
+
+        // Often a DPI change implies a window size change. In some cases Windows will issues
+        // both a size changed event and a DPI changed event. In this case, the resulting bounds 
+        // will not change, and the window resize code will only be executed once.
+        UpdateForWindowSizeChange();
+    }
+}
+
+// This routine is called in the event handler for the view SizeChanged event.
+void DirectXBase::UpdateForWindowSizeChange()
+{
+    // Only handle window size changed if there is no pending DPI change.
+    if (m_dpi != DisplayProperties::LogicalDpi)
+        return;
+
+    if (m_window->Bounds.Width  != m_windowBounds.Width ||
+        m_window->Bounds.Height != m_windowBounds.Height)
+    {
+        m_d2dContext->SetTarget(nullptr);
+        m_d2dTargetBitmap = nullptr;
+        m_renderTargetView = nullptr;
+        m_depthStencilView = nullptr;
+        CreateWindowSizeDependentResources();
+    }
+}
+
+// Allocate all memory resources that change on a window SizeChanged event.
+void DirectXBase::CreateWindowSizeDependentResources()
+{
+    // Store the window bounds so the next time we get a SizeChanged event we can
+    // avoid rebuilding everything if the size is identical.
+    m_windowBounds = m_window->Bounds;
+
+    // Calculate the necessary swap chain and render target size in pixels.
+    m_renderTargetSize.Width = ConvertDipsToPixels(m_windowBounds.Width);
+    m_renderTargetSize.Height = ConvertDipsToPixels(m_windowBounds.Height);
+
+    // If the swap chain already exists, resize it.
+    if (m_swapChain != nullptr)
+    {
+        DX::ThrowIfFailed(
+            m_swapChain->ResizeBuffers(
+                2,
+                static_cast<UINT>(m_renderTargetSize.Width),
+                static_cast<UINT>(m_renderTargetSize.Height),
+                DXGI_FORMAT_B8G8R8A8_UNORM,
+                0
+                )
+            );
+    }
+    // Otherwise, create a new one.
+    else
+    {
+        // Allocate a descriptor.
+        DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0};
+        swapChainDesc.Width = static_cast<UINT>(m_renderTargetSize.Width); // Match the size of the windowm.
+        swapChainDesc.Height = static_cast<UINT>(m_renderTargetSize.Height);
+        swapChainDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;           // This is the most common swapchain format.
+        swapChainDesc.Stereo = false; 
+        swapChainDesc.SampleDesc.Count = 1;                          // Don't use multi-sampling.
+        swapChainDesc.SampleDesc.Quality = 0;
+        swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
+        swapChainDesc.BufferCount = 2;                               // Use double buffering to enable flip.
+        swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
+        swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; // All Metro style apps must use this SwapEffect.
+        swapChainDesc.Flags = 0;
+
+        // Once the desired swap chain description is configured, it must be created on the same adapter as our D3D Device.
+
+        // First, retrieve the underlying DXGI Device from the D3D Device.
+        ComPtr<IDXGIDevice1> dxgiDevice;
+        DX::ThrowIfFailed(
+            m_d3dDevice.As(&dxgiDevice)
+            );
+
+        // Identify the physical adapter (GPU or card) this device is running on.
+        ComPtr<IDXGIAdapter> dxgiAdapter;
+        DX::ThrowIfFailed(
+            dxgiDevice->GetAdapter(&dxgiAdapter)
+            );
+
+        // And obtain the factory object that created it.
+        ComPtr<IDXGIFactory2> dxgiFactory;
+        DX::ThrowIfFailed(
+            dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory))
+            );
+
+        // Create the swap chain and then associate it with the SwapChainBackgroundPanel.
+        DX::ThrowIfFailed(
+            dxgiFactory->CreateSwapChainForComposition(
+                m_d3dDevice.Get(),
+                &swapChainDesc,
+                nullptr,
+                &m_swapChain
+                )
+            );
+
+        ComPtr<ISwapChainBackgroundPanelNative> panelNative;
+        DX::ThrowIfFailed(
+            reinterpret_cast<IUnknown*>(m_panel)->QueryInterface(IID_PPV_ARGS(&panelNative))
+            );
+        
+        DX::ThrowIfFailed(
+            panelNative->SetSwapChain(m_swapChain.Get())
+            );
+
+        // Ensure that DXGI does not queue more than one frame at a time. This both reduces 
+        // latency and ensures that the application will only render after each VSync, minimizing 
+        // power consumption.
+        DX::ThrowIfFailed(
+            dxgiDevice->SetMaximumFrameLatency(1)
+            );
+    }
+
+    // Obtain the backbuffer for this window which will be the final 3D rendertarget.
+    ComPtr<ID3D11Texture2D> backBuffer;
+    DX::ThrowIfFailed(
+        m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer))
+        );
+
+    // Create a view interface on the rendertarget to use on bind.
+    DX::ThrowIfFailed(
+        m_d3dDevice->CreateRenderTargetView(
+            backBuffer.Get(),
+            nullptr,
+            &m_renderTargetView
+            )
+        );
+
+    // Create a descriptor for the depth/stencil buffer.
+    CD3D11_TEXTURE2D_DESC depthStencilDesc(
+        DXGI_FORMAT_D24_UNORM_S8_UINT, 
+        static_cast<UINT>(m_renderTargetSize.Width),
+        static_cast<UINT>(m_renderTargetSize.Height),
+        1,
+        1,
+        D3D11_BIND_DEPTH_STENCIL
+        );
+
+    // Allocate a 2-D surface as the depth/stencil buffer.
+    ComPtr<ID3D11Texture2D> depthStencil;
+    DX::ThrowIfFailed(
+        m_d3dDevice->CreateTexture2D(
+            &depthStencilDesc,
+            nullptr,
+            &depthStencil
+            )
+        );
+
+    // Create a DepthStencil view on this surface to use on bind.
+    CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D);
+    DX::ThrowIfFailed(
+        m_d3dDevice->CreateDepthStencilView(
+            depthStencil.Get(),
+            &depthStencilViewDesc,
+            &m_depthStencilView
+            )
+        );
+
+    // Create a viewport descriptor of the full window size.
+    CD3D11_VIEWPORT viewport(
+        0.0f,
+        0.0f,
+        m_renderTargetSize.Width,
+        m_renderTargetSize.Height
+        );
+
+    // Set the current viewport using the descriptor.
+    m_d3dContext->RSSetViewports(1, &viewport);
+
+    // Now we set up the Direct2D render target bitmap linked to the swapchain. 
+    // Whenever we render to this bitmap, it will be directly rendered to the 
+    // swapchain associated with the window.
+    D2D1_BITMAP_PROPERTIES1 bitmapProperties = 
+        BitmapProperties1(
+            D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW,
+            PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED),
+            m_dpi,
+            m_dpi
+            );
+
+    // Direct2D needs the DXGI version of the backbuffer surface pointer.
+    ComPtr<IDXGISurface> dxgiBackBuffer;
+    DX::ThrowIfFailed(
+        m_swapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBuffer))
+        );
+
+    // Get a D2D surface from the DXGI back buffer to use as the D2D render target.
+    DX::ThrowIfFailed(
+        m_d2dContext->CreateBitmapFromDxgiSurface(
+            dxgiBackBuffer.Get(),
+            &bitmapProperties,
+            &m_d2dTargetBitmap
+            )
+        );
+
+    // So now we can set the Direct2D render target.
+    m_d2dContext->SetTarget(m_d2dTargetBitmap.Get());
+
+    // Set D2D text anti-alias mode to Grayscale to ensure proper rendering of text on intermediate surfaces.
+    m_d2dContext->SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE);
+}
+
+// Method to deliver the final image to the display.
+void DirectXBase::Present()
+{
+    // The application may optionally specify "dirty" or "scroll" rects to improve efficiency
+    // in certain scenarios.
+    DXGI_PRESENT_PARAMETERS parameters = {0};
+    parameters.DirtyRectsCount = 0;
+    parameters.pDirtyRects = nullptr;
+    parameters.pScrollRect = nullptr;
+    parameters.pScrollOffset = nullptr;
+    
+    // The first argument instructs DXGI to block until VSync, putting the application
+    // to sleep until the next VSync. This ensures we don't waste any cycles rendering
+    // frames that will never be displayed to the screen.
+    HRESULT hr = m_swapChain->Present1(1, 0, &parameters);
+
+    // If the device was removed either by a disconnect or a driver upgrade, we 
+    // must completely reinitialize the renderer.
+    if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
+    {
+        Initialize(m_window.Get(), m_panel, m_dpi);
+    }
+    else
+    {
+        DX::ThrowIfFailed(hr);
+    }
+}
+
+// Method to convert a length in device-independent pixels (DIPs) to a length in physical pixels.
+float DirectXBase::ConvertDipsToPixels(float dips)
+{
+    static const float dipsPerInch = 96.0f;
+    return floor(dips * m_dpi / dipsPerInch + 0.5f); // Round to nearest integer.
+}
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h
new file mode 100644
index 0000000..26807ca
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h
@@ -0,0 +1,92 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#pragma once
+
+#include <wrl/client.h>
+#include <d3d11_1.h>
+#include <d2d1_1.h>
+#include <d2d1effects.h>
+#include <dwrite_1.h>
+#include <wincodec.h>
+#include "App.xaml.h"
+#include <agile.h>
+
+#pragma warning (disable: 4449)
+
+// Helper utilities to make DirectX APIs work with exceptions
+namespace DX
+{
+    inline void ThrowIfFailed(HRESULT hr)
+    {
+        if (FAILED(hr))
+        {
+            // Set a breakpoint on this line to catch DirectX API errors
+            throw Platform::Exception::CreateException(hr);
+        }
+    }
+}
+
+// Helper class that initializes DirectX APIs
+ref class DirectXBase abstract
+{
+internal:
+    DirectXBase();
+
+public:
+    virtual void Initialize(Windows::UI::Core::CoreWindow^ window, Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ panel, float dpi);
+    virtual void CreateDeviceIndependentResources();
+    virtual void CreateDeviceResources();
+    virtual void SetDpi(float dpi);
+    virtual void CreateWindowSizeDependentResources();
+    virtual void UpdateForWindowSizeChange();
+    virtual void Render() = 0;
+    virtual void Present();
+    virtual float ConvertDipsToPixels(float dips);
+
+protected private:
+
+    Platform::Agile<Windows::UI::Core::CoreWindow>         m_window;
+    Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ m_panel;
+
+    // Direct2D Objects
+    Microsoft::WRL::ComPtr<ID2D1Factory1>                  m_d2dFactory;
+    Microsoft::WRL::ComPtr<ID2D1Device>                    m_d2dDevice;
+    Microsoft::WRL::ComPtr<ID2D1DeviceContext>             m_d2dContext;
+    Microsoft::WRL::ComPtr<ID2D1Bitmap1>                   m_d2dTargetBitmap;
+
+    // DirectWrite & Windows Imaging Component Objects
+    Microsoft::WRL::ComPtr<IDWriteFactory1>                m_dwriteFactory;
+    Microsoft::WRL::ComPtr<IWICImagingFactory2>            m_wicFactory;
+
+    // Direct3D Objects
+    Microsoft::WRL::ComPtr<ID3D11Device1>                  m_d3dDevice;
+    Microsoft::WRL::ComPtr<ID3D11DeviceContext1>           m_d3dContext;
+    Microsoft::WRL::ComPtr<IDXGISwapChain1>                m_swapChain;
+    Microsoft::WRL::ComPtr<ID3D11RenderTargetView>         m_renderTargetView;
+    Microsoft::WRL::ComPtr<ID3D11DepthStencilView>         m_depthStencilView;
+
+    D3D_FEATURE_LEVEL                                      m_featureLevel;
+    Windows::Foundation::Size                              m_renderTargetSize;
+    Windows::Foundation::Rect                              m_windowBounds;
+    float                                                  m_dpi;
+};
+
+#pragma warning (default: 4449)
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml
new file mode 100644
index 0000000..a255074
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml
@@ -0,0 +1,31 @@
+<SwapChainBackgroundPanel
+    x:Class="tbbTachyon.DirectXPage"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:tbbTachyon"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d"
+    >
+    <SwapChainBackgroundPanel.RowDefinitions>
+        <RowDefinition Height="15*"/>
+        <RowDefinition Height="17*"/>
+    </SwapChainBackgroundPanel.RowDefinitions>
+    <Page Grid.RowSpan="2" Background="Black" MinHeight="100" MaxHeight="100">
+        <Page.BottomAppBar>
+            <AppBar Padding="10,0,10,0">
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="*" />
+                        <ColumnDefinition Width="100" />
+                        <ColumnDefinition Width="100" />
+                    </Grid.ColumnDefinitions>
+                    <TextBlock Grid.Column="0" x:Name="NumberOfThreadsTextBlock" Text="Number Of Threads: Auto" TextAlignment="Center" TextWrapping="Wrap" Height="54" FontSize="20" VerticalAlignment="Top" HorizontalAlignment="Center"/>
+                    <Slider Grid.Column="0" x:Name="ThreadsSlider" Minimum="0" Maximum="16" TickFrequency="1" TickPlacement="Outside" ValueChanged="ThreadsSliderValueChanged" Height="37" StepFrequency="1" IsThumbToolTipEnabled="False" />
+                    <Button Grid.Column="1" x:Name="ThreadsApply" Style="{StaticResource YesAppBarButtonStyle}" Tag="Apply this number of threads" AutomationProperties.Name="Apply" Click="ThreadsApply_Click" HorizontalAlignment="Right" Visibility="Collapsed"/>
+                    <Button Grid.Column="2" x:Name="Exit" Style="{StaticResource NoAppBarButtonStyle}" Tag="Exit" Click="Exit_Click" AutomationProperties.Name="Exit" HorizontalAlignment="Right" />
+                </Grid>
+            </AppBar>
+        </Page.BottomAppBar>
+    </Page>
+</SwapChainBackgroundPanel>
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.cpp b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.cpp
new file mode 100644
index 0000000..2729d69
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.cpp
@@ -0,0 +1,133 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+
+#include "pch.h"
+#include "DirectXPage.xaml.h"
+#include "tbb/tbb.h"
+
+using namespace tbbTachyon;
+
+using namespace Platform;
+using namespace Windows::Foundation;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::UI::Input;
+using namespace Windows::UI::Core;
+using namespace Windows::UI::Xaml;
+using namespace Windows::UI::Xaml::Controls;
+using namespace Windows::UI::Xaml::Controls::Primitives;
+using namespace Windows::UI::Xaml::Data;
+using namespace Windows::UI::Xaml::Input;
+using namespace Windows::UI::Xaml::Media;
+using namespace Windows::UI::Xaml::Navigation;
+using namespace Windows::Graphics::Display;
+
+#include "src/tachyon_video.h"
+extern int volatile global_number_of_threads;
+extern volatile bool global_isCancelled;
+
+#pragma intrinsic(_BitScanReverse)
+static int log2( unsigned int x ) {
+    DWORD i;
+    _BitScanReverse(&i,(DWORD)x);
+    return (int)i;
+}
+
+const unsigned interval_step_power = 1;
+const unsigned num_interval_steps = 1 << (interval_step_power+1);
+
+DirectXPage::DirectXPage() :
+    m_renderNeeded(true)
+{
+    InitializeComponent();
+
+    m_renderer = ref new tbbTachyonRenderer();
+
+    m_renderer->Initialize(
+        Window::Current->CoreWindow,
+        this,
+        DisplayProperties::LogicalDpi
+        );
+
+    m_eventToken = CompositionTarget::Rendering::add(ref new EventHandler<Object^>(this, &DirectXPage::OnRendering));
+
+    int num_threads = 2*tbb::task_scheduler_init::default_num_threads();
+    // The thread slider has geometric sequence with several intermidiate steps for each interval between 2^N and 2^(N+1).
+    // The nearest (from below) the power of 2.
+    int i_base = log2(num_threads);
+    int base = 1 << i_base;
+    // The step size for the current interval.
+    int step = base / num_interval_steps;
+    // The number of steps inside the interval.
+    int i_step = (num_threads-base)/step;
+
+    ThreadsSlider->Maximum = (i_base-interval_step_power)*num_interval_steps + i_step;
+    global_number_of_threads = m_number_of_threads = tbb::task_scheduler_init::automatic;
+}
+
+DirectXPage::~DirectXPage()
+{
+}
+
+void DirectXPage::OnRendering(Platform::Object^ sender, Platform::Object^ args)
+{
+    if (m_renderNeeded){
+        m_renderer->Render();
+        m_renderer->Present();
+        m_renderNeeded = true;
+    }
+}
+
+void tbbTachyon::DirectXPage::ThreadsApply_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+    if (global_number_of_threads != m_number_of_threads){
+        global_number_of_threads = m_number_of_threads;
+        global_isCancelled = true;
+        video->running = false;
+        m_renderNeeded = true;
+        ThreadsApply->Visibility=Windows::UI::Xaml::Visibility::Collapsed;
+    }
+}
+
+void tbbTachyon::DirectXPage::Exit_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+    m_renderNeeded = false;
+    Application::Current->Exit();
+}
+
+void tbbTachyon::DirectXPage::ThreadsSliderValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e)
+{
+    int pos = (int) e->NewValue;
+
+    // The nearest (from below) the power of 2.
+    int base = pos<num_interval_steps ? 0 : 1 << (pos/num_interval_steps+interval_step_power);
+    // The step size for the current interval.
+    int step = max(1,base/num_interval_steps);
+    m_number_of_threads = base + (pos%num_interval_steps)*step;
+
+    if (m_number_of_threads == 0) m_number_of_threads = tbb::task_scheduler_init::automatic;
+
+    NumberOfThreadsTextBlock->Text="Number Of Threads: " + (m_number_of_threads == tbb::task_scheduler_init::automatic? "Auto": m_number_of_threads.ToString());
+    if (global_number_of_threads != m_number_of_threads){
+        ThreadsApply->Visibility=Windows::UI::Xaml::Visibility::Visible;
+    }else{
+        ThreadsApply->Visibility=Windows::UI::Xaml::Visibility::Collapsed;
+    }
+}
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.h b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.h
new file mode 100644
index 0000000..2c42581
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.h
@@ -0,0 +1,48 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#pragma once
+
+#include "DirectXPage.g.h"
+#include "tbbTachyonRenderer.h"
+
+namespace tbbTachyon
+{
+    [Windows::Foundation::Metadata::WebHostHidden]
+    public ref class DirectXPage sealed
+    {
+    public:
+        DirectXPage();
+
+    private:
+        ~DirectXPage();
+        void OnRendering(Object^ sender, Object^ args);
+
+        Windows::Foundation::EventRegistrationToken m_eventToken;
+
+        tbbTachyonRenderer^ m_renderer;
+        bool m_renderNeeded;
+        int m_number_of_threads;
+
+        void ThreadsSliderValueChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs^ e);
+        void ThreadsApply_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
+        void Exit_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
+    };
+}
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Package.appxmanifest b/examples/parallel_for/tachyon/msvs/win8ui/Package.appxmanifest
new file mode 100644
index 0000000..ed4a813
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/Package.appxmanifest
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
+  <Identity Name="36816596-d167-42e1-bcc0-cd3ec4577997" Publisher="CN=tbbtest" Version="1.0.0.18" />
+  <Properties>
+    <DisplayName>Tachyon Demo</DisplayName>
+    <PublisherDisplayName>test</PublisherDisplayName>
+    <Logo>Assets\StoreLogo.png</Logo>
+  </Properties>
+  <Prerequisites>
+    <OSMinVersion>6.2.0</OSMinVersion>
+    <OSMaxVersionTested>6.2.0</OSMaxVersionTested>
+  </Prerequisites>
+  <Resources>
+    <Resource Language="x-generate" />
+  </Resources>
+  <Applications>
+    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="tbbTachyon.App">
+      <VisualElements DisplayName="Tachyon Demo" Logo="Assets\Logo.png" SmallLogo="Assets\SmallLogo.png" Description="Tachyon Demo demostrates how to use Intel(R) Threading Building Blocks library for Windows Store applications." ForegroundText="light" BackgroundColor="#464646">
+        <DefaultTile ShowName="allLogos" />
+        <SplashScreen Image="Assets\SplashScreen.png" />
+        <InitialRotationPreference>
+          <Rotation Preference="landscape" />
+        </InitialRotationPreference>
+      </VisualElements>
+    </Application>
+  </Applications>
+  <Capabilities>
+    <Capability Name="internetClient" />
+  </Capabilities>
+</Package>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/copy_libraries_and_assets.bat b/examples/parallel_for/tachyon/msvs/win8ui/copy_libraries_and_assets.bat
new file mode 100755
index 0000000..899bb96
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/copy_libraries_and_assets.bat
@@ -0,0 +1,70 @@
+ at echo on
+REM
+REM Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+REM
+REM The source code contained or described herein and all documents related
+REM to the source code ("Material") are owned by Intel Corporation or its
+REM suppliers or licensors.  Title to the Material remains with Intel
+REM Corporation or its suppliers and licensors.  The Material is protected
+REM by worldwide copyright laws and treaty provisions.  No part of the
+REM Material may be used, copied, reproduced, modified, published, uploaded,
+REM posted, transmitted, distributed, or disclosed in any way without
+REM Intel's prior express written permission.
+REM
+REM No license under any patent, copyright, trade secret or other
+REM intellectual property right is granted to or conferred upon you by
+REM disclosure or delivery of the Materials, either expressly, by
+REM implication, inducement, estoppel or otherwise.  Any license under such
+REM intellectual property rights must be express and approved by Intel in
+REM writing.
+REM
+
+:: Getting parameters
+:: Architecture
+if ("%1") == ("") goto error0
+:: Release/Debug
+if ("%2") == ("") goto error0
+:: Output directory
+if ("%3") == ("") goto error0
+set arch=%1
+if ("%2") == ("debug") set postfix=_debug
+set output_dir=%3
+if ("%4") == ("") set dat_file="%output_dir%\..\..\dat\balls.dat"
+
+:: Actually we can set install root by ourselves
+if ("%TBBROOT%") == ("") set TBBROOT=%~dp0..\..\..\..\..\
+
+:: ordered from oldest to newest, so we end with newest available version
+if ("%VS110COMNTOOLS%") NEQ ("") set vc_dir=vc11_ui
+if ("%VS120COMNTOOLS%") NEQ ("") set vc_dir=vc12_ui
+echo Using %vc_dir% libraries
+
+if exist "%TBBROOT%\bin\%arch%\%vc_dir%\tbb%postfix%.dll" set interim_path=bin\%arch%
+if exist "%TBBROOT%..\redist\%arch%\tbb\%vc_dir%\tbb%postfix%.dll" set interim_path=..\redist\%arch%\tbb
+if exist "%TBBROOT%\lib\%arch%\%vc_dir%\tbb%postfix%.lib" set interim_lib_path=lib\%arch%
+if ("%interim_path%") == ("") goto error1
+if ("%interim_lib_path%") == ("") goto error1
+
+:: We know everything we wanted and there are no errors
+:: Copying binaries
+
+copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb%postfix%.dll" "%output_dir%"
+copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb%postfix%.pdb" "%output_dir%"
+copy "%TBBROOT%\%interim_path%\%vc_dir%\tbbmalloc%postfix%.dll" "%output_dir%"
+copy "%TBBROOT%\%interim_path%\%vc_dir%\tbbmalloc%postfix%.pdb" "%output_dir%"
+copy "%TBBROOT%\%interim_lib_path%\%vc_dir%\tbb%postfix%.lib" "%output_dir%"
+
+:: Copying DAT-file
+echo Using DAT-file %dat_file% 
+if exist %dat_file% copy %dat_file% "%output_dir%\Assets\balls.dat"
+
+goto end
+:error0
+echo Custom build script usage: %0 [ia32 or intel64] [release or debug] [output dir] [dat-file]
+exit /B 1
+:error1
+echo Could not determine path to Intel TBB libraries
+exit /B 1
+
+:end
+exit /B 0
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/pch.h b/examples/parallel_for/tachyon/msvs/win8ui/pch.h
new file mode 100644
index 0000000..9140a8f
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/pch.h
@@ -0,0 +1,29 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#pragma once
+
+#include <wrl/client.h>
+#include <d3d11_1.h>
+#include <d2d1_1.h>
+#include <d2d1effects.h>
+#include <dwrite_1.h>
+#include <wincodec.h>
+#include "App.xaml.h"
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.sln b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.sln
new file mode 100644
index 0000000..a737295
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.sln
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbbTachyon", "tbbTachyon.vcxproj", "{E20CB432-6730-4021-A372-1C81A333518A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E6DDEA39-7910-47F9-A0E3-56AD7E62ACBD}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|Win32.Build.0 = Debug|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|Win32.Deploy.0 = Debug|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|x64.ActiveCfg = Debug|x64
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|x64.Build.0 = Debug|x64
+		{E20CB432-6730-4021-A372-1C81A333518A}.Debug|x64.Deploy.0 = Debug|x64
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|Win32.ActiveCfg = Release|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|Win32.Build.0 = Release|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|Win32.Deploy.0 = Release|Win32
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|x64.ActiveCfg = Release|x64
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|x64.Build.0 = Release|x64
+		{E20CB432-6730-4021-A372-1C81A333518A}.Release|x64.Deploy.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj
new file mode 100644
index 0000000..a215998
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{e20cb432-6730-4021-a372-1c81a333518a}</ProjectGuid>
+    <RootNamespace>tbbTachyon</RootNamespace>
+    <DefaultLanguage>en-US</DefaultLanguage>
+    <VCTargetsPath Condition="'$(VCTargetsPath11)' != '' and '$(VSVersion)' == '' and '$(VisualStudioVersion)' == ''">$(VCTargetsPath11)</VCTargetsPath>
+    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
+    <AppContainerApplication>true</AppContainerApplication>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <UseIntelTBB>true</UseIntelTBB>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+    <UseIntelTBB>true</UseIntelTBB>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+    <PlatformToolset>v110</PlatformToolset>
+    <UseIntelTBB>true</UseIntelTBB>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+    <PlatformToolset>v110</PlatformToolset>
+    <UseIntelTBB>true</UseIntelTBB>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <PackageCertificateKeyFile>tbbTachyon_TemporaryKey.pfx</PackageCertificateKeyFile>
+    <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision>
+    <PackageCertificateThumbprint>5E3EA4A6008AD66D2487EFC68BB366981685295D</PackageCertificateThumbprint>
+  </PropertyGroup>
+  <ItemDefinitionGroup>
+    <Link>
+      <AdditionalDependencies>d2d1.lib; d3d11.lib; dxgi.lib; ole32.lib; windowscodecs.lib; dwrite.lib; dxguid.lib; %(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateWindowsMetadata>true</GenerateWindowsMetadata>
+      <LinkTimeCodeGeneration Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Default</LinkTimeCodeGeneration>
+      <LinkTimeCodeGeneration Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Default</LinkTimeCodeGeneration>
+      <LinkTimeCodeGeneration Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Default</LinkTimeCodeGeneration>
+      <LinkTimeCodeGeneration Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Default</LinkTimeCodeGeneration>
+    </Link>
+    <ClCompile>
+      <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+      <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common;$(ProjectDir)\..\..;$(ProjectDir)\..\..\..\..\..\include;$(ProjectDir);$(IntermediateOutputPath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">_DEBUG;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <UseMSVC Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</UseMSVC>
+    </ClCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="App.xaml.h">
+      <DependentUpon>App.xaml</DependentUpon>
+    </ClInclude>
+    <ClInclude Include="DirectXPage.xaml.h">
+      <DependentUpon>DirectXPage.xaml</DependentUpon>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Page Include="Common\StandardStyles.xaml">
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="DirectXPage.xaml">
+      <SubType>Designer</SubType>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <AppxManifest Include="Package.appxmanifest">
+      <SubType>Designer</SubType>
+    </AppxManifest>
+    <None Include="Assets\balls.dat">
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
+    </None>
+    <CustomBuild Include="copy_libraries_and_assets.bat">
+      <FileType>Document</FileType>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">call "$(SolutionDir)\copy_libraries_and_assets.bat" ia32 release $(SolutionDir)</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">call "$(SolutionDir)\copy_libraries_and_assets.bat" ia32 debug "$(SolutionDir)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">call "$(SolutionDir)\copy_libraries_and_assets.bat" intel64 debug "$(SolutionDir)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">call "$(SolutionDir)\copy_libraries_and_assets.bat" intel64 release "$(SolutionDir)"</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying libraries to the solution...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying libraries to the solution...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Copying libraries to the solution...</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Copying libraries to the solution...</Message>
+      <TreatOutputAsContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</TreatOutputAsContent>
+      <TreatOutputAsContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</TreatOutputAsContent>
+      <TreatOutputAsContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</TreatOutputAsContent>
+      <TreatOutputAsContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</TreatOutputAsContent>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">tbb_debug.dll</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">tbb_debug.dll</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">tbb.dll</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">tbb.dll</Outputs>
+    </CustomBuild>
+    <None Include="tbb.dll">
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
+      <FileType>CppCode</FileType>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DeploymentContent>
+    </None>
+    <None Include="tbbmalloc.dll">
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</DeploymentContent>
+      <FileType>CppCode</FileType>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</DeploymentContent>
+    </None>
+    <None Include="tbbmalloc_debug.dll">
+      <FileType>CppCode</FileType>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</DeploymentContent>
+    </None>
+    <None Include="tbbTachyon_TemporaryKey.pfx" />
+    <None Include="tbb_debug.dll">
+      <FileType>CppCode</FileType>
+      <DeploymentContent>true</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</DeploymentContent>
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</DeploymentContent>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="Assets\Logo.png" />
+    <Image Include="Assets\SmallLogo.png" />
+    <Image Include="Assets\StoreLogo.png" />
+    <Image Include="Assets\SplashScreen.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include=".\tbbTachyonRenderer.h" />
+    <ClInclude Include="DirectXBase.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\common\gui\convideo.cpp" />
+    <ClCompile Include="..\..\src\api.cpp" />
+    <ClCompile Include="..\..\src\apigeom.cpp" />
+    <ClCompile Include="..\..\src\apitrigeom.cpp" />
+    <ClCompile Include="..\..\src\bndbox.cpp" />
+    <ClCompile Include="..\..\src\box.cpp" />
+    <ClCompile Include="..\..\src\camera.cpp" />
+    <ClCompile Include="..\..\src\coordsys.cpp" />
+    <ClCompile Include="..\..\src\cylinder.cpp" />
+    <ClCompile Include="..\..\src\extvol.cpp" />
+    <ClCompile Include="..\..\src\global.cpp" />
+    <ClCompile Include="..\..\src\grid.cpp" />
+    <ClCompile Include="..\..\src\imageio.cpp" />
+    <ClCompile Include="..\..\src\imap.cpp" />
+    <ClCompile Include="..\..\src\intersect.cpp" />
+    <ClCompile Include="..\..\src\jpeg.cpp" />
+    <ClCompile Include="..\..\src\light.cpp" />
+    <ClCompile Include="..\..\src\main.cpp" />
+    <ClCompile Include="..\..\src\objbound.cpp" />
+    <ClCompile Include="..\..\src\parse.cpp" />
+    <ClCompile Include="..\..\src\plane.cpp" />
+    <ClCompile Include="..\..\src\ppm.cpp" />
+    <ClCompile Include="..\..\src\pthread.cpp" />
+    <ClCompile Include="..\..\src\quadric.cpp" />
+    <ClCompile Include="..\..\src\render.cpp" />
+    <ClCompile Include="..\..\src\ring.cpp" />
+    <ClCompile Include="..\..\src\shade.cpp" />
+    <ClCompile Include="..\..\src\sphere.cpp" />
+    <ClCompile Include="..\..\src\tachyon_video.cpp" />
+    <ClCompile Include="..\..\src\texture.cpp" />
+    <ClCompile Include="..\..\src\tgafile.cpp" />
+    <ClCompile Include="..\..\src\trace.tbb.cpp" />
+    <ClCompile Include="..\..\src\trace_rest.cpp" />
+    <ClCompile Include="..\..\src\triangle.cpp" />
+    <ClCompile Include="..\..\src\ui.cpp" />
+    <ClCompile Include="..\..\src\util.cpp" />
+    <ClCompile Include="..\..\src\vector.cpp" />
+    <ClCompile Include="..\..\src\vol.cpp" />
+    <ClCompile Include=".\tbbTachyonRenderer.cpp" />
+    <ClCompile Include="DirectXBase.cpp" />
+    <ClCompile Include="App.xaml.cpp">
+      <DependentUpon>App.xaml</DependentUpon>
+    </ClCompile>
+    <ClCompile Include="DirectXPage.xaml.cpp">
+      <DependentUpon>DirectXPage.xaml</DependentUpon>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj.filters b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj.filters
new file mode 100644
index 0000000..56341ac
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyon.vcxproj.filters
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Page Include="Common\StandardStyles.xaml">
+      <Filter>Resources\Common</Filter>
+    </Page>
+    <Image Include="Assets\Logo.png">
+      <Filter>Resources\Assets</Filter>
+    </Image>
+    <Image Include="Assets\SmallLogo.png">
+      <Filter>Resources\Assets</Filter>
+    </Image>
+    <Image Include="Assets\StoreLogo.png">
+      <Filter>Resources\Assets</Filter>
+    </Image>
+    <Image Include="Assets\SplashScreen.png">
+      <Filter>Resources\Assets</Filter>
+    </Image>
+    <Filter Include="Resources">
+      <UniqueIdentifier>{a5d732ac-1380-4b99-910c-c5685c48ec08}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resources\Common">
+      <UniqueIdentifier>e20cb432-6730-4021-a372-1c81a333518a</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Resources\Assets">
+      <UniqueIdentifier>ac5c7e6e-0221-4a78-85c7-20768e92cf5a</UniqueIdentifier>
+    </Filter>
+    <Page Include="DirectXPage.xaml">
+      <Filter>Frontend</Filter>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="App.xaml.cpp" />
+    <ClCompile Include="DirectXPage.xaml.cpp" />
+    <ClCompile Include="..\..\src\api.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\apigeom.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\apitrigeom.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\bndbox.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\box.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\camera.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\coordsys.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\cylinder.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\extvol.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\global.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\grid.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\imageio.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\imap.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\intersect.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\jpeg.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\light.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\objbound.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\parse.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\plane.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\ppm.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\pthread.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\quadric.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\render.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\ring.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\shade.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\sphere.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\tachyon_video.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\texture.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\tgafile.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\trace.tbb.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\trace_rest.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\triangle.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\ui.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\util.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\vector.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\vol.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\common\gui\convideo.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\main.cpp">
+      <Filter>Backend</Filter>
+    </ClCompile>
+    <ClCompile Include="DirectXBase.cpp">
+      <Filter>Frontend</Filter>
+    </ClCompile>
+    <ClCompile Include=".\tbbTachyonRenderer.cpp">
+      <Filter>Frontend</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="App.xaml.h" />
+    <ClInclude Include="DirectXPage.xaml.h" />
+    <ClInclude Include="DirectXBase.h">
+      <Filter>Frontend</Filter>
+    </ClInclude>
+    <ClInclude Include=".\tbbTachyonRenderer.h">
+      <Filter>Frontend</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Assets\balls.dat">
+      <Filter>Resources\Assets</Filter>
+    </None>
+    <None Include="tbb.dll">
+      <Filter>Libraries</Filter>
+    </None>
+    <None Include="tbbmalloc.dll">
+      <Filter>Libraries</Filter>
+    </None>
+    <None Include="tbb_debug.dll">
+      <Filter>Libraries</Filter>
+    </None>
+    <None Include="tbbmalloc_debug.dll">
+      <Filter>Libraries</Filter>
+    </None>
+    <None Include="tbbTachyon_TemporaryKey.pfx">
+      <Filter>Frontend</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <Filter Include="Libraries">
+      <UniqueIdentifier>{a70d1cf5-5cc8-4f50-a6d2-92d2b973df86}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Scripts">
+      <UniqueIdentifier>{eb414f7a-2d2d-4ff5-93fe-458cc3021423}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Backend">
+      <UniqueIdentifier>{77eb2f1c-7dec-4360-8989-e9ad18034e10}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Frontend">
+      <UniqueIdentifier>{d825a994-3d08-4764-9945-ec9aafc1f496}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="copy_libraries_and_assets.bat">
+      <Filter>Scripts</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Filter>Frontend</Filter>
+    </ApplicationDefinition>
+  </ItemGroup>
+  <ItemGroup>
+    <AppxManifest Include="Package.appxmanifest">
+      <Filter>Frontend</Filter>
+    </AppxManifest>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.cpp b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.cpp
new file mode 100644
index 0000000..0949ea6
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.cpp
@@ -0,0 +1,190 @@
+/*
+Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+The source code contained or described herein and all documents related
+to the source code ("Material") are owned by Intel Corporation or its
+suppliers or licensors.  Title to the Material remains with Intel
+Corporation or its suppliers and licensors.  The Material is protected
+by worldwide copyright laws and treaty provisions.  No part of the
+Material may be used, copied, reproduced, modified, published, uploaded,
+posted, transmitted, distributed, or disclosed in any way without
+Intel's prior express written permission.
+
+No license under any patent, copyright, trade secret or other
+intellectual property right is granted to or conferred upon you by
+disclosure or delivery of the Materials, either expressly, by
+implication, inducement, estoppel or otherwise.  Any license under such
+intellectual property rights must be express and approved by Intel in
+writing.
+*/
+
+#include "pch.h"
+#include "tbbTachyonRenderer.h"
+#include <DirectXMath.h>
+#include <process.h>
+#include <thread>
+#include "../../src/tachyon_video.h"
+#include "tbb/tbb.h"
+
+using namespace Microsoft::WRL;
+using namespace Windows::Foundation;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::UI::Core;
+using namespace DirectX;
+
+tbbTachyonRenderer::tbbTachyonRenderer() :
+    m_renderNeeded(true)
+{
+}
+
+tbbTachyonRenderer::~tbbTachyonRenderer()
+{
+}
+
+void tbbTachyonRenderer::CreateDeviceIndependentResources()
+{
+    DirectXBase::CreateDeviceIndependentResources();
+
+    DX::ThrowIfFailed(
+        m_dwriteFactory->CreateTextFormat(
+        L"Segoe UI",
+        nullptr,
+        DWRITE_FONT_WEIGHT_NORMAL,
+        DWRITE_FONT_STYLE_NORMAL,
+        DWRITE_FONT_STRETCH_NORMAL,
+        32.0f,
+        L"en-US",
+        &m_textFormat
+        )
+        );
+
+    DX::ThrowIfFailed(
+        m_textFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING)
+        );
+
+}
+
+unsigned int __stdcall example_main(void*);
+
+float g_ratiox, g_ratioy;
+extern unsigned int *g_pImg;
+extern int g_sizex, g_sizey;
+extern int global_xsize, global_ysize;
+extern int volatile global_number_of_threads;
+extern volatile long global_startTime;
+extern volatile long global_elapsedTime;
+
+#define SHOW_TEXT 1
+
+void tbbTachyonRenderer::CreateDeviceResources()
+{
+
+    DirectXBase::CreateDeviceResources();
+
+    DX::ThrowIfFailed(
+        m_d2dContext->CreateSolidColorBrush(
+        D2D1::ColorF(D2D1::ColorF::Green),
+        &m_Brush
+        )
+        );
+
+    D2D1_BITMAP_PROPERTIES1 properties = D2D1::BitmapProperties1(
+        D2D1_BITMAP_OPTIONS_TARGET,
+        D2D1::PixelFormat(
+        DXGI_FORMAT_R8G8B8A8_UNORM,
+        D2D1_ALPHA_MODE_IGNORE
+        )
+        );
+
+
+    //Setting manual rendering size
+    global_xsize = 800;
+    global_ysize = int(global_xsize/m_window->Bounds.Width*m_window->Bounds.Height);
+    D2D1_SIZE_U opacityBitmapSize = D2D1::SizeU(global_xsize, global_ysize);
+
+    DX::ThrowIfFailed(
+        m_d2dContext->CreateBitmap(
+        opacityBitmapSize,
+        (BYTE*)g_pImg,
+        sizeof(unsigned int)*g_sizex,
+        &properties,
+        &m_opacityBitmap
+        )
+        );
+
+    m_d2dContext->SetTarget(m_opacityBitmap.Get());
+    m_d2dContext->BeginDraw();
+
+    m_d2dContext->Clear(D2D1::ColorF(D2D1::ColorF::Black, 0.0f));
+
+    DX::ThrowIfFailed(
+        m_d2dContext->EndDraw()
+        );
+
+    std::thread* thread_tmp=new std::thread(example_main, (void*)NULL);
+
+}
+
+void tbbTachyonRenderer::CreateWindowSizeDependentResources()
+{
+    DirectXBase::CreateWindowSizeDependentResources();
+}
+
+void tbbTachyonRenderer::Render()
+{
+    D2D1_SIZE_F size = m_d2dContext->GetSize();
+
+#if SHOW_TEXT
+    if (video && video->running)
+        global_elapsedTime=(long)(time(NULL)-global_startTime);
+    
+    Platform::String^ text= "Running in " +
+        (global_number_of_threads == tbb::task_scheduler_init::automatic? "all hardware threads: ":
+            global_number_of_threads.ToString() + (global_number_of_threads==1?" thread: ":" threads: ")) +
+        global_elapsedTime.ToString() + (global_elapsedTime>1?" seconds":" second");
+
+    g_ratiox=float(size.width/1024.0);
+    g_ratioy=float(size.height/512.0);
+
+    DX::ThrowIfFailed(
+        m_dwriteFactory->CreateTextLayout(
+        text->Data(),
+        text->Length(),
+        m_textFormat.Get(),
+        1000, // maxWidth
+        1000, // maxHeight
+        &m_textLayout
+        )
+        );
+
+    m_textLayout->GetMetrics(&m_textMetrics);
+#endif
+
+    m_d2dContext->BeginDraw();
+
+    if(g_pImg)m_opacityBitmap->CopyFromMemory( NULL,(BYTE*)g_pImg, sizeof(unsigned int)*g_sizex );
+
+    m_d2dContext->DrawBitmap( m_opacityBitmap.Get(), D2D1::RectF(0,0,size.width,size.height) );
+
+#if SHOW_TEXT
+    m_d2dContext->DrawTextLayout(
+        D2D1::Point2F(0.0f, 0.0f),
+        m_textLayout.Get(),
+        m_Brush.Get(),
+        D2D1_DRAW_TEXT_OPTIONS_CLIP
+        );
+#endif
+
+    HRESULT hr = m_d2dContext->EndDraw();
+
+    if (hr == D2DERR_RECREATE_TARGET){
+        m_d2dContext->SetTarget(nullptr);
+        m_d2dTargetBitmap = nullptr;
+        CreateWindowSizeDependentResources();
+    }else{
+        DX::ThrowIfFailed(hr);
+    }
+
+    m_renderNeeded = false;
+}
+
diff --git a/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.h b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.h
new file mode 100644
index 0000000..443138e
--- /dev/null
+++ b/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.h
@@ -0,0 +1,46 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    The source code contained or described herein and all documents related
+    to the source code ("Material") are owned by Intel Corporation or its
+    suppliers or licensors.  Title to the Material remains with Intel
+    Corporation or its suppliers and licensors.  The Material is protected
+    by worldwide copyright laws and treaty provisions.  No part of the
+    Material may be used, copied, reproduced, modified, published, uploaded,
+    posted, transmitted, distributed, or disclosed in any way without
+    Intel's prior express written permission.
+
+    No license under any patent, copyright, trade secret or other
+    intellectual property right is granted to or conferred upon you by
+    disclosure or delivery of the Materials, either expressly, by
+    implication, inducement, estoppel or otherwise.  Any license under such
+    intellectual property rights must be express and approved by Intel in
+    writing.
+*/
+
+#pragma once
+
+#include <wrl.h>
+#include "DirectXBase.h"
+
+ref class tbbTachyonRenderer sealed : public DirectXBase
+{
+public:
+    tbbTachyonRenderer();
+    virtual void CreateDeviceIndependentResources() override;
+    virtual void CreateDeviceResources() override;
+    virtual void CreateWindowSizeDependentResources() override;
+    virtual void Render() override;
+    void Update(float timeTotal, float timeDelta);
+
+    void UpdateView(Windows::Foundation::Point deltaViewPosition);
+
+private:
+    Microsoft::WRL::ComPtr<ID2D1SolidColorBrush> m_Brush;
+    Microsoft::WRL::ComPtr<IDWriteTextFormat> m_textFormat;
+    Microsoft::WRL::ComPtr<ID2D1Bitmap1> m_opacityBitmap;
+    Microsoft::WRL::ComPtr<IDWriteTextLayout> m_textLayout;
+    DWRITE_TEXT_METRICS m_textMetrics;
+    bool m_renderNeeded;
+    ~tbbTachyonRenderer();
+};
diff --git a/examples/parallel_for/tachyon/src/api.cpp b/examples/parallel_for/tachyon/src/api.cpp
index 6c9a1af..ea2f57c 100644
--- a/examples/parallel_for/tachyon/src/api.cpp
+++ b/examples/parallel_for/tachyon/src/api.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,8 @@
 */
 
 /*
- * api.c - This file contains all of the API calls that are defined for
+ * api.cpp - This file contains all of the API calls that are defined for
  *         external driver code to use.  
- * 
- *  $Id: api.cpp,v 1.5 2007-02-22 17:54:14 Exp $
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/api.h b/examples/parallel_for/tachyon/src/api.h
index 5026fda..b27ead2 100644
--- a/examples/parallel_for/tachyon/src/api.h
+++ b/examples/parallel_for/tachyon/src/api.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/apigeom.cpp b/examples/parallel_for/tachyon/src/apigeom.cpp
index 07faed7..12fd8c3 100644
--- a/examples/parallel_for/tachyon/src/apigeom.cpp
+++ b/examples/parallel_for/tachyon/src/apigeom.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,8 @@
 */
 
 /*
- * api.c - This file contains all of the API calls that are defined for
+ * api.cpp - This file contains all of the API calls that are defined for
  *         external driver code to use.  
- * 
- *  $Id: apigeom.cpp,v 1.2 2007-02-22 17:54:15 Exp $
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/apitrigeom.cpp b/examples/parallel_for/tachyon/src/apitrigeom.cpp
index 367e07e..1d79ec0 100644
--- a/examples/parallel_for/tachyon/src/apitrigeom.cpp
+++ b/examples/parallel_for/tachyon/src/apitrigeom.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,8 @@
 */
 
 /*
- * apitrigeom.c - This file contains code for generating triangle tesselated
+ * apitrigeom.cpp - This file contains code for generating triangle tesselated
  *                geometry, for use with OpenGL, XGL, etc.
- * 
- *  $Id: apitrigeom.cpp,v 1.2 2007-02-22 17:54:15 Exp $
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/apitrigeom.h b/examples/parallel_for/tachyon/src/apitrigeom.h
index ea247a9..48f0fd6 100644
--- a/examples/parallel_for/tachyon/src/apitrigeom.h
+++ b/examples/parallel_for/tachyon/src/apitrigeom.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/bndbox.cpp b/examples/parallel_for/tachyon/src/bndbox.cpp
index c879fa6..2ef12ba 100644
--- a/examples/parallel_for/tachyon/src/bndbox.cpp
+++ b/examples/parallel_for/tachyon/src/bndbox.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * bndbox.c - This file contains the functions for dealing with bounding boxes.
- *
- *  $Id: bndbox.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * bndbox.cpp - This file contains the functions for dealing with bounding boxes.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/bndbox.h b/examples/parallel_for/tachyon/src/bndbox.h
index 0ef7648..488e9bb 100644
--- a/examples/parallel_for/tachyon/src/bndbox.h
+++ b/examples/parallel_for/tachyon/src/bndbox.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/box.cpp b/examples/parallel_for/tachyon/src/box.cpp
index f356286..70e28c3 100644
--- a/examples/parallel_for/tachyon/src/box.cpp
+++ b/examples/parallel_for/tachyon/src/box.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * box.c - This file contains the functions for dealing with boxes.
- *
- *  $Id: box.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * box.cpp - This file contains the functions for dealing with boxes.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/box.h b/examples/parallel_for/tachyon/src/box.h
index 2628b2c..6074790 100644
--- a/examples/parallel_for/tachyon/src/box.h
+++ b/examples/parallel_for/tachyon/src/box.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/camera.cpp b/examples/parallel_for/tachyon/src/camera.cpp
index 7bdbebc..60dcbc4 100644
--- a/examples/parallel_for/tachyon/src/camera.cpp
+++ b/examples/parallel_for/tachyon/src/camera.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * camera.c - This file contains all of the functions for doing camera work.
- *
- *  $Id: camera.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * camera.cpp - This file contains all of the functions for doing camera work.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/camera.h b/examples/parallel_for/tachyon/src/camera.h
index 9f94b56..6b235bc 100644
--- a/examples/parallel_for/tachyon/src/camera.h
+++ b/examples/parallel_for/tachyon/src/camera.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/coordsys.cpp b/examples/parallel_for/tachyon/src/coordsys.cpp
index 10d9fc0..537288b 100644
--- a/examples/parallel_for/tachyon/src/coordsys.cpp
+++ b/examples/parallel_for/tachyon/src/coordsys.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * coordsys.c -  Routines to translate from one coordinate system to another.
- *
- *  $Id: coordsys.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * coordsys.cpp -  Routines to translate from one coordinate system to another.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/coordsys.h b/examples/parallel_for/tachyon/src/coordsys.h
index 35d0026..3668d12 100644
--- a/examples/parallel_for/tachyon/src/coordsys.h
+++ b/examples/parallel_for/tachyon/src/coordsys.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/cylinder.cpp b/examples/parallel_for/tachyon/src/cylinder.cpp
index c3b9b0a..3590ee0 100644
--- a/examples/parallel_for/tachyon/src/cylinder.cpp
+++ b/examples/parallel_for/tachyon/src/cylinder.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * cylinder.c - This file contains the functions for dealing with cylinders.
- *
- *  $Id: cylinder.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * cylinder.cpp - This file contains the functions for dealing with cylinders.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/cylinder.h b/examples/parallel_for/tachyon/src/cylinder.h
index 319e60a..4120ce5 100644
--- a/examples/parallel_for/tachyon/src/cylinder.h
+++ b/examples/parallel_for/tachyon/src/cylinder.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/extvol.cpp b/examples/parallel_for/tachyon/src/extvol.cpp
index 62481b6..f9effd3 100644
--- a/examples/parallel_for/tachyon/src/extvol.cpp
+++ b/examples/parallel_for/tachyon/src/extvol.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * extvol.c - Volume rendering helper routines etc.
- *
- *  $Id: extvol.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * extvol.cpp - Volume rendering helper routines etc.
  */
 
 #include<stdio.h>
diff --git a/examples/parallel_for/tachyon/src/extvol.h b/examples/parallel_for/tachyon/src/extvol.h
index 4726580..66f83c0 100644
--- a/examples/parallel_for/tachyon/src/extvol.h
+++ b/examples/parallel_for/tachyon/src/extvol.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/global.cpp b/examples/parallel_for/tachyon/src/global.cpp
index e1e94f1..6ce462d 100644
--- a/examples/parallel_for/tachyon/src/global.cpp
+++ b/examples/parallel_for/tachyon/src/global.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,7 @@
 */
 
 /*
- * global.c - any/all global data items etc should be in this file
- *
- *  $Id: global.cpp,v 1.2 2007-02-22 17:54:15 Exp $
- *
+ * global.cpp - any/all global data items etc should be in this file
  */
 
 #include "types.h"
diff --git a/examples/parallel_for/tachyon/src/global.h b/examples/parallel_for/tachyon/src/global.h
index 5b9ff60..847fb1d 100644
--- a/examples/parallel_for/tachyon/src/global.h
+++ b/examples/parallel_for/tachyon/src/global.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/grid.cpp b/examples/parallel_for/tachyon/src/grid.cpp
index c424c79..1810caa 100644
--- a/examples/parallel_for/tachyon/src/grid.cpp
+++ b/examples/parallel_for/tachyon/src/grid.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,7 @@
 */
 
 /*
- * grid.c - spatial subdivision efficiency structures
- *
- * $Id: grid.cpp,v 1.2 2007-02-22 17:54:15 Exp $
- * 
+ * grid.cpp - spatial subdivision efficiency structures
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/grid.h b/examples/parallel_for/tachyon/src/grid.h
index 3866cbc..edc295b 100644
--- a/examples/parallel_for/tachyon/src/grid.h
+++ b/examples/parallel_for/tachyon/src/grid.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/imageio.cpp b/examples/parallel_for/tachyon/src/imageio.cpp
index 042ab46..8b07372 100644
--- a/examples/parallel_for/tachyon/src/imageio.cpp
+++ b/examples/parallel_for/tachyon/src/imageio.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- *  imageio.c - This file deals with reading/writing image files
- *
- *  $Id: imageio.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ *  imageio.cpp - This file deals with reading/writing image files
  */ 
 
 /* For our puposes, we're interested only in the 3 byte per pixel 24 bit
@@ -95,7 +85,7 @@ int fakeimage(char * name, int * xres, int * yres, unsigned char ** imgdata) {
 int readimage(rawimage * img) {
   int rc;
   int xres, yres;
-  unsigned char * imgdata;
+  unsigned char * imgdata = NULL;
   char * name = img->name;
 
   if (strstr(name, ".ppm")) { 
diff --git a/examples/parallel_for/tachyon/src/imageio.h b/examples/parallel_for/tachyon/src/imageio.h
index 0f3e424..b47b8e9 100644
--- a/examples/parallel_for/tachyon/src/imageio.h
+++ b/examples/parallel_for/tachyon/src/imageio.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/imap.cpp b/examples/parallel_for/tachyon/src/imap.cpp
index 4df0e62..b27f9bd 100644
--- a/examples/parallel_for/tachyon/src/imap.cpp
+++ b/examples/parallel_for/tachyon/src/imap.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * imap.c - This file contains code for doing image map type things.  
- *
- *  $Id: imap.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * imap.cpp - This file contains code for doing image map type things.  
  */
 
 #include "machine.h"
@@ -139,7 +129,8 @@ color ImageMap(rawimage * image, flt u, flt v) {
 
 rawimage * AllocateImage(char * filename) { 
   rawimage * newimage = NULL;
-  int i, len, intable;
+  int i, intable;
+  size_t len;
 
   intable=0;
   if (numimages!=0) {
diff --git a/examples/parallel_for/tachyon/src/imap.h b/examples/parallel_for/tachyon/src/imap.h
index c2bfd88..4f31acc 100644
--- a/examples/parallel_for/tachyon/src/imap.h
+++ b/examples/parallel_for/tachyon/src/imap.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/intersect.cpp b/examples/parallel_for/tachyon/src/intersect.cpp
index cfb39f7..6545d64 100644
--- a/examples/parallel_for/tachyon/src/intersect.cpp
+++ b/examples/parallel_for/tachyon/src/intersect.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * intersect.c - This file contains code for CSG and intersection routines.
- *
- *  $Id: intersect.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * intersect.cpp - This file contains code for CSG and intersection routines.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/intersect.h b/examples/parallel_for/tachyon/src/intersect.h
index 85c7b7c..0ec3e1e 100644
--- a/examples/parallel_for/tachyon/src/intersect.h
+++ b/examples/parallel_for/tachyon/src/intersect.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/jpeg.cpp b/examples/parallel_for/tachyon/src/jpeg.cpp
index afe3833..0c635c4 100644
--- a/examples/parallel_for/tachyon/src/jpeg.cpp
+++ b/examples/parallel_for/tachyon/src/jpeg.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- *  jpeg.c - This file deals with JPEG format image files (reading/writing)
- *
- *  $Id: jpeg.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ *  jpeg.cpp - This file deals with JPEG format image files (reading/writing)
  */ 
 
 /*
diff --git a/examples/parallel_for/tachyon/src/jpeg.h b/examples/parallel_for/tachyon/src/jpeg.h
index e260ab7..b4f2a6a 100644
--- a/examples/parallel_for/tachyon/src/jpeg.h
+++ b/examples/parallel_for/tachyon/src/jpeg.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/light.cpp b/examples/parallel_for/tachyon/src/light.cpp
index 11ed339..39fb164 100644
--- a/examples/parallel_for/tachyon/src/light.cpp
+++ b/examples/parallel_for/tachyon/src/light.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * light.c - This file contains declarations and defines for light sources.
- *
- *  $Id: light.cpp,v 1.2 2007-02-22 17:54:15 Exp $
+ * light.cpp - This file contains declarations and defines for light sources.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/light.h b/examples/parallel_for/tachyon/src/light.h
index 75db06f..5e7e61a 100644
--- a/examples/parallel_for/tachyon/src/light.h
+++ b/examples/parallel_for/tachyon/src/light.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/machine.h b/examples/parallel_for/tachyon/src/machine.h
index cf2db12..976a461 100644
--- a/examples/parallel_for/tachyon/src/machine.h
+++ b/examples/parallel_for/tachyon/src/machine.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/macros.h b/examples/parallel_for/tachyon/src/macros.h
index 18ccbfb..47792b5 100644
--- a/examples/parallel_for/tachyon/src/macros.h
+++ b/examples/parallel_for/tachyon/src/macros.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/main.cpp b/examples/parallel_for/tachyon/src/main.cpp
index abd87d2..fe02914 100644
--- a/examples/parallel_for/tachyon/src/main.cpp
+++ b/examples/parallel_for/tachyon/src/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -68,6 +60,14 @@
 #include "tachyon_video.h"
 #include "../../../common/utility/utility.h"
 
+#if WIN8UI_EXAMPLE
+#include "tbb/tbb.h"
+volatile long global_startTime = 0;
+volatile long global_elapsedTime = 0;
+volatile bool global_isCancelled = false;
+volatile int global_number_of_threads;
+#endif
+
 SceneHandle global_scene;
 int global_xsize;     /*  size of graphic image rendered in window (from hres, vres)  */
 int global_ysize;
@@ -94,6 +94,86 @@ typedef struct {
   char camfilename[1024]; /* camera filename */
 } argoptions;
 
+void initoptions(argoptions * opt) {
+    memset(opt, 0, sizeof(argoptions));
+    opt->foundfilename = -1;
+    opt->useoutfilename = -1;
+    opt->verbosemode = -1;
+    opt->antialiasing = -1;
+    opt->displaymode = -1;
+    opt->boundmode = -1; 
+    opt->boundthresh = -1; 
+    opt->usecamfile = -1;
+}
+
+#if WIN8UI_EXAMPLE
+int CreateScene() {
+
+   char* filename = "Assets/balls.dat";
+
+    global_scene = rt_newscene();
+    rt_initialize();
+
+    if ( readmodel(filename, global_scene) != 0 ) {
+        rt_finalize();
+        return -1;
+    }
+
+    // need these early for create_graphics_window() so grab these here...
+    scenedef *scene = (scenedef *) global_scene;
+
+    // scene->hres and scene->vres should be equal to screen resolution
+    scene->hres = global_xwinsize = global_xsize;
+    scene->vres = global_ywinsize = global_ysize;  
+
+    return 0;
+}
+
+unsigned int __stdcall example_main(void *)
+{
+    try {
+
+        if ( CreateScene() != 0 )
+            exit(-1);
+
+        tachyon_video tachyon;
+        tachyon.threaded = true;
+        tachyon.init_console();
+
+        // always using window even if(!global_usegraphics)
+        global_usegraphics = 
+            tachyon.init_window(global_xwinsize, global_ywinsize);
+        if(!tachyon.running)
+            exit(-1);
+
+        video = &tachyon;
+
+        for(;;) {
+            global_elapsedTime = 0;
+            global_startTime=(long) time(NULL);
+            global_isCancelled=false;
+            if (video)video->running = true;
+            tbb::task_scheduler_init init (global_number_of_threads);
+            memset(g_pImg, 0, sizeof(unsigned int) * global_xsize * global_ysize);
+            tachyon.main_loop();
+            global_elapsedTime = (long)(time(NULL)-global_startTime);
+            video->running=false;
+            //The timer to restart drawing then it is complete.
+            int timer=50;
+            while( (  !global_isCancelled && (timer--)>0 ) ){
+                rt_sleep( 100 );
+            }
+        }
+        return NULL;
+
+    } catch ( std::exception& e ) {
+        std::cerr<<"error occurred. error text is :\"" <<e.what()<<"\"\n";
+        return 1;
+    }
+}
+
+#else
+
 static char *window_title_string (int argc, const char **argv)
 {
     int i;
@@ -117,18 +197,6 @@ static char *window_title_string (int argc, const char **argv)
     return name;
 }
 
-void initoptions(argoptions * opt) {
-    memset(opt, 0, sizeof(argoptions));
-    opt->foundfilename = -1;
-    opt->useoutfilename = -1;
-    opt->verbosemode = -1;
-    opt->antialiasing = -1;
-    opt->displaymode = -1;
-    opt->boundmode = -1; 
-    opt->boundthresh = -1; 
-    opt->usecamfile = -1;
-}
-
 int useoptions(argoptions * opt, SceneHandle scene) {
   if (opt->useoutfilename == 1) {
     rt_outputfile(scene, opt->outfilename);
@@ -255,3 +323,5 @@ int main (int argc, char *argv[]) {
         return 1;
     }
 }
+#endif
+
diff --git a/examples/parallel_for/tachyon/src/objbound.cpp b/examples/parallel_for/tachyon/src/objbound.cpp
index 157af36..929202a 100644
--- a/examples/parallel_for/tachyon/src/objbound.cpp
+++ b/examples/parallel_for/tachyon/src/objbound.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,8 @@
 */
 
 /*
- * objbound.c - This file contains the functions to find bounding boxes
+ * objbound.cpp - This file contains the functions to find bounding boxes
  *              for the various primitives 
- *
- *  $Id: objbound.cpp,v 1.2 2007-02-22 17:54:15 Exp $
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/objbound.h b/examples/parallel_for/tachyon/src/objbound.h
index 06f3522..a97c456 100644
--- a/examples/parallel_for/tachyon/src/objbound.h
+++ b/examples/parallel_for/tachyon/src/objbound.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/parse.cpp b/examples/parallel_for/tachyon/src/parse.cpp
index 4c79f2d..a9e26b1 100644
--- a/examples/parallel_for/tachyon/src/parse.cpp
+++ b/examples/parallel_for/tachyon/src/parse.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * parse.c - an UltraLame (tm) parser for simple data files...
- *
- *  $Id: parse.cpp,v 1.3 2007-02-22 17:54:15 Exp $
+ * parse.cpp - an UltraLame (tm) parser for simple data files...
  */
 
 // Try preventing lots of GCC warnings about ignored results of fscanf etc.
@@ -95,7 +85,7 @@ static int numobjectsparsed;    /* total number of objects parsed so far   */
 static color scenebackcol;   /* scene background color                  */
 
 static int stringcmp(const char * a, const char * b) {
-  int i, s, l;
+  size_t i, s, l;
 
   s=strlen(a);
   l=strlen(b);
diff --git a/examples/parallel_for/tachyon/src/parse.h b/examples/parallel_for/tachyon/src/parse.h
index 0611a35..b43e3f4 100644
--- a/examples/parallel_for/tachyon/src/parse.h
+++ b/examples/parallel_for/tachyon/src/parse.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/plane.cpp b/examples/parallel_for/tachyon/src/plane.cpp
index 08acb01..0d56b00 100644
--- a/examples/parallel_for/tachyon/src/plane.cpp
+++ b/examples/parallel_for/tachyon/src/plane.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * plane.c - This file contains the functions for dealing with planes.
- *
- *  $Id: plane.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * plane.cpp - This file contains the functions for dealing with planes.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/plane.h b/examples/parallel_for/tachyon/src/plane.h
index 4426caf..459128f 100644
--- a/examples/parallel_for/tachyon/src/plane.h
+++ b/examples/parallel_for/tachyon/src/plane.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/ppm.cpp b/examples/parallel_for/tachyon/src/ppm.cpp
index 73b222f..8651f91 100644
--- a/examples/parallel_for/tachyon/src/ppm.cpp
+++ b/examples/parallel_for/tachyon/src/ppm.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- *  ppm.c - This file deals with PPM format image files (reading/writing)
- *
- *  $Id: ppm.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ *  ppm.cpp - This file deals with PPM format image files (reading/writing)
  */ 
 
 /* For our puposes, we're interested only in the 3 byte per pixel 24 bit
@@ -105,7 +95,8 @@ static int getint(FILE * dfile) {
 int readppm(char * name, int * xres, int * yres, unsigned char **imgdata) {
   char data[200];  
   FILE * ifp;
-  int i, bytesread;
+  int i;
+  size_t bytesread;
   int datasize;
  
   ifp=fopen(name, "r");  
diff --git a/examples/parallel_for/tachyon/src/ppm.h b/examples/parallel_for/tachyon/src/ppm.h
index 027b89b..0747f9d 100644
--- a/examples/parallel_for/tachyon/src/ppm.h
+++ b/examples/parallel_for/tachyon/src/ppm.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/pthread.cpp b/examples/parallel_for/tachyon/src/pthread.cpp
index 5a7aa00..64f78eb 100644
--- a/examples/parallel_for/tachyon/src/pthread.cpp
+++ b/examples/parallel_for/tachyon/src/pthread.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/pthread_w.h b/examples/parallel_for/tachyon/src/pthread_w.h
index fb56839..009844f 100644
--- a/examples/parallel_for/tachyon/src/pthread_w.h
+++ b/examples/parallel_for/tachyon/src/pthread_w.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/quadric.cpp b/examples/parallel_for/tachyon/src/quadric.cpp
index 9bba200..59a869d 100644
--- a/examples/parallel_for/tachyon/src/quadric.cpp
+++ b/examples/parallel_for/tachyon/src/quadric.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * quadric.c - This file contains the functions for dealing with quadrics.
- *
- *  $Id: quadric.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * quadric.cpp - This file contains the functions for dealing with quadrics.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/quadric.h b/examples/parallel_for/tachyon/src/quadric.h
index aad2ff4..18b011f 100644
--- a/examples/parallel_for/tachyon/src/quadric.h
+++ b/examples/parallel_for/tachyon/src/quadric.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/render.cpp b/examples/parallel_for/tachyon/src/render.cpp
index e5826ec..1a75d06 100644
--- a/examples/parallel_for/tachyon/src/render.cpp
+++ b/examples/parallel_for/tachyon/src/render.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * render.c - This file contains the main program and driver for the raytracer.
- *
- *  $Id: render.cpp,v 1.5 2007-02-22 18:17:51 amalakho Exp $
+ * render.cpp - This file contains the main program and driver for the raytracer.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/render.h b/examples/parallel_for/tachyon/src/render.h
index a01cf8d..9a2a926 100644
--- a/examples/parallel_for/tachyon/src/render.h
+++ b/examples/parallel_for/tachyon/src/render.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/ring.cpp b/examples/parallel_for/tachyon/src/ring.cpp
index fe6b4e4..a14a5d1 100644
--- a/examples/parallel_for/tachyon/src/ring.cpp
+++ b/examples/parallel_for/tachyon/src/ring.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * ring.c - This file contains the functions for dealing with rings.
- *
- *  $Id: ring.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * ring.cpp - This file contains the functions for dealing with rings.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/ring.h b/examples/parallel_for/tachyon/src/ring.h
index 64fd4c1..68be511 100644
--- a/examples/parallel_for/tachyon/src/ring.h
+++ b/examples/parallel_for/tachyon/src/ring.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/shade.cpp b/examples/parallel_for/tachyon/src/shade.cpp
index c4b3afe..f67bb4b 100644
--- a/examples/parallel_for/tachyon/src/shade.cpp
+++ b/examples/parallel_for/tachyon/src/shade.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * shade.c - This file contains the functions that perform surface shading.
- *
- *  $Id: shade.cpp,v 1.3 2007-02-22 17:54:16 Exp $
+ * shade.cpp - This file contains the functions that perform surface shading.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/shade.h b/examples/parallel_for/tachyon/src/shade.h
index 491b0a7..5ec1bb8 100644
--- a/examples/parallel_for/tachyon/src/shade.h
+++ b/examples/parallel_for/tachyon/src/shade.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/sphere.cpp b/examples/parallel_for/tachyon/src/sphere.cpp
index 86d8ff6..58a44fb 100644
--- a/examples/parallel_for/tachyon/src/sphere.cpp
+++ b/examples/parallel_for/tachyon/src/sphere.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * sphere.c - This file contains the functions for dealing with spheres.
- *
- *  $Id: sphere.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * sphere.cpp - This file contains the functions for dealing with spheres.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/sphere.h b/examples/parallel_for/tachyon/src/sphere.h
index 718f7d2..2bc4df3 100644
--- a/examples/parallel_for/tachyon/src/sphere.h
+++ b/examples/parallel_for/tachyon/src/sphere.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/tachyon_video.cpp b/examples/parallel_for/tachyon/src/tachyon_video.cpp
index c992532..8cfb735 100644
--- a/examples/parallel_for/tachyon/src/tachyon_video.cpp
+++ b/examples/parallel_for/tachyon/src/tachyon_video.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/tachyon_video.h b/examples/parallel_for/tachyon/src/tachyon_video.h
index 5421a9b..06e554c 100644
--- a/examples/parallel_for/tachyon/src/tachyon_video.h
+++ b/examples/parallel_for/tachyon/src/tachyon_video.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/texture.cpp b/examples/parallel_for/tachyon/src/texture.cpp
index 26a4767..832d7ea 100644
--- a/examples/parallel_for/tachyon/src/texture.cpp
+++ b/examples/parallel_for/tachyon/src/texture.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * texture.c - This file contains functions for implementing textures.
- * 
- *  $Id: texture.cpp,v 1.2 2007-02-22 17:54:16 Exp $ 
+ * texture.cpp - This file contains functions for implementing textures.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/texture.h b/examples/parallel_for/tachyon/src/texture.h
index 3552baa..7e902e0 100644
--- a/examples/parallel_for/tachyon/src/texture.h
+++ b/examples/parallel_for/tachyon/src/texture.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/tgafile.cpp b/examples/parallel_for/tachyon/src/tgafile.cpp
index f5c99d4..8049bd4 100644
--- a/examples/parallel_for/tachyon/src/tgafile.cpp
+++ b/examples/parallel_for/tachyon/src/tgafile.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * tgafile.c - This file contains the code to write 24 bit targa files...
- *
- *  $Id: tgafile.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * tgafile.cpp - This file contains the code to write 24 bit targa files...
  */
 
 #include "machine.h"
@@ -133,7 +123,8 @@ void writetgaregion(void * voidofp,
                     int stopx, int stopy, char * buffer) {
   int y, totalx, totaly;
   char * bufpos;
-  int filepos, numbytes;
+  long filepos;
+  size_t numbytes;
   FILE * ofp = (FILE *) voidofp;
  
   totalx = stopx - startx + 1;
@@ -141,7 +132,7 @@ void writetgaregion(void * voidofp,
 
   for (y=0; y<totaly; y++) {
     bufpos=buffer + (totalx*3)*(totaly-y-1);
-    filepos=18 + iwidth*3*(iheight - starty - totaly + y + 1) + (startx - 1)*3; 
+    filepos=18 + iwidth*3*(iheight - starty - totaly + y + 1) + (startx - 1)*3;
 
     if (filepos >= 18) {
       fseek(ofp, filepos, 0); 
@@ -149,7 +140,7 @@ void writetgaregion(void * voidofp,
 
       if (numbytes != totalx) {
         char msgtxt[256];
-	sprintf(msgtxt, "File write problem, %d bytes written.", numbytes);  
+        sprintf(msgtxt, "File write problem, %d bytes written.", (int)numbytes);
         rt_ui_message(MSG_ERR, msgtxt);
       }
     }
@@ -163,7 +154,8 @@ void writetgaregion(void * voidofp,
 
 int readtga(char * name, int * xres, int * yres, unsigned char **imgdata) {
   int format, width, height, w1, w2, h1, h2, depth, flags;
-  int imgsize, bytesread, i, tmp;
+  int imgsize, i, tmp;
+  size_t bytesread;
   FILE * ifp;
 
   ifp=fopen(name, "r");  
@@ -226,7 +218,7 @@ int readtga(char * name, int * xres, int * yres, unsigned char **imgdata) {
   for (i=0; i<imgsize; i+=3) {
     tmp = (*imgdata)[i]; /* Blue */
     (*imgdata)[i] = (*imgdata)[i+2]; /* Red */
-    (*imgdata)[i+2] = tmp; /* Blue */    
+    (*imgdata)[i+2] = tmp; /* Blue */
   }
 
   *xres = width;
diff --git a/examples/parallel_for/tachyon/src/tgafile.h b/examples/parallel_for/tachyon/src/tgafile.h
index bada626..fb9b079 100644
--- a/examples/parallel_for/tachyon/src/tgafile.h
+++ b/examples/parallel_for/tachyon/src/tgafile.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/trace.h b/examples/parallel_for/tachyon/src/trace.h
index 48f854c..24e1a94 100644
--- a/examples/parallel_for/tachyon/src/trace.h
+++ b/examples/parallel_for/tachyon/src/trace.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/trace.serial.cpp b/examples/parallel_for/tachyon/src/trace.serial.cpp
index 1173365..400591c 100644
--- a/examples/parallel_for/tachyon/src/trace.serial.cpp
+++ b/examples/parallel_for/tachyon/src/trace.serial.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/trace.simple.cpp b/examples/parallel_for/tachyon/src/trace.simple.cpp
new file mode 100644
index 0000000..8de8684
--- /dev/null
+++ b/examples/parallel_for/tachyon/src/trace.simple.cpp
@@ -0,0 +1,183 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+/*
+    The original source for this example is
+    Copyright (c) 1994-2008 John E. Stone
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+    1. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+    3. The name of the author may not be used to endorse or promote products
+       derived from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+    OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+*/
+
+#include "machine.h"
+#include "types.h"
+#include "macros.h"
+#include "vector.h"
+#include "tgafile.h"
+#include "trace.h"
+#include "light.h"
+#include "shade.h"
+#include "camera.h"
+#include "util.h"
+#include "intersect.h"
+#include "global.h"
+#include "ui.h"
+#include "tachyon_video.h"
+
+// shared but read-only so could be private too
+static thr_parms *all_parms;
+static scenedef scene;
+static int startx;
+static int stopx;
+static int starty;
+static int stopy;
+static flt jitterscale;
+static int totaly;
+
+static color_t render_one_pixel (int x, int y, unsigned int *local_mbox, unsigned int &serial,
+                                 int startx, int stopx, int starty, int stopy)
+{
+    /* private vars moved inside loop */
+    ray primary, sample;
+    color col, avcol;
+    int R,G,B;
+    intersectstruct local_intersections;
+    int alias;
+    /* end private */
+
+    primary = camray(&scene, x, y);
+    primary.intstruct = &local_intersections;
+    primary.flags = RT_RAY_REGULAR;
+
+    serial++;
+    primary.serial = serial;
+    primary.mbox = local_mbox;
+    primary.maxdist = FHUGE;
+    primary.scene = &scene;
+    col = trace(&primary);
+    serial = primary.serial;
+
+    /* Handle overexposure and underexposure here... */
+    R = (int)(col.r * 255);
+    if ( R > 255 ) R = 255;
+    else if ( R < 0 ) R = 0;
+
+    G = (int)(col.g * 255);
+    if ( G > 255 ) G = 255;
+    else if ( G < 0 ) G = 0;
+
+    B = (int)(col.b * 255);
+    if ( B > 255 ) B = 255;
+    else if ( B < 0 ) B = 0;
+
+    return video->get_color(R, G, B);
+}
+
+#if DO_ITT_NOTIFY
+#include"ittnotify.h"
+#endif
+
+#define RUNTIME_SERIAL 1
+#define RUNTIME_OPENMP 2
+#define RUNTIME_CILK   3
+#define RUNTIME_TBB    4
+
+#ifndef RUNTIME
+#define RUNTIME RUNTIME_TBB
+#endif
+
+#if RUNTIME == RUNTIME_OPENMP
+#include <omp.h>
+#elif RUNTIME == RUNTIME_TBB
+#include <tbb/tbb.h>
+#endif
+
+static void parallel_thread(void)
+{
+    unsigned int mboxsize = sizeof(unsigned int)*(max_objectid() + 20);
+#if RUNTIME == RUNTIME_SERIAL
+    for ( int y = starty; y < stopy; y++ )
+#elif RUNTIME == RUNTIME_OPENMP
+#pragma omp parallel for
+    for ( int y = starty; y < stopy; y++ )
+#elif RUNTIME == RUNTIME_CILK
+    _Cilk_for(int y = starty; y < stopy; y++)
+#elif RUNTIME == RUNTIME_TBB
+    tbb::parallel_for(starty, stopy, [mboxsize] (int y)
+#endif
+    {
+        unsigned int serial = 1;
+        unsigned int local_mbox[mboxsize];
+        memset(local_mbox, 0, mboxsize);
+        drawing_area drawing(startx, totaly - y, stopx - startx, 1);
+        for ( int x = startx; x < stopx; x++ ) {
+            color_t c = render_one_pixel(x, y, local_mbox, serial, startx, stopx, starty, stopy);
+            drawing.put_pixel(c);
+        }
+        video->next_frame();
+    }
+#if RUNTIME == RUNTIME_TBB
+    );
+#endif
+}
+
+void * thread_trace(thr_parms * parms)
+{
+    // shared but read-only so could be private too
+    all_parms = parms;
+    scene = parms->scene;
+    startx = parms->startx;
+    stopx = parms->stopx;
+    starty = parms->starty;
+    stopy = parms->stopy;
+    jitterscale = 40.0*(scene.hres + scene.vres);
+    totaly = parms->scene.vres - 1;
+
+#if DO_ITT_NOTIFY
+    __itt_resume();
+#endif
+    parallel_thread();
+#if DO_ITT_NOTIFY
+    __itt_pause();
+#endif
+
+    return(NULL);
+}
diff --git a/examples/parallel_for/tachyon/src/trace.tbb.cpp b/examples/parallel_for/tachyon/src/trace.tbb.cpp
index 43c9f87..a709e1e 100644
--- a/examples/parallel_for/tachyon/src/trace.tbb.cpp
+++ b/examples/parallel_for/tachyon/src/trace.tbb.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -237,10 +229,12 @@ public:
 
 void * thread_trace(thr_parms * parms)
 {
+#if !WIN8UI_EXAMPLE
     int n, nthreads = tbb::task_scheduler_init::automatic;
     char *nthreads_str = getenv ("TBB_NUM_THREADS");
     if (nthreads_str && (sscanf (nthreads_str, "%d", &n) > 0) && (n > 0)) nthreads = n;
     tbb::task_scheduler_init init (nthreads);
+#endif
 
     // shared but read-only so could be private too
     all_parms = parms;
@@ -255,7 +249,10 @@ void * thread_trace(thr_parms * parms)
     thread_ids.clear();
 #endif
 
-    int g, grain_size = 8;
+    int grain_size = 8;
+//WIN8UI does not support getenv() function so using auto_partitioner unconditionally
+#if !WIN8UI_EXAMPLE
+    int g;
     char *grain_str = getenv ("TBB_GRAINSIZE");
     if (grain_str && (sscanf (grain_str, "%d", &g) > 0) && (g > 0)) grain_size = g;
     char *sched_str = getenv ("TBB_PARTITIONER");
@@ -265,6 +262,7 @@ void * thread_trace(thr_parms * parms)
     else if ( sched_str && !strncmp(sched_str, "simp", 4) )
         tbb::parallel_for (tbb::blocked_range2d<int> (starty, stopy, grain_size, startx, stopx, grain_size), parallel_task (), tbb::simple_partitioner());
     else
+#endif
         tbb::parallel_for (tbb::blocked_range2d<int> (starty, stopy, grain_size, startx, stopx, grain_size), parallel_task (), tbb::auto_partitioner());
 
     return(NULL);  
diff --git a/examples/parallel_for/tachyon/src/trace.tbb1d.cpp b/examples/parallel_for/tachyon/src/trace.tbb1d.cpp
index 405f072..3b261ff 100644
--- a/examples/parallel_for/tachyon/src/trace.tbb1d.cpp
+++ b/examples/parallel_for/tachyon/src/trace.tbb1d.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/trace_rest.cpp b/examples/parallel_for/tachyon/src/trace_rest.cpp
index 51c00d9..4823da2 100644
--- a/examples/parallel_for/tachyon/src/trace_rest.cpp
+++ b/examples/parallel_for/tachyon/src/trace_rest.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,10 +48,8 @@
 */
 
 /* 
- * trace.c - This file contains the functions for firing primary rays
+ * trace.cpp - This file contains the functions for firing primary rays
  *           and handling subsequent calculations
- *
- *   $Id: trace_rest.cpp,v 1.4 2007-02-22 17:54:16 Exp $
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/triangle.cpp b/examples/parallel_for/tachyon/src/triangle.cpp
index 3a1bf99..bbc1882 100644
--- a/examples/parallel_for/tachyon/src/triangle.cpp
+++ b/examples/parallel_for/tachyon/src/triangle.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * triangle.c - This file contains the functions for dealing with triangles.
- *
- *  $Id: triangle.cpp,v 1.3 2007-02-22 17:54:16 Exp $
+ * triangle.cpp - This file contains the functions for dealing with triangles.
  */
  
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/triangle.h b/examples/parallel_for/tachyon/src/triangle.h
index ab511e9..02f7a0f 100644
--- a/examples/parallel_for/tachyon/src/triangle.h
+++ b/examples/parallel_for/tachyon/src/triangle.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/types.h b/examples/parallel_for/tachyon/src/types.h
index 84e56d2..f0be477 100644
--- a/examples/parallel_for/tachyon/src/types.h
+++ b/examples/parallel_for/tachyon/src/types.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/ui.cpp b/examples/parallel_for/tachyon/src/ui.cpp
index d85416d..f9b860f 100644
--- a/examples/parallel_for/tachyon/src/ui.cpp
+++ b/examples/parallel_for/tachyon/src/ui.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * ui.c - Contains functions for dealing with user interfaces
- *
- *  $Id: ui.cpp,v 1.2 2007-02-22 17:54:16 Exp $
+ * ui.cpp - Contains functions for dealing with user interfaces
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/ui.h b/examples/parallel_for/tachyon/src/ui.h
index 4770f12..0c66ce9 100644
--- a/examples/parallel_for/tachyon/src/ui.h
+++ b/examples/parallel_for/tachyon/src/ui.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/util.cpp b/examples/parallel_for/tachyon/src/util.cpp
index 6e95897..79d182d 100644
--- a/examples/parallel_for/tachyon/src/util.cpp
+++ b/examples/parallel_for/tachyon/src/util.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /*
- * util.c - Contains all of the timing functions for various platforms.
- *
- *  $Id: util.cpp,v 1.6 2007-02-22 18:17:51 amalakho Exp $ 
+ * util.cpp - Contains all of the timing functions for various platforms.
  */
 
 #include "machine.h"
@@ -84,10 +74,13 @@ void rt_sleep(int msec) {
 #undef OLDUNIXTIME
 #undef STDTIME
 
-#include <windows.h>
-
 void rt_sleep(int msec) {
+#if !WIN8UI_EXAMPLE
     Sleep(msec);
+#else
+    std::chrono::milliseconds sleep_time( msec );
+    std::this_thread::sleep_for( sleep_time );
+#endif
 }
 
 timer gettimer(void) {
diff --git a/examples/parallel_for/tachyon/src/util.h b/examples/parallel_for/tachyon/src/util.h
index 9640375..32f3f90 100644
--- a/examples/parallel_for/tachyon/src/util.h
+++ b/examples/parallel_for/tachyon/src/util.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -65,7 +57,17 @@
 
 #if defined( _WIN32 )
   #include <windows.h>
-  typedef DWORD timer;
+  #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP)
+    #define WIN8UI_EXAMPLE 1
+    #include <thread>
+    typedef ULONGLONG timer;
+    #ifdef GetTickCount
+      #undef GetTickCount 
+    #endif
+    #define GetTickCount GetTickCount64
+  #else
+    typedef DWORD timer;
+  #endif
 #else
   #include <sys/time.h>
   #include <unistd.h>
diff --git a/examples/parallel_for/tachyon/src/vector.cpp b/examples/parallel_for/tachyon/src/vector.cpp
index be7f249..0f842bc 100644
--- a/examples/parallel_for/tachyon/src/vector.cpp
+++ b/examples/parallel_for/tachyon/src/vector.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,9 +48,7 @@
 */
 
 /* 
- * vector.c - This file contains all of the vector arithmetic functions.
- *
- *  $Id: vector.cpp,v 1.2 2007-02-22 17:54:17 Exp $
+ * vector.cpp - This file contains all of the vector arithmetic functions.
  */
 
 #include "machine.h"
diff --git a/examples/parallel_for/tachyon/src/vector.h b/examples/parallel_for/tachyon/src/vector.h
index b66829d..a3381f2 100644
--- a/examples/parallel_for/tachyon/src/vector.h
+++ b/examples/parallel_for/tachyon/src/vector.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_for/tachyon/src/vol.cpp b/examples/parallel_for/tachyon/src/vol.cpp
index b3f1f54..60eb111 100644
--- a/examples/parallel_for/tachyon/src/vol.cpp
+++ b/examples/parallel_for/tachyon/src/vol.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -56,13 +48,10 @@
 */
 
 /*
- * vol.c - Volume rendering helper routines etc.
- *
- *
- *  $Id: vol.cpp,v 1.3 2007-02-22 18:17:51 amalakho Exp $
+ * vol.cpp - Volume rendering helper routines etc.
  */
 
-#include<stdio.h>
+#include <stdio.h>
 #include "machine.h"
 #include "types.h"
 #include "macros.h"
@@ -290,7 +279,7 @@ color scalar_volume_texture(vector * hit, texture * tex, ray * ry) {
 
 void LoadVol(scalarvol * vol) { 
   FILE * dfile;
-  int status;
+  size_t status;
   char msgtxt[2048];
  
   dfile=fopen(vol->name, "r");
diff --git a/examples/parallel_for/tachyon/src/vol.h b/examples/parallel_for/tachyon/src/vol.h
index 6980e7c..76776ad 100644
--- a/examples/parallel_for/tachyon/src/vol.h
+++ b/examples/parallel_for/tachyon/src/vol.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/examples/parallel_reduce/convex_hull/Makefile b/examples/parallel_reduce/convex_hull/Makefile
index b322c44..cd06850 100644
--- a/examples/parallel_reduce/convex_hull/Makefile
+++ b/examples/parallel_reduce/convex_hull/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/parallel_reduce/convex_hull/Makefile.windows b/examples/parallel_reduce/convex_hull/Makefile.windows
index 0d4111c..f436bc9 100644
--- a/examples/parallel_reduce/convex_hull/Makefile.windows
+++ b/examples/parallel_reduce/convex_hull/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 PROG=convex_hull_bench
@@ -36,7 +28,8 @@ CXX2 = $(CXX1:icl.exe-=icl.exe)
 CXX  = $(CXX2:-=cl.exe)
 
 # The C++ compiler options
-MYCXXFLAGS = /TP /EHsc /W3 /nologo $(TBB_SECURITY_SWITCH) /D _CONSOLE /D _MBCS /D WIN32 /D _SCL_SECURE_NO_DEPRECATE /D _SECURE_SCL=0 $(CXXFLAGS)
+# Below, _SECURE_SCL=0 is for VC9 and earlier, and _ITERATOR_DEBUG_LEVEL=0 is for VC10 and later
+MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _ITERATOR_DEBUG_LEVEL=0 /D _SECURE_SCL=0 $(CXXFLAGS)
 MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS)
 
 all: release test
diff --git a/examples/parallel_reduce/convex_hull/convex_hull.h b/examples/parallel_reduce/convex_hull/convex_hull.h
index 65fc449..5c6bcd2 100644
--- a/examples/parallel_reduce/convex_hull/convex_hull.h
+++ b/examples/parallel_reduce/convex_hull/convex_hull.h
@@ -1,34 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __CONVEX_HULL_H__
 #define __CONVEX_HULL_H__
 
+#include <cassert>
 #include <cstdlib>
 #include <iostream>
 #include <iomanip>
@@ -38,13 +31,11 @@
 #include <cstring>
 #include <algorithm>
 #include <functional>
-#include <cassert>
 #include <climits>
 #include "tbb/tick_count.h"
 #include "tbb/task_scheduler_init.h"
 #include "../../common/utility/utility.h"
 #include "../../common/utility/fast_random.h"
-#include "tbb/blocked_range.h"
 
 using namespace std;
 
diff --git a/examples/parallel_reduce/convex_hull/convex_hull_bench.cpp b/examples/parallel_reduce/convex_hull/convex_hull_bench.cpp
index c843cff..e0a905e 100644
--- a/examples/parallel_reduce/convex_hull/convex_hull_bench.cpp
+++ b/examples/parallel_reduce/convex_hull/convex_hull_bench.cpp
@@ -1,36 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
     This file contains a few implementations, so it may look overly complicated.
     The most efficient implementation is also separated into convex_hull_sample.cpp
 */
-#include <cassert>
 #include "convex_hull.h"
 
 typedef util::point<double> point_t;
diff --git a/examples/parallel_reduce/convex_hull/convex_hull_sample.cpp b/examples/parallel_reduce/convex_hull/convex_hull_sample.cpp
index 0f888fb..509be78 100644
--- a/examples/parallel_reduce/convex_hull/convex_hull_sample.cpp
+++ b/examples/parallel_reduce/convex_hull/convex_hull_sample.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
@@ -34,8 +26,6 @@
     - INIT_ONCE defined to 0
     - only buffered version is used
 */
-#include <cassert>
-#include <algorithm>
 #include "convex_hull.h"
 
 #include "tbb/task_scheduler_init.h"
diff --git a/examples/parallel_reduce/convex_hull/index.html b/examples/parallel_reduce/convex_hull/index.html
index 87494e1..6101358 100644
--- a/examples/parallel_reduce/convex_hull/index.html
+++ b/examples/parallel_reduce/convex_hull/index.html
@@ -19,7 +19,7 @@ Parallel version of convex hull algorithm (quick hull).
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -42,7 +42,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull.sln b/examples/parallel_reduce/convex_hull/msvs/convex_hull.sln
new file mode 100644
index 0000000..5ec78ff
--- /dev/null
+++ b/examples/parallel_reduce/convex_hull/msvs/convex_hull.sln
@@ -0,0 +1,36 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convex_hull_sample", "convex_hull_sample.vcxproj", "{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convex_hull_benchmark", "convex_hull_benchmark.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.Build.0 = Debug|Win32
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.ActiveCfg = Debug|x64
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.Build.0 = Debug|x64
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.ActiveCfg = Release|Win32
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.Build.0 = Release|Win32
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.ActiveCfg = Release|x64
+		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.Build.0 = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.icproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.icproj
deleted file mode 100644
index 6667cee..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="convex_hull_benchmark"
-	ProjectGUID="{347CD752-84DD-4E7C-9DB3-90B740C03E8E}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	VCNestedProjectFileName="convex_hull_benchmark.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcproj
deleted file mode 100644
index 922b81e..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcproj
+++ /dev/null
@@ -1,366 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="convex_hull_benchmark"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	RootNamespace="convex_hull_benchmark"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\convex_hull_bench.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header files"
-			>
-			<File
-				RelativePath="..\convex_hull.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcxproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcxproj
new file mode 100644
index 0000000..f96217e
--- /dev/null
+++ b/examples/parallel_reduce/convex_hull/msvs/convex_hull_benchmark.vcxproj
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>convex_hull_benchmark</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252A}</ProjectGuid>
+    <RootNamespace>convex_hull_benchmark</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\convex_hull_bench.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\convex_hull.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_cl.sln b/examples/parallel_reduce/convex_hull/msvs/convex_hull_cl.sln
deleted file mode 100644
index 8dbd651..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_cl.sln
+++ /dev/null
@@ -1,35 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convex_hull_benchmark", "convex_hull_benchmark.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convex_hull_sample", "convex_hull_sample.vcproj", "{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.Build.0 = Debug|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.ActiveCfg = Debug|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.Build.0 = Debug|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.ActiveCfg = Release|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.Build.0 = Release|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.ActiveCfg = Release|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_icl.sln b/examples/parallel_reduce/convex_hull/msvs/convex_hull_icl.sln
deleted file mode 100644
index 7d1545f..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_icl.sln
+++ /dev/null
@@ -1,51 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "convex_hull_benchmark", "convex_hull_benchmark.icproj", "{347CD752-84DD-4E7C-9DB3-90B740C03E8E}"
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "convex_hull_sample", "convex_hull_sample.icproj", "{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Debug|Win32.Build.0 = Debug|Win32
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Debug|x64.ActiveCfg = Debug|x64
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Debug|x64.Build.0 = Debug|x64
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Release|Win32.ActiveCfg = Release|Win32
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Release|Win32.Build.0 = Release|Win32
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Release|x64.ActiveCfg = Release|x64
-		{347CD752-84DD-4E7C-9DB3-90B740C03E8E}.Release|x64.Build.0 = Release|x64
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Debug|Win32.Build.0 = Debug|Win32
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Debug|x64.ActiveCfg = Debug|x64
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Debug|x64.Build.0 = Debug|x64
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Release|Win32.ActiveCfg = Release|Win32
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Release|Win32.Build.0 = Release|Win32
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Release|x64.ActiveCfg = Release|x64
-		{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.Build.0 = Release|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|x64.ActiveCfg = Release|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.Build.0 = Release|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Release|Win32.ActiveCfg = Release|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.Build.0 = Debug|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|x64.ActiveCfg = Debug|x64
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.Build.0 = Debug|Win32
-		{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.icproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.icproj
deleted file mode 100644
index b6926c0..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="convex_hull_sample"
-	ProjectGUID="{B83E81E3-9EB0-4C22-B6CF-F2329A496EDA}"
-	VCNestedProjectGUID="{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}"
-	VCNestedProjectFileName="convex_hull_sample.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcproj
deleted file mode 100644
index 635d86d..0000000
--- a/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcproj
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="convex_hull_sample"
-	ProjectGUID="{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}"
-	RootNamespace="convex_hull_sample"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="3"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\convex_hull_sample.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\convex_hull.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcxproj b/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcxproj
new file mode 100644
index 0000000..f48a01a
--- /dev/null
+++ b/examples/parallel_reduce/convex_hull/msvs/convex_hull_sample.vcxproj
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>convex_hull_sample</ProjectName>
+    <ProjectGuid>{5F897A77-EBD9-4462-94D4-06E2ADE47F3B}</ProjectGuid>
+    <RootNamespace>convex_hull_sample</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Full</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\convex_hull_sample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\convex_hull.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_reduce/index.html b/examples/parallel_reduce/index.html
index bb00b0a..06eb06d 100644
--- a/examples/parallel_reduce/index.html
+++ b/examples/parallel_reduce/index.html
@@ -15,7 +15,7 @@ This directory has examples of the template <code>parallel_reduce</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_reduce/primes/Makefile b/examples/parallel_reduce/primes/Makefile
index a311a21..04b4b54 100644
--- a/examples/parallel_reduce/primes/Makefile
+++ b/examples/parallel_reduce/primes/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/parallel_reduce/primes/Makefile.windows b/examples/parallel_reduce/primes/Makefile.windows
index 16a387c..bd6328f 100644
--- a/examples/parallel_reduce/primes/Makefile.windows
+++ b/examples/parallel_reduce/primes/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/parallel_reduce/primes/index.html b/examples/parallel_reduce/primes/index.html
index e110b33..7da6c8d 100644
--- a/examples/parallel_reduce/primes/index.html
+++ b/examples/parallel_reduce/primes/index.html
@@ -22,7 +22,7 @@
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -52,7 +52,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/parallel_reduce/primes/main.cpp b/examples/parallel_reduce/primes/main.cpp
index 1bfa1a5..d400cbb 100644
--- a/examples/parallel_reduce/primes/main.cpp
+++ b/examples/parallel_reduce/primes/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "primes.h"
diff --git a/examples/parallel_reduce/primes/msvs/primes.icproj b/examples/parallel_reduce/primes/msvs/primes.icproj
deleted file mode 100644
index 744dcbe..0000000
--- a/examples/parallel_reduce/primes/msvs/primes.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="primes"
-	ProjectGUID="{D731702C-B704-468D-9497-A75EE0521C89}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	VCNestedProjectFileName="primes.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/primes/msvs/primes.sln b/examples/parallel_reduce/primes/msvs/primes.sln
new file mode 100644
index 0000000..1635efd
--- /dev/null
+++ b/examples/parallel_reduce/primes/msvs/primes.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "primes", "primes.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/parallel_reduce/primes/msvs/primes.vcproj b/examples/parallel_reduce/primes/msvs/primes.vcproj
deleted file mode 100644
index 0cabc37..0000000
--- a/examples/parallel_reduce/primes/msvs/primes.vcproj
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="primes"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-	RootNamespace="primes"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\primes.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\primes.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/parallel_reduce/primes/msvs/primes.vcxproj b/examples/parallel_reduce/primes/msvs/primes.vcxproj
new file mode 100644
index 0000000..632d1d2
--- /dev/null
+++ b/examples/parallel_reduce/primes/msvs/primes.vcxproj
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>primes</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252A}</ProjectGuid>
+    <RootNamespace>primes</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\main.cpp" />
+    <ClCompile Include="..\primes.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\primes.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/parallel_reduce/primes/msvs/primes_cl.sln b/examples/parallel_reduce/primes/msvs/primes_cl.sln
deleted file mode 100644
index 9e30985..0000000
--- a/examples/parallel_reduce/primes/msvs/primes_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "primes", "primes.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_reduce/primes/msvs/primes_icl.sln b/examples/parallel_reduce/primes/msvs/primes_icl.sln
deleted file mode 100644
index cde13dc..0000000
--- a/examples/parallel_reduce/primes/msvs/primes_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "primes", "primes.icproj", "{D731702C-B704-468D-9497-A75EE0521C89}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|Win32.Build.0 = Debug|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|x64.ActiveCfg = Debug|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Debug|x64.Build.0 = Debug|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|Win32.ActiveCfg = Release|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|Win32.Build.0 = Release|Win32
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|x64.ActiveCfg = Release|x64
-		{D731702C-B704-468D-9497-A75EE0521C89}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/parallel_reduce/primes/primes.cpp b/examples/parallel_reduce/primes/primes.cpp
index 9db5a89..d559509 100644
--- a/examples/parallel_reduce/primes/primes.cpp
+++ b/examples/parallel_reduce/primes/primes.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Example program that computes number of prime numbers up to n, 
diff --git a/examples/parallel_reduce/primes/primes.h b/examples/parallel_reduce/primes/primes.h
index 969feee..901923b 100644
--- a/examples/parallel_reduce/primes/primes.h
+++ b/examples/parallel_reduce/primes/primes.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef PRIMES_H_
diff --git a/examples/pipeline/index.html b/examples/pipeline/index.html
index 8a96b95..30e8e88 100644
--- a/examples/pipeline/index.html
+++ b/examples/pipeline/index.html
@@ -13,7 +13,7 @@ This directory has examples of the template <code>pipeline</code>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/pipeline/square/Makefile b/examples/pipeline/square/Makefile
index 8cd7048..744297a 100644
--- a/examples/pipeline/square/Makefile
+++ b/examples/pipeline/square/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/pipeline/square/Makefile.windows b/examples/pipeline/square/Makefile.windows
index a61ab2b..4de0b43 100644
--- a/examples/pipeline/square/Makefile.windows
+++ b/examples/pipeline/square/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
@@ -37,7 +29,7 @@ CXX2 = $(CXX1:icl.exe-=icl.exe)
 CXX  = $(CXX2:-=cl.exe)
 
 # The C++ compiler options
-MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(CXXFLAGS) /D _CRT_SECURE_NO_DEPRECATE /D _SECURE_SCL=0 /arch:sse2
+MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(CXXFLAGS) /D _CRT_SECURE_NO_DEPRECATE /arch:sse2
 MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS)
 SOURCES = square.cpp gen_input.cpp
 
diff --git a/examples/pipeline/square/gen_input.cpp b/examples/pipeline/square/gen_input.cpp
index 9da29b4..122cf2e 100644
--- a/examples/pipeline/square/gen_input.cpp
+++ b/examples/pipeline/square/gen_input.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <stdlib.h>
diff --git a/examples/pipeline/square/index.html b/examples/pipeline/square/index.html
index 2cd8a40..021ccff 100644
--- a/examples/pipeline/square/index.html
+++ b/examples/pipeline/square/index.html
@@ -18,7 +18,7 @@ containing decimal integers in text format, and changes each to its square.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X*
     systems only).</DL>
@@ -61,7 +61,7 @@ Two additional targets for this example:
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/pipeline/square/msvs/square.icproj b/examples/pipeline/square/msvs/square.icproj
deleted file mode 100644
index a957bf5..0000000
--- a/examples/pipeline/square/msvs/square.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1252"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="square"
-	ProjectGUID="{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}"
-	VCNestedProjectGUID="{A21C0AEE-ADDC-45F0-A668-58FF10351D23}"
-	VCNestedProjectFileName="square.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/pipeline/square/msvs/square.sln b/examples/pipeline/square/msvs/square.sln
new file mode 100644
index 0000000..fc440dc
--- /dev/null
+++ b/examples/pipeline/square/msvs/square.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "square", "square.vcxproj", "{A21C0AEE-ADDC-45F0-A668-58FF10351D23}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.Build.0 = Debug|Win32
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.ActiveCfg = Debug|x64
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.Build.0 = Debug|x64
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.ActiveCfg = Release|Win32
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.Build.0 = Release|Win32
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.ActiveCfg = Release|x64
+		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/pipeline/square/msvs/square.vcproj b/examples/pipeline/square/msvs/square.vcproj
deleted file mode 100644
index bfaad42..0000000
--- a/examples/pipeline/square/msvs/square.vcproj
+++ /dev/null
@@ -1,372 +0,0 @@
-<?xml version="1.0" encoding="windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="square"
-	ProjectGUID="{A21C0AEE-ADDC-45F0-A668-58FF10351D23}"
-	RootNamespace="square"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\gen_input.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\square.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/pipeline/square/msvs/square.vcproj.user b/examples/pipeline/square/msvs/square.vcproj.user
deleted file mode 100644
index 22c54af..0000000
--- a/examples/pipeline/square/msvs/square.vcproj.user
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="windows-1252"?>
-<VisualStudioUserFile
-	ProjectType="Visual C++"
-	Version="8.00"
-	ShowAllFiles="false"
-	>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			>
-			<DebugSettings
-				WorkingDirectory="$(OutDir)"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			>
-			<DebugSettings
-				WorkingDirectory="$(OutDir)"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			>
-			<DebugSettings
-				WorkingDirectory="$(OutDir)"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			>
-			<DebugSettings
-				WorkingDirectory="$(OutDir)"
-			/>
-		</Configuration>
-	</Configurations>
-</VisualStudioUserFile>
diff --git a/examples/pipeline/square/msvs/square.vcxproj b/examples/pipeline/square/msvs/square.vcxproj
new file mode 100644
index 0000000..3ef06f4
--- /dev/null
+++ b/examples/pipeline/square/msvs/square.vcxproj
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>square</ProjectName>
+    <ProjectGuid>{A21C0AEE-ADDC-45F0-A668-58FF10351D23}</ProjectGuid>
+    <RootNamespace>square</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\gen_input.cpp" />
+    <ClCompile Include="..\square.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/pipeline/square/msvs/square_cl.sln b/examples/pipeline/square/msvs/square_cl.sln
deleted file mode 100644
index f631972..0000000
--- a/examples/pipeline/square/msvs/square_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "square", "square.vcproj", "{A21C0AEE-ADDC-45F0-A668-58FF10351D23}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.Build.0 = Debug|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.ActiveCfg = Debug|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.Build.0 = Debug|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.ActiveCfg = Release|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.Build.0 = Release|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.ActiveCfg = Release|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/pipeline/square/msvs/square_icl.sln b/examples/pipeline/square/msvs/square_icl.sln
deleted file mode 100644
index f122357..0000000
--- a/examples/pipeline/square/msvs/square_icl.sln
+++ /dev/null
@@ -1,54 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "square", "square.icproj", "{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}"
-	ProjectSection(ProjectDependencies) = postProject
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA} = {18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}
-	EndProjectSection
-EndProject
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "gen_input", "gen_input.icproj", "{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Debug|Win32.Build.0 = Debug|Win32
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Debug|x64.ActiveCfg = Debug|x64
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Debug|x64.Build.0 = Debug|x64
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Release|Win32.ActiveCfg = Release|Win32
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Release|Win32.Build.0 = Release|Win32
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Release|x64.ActiveCfg = Release|x64
-		{7462FB4A-C9BE-40D4-A568-5D08F507EEB1}.Release|x64.Build.0 = Release|x64
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Debug|Win32.Build.0 = Debug|Win32
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Debug|x64.ActiveCfg = Debug|x64
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Debug|x64.Build.0 = Debug|x64
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Release|Win32.ActiveCfg = Release|Win32
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Release|Win32.Build.0 = Release|Win32
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Release|x64.ActiveCfg = Release|x64
-		{18ECAB6C-2630-4F8F-BEF2-3DBDEF7355AA}.Release|x64.Build.0 = Release|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.Build.0 = Release|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|x64.ActiveCfg = Release|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.Build.0 = Release|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Release|Win32.ActiveCfg = Release|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.Build.0 = Debug|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|x64.ActiveCfg = Debug|x64
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.Build.0 = Debug|Win32
-		{A21C0AEE-ADDC-45F0-A668-58FF10351D23}.Debug|Win32.ActiveCfg = Debug|Win32
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Release|x64.Build.0 = Release|x64
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Release|x64.ActiveCfg = Release|x64
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Release|Win32.Build.0 = Release|Win32
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Release|Win32.ActiveCfg = Release|Win32
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Debug|x64.Build.0 = Debug|x64
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Debug|x64.ActiveCfg = Debug|x64
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Debug|Win32.Build.0 = Debug|Win32
-		{25A46A49-406F-4681-8AC9-5FE46F38E5A7}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/pipeline/square/square.cpp b/examples/pipeline/square/square.cpp
index 566a52c..016ffce 100644
--- a/examples/pipeline/square/square.cpp
+++ b/examples/pipeline/square/square.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/examples/task/index.html b/examples/task/index.html
index 9a6018d..7562e9f 100644
--- a/examples/task/index.html
+++ b/examples/task/index.html
@@ -13,7 +13,7 @@ This directory has examples of how to use the raw task scheduler.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/task/tree_sum/Makefile b/examples/task/tree_sum/Makefile
index c572031..88a4744 100644
--- a/examples/task/tree_sum/Makefile
+++ b/examples/task/tree_sum/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/task/tree_sum/Makefile.windows b/examples/task/tree_sum/Makefile.windows
index e566547..9e55133 100644
--- a/examples/task/tree_sum/Makefile.windows
+++ b/examples/task/tree_sum/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/task/tree_sum/OptimizedParallelSumTree.cpp b/examples/task/tree_sum/OptimizedParallelSumTree.cpp
index 8388642..f9baa73 100644
--- a/examples/task/tree_sum/OptimizedParallelSumTree.cpp
+++ b/examples/task/tree_sum/OptimizedParallelSumTree.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "common.h"
diff --git a/examples/task/tree_sum/SerialSumTree.cpp b/examples/task/tree_sum/SerialSumTree.cpp
index 83ef786..6988d7a 100644
--- a/examples/task/tree_sum/SerialSumTree.cpp
+++ b/examples/task/tree_sum/SerialSumTree.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "common.h"
diff --git a/examples/task/tree_sum/SimpleParallelSumTree.cpp b/examples/task/tree_sum/SimpleParallelSumTree.cpp
index da6644a..2de4f56 100644
--- a/examples/task/tree_sum/SimpleParallelSumTree.cpp
+++ b/examples/task/tree_sum/SimpleParallelSumTree.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "common.h"
diff --git a/examples/task/tree_sum/TreeMaker.h b/examples/task/tree_sum/TreeMaker.h
index ba56aee..46bd0ce 100644
--- a/examples/task/tree_sum/TreeMaker.h
+++ b/examples/task/tree_sum/TreeMaker.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef TREE_MAKER_H_
diff --git a/examples/task/tree_sum/common.h b/examples/task/tree_sum/common.h
index 6447db1..da23bb1 100644
--- a/examples/task/tree_sum/common.h
+++ b/examples/task/tree_sum/common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 typedef float Value;
diff --git a/examples/task/tree_sum/index.html b/examples/task/tree_sum/index.html
index b692e1a..ea35663 100644
--- a/examples/task/tree_sum/index.html
+++ b/examples/task/tree_sum/index.html
@@ -36,7 +36,7 @@ In addition, the scalable_allocator performs better for multi-threaded allocatio
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X*
     systems only).</DL>
@@ -65,7 +65,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/task/tree_sum/main.cpp b/examples/task/tree_sum/main.cpp
index 34aa9ab..513f924 100644
--- a/examples/task/tree_sum/main.cpp
+++ b/examples/task/tree_sum/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "common.h"
diff --git a/examples/task/tree_sum/msvs/tree_sum.icproj b/examples/task/tree_sum/msvs/tree_sum.icproj
deleted file mode 100644
index 9d4834c..0000000
--- a/examples/task/tree_sum/msvs/tree_sum.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="tree_sum"
-	ProjectGUID="{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-	VCNestedProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	VCNestedProjectFileName="tree_sum.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/task/tree_sum/msvs/tree_sum.sln b/examples/task/tree_sum/msvs/tree_sum.sln
new file mode 100644
index 0000000..69b1ad6
--- /dev/null
+++ b/examples/task/tree_sum/msvs/tree_sum.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_sum", "tree_sum.vcxproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/task/tree_sum/msvs/tree_sum.vcproj b/examples/task/tree_sum/msvs/tree_sum.vcproj
deleted file mode 100644
index c80413e..0000000
--- a/examples/task/tree_sum/msvs/tree_sum.vcproj
+++ /dev/null
@@ -1,376 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="tree_sum"
-	ProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	RootNamespace="tree_sum"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\common.h"
-				>
-			</File>
-			<File
-				RelativePath="..\main.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\OptimizedParallelSumTree.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\SerialSumTree.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\SimpleParallelSumTree.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\TreeMaker.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/task/tree_sum/msvs/tree_sum.vcxproj b/examples/task/tree_sum/msvs/tree_sum.vcxproj
new file mode 100644
index 0000000..5836c2c
--- /dev/null
+++ b/examples/task/tree_sum/msvs/tree_sum.vcxproj
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>tree_sum</ProjectName>
+    <ProjectGuid>{C931C7A2-074E-4150-9E7A-39A03250411E}</ProjectGuid>
+    <RootNamespace>tree_sum</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="..\common.h" />
+    <ClInclude Include="..\TreeMaker.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\main.cpp" />
+    <ClCompile Include="..\OptimizedParallelSumTree.cpp" />
+    <ClCompile Include="..\SerialSumTree.cpp" />
+    <ClCompile Include="..\SimpleParallelSumTree.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/task/tree_sum/msvs/tree_sum_cl.sln b/examples/task/tree_sum/msvs/tree_sum_cl.sln
deleted file mode 100644
index 66c92d9..0000000
--- a/examples/task/tree_sum/msvs/tree_sum_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_sum", "tree_sum.vcproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task/tree_sum/msvs/tree_sum_icl.sln b/examples/task/tree_sum/msvs/tree_sum_icl.sln
deleted file mode 100644
index 7d25cdc..0000000
--- a/examples/task/tree_sum/msvs/tree_sum_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "tree_sum", "tree_sum.icproj", "{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.Build.0 = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.ActiveCfg = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.Build.0 = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.ActiveCfg = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.Build.0 = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.ActiveCfg = Release|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task_group/index.html b/examples/task_group/index.html
index 711a0e6..63e4919 100644
--- a/examples/task_group/index.html
+++ b/examples/task_group/index.html
@@ -13,7 +13,7 @@ This directory has examples of how to use task_groups.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/task_group/sudoku/Makefile b/examples/task_group/sudoku/Makefile
index dbfa530..34b38be 100644
--- a/examples/task_group/sudoku/Makefile
+++ b/examples/task_group/sudoku/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/task_group/sudoku/Makefile.windows b/examples/task_group/sudoku/Makefile.windows
index b60f1af..a8990f6 100644
--- a/examples/task_group/sudoku/Makefile.windows
+++ b/examples/task_group/sudoku/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/task_group/sudoku/index.html b/examples/task_group/sudoku/index.html
index 539ecae..d0d582d 100644
--- a/examples/task_group/sudoku/index.html
+++ b/examples/task_group/sudoku/index.html
@@ -35,7 +35,7 @@ how to use the task_group interface.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2008 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -66,7 +66,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/task_group/sudoku/msvs/sudoku.icproj b/examples/task_group/sudoku/msvs/sudoku.icproj
deleted file mode 100644
index d95f8b2..0000000
--- a/examples/task_group/sudoku/msvs/sudoku.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="sudoku"
-	ProjectGUID="{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-	VCNestedProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	VCNestedProjectFileName="sudoku.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/task_group/sudoku/msvs/sudoku.sln b/examples/task_group/sudoku/msvs/sudoku.sln
new file mode 100644
index 0000000..55eda3e
--- /dev/null
+++ b/examples/task_group/sudoku/msvs/sudoku.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sudoku", "sudoku.vcxproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
+		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/task_group/sudoku/msvs/sudoku.vcproj b/examples/task_group/sudoku/msvs/sudoku.vcproj
deleted file mode 100644
index abf39bd..0000000
--- a/examples/task_group/sudoku/msvs/sudoku.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="sudoku"
-	ProjectGUID="{C931C7A2-074E-4150-9E7A-39A03250411E}"
-	RootNamespace="sudoku"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib tbbmalloc_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib tbbmalloc.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\sudoku.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/task_group/sudoku/msvs/sudoku.vcxproj b/examples/task_group/sudoku/msvs/sudoku.vcxproj
new file mode 100644
index 0000000..d4e1202
--- /dev/null
+++ b/examples/task_group/sudoku/msvs/sudoku.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>sudoku</ProjectName>
+    <ProjectGuid>{C931C7A2-074E-4150-9E7A-39A03250411E}</ProjectGuid>
+    <RootNamespace>sudoku</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;tbbmalloc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\sudoku.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/task_group/sudoku/msvs/sudoku_cl.sln b/examples/task_group/sudoku/msvs/sudoku_cl.sln
deleted file mode 100644
index 176854b..0000000
--- a/examples/task_group/sudoku/msvs/sudoku_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sudoku", "sudoku.vcproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task_group/sudoku/msvs/sudoku_icl.sln b/examples/task_group/sudoku/msvs/sudoku_icl.sln
deleted file mode 100644
index 70d124d..0000000
--- a/examples/task_group/sudoku/msvs/sudoku_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "sudoku", "sudoku.icproj", "{CB292CD9-903E-464C-AAFE-E7A49003565C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|Win32.Build.0 = Debug|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.ActiveCfg = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Debug|x64.Build.0 = Debug|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.ActiveCfg = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|Win32.Build.0 = Release|Win32
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.ActiveCfg = Release|x64
-		{CB292CD9-903E-464C-AAFE-E7A49003565C}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32
-		{C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task_group/sudoku/sudoku.cpp b/examples/task_group/sudoku/sudoku.cpp
index ff9a1a0..0da8620 100644
--- a/examples/task_group/sudoku/sudoku.cpp
+++ b/examples/task_group/sudoku/sudoku.cpp
@@ -1,39 +1,29 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "../../common/utility/utility.h"
+
 #if __TBB_MIC_OFFLOAD
 #pragma offload_attribute (push,target(mic))
 #endif // __TBB_MIC_OFFLOAD
 
-// This header should come before any other one.
-// For details, see Known Issues in the Release Notes.
-#include "tbb/tbb_stddef.h"
-
 #include <cstdio>
 #include <cstdlib>
 #include <string>
@@ -43,8 +33,6 @@
 #include "tbb/task_scheduler_init.h"
 #include "tbb/task_group.h"
 
-#include "../../common/utility/utility.h"
-
 #pragma warning(disable: 4996)
 
 #if __INTEL_COMPILER
@@ -61,7 +49,7 @@ const unsigned BOARD_DIM=9;
 using namespace tbb;
 using namespace std;
 
-atomic<unsigned> nSols;
+tbb::atomic<unsigned> nSols;
 bool find_one = false;
 bool verbose = false;
 unsigned short init_values[BOARD_SIZE] = {1,0,0,9,0,0,0,8,0,0,8,0,2,0,0,0,0,0,0,0,5,0,0,0,7,0,0,0,5,2,1,0,0,4,0,0,0,0,0,0,0,5,0,0,7,4,0,0,7,0,0,0,3,0,0,3,0,0,0,2,0,0,5,0,0,0,0,0,0,1,0,0,5,0,0,0,1,0,0,0,0};
diff --git a/examples/task_priority/fractal/Makefile b/examples/task_priority/fractal/Makefile
index c6bf8b7..953dae5 100644
--- a/examples/task_priority/fractal/Makefile
+++ b/examples/task_priority/fractal/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 NAME=Fractal
diff --git a/examples/task_priority/fractal/Makefile.windows b/examples/task_priority/fractal/Makefile.windows
index 2d36d8f..a443920 100644
--- a/examples/task_priority/fractal/Makefile.windows
+++ b/examples/task_priority/fractal/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/task_priority/fractal/fractal.cpp b/examples/task_priority/fractal/fractal.cpp
index fc88189..8f20d18 100644
--- a/examples/task_priority/fractal/fractal.cpp
+++ b/examples/task_priority/fractal/fractal.cpp
@@ -1,38 +1,34 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "fractal.h"
 
-#include "tbb/compat/thread"
 #include "tbb/parallel_for.h"
 #include "tbb/blocked_range2d.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
+#if TBB_IMPLEMENT_CPP0X
+#include "tbb/compat/thread"
+#else
+#include <thread>
+#endif
 
 #include <math.h>
 #include <stdio.h>
diff --git a/examples/task_priority/fractal/fractal.h b/examples/task_priority/fractal/fractal.h
index 0b6f385..92b3d82 100644
--- a/examples/task_priority/fractal/fractal.h
+++ b/examples/task_priority/fractal/fractal.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef FRACTAL_H_
diff --git a/examples/task_priority/fractal/fractal_video.h b/examples/task_priority/fractal/fractal_video.h
index ed88ea4..02eda48 100644
--- a/examples/task_priority/fractal/fractal_video.h
+++ b/examples/task_priority/fractal/fractal_video.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef FRACTAL_VIDEO_H_
diff --git a/examples/task_priority/fractal/index.html b/examples/task_priority/fractal/index.html
index d87997c..2c3583d 100644
--- a/examples/task_priority/fractal/index.html
+++ b/examples/task_priority/fractal/index.html
@@ -24,7 +24,7 @@ The example also has the console mode but in this mode the priorities could not
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A>
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the example (Windows* systems only).
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only).
 <DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
 </DL>
@@ -55,7 +55,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/task_priority/fractal/main.cpp b/examples/task_priority/fractal/main.cpp
index a0f579a..7fa5881 100644
--- a/examples/task_priority/fractal/main.cpp
+++ b/examples/task_priority/fractal/main.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define VIDEO_WINMAIN_ARGS
diff --git a/examples/task_priority/fractal/msvs/fractal.icproj b/examples/task_priority/fractal/msvs/fractal.icproj
deleted file mode 100644
index 37993ba..0000000
--- a/examples/task_priority/fractal/msvs/fractal.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="fractal"
-	ProjectGUID="{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-	VCNestedProjectFileName="fractal.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/task_priority/fractal/msvs/fractal.sln b/examples/task_priority/fractal/msvs/fractal.sln
new file mode 100644
index 0000000..12e8882
--- /dev/null
+++ b/examples/task_priority/fractal/msvs/fractal.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fractal", "fractal.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2527}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		_GDIRelease|Win32 = _GDIRelease|Win32
+		_GDIRelease|x64 = _GDIRelease|x64
+		DDDebug|Win32 = DDDebug|Win32
+		DDDebug|x64 = DDDebug|x64
+		DDRelease|Win32 = DDRelease|Win32
+		DDRelease|x64 = DDRelease|x64
+		GDIDebug|Win32 = GDIDebug|Win32
+		GDIDebug|x64 = GDIDebug|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|Win32.ActiveCfg = GDIRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|Win32.Build.0 = GDIRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|x64.ActiveCfg = GDIRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDIRelease|x64.Build.0 = GDIRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|Win32.ActiveCfg = DDDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|Win32.Build.0 = DDDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|x64.ActiveCfg = DDDebug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDDebug|x64.Build.0 = DDDebug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|Win32.ActiveCfg = DDRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|Win32.Build.0 = DDRelease|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|x64.ActiveCfg = DDRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DDRelease|x64.Build.0 = DDRelease|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|Win32.ActiveCfg = GDIDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|Win32.Build.0 = GDIDebug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|x64.ActiveCfg = GDIDebug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDIDebug|x64.Build.0 = GDIDebug|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/task_priority/fractal/msvs/fractal.vcproj b/examples/task_priority/fractal/msvs/fractal.vcproj
deleted file mode 100644
index 909b1ec..0000000
--- a/examples/task_priority/fractal/msvs/fractal.vcproj
+++ /dev/null
@@ -1,853 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="fractal"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-	RootNamespace="fractal"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="GDIDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="GDIDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="GDIRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="GDIRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDRelease|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				FavorSizeOrSpeed="1"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9;$(DXSDK_DIR)\lib\x86"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="DDDebug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-				CommandLine="..\..\..\common\gui\dxcheck.bat"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				OmitFramePointers="true"
-				WholeProgramOptimization="true"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(DXSDK_DIR)\include""
-				PreprocessorDefinitions="WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9;$(DXSDK_DIR)\lib\x64"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;h;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\fractal.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\fractal.h"
-				>
-			</File>
-			<File
-				RelativePath="..\fractal_video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\main.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-			<File
-				RelativePath=".\gui.ico"
-				>
-			</File>
-			<File
-				RelativePath=".\gui.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\resource.h"
-				>
-			</File>
-			<File
-				RelativePath=".\small.ico"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Video Layer"
-			>
-			<File
-				RelativePath="..\..\..\common\gui\ddvideo.cpp"
-				>
-				<FileConfiguration
-					Name="GDIDebug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="GDIDebug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="GDIRelease|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="GDIRelease|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\gdivideo.cpp"
-				>
-				<FileConfiguration
-					Name="GDIDebug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="GDIRelease|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDRelease|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="DDDebug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\video.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\common\gui\winvideo.h"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/task_priority/fractal/msvs/fractal.vcxproj b/examples/task_priority/fractal/msvs/fractal.vcxproj
new file mode 100644
index 0000000..6f855c9
--- /dev/null
+++ b/examples/task_priority/fractal/msvs/fractal.vcxproj
@@ -0,0 +1,442 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="GDIDebug|Win32">
+      <Configuration>GDIDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="GDIDebug|x64">
+      <Configuration>GDIDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="GDIRelease|Win32">
+      <Configuration>GDIRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="GDIRelease|x64">
+      <Configuration>GDIRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|Win32">
+      <Configuration>DDDebug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDDebug|x64">
+      <Configuration>DDDebug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|Win32">
+      <Configuration>DDRelease</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DDRelease|x64">
+      <Configuration>DDRelease</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>fractal</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A2527}</ProjectGuid>
+    <RootNamespace>fractal</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">
+    <PreBuildEvent>
+      <Command>..\..\..\common\gui\dxcheck.bat</Command>
+    </PreBuildEvent>
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <OmitFramePointers>true</OmitFramePointers>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\fractal.cpp" />
+    <ClCompile Include="..\main.cpp" />
+    <ClCompile Include="..\..\..\common\gui\d2dvideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='GDIDebug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='GDIDebug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='GDIRelease|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='GDIRelease|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\..\..\common\gui\gdivideo.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDDebug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DDRelease|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\fractal.h" />
+    <ClInclude Include="..\fractal_video.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="..\..\..\common\gui\video.h" />
+    <ClInclude Include="..\..\..\common\gui\winvideo.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="gui.ico" />
+    <None Include="small.ico" />
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="gui.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/task_priority/fractal/msvs/fractal_cl.sln b/examples/task_priority/fractal/msvs/fractal_cl.sln
deleted file mode 100644
index 7ded9c9..0000000
--- a/examples/task_priority/fractal/msvs/fractal_cl.sln
+++ /dev/null
@@ -1,35 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fractal", "fractal.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A2527}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.Build.0 = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.Build.0 = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.ActiveCfg = GDIDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.Build.0 = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.Build.0 = GDIRelease|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task_priority/fractal/msvs/fractal_icl.sln b/examples/task_priority/fractal/msvs/fractal_icl.sln
deleted file mode 100644
index 600a1da..0000000
--- a/examples/task_priority/fractal/msvs/fractal_icl.sln
+++ /dev/null
@@ -1,49 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "fractal", "fractal.icproj", "{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		DD Debug|Win32 = DD Debug|Win32
-		DD Debug|x64 = DD Debug|x64
-		DD Release|Win32 = DD Release|Win32
-		DD Release|x64 = DD Release|x64
-		GDI Debug|Win32 = GDI Debug|Win32
-		GDI Debug|x64 = GDI Debug|x64
-		_GDI Release|Win32 = _GDI Release|Win32
-		_GDI Release|x64 = _GDI Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Debug|x64.Build.0 = DDDebug|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.DD Release|x64.Build.0 = DDRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.GDI Debug|Win32.ActiveCfg = GDIDebug|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.GDI Debug|x64.ActiveCfg = GDIRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}.GDI Debug|x64.Build.0 = GDIRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}._GDI Release|Win32.ActiveCfg = GDIRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}._GDI Release|x64.ActiveCfg = GDIRelease|x64
-		{BF088DF5-BAEA-4EB2-8EA5-1E8DFBC75E5C}._GDI Release|x64.Build.0 = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.Build.0 = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|x64.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}._GDI Release|Win32.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.Build.0 = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|x64.ActiveCfg = GDIRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.GDI Debug|Win32.ActiveCfg = GDIDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.Build.0 = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|x64.ActiveCfg = DDRelease|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.Build.0 = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Release|Win32.ActiveCfg = DDRelease|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.Build.0 = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|x64.ActiveCfg = DDDebug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.Build.0 = DDDebug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A2527}.DD Debug|Win32.ActiveCfg = DDDebug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/task_priority/index.html b/examples/task_priority/index.html
index 4667edd..d280813 100644
--- a/examples/task_priority/index.html
+++ b/examples/task_priority/index.html
@@ -13,7 +13,7 @@ This directory has examples of how to use the task priority feature.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/test_all/fibonacci/Fibonacci.cpp b/examples/test_all/fibonacci/Fibonacci.cpp
index bbcbdac..c554939 100644
--- a/examples/test_all/fibonacci/Fibonacci.cpp
+++ b/examples/test_all/fibonacci/Fibonacci.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* Example program that computes Fibonacci numbers in different ways.
@@ -338,7 +330,7 @@ value ParallelQueueFib(int n)
 
 //! filter to fills queue
 class InputFilter: public filter {
-    atomic<int> N; //< index of Fibonacci number minus 1
+    tbb::atomic<int> N; //< index of Fibonacci number minus 1
 public:
     concurrent_queue<Matrix2x2> Queue;
     //! fill filter arguments
diff --git a/examples/test_all/fibonacci/Makefile b/examples/test_all/fibonacci/Makefile
index b089a12..17a3e57 100644
--- a/examples/test_all/fibonacci/Makefile
+++ b/examples/test_all/fibonacci/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # GNU Makefile that builds and runs example.
 run_cmd=
diff --git a/examples/test_all/fibonacci/Makefile.windows b/examples/test_all/fibonacci/Makefile.windows
index 8ace2f6..28387cf 100644
--- a/examples/test_all/fibonacci/Makefile.windows
+++ b/examples/test_all/fibonacci/Makefile.windows
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 # Common Makefile that builds and runs example.
 
diff --git a/examples/test_all/fibonacci/index.html b/examples/test_all/fibonacci/index.html
index fe370ab..9e8d71b 100644
--- a/examples/test_all/fibonacci/index.html
+++ b/examples/test_all/fibonacci/index.html
@@ -18,7 +18,7 @@ show any speedup on multiprocessors.
 <H2>Directories</H2>
 <DL>
 <DT><A HREF="msvs">msvs</A> 
-<DD>Contains Microsoft* Visual Studio* 2005 workspace for building and running the 
+<DD>Contains Microsoft* Visual Studio* 2010 workspace for building and running the 
     example (Windows* systems only).<DT><A HREF="xcode">xcode</A>
 <DD>Contains Xcode* IDE workspace for building and running the example (OS X* 
     systems only).</DL>
@@ -41,7 +41,7 @@ General build directions can be found <A HREF=../../index.html#build>here</A>.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/examples/test_all/fibonacci/msvs/fibonacci.icproj b/examples/test_all/fibonacci/msvs/fibonacci.icproj
deleted file mode 100644
index 1f5e5b4..0000000
--- a/examples/test_all/fibonacci/msvs/fibonacci.icproj
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Intel C++ Project"
-	Version="11.1"
-	Name="fibonacci"
-	ProjectGUID="{123FDABA-4A55-4E79-AE28-58E90AA8256E}"
-	VCNestedProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252E}"
-	VCNestedProjectFileName="fibonacci.vcproj">
-	<Configurations/>
-	<Files/>
-</VisualStudioProject>
diff --git a/examples/test_all/fibonacci/msvs/fibonacci.sln b/examples/test_all/fibonacci/msvs/fibonacci.sln
new file mode 100644
index 0000000..81de2c0
--- /dev/null
+++ b/examples/test_all/fibonacci/msvs/fibonacci.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fibonacci", "fibonacci.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.Build.0 = Debug|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.ActiveCfg = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.Build.0 = Debug|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.ActiveCfg = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.Build.0 = Release|Win32
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.ActiveCfg = Release|x64
+		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/examples/test_all/fibonacci/msvs/fibonacci.vcproj b/examples/test_all/fibonacci/msvs/fibonacci.vcproj
deleted file mode 100644
index 186c37f..0000000
--- a/examples/test_all/fibonacci/msvs/fibonacci.vcproj
+++ /dev/null
@@ -1,356 +0,0 @@
-<?xml version="1.0" encoding="windows-1251"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="fibonacci"
-	ProjectGUID="{3AA40693-F93D-4D4B-B32E-068F511A252E}"
-	RootNamespace="fibonacci"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb_debug.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(TEMP)\tbb_examples\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc9;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(TEMP)\tbb_examples\$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(TEMP)\tbb_examples\$(SolutionName)\$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories=""$(TBBROOT)\include";"$(SolutionDir)\..\..\..\..\include";"
-				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="tbb.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc9;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc9"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="17"
-				FixedBaseAddress="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				Description="Copying DLLs and PDBs"
-				CommandLine="call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\Fibonacci.cpp"
-				>
-			</File>
-		</Filter>
-		<File
-			RelativePath="..\index.html"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/examples/test_all/fibonacci/msvs/fibonacci.vcxproj b/examples/test_all/fibonacci/msvs/fibonacci.vcxproj
new file mode 100644
index 0000000..c746082
--- /dev/null
+++ b/examples/test_all/fibonacci/msvs/fibonacci.vcxproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>fibonacci</ProjectName>
+    <ProjectGuid>{3AA40693-F93D-4D4B-B32E-068F511A252E}</ProjectGuid>
+    <RootNamespace>fibonacci</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <Import Project="..\..\..\common\toolset.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb_debug.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 debug "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  ia32 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>tbb.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+      <FixedBaseAddress>false</FixedBaseAddress>
+    </Link>
+    <PostBuildEvent>
+      <Message>Copying DLLs and PDBs</Message>
+      <Command>call "$(SolutionDir)\..\..\..\common\copy_libraries.bat"  intel64 release "$(OutDir)"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\Fibonacci.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\index.html" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/examples/test_all/fibonacci/msvs/fibonacci_cl.sln b/examples/test_all/fibonacci/msvs/fibonacci_cl.sln
deleted file mode 100644
index 60dafea..0000000
--- a/examples/test_all/fibonacci/msvs/fibonacci_cl.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fibonacci", "fibonacci.vcproj", "{3AA40693-F93D-4D4B-B32E-068F511A252E}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/test_all/fibonacci/msvs/fibonacci_icl.sln b/examples/test_all/fibonacci/msvs/fibonacci_icl.sln
deleted file mode 100644
index 70c5369..0000000
--- a/examples/test_all/fibonacci/msvs/fibonacci_icl.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{EAF909A5-FA59-4C3D-9431-0FCC20D5BCF9}") = "fibonacci", "fibonacci.icproj", "{123FDABA-4A55-4E79-AE28-58E90AA8256E}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Debug|Win32.Build.0 = Debug|Win32
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Debug|x64.ActiveCfg = Debug|x64
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Debug|x64.Build.0 = Debug|x64
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Release|Win32.ActiveCfg = Release|Win32
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Release|Win32.Build.0 = Release|Win32
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Release|x64.ActiveCfg = Release|x64
-		{123FDABA-4A55-4E79-AE28-58E90AA8256E}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.Build.0 = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|x64.ActiveCfg = Release|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.Build.0 = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Release|Win32.ActiveCfg = Release|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.Build.0 = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|x64.ActiveCfg = Debug|x64
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.Build.0 = Debug|Win32
-		{3AA40693-F93D-4D4B-B32E-068F511A252E}.Debug|Win32.ActiveCfg = Debug|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/examples/test_all/index.html b/examples/test_all/index.html
index 7850f4a..c03c1dc 100644
--- a/examples/test_all/index.html
+++ b/examples/test_all/index.html
@@ -13,7 +13,7 @@ This directory contains programs that exercise all the components of Intel®
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/include/index.html b/include/index.html
index 0c85b47..1ae0167 100644
--- a/include/index.html
+++ b/include/index.html
@@ -13,7 +13,7 @@ Include files for Intel® Threading Building Blocks (Intel® TBB).
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/include/serial/tbb/parallel_for.h b/include/serial/tbb/parallel_for.h
index f84f681..89e5483 100644
--- a/include/serial/tbb/parallel_for.h
+++ b/include/serial/tbb/parallel_for.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_SERIAL_parallel_for_H
@@ -51,7 +43,7 @@
 
 namespace tbb {
 namespace serial {
-namespace interface6 {
+namespace interface7 {
 
 // parallel_for serial annotated implementation
 
@@ -72,10 +64,10 @@ class start_for : tbb::internal::no_copy {
 
     //! Splitting constructor used to generate children.
     /** this becomes left child.  Newly constructed object is right child. */
-    start_for( start_for& parent_, split ) :
-        my_range( parent_.my_range, split() ),
+    start_for( start_for& parent_, typename Partitioner::split_type& split_obj ) :
+        my_range( parent_.my_range, split_obj ),
         my_body( parent_.my_body ),
-        my_partition( parent_.my_partition, split() )
+        my_partition( parent_.my_partition, split_obj )
     {
     }
 
@@ -101,7 +93,8 @@ void start_for< Range, Body, Partitioner >::execute() {
         }
         ANNOTATE_TASK_END( tbb_parallel_for_range );
     } else {
-        start_for b( *this, split() );
+        typename Partitioner::split_type split_obj;
+        start_for b( *this, split_obj );
         this->execute(); // Execute the left interval first to keep the serial order.
         b.execute();     // Execute the right interval then.
     }
@@ -111,28 +104,28 @@ void start_for< Range, Body, Partitioner >::execute() {
 /** @ingroup algorithms **/
 template<typename Range, typename Body>
 void parallel_for( const Range& range, const Body& body ) {
-    serial::interface6::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
+    serial::interface7::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
 }
 
 //! Parallel iteration over range with simple partitioner.
 /** @ingroup algorithms **/
 template<typename Range, typename Body>
 void parallel_for( const Range& range, const Body& body, const simple_partitioner& partitioner ) {
-    serial::interface6::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
+    serial::interface7::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
 }
 
 //! Parallel iteration over range with auto_partitioner.
 /** @ingroup algorithms **/
 template<typename Range, typename Body>
 void parallel_for( const Range& range, const Body& body, const auto_partitioner& partitioner ) {
-    serial::interface6::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
+    serial::interface7::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
 }
 
 //! Parallel iteration over range with affinity_partitioner.
 /** @ingroup algorithms **/
 template<typename Range, typename Body>
 void parallel_for( const Range& range, const Body& body, affinity_partitioner& partitioner ) {
-    serial::interface6::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
+    serial::interface7::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
 }
 
 //! Implementation of parallel iteration over stepped range of integers with explicit step and partitioner (ignored)
@@ -194,14 +187,14 @@ void parallel_for(Index first, Index last, const Function& f, affinity_partition
     parallel_for_impl(first, last, static_cast<Index>(1), f, p);
 }
 
-} // namespace interface6
+} // namespace interface7
 
-using interface6::parallel_for;
+using interface7::parallel_for;
 
 } // namespace serial
 
 #ifndef __TBB_NORMAL_EXECUTION
-using serial::interface6::parallel_for;
+using serial::interface7::parallel_for;
 #endif
 
 } // namespace tbb
diff --git a/include/serial/tbb/tbb_annotate.h b/include/serial/tbb/tbb_annotate.h
index e2582a8..e4e321f 100644
--- a/include/serial/tbb/tbb_annotate.h
+++ b/include/serial/tbb/tbb_annotate.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_annotate_H
diff --git a/include/tbb/aggregator.h b/include/tbb/aggregator.h
index f69743d..ed908c0 100644
--- a/include/tbb/aggregator.h
+++ b/include/tbb/aggregator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__aggregator_H
@@ -189,7 +181,7 @@ public:
 class aggregator : private aggregator_ext<internal::basic_handler> {
 public:
     aggregator() : aggregator_ext<internal::basic_handler>(internal::basic_handler()) {}
-    //! BASIC INTERFACE: Enter a function for exclusvie execution by the aggregator.
+    //! BASIC INTERFACE: Enter a function for exclusive execution by the aggregator.
     /** The calling thread stores the function object in a basic_operation and
         places the operation in the aggregator's mailbox */
     template<typename Body>
diff --git a/include/tbb/aligned_space.h b/include/tbb/aligned_space.h
index e6107c6..8ee62a0 100644
--- a/include/tbb/aligned_space.h
+++ b/include/tbb/aligned_space.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_aligned_space_H
@@ -37,7 +29,7 @@ namespace tbb {
 //! Block of space aligned sufficiently to construct an array T with N elements.
 /** The elements are not constructed or destroyed by this class.
     @ingroup memory_allocation */
-template<typename T,size_t N>
+template<typename T,size_t N=1>
 class aligned_space {
 private:
     typedef __TBB_TypeWithAlignmentAtLeastAsStrict(T) element_type;
diff --git a/include/tbb/atomic.h b/include/tbb/atomic.h
index 014ad00..e3ffa6e 100644
--- a/include/tbb/atomic.h
+++ b/include/tbb/atomic.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_atomic_H
@@ -425,7 +417,7 @@ struct atomic: internal::atomic_impl<T> {
 #if __TBB_ATOMIC_CTORS
     #define __TBB_DECL_ATOMIC(T)                                                                    \
         template<> struct atomic<T>: internal::atomic_impl_with_arithmetic<T,T,char> {              \
-            atomic() = default;                                                                             \
+            atomic() = default;                                                                     \
             constexpr atomic(T arg): internal::atomic_impl_with_arithmetic<T,T,char>(arg) {}        \
                                                                                                     \
             T operator=( T rhs ) {return store_with_release(rhs);}                                  \
@@ -458,7 +450,7 @@ __TBB_DECL_ATOMIC(unsigned long)
    perspective of /Wp64. */
 #define __TBB_DECL_ATOMIC_ALT(T,U) \
     template<> struct atomic<T>: internal::atomic_impl_with_arithmetic<T,T,char> {             \
-        atomic() = default ;                                                                            \
+        atomic() = default ;                                                                   \
         constexpr atomic(T arg): internal::atomic_impl_with_arithmetic<T,T,char>(arg) {}       \
         T operator=( U rhs ) {return store_with_release(T(rhs));}                              \
         atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;}  \
@@ -527,10 +519,10 @@ template <memory_semantics M, typename T>
 T load ( const atomic<T>& a ) { return a.template load<M>(); }
 
 template <memory_semantics M, typename T>
-void store ( atomic<T>& a, T value ) { return a.template store<M>(value); }
+void store ( atomic<T>& a, T value ) { a.template store<M>(value); }
 
 namespace interface6{
-//! Make an atomic for use in an initialization (list), as an alternative to zero-initializaton or normal assignment.
+//! Make an atomic for use in an initialization (list), as an alternative to zero-initialization or normal assignment.
 template<typename T>
 atomic<T> make_atomic(T t) {
     atomic<T> a;
@@ -541,6 +533,12 @@ atomic<T> make_atomic(T t) {
 using interface6::make_atomic;
 
 namespace internal {
+template<memory_semantics M, typename T >
+void swap(atomic<T> & lhs, atomic<T> & rhs){
+    T tmp = load<M>(lhs);
+    store<M>(lhs,load<M>(rhs));
+    store<M>(rhs,tmp);
+}
 
 // only to aid in the gradual conversion of ordinary variables to proper atomics
 template<typename T>
diff --git a/include/tbb/blocked_range.h b/include/tbb/blocked_range.h
index f2a069d..220e695 100644
--- a/include/tbb/blocked_range.h
+++ b/include/tbb/blocked_range.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_blocked_range_H
@@ -60,8 +52,8 @@ public:
     blocked_range() : my_end(), my_begin() {}
 
     //! Construct range over half-open interval [begin,end), with the given grainsize.
-    blocked_range( Value begin_, Value end_, size_type grainsize_=1 ) : 
-        my_end(end_), my_begin(begin_), my_grainsize(grainsize_) 
+    blocked_range( Value begin_, Value end_, size_type grainsize_=1 ) :
+        my_end(end_), my_begin(begin_), my_grainsize(grainsize_)
     {
         __TBB_ASSERT( my_grainsize>0, "grainsize must be positive" );
     }
@@ -93,14 +85,34 @@ public:
     /** Unspecified if end()<begin(). */
     bool is_divisible() const {return my_grainsize<size();}
 
-    //! Split range.  
-    /** The new Range *this has the second half, the old range r has the first half. 
+    //! Split range.
+    /** The new Range *this has the second part, the old range r has the first part.
         Unspecified if end()<begin() or !is_divisible(). */
-    blocked_range( blocked_range& r, split ) : 
+    blocked_range( blocked_range& r, split ) :
         my_end(r.my_end),
-        my_begin(do_split(r)),
+        my_begin(do_split(r, split())),
         my_grainsize(r.my_grainsize)
-    {}
+    {
+        // only comparison 'less than' is required from values of blocked_range objects
+        __TBB_ASSERT( !(my_begin < r.my_end) && !(r.my_end < my_begin), "blocked_range has been split incorrectly" );
+    }
+
+#if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+    //! Static field to support proportional split
+    static const bool is_splittable_in_proportion = true;
+
+    //! Split range.
+    /** The new Range *this has the second part split according to specified proportion, the old range r has the first part.
+        Unspecified if end()<begin() or !is_divisible(). */
+    blocked_range( blocked_range& r, proportional_split& proportion ) :
+        my_end(r.my_end),
+        my_begin(do_split(r, proportion)),
+        my_grainsize(r.my_grainsize)
+    {
+        // only comparison 'less than' is required from values of blocked_range objects
+        __TBB_ASSERT( !(my_begin < r.my_end) && !(r.my_end < my_begin), "blocked_range has been split incorrectly" );
+    }
+#endif /* __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES */
 
 private:
     /** NOTE: my_end MUST be declared before my_begin, otherwise the forking constructor will break. */
@@ -110,13 +122,31 @@ private:
 
     //! Auxiliary function used by forking constructor.
     /** Using this function lets us not require that Value support assignment or default construction. */
-    static Value do_split( blocked_range& r ) {
+    static Value do_split( blocked_range& r, split )
+    {
         __TBB_ASSERT( r.is_divisible(), "cannot split blocked_range that is not divisible" );
-        Value middle = r.my_begin + (r.my_end-r.my_begin)/2u;
+        Value middle = r.my_begin + (r.my_end - r.my_begin) / 2u;
         r.my_end = middle;
         return middle;
     }
 
+#if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+    static Value do_split( blocked_range& r, proportional_split& proportion )
+    {
+        __TBB_ASSERT( r.is_divisible(), "cannot split blocked_range that is not divisible" );
+
+        // usage of 32-bit floating point arithmetic is not enough to handle ranges of
+        // more than 2^24 iterations accurately. However, even on ranges with 2^64
+        // iterations the computational error approximately equals to 0.000001% which
+        // makes small impact on uniform distribution of such range's iterations (assuming
+        // all iterations take equal time to complete). See 'test_partitioner_whitebox'
+        // for implementation of an exact split algorithm
+        size_type right_part = size_type(float(r.size()) * float(proportion.right())
+                                         / float(proportion.left() + proportion.right()) + 0.5f);
+        return r.my_end = Value(r.my_end - right_part);
+    }
+#endif /* __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES */
+
     template<typename RowValue, typename ColValue>
     friend class blocked_range2d;
 
@@ -124,6 +154,6 @@ private:
     friend class blocked_range3d;
 };
 
-} // namespace tbb 
+} // namespace tbb
 
 #endif /* __TBB_blocked_range_H */
diff --git a/include/tbb/blocked_range2d.h b/include/tbb/blocked_range2d.h
index 0738b7e..3a2f383 100644
--- a/include/tbb/blocked_range2d.h
+++ b/include/tbb/blocked_range2d.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_blocked_range2d_H
@@ -42,7 +34,7 @@ public:
     //! Type for size of an iteration range
     typedef blocked_range<RowValue> row_range_type;
     typedef blocked_range<ColValue> col_range_type;
- 
+
 private:
     row_range_type my_rows;
     col_range_type my_cols;
@@ -50,14 +42,14 @@ private:
 public:
 
     blocked_range2d( RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize,
-                     ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize ) : 
+                     ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize ) :
         my_rows(row_begin,row_end,row_grainsize),
         my_cols(col_begin,col_end,col_grainsize)
     {
     }
 
     blocked_range2d( RowValue row_begin, RowValue row_end,
-                     ColValue col_begin, ColValue col_end ) : 
+                     ColValue col_begin, ColValue col_end ) :
         my_rows(row_begin,row_end),
         my_cols(col_begin,col_end)
     {
@@ -74,24 +66,43 @@ public:
         return my_rows.is_divisible() || my_cols.is_divisible();
     }
 
-    blocked_range2d( blocked_range2d& r, split ) : 
+    blocked_range2d( blocked_range2d& r, split ) :
+        my_rows(r.my_rows),
+        my_cols(r.my_cols)
+    {
+        split split_obj;
+        do_split(r, split_obj);
+    }
+
+#if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+    //! Static field to support proportional split
+    static const bool is_splittable_in_proportion = true;
+
+    blocked_range2d( blocked_range2d& r, proportional_split& proportion ) :
         my_rows(r.my_rows),
         my_cols(r.my_cols)
     {
+        do_split(r, proportion);
+    }
+#endif /* __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES */
+
+    template <typename Split>
+    void do_split( blocked_range2d& r, Split& split_obj )
+    {
         if( my_rows.size()*double(my_cols.grainsize()) < my_cols.size()*double(my_rows.grainsize()) ) {
-            my_cols.my_begin = col_range_type::do_split(r.my_cols);
+            my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
         } else {
-            my_rows.my_begin = row_range_type::do_split(r.my_rows);
+            my_rows.my_begin = row_range_type::do_split(r.my_rows, split_obj);
         }
     }
 
-    //! The rows of the iteration space 
+    //! The rows of the iteration space
     const row_range_type& rows() const {return my_rows;}
 
-    //! The columns of the iteration space 
+    //! The columns of the iteration space
     const col_range_type& cols() const {return my_cols;}
 };
 
-} // namespace tbb 
+} // namespace tbb
 
 #endif /* __TBB_blocked_range2d_H */
diff --git a/include/tbb/blocked_range3d.h b/include/tbb/blocked_range3d.h
index e269467..0e27bba 100644
--- a/include/tbb/blocked_range3d.h
+++ b/include/tbb/blocked_range3d.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_blocked_range3d_H
@@ -43,7 +35,7 @@ public:
     typedef blocked_range<PageValue> page_range_type;
     typedef blocked_range<RowValue>  row_range_type;
     typedef blocked_range<ColValue>  col_range_type;
- 
+
 private:
     page_range_type my_pages;
     row_range_type  my_rows;
@@ -53,16 +45,16 @@ public:
 
     blocked_range3d( PageValue page_begin, PageValue page_end,
                      RowValue  row_begin,  RowValue row_end,
-                     ColValue  col_begin,  ColValue col_end ) : 
+                     ColValue  col_begin,  ColValue col_end ) :
         my_pages(page_begin,page_end),
         my_rows(row_begin,row_end),
         my_cols(col_begin,col_end)
     {
     }
 
-    blocked_range3d( PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, 
+    blocked_range3d( PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize,
                      RowValue  row_begin,  RowValue row_end,   typename row_range_type::size_type row_grainsize,
-                     ColValue  col_begin,  ColValue col_end,   typename col_range_type::size_type col_grainsize ) :  
+                     ColValue  col_begin,  ColValue col_end,   typename col_range_type::size_type col_grainsize ) :
         my_pages(page_begin,page_end,page_grainsize),
         my_rows(row_begin,row_end,row_grainsize),
         my_cols(col_begin,col_end,col_grainsize)
@@ -80,37 +72,57 @@ public:
         return  my_pages.is_divisible() || my_rows.is_divisible() || my_cols.is_divisible();
     }
 
-    blocked_range3d( blocked_range3d& r, split ) : 
+    blocked_range3d( blocked_range3d& r, split ) :
         my_pages(r.my_pages),
         my_rows(r.my_rows),
         my_cols(r.my_cols)
     {
-        if( my_pages.size()*double(my_rows.grainsize()) < my_rows.size()*double(my_pages.grainsize()) ) {
+        split split_obj;
+        do_split(r, split_obj);
+    }
+
+#if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+    //! Static field to support proportional split
+    static const bool is_splittable_in_proportion = true;
+
+    blocked_range3d( blocked_range3d& r, proportional_split& proportion ) :
+        my_pages(r.my_pages),
+        my_rows(r.my_rows),
+        my_cols(r.my_cols)
+    {
+        do_split(r, proportion);
+    }
+#endif /* __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES */
+
+    template <typename Split>
+    void do_split( blocked_range3d& r, Split& split_obj)
+    {
+        if ( my_pages.size()*double(my_rows.grainsize()) < my_rows.size()*double(my_pages.grainsize()) ) {
             if ( my_rows.size()*double(my_cols.grainsize()) < my_cols.size()*double(my_rows.grainsize()) ) {
-                my_cols.my_begin = col_range_type::do_split(r.my_cols);
+                my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
             } else {
-                my_rows.my_begin = row_range_type::do_split(r.my_rows);
+                my_rows.my_begin = row_range_type::do_split(r.my_rows, split_obj);
             }
 	} else {
             if ( my_pages.size()*double(my_cols.grainsize()) < my_cols.size()*double(my_pages.grainsize()) ) {
-                my_cols.my_begin = col_range_type::do_split(r.my_cols);
+                my_cols.my_begin = col_range_type::do_split(r.my_cols, split_obj);
             } else {
-                    my_pages.my_begin = page_range_type::do_split(r.my_pages);
+                my_pages.my_begin = page_range_type::do_split(r.my_pages, split_obj);
             }
         }
     }
 
-    //! The pages of the iteration space 
+    //! The pages of the iteration space
     const page_range_type& pages() const {return my_pages;}
 
-    //! The rows of the iteration space 
+    //! The rows of the iteration space
     const row_range_type& rows() const {return my_rows;}
 
-    //! The columns of the iteration space 
+    //! The columns of the iteration space
     const col_range_type& cols() const {return my_cols;}
 
 };
 
-} // namespace tbb 
+} // namespace tbb
 
 #endif /* __TBB_blocked_range3d_H */
diff --git a/include/tbb/cache_aligned_allocator.h b/include/tbb/cache_aligned_allocator.h
index b9fa58d..2a58dab 100644
--- a/include/tbb/cache_aligned_allocator.h
+++ b/include/tbb/cache_aligned_allocator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_cache_aligned_allocator_H
@@ -31,7 +23,7 @@
 
 #include <new>
 #include "tbb_stddef.h"
-#if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_CPP11_STD_FORWARD_BROKEN
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
  #include <utility> // std::forward
 #endif
 
@@ -105,12 +97,11 @@ public:
 #if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     template<typename U, typename... Args>
     void construct(U *p, Args&&... args)
- #if __TBB_CPP11_STD_FORWARD_BROKEN
-        { ::new((void *)p) U((args)...); }
- #else
         { ::new((void *)p) U(std::forward<Args>(args)...); }
- #endif
 #else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void construct( pointer p, value_type&& value ) {::new((void*)(p)) value_type(std::move(value));}
+#endif
     void construct( pointer p, const value_type& value ) {::new((void*)(p)) value_type(value);}
 #endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
 
diff --git a/include/tbb/combinable.h b/include/tbb/combinable.h
index 31efa7e..57fd98c 100644
--- a/include/tbb/combinable.h
+++ b/include/tbb/combinable.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_combinable_H
diff --git a/include/tbb/compat/condition_variable b/include/tbb/compat/condition_variable
index 4727c49..ce9c237 100644
--- a/include/tbb/compat/condition_variable
+++ b/include/tbb/compat/condition_variable
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_condition_variable_H
@@ -148,6 +140,25 @@ public:
         it uses tbb::tick_count::interval_t to specify the time duration. */
     unique_lock(mutex_type& m, const tick_count::interval_t &i) : pm(&m) {owns = try_lock_for( i );}
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructor
+    /** postconditions: pm == src_p.pm and owns == src_p.owns (where src_p is the state of src just prior to this
+        construction), src.pm == 0 and src.owns == false. */
+    unique_lock(unique_lock && src): pm(NULL), owns(false) {this->swap(src);}
+
+    //! Move assignment
+    /** effects: If owns calls pm->unlock().
+        Postconditions: pm == src_p.pm and owns == src_p.owns (where src_p is the state of src just prior to this
+        assignment), src.pm == 0 and src.owns == false. */
+    unique_lock& operator=(unique_lock && src) {
+        if (owns)
+            this->unlock();
+        pm = NULL;
+        this->swap(src);
+        return *this;
+    }
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
     //! Destructor
     ~unique_lock() { if( owns ) pm->unlock(); }
 
diff --git a/include/tbb/compat/ppl.h b/include/tbb/compat/ppl.h
index d01783c..156fd39 100644
--- a/include/tbb/compat/ppl.h
+++ b/include/tbb/compat/ppl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_compat_ppl_H
diff --git a/include/tbb/compat/thread b/include/tbb/compat/thread
index 04cfda4..fcab1e5 100644
--- a/include/tbb/compat/thread
+++ b/include/tbb/compat/thread
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_thread_H
diff --git a/include/tbb/compat/tuple b/include/tbb/compat/tuple
index 30b7085..795b2fb 100644
--- a/include/tbb/compat/tuple
+++ b/include/tbb/compat/tuple
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tuple_H
diff --git a/include/tbb/concurrent_hash_map.h b/include/tbb/concurrent_hash_map.h
index eb45861..33876b5 100644
--- a/include/tbb/concurrent_hash_map.h
+++ b/include/tbb/concurrent_hash_map.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_hash_map_H
@@ -40,6 +32,7 @@
 #include <iterator>
 #include <utility>      // Need std::pair
 #include <cstring>      // Need std::memset
+#include <algorithm>    // Need std::swap
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     #pragma warning (pop)
@@ -49,7 +42,6 @@
 #include "tbb_allocator.h"
 #include "spin_rw_mutex.h"
 #include "atomic.h"
-#include "aligned_space.h"
 #include "tbb_exception.h"
 #include "tbb_profiling.h"
 #include "internal/_concurrent_unordered_impl.h" // Need tbb_hasher
@@ -479,19 +471,6 @@ namespace interface5 {
             my_midpoint(r.my_midpoint),
             my_grainsize(r.my_grainsize)
         {}
-#if TBB_DEPRECATED
-        //! Init range with iterators and grainsize specified
-        hash_map_range( const Iterator& begin_, const Iterator& end_, size_type grainsize_ = 1 ) :
-            my_begin(begin_),
-            my_end(end_),
-            my_grainsize(grainsize_)
-        {
-            if(!my_end.my_index && !my_end.my_bucket) // end
-                my_end.my_index = my_end.my_map->my_mask + 1;
-            set_midpoint();
-            __TBB_ASSERT( grainsize_>0, "grainsize must be positive" );
-        }
-#endif
         //! Init range with container and grainsize specified
         hash_map_range( const map_type &map, size_type grainsize_ = 1 ) :
             my_begin( Iterator( map, 0, map.my_embedded_segment, map.my_embedded_segment->node_list ) ),
@@ -529,6 +508,12 @@ namespace interface5 {
     } // internal
 //! @endcond
 
+#if _MSC_VER && !defined(__INTEL_COMPILER)
+    // Suppress "conditional expression is constant" warning.
+    #pragma warning( push )
+    #pragma warning( disable: 4127 )
+#endif
+
 //! Unordered map from Key to T.
 /** concurrent_hash_map is associative container with concurrent access.
 
@@ -594,6 +579,19 @@ protected:
         value_type item;
         node( const Key &key ) : item(key, T()) {}
         node( const Key &key, const T &t ) : item(key, t) {}
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        node( const Key &key, T &&t ) : item(key, std::move(t)) {}
+        node( value_type&& i ) : item(std::move(i)){}
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+        template<typename... Args>
+        node( Args&&... args ) : item(std::forward<Args>(args)...) {}
+#if __TBB_COPY_FROM_NON_CONST_REF_BROKEN
+        node( value_type& i ) : item(const_cast<const value_type&>(i)) {}
+#endif //__TBB_COPY_FROM_NON_CONST_REF_BROKEN
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+        node( const value_type& i ) : item(i) {}
+
         // exception-safe allocation, see C++ Standard 2003, clause 5.3.4p17
         void *operator new( size_t /*size*/, node_allocator_type &a ) {
             void *ptr = a.allocate(1);
@@ -610,6 +608,31 @@ protected:
         my_allocator.deallocate( static_cast<node*>(n), 1);
     }
 
+    static node* allocate_node_copy_construct(node_allocator_type& allocator, const Key &key, const T * t){
+        return  new( allocator ) node(key, *t);
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    static node* allocate_node_move_construct(node_allocator_type& allocator, const Key &key, const T * t){
+        return  new( allocator ) node(key, std::move(*const_cast<T*>(t)));
+    }
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename... Args>
+    static node* allocate_node_emplace_construct(node_allocator_type& allocator, Args&&... args){
+        return  new( allocator ) node(std::forward<Args>(args)...);
+    }
+#endif //#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif
+
+    static node* allocate_node_default_construct(node_allocator_type& allocator, const Key &key, const T * ){
+        return  new( allocator ) node(key);
+    }
+
+    static node* do_not_allocate_node(node_allocator_type& , const Key &, const T * ){
+        __TBB_ASSERT(false,"this dummy function should not be called");
+        return NULL;
+    }
+
     node *search_bucket( const key_type &key, bucket *b ) const {
         node *n = static_cast<node*>( b->node_list );
         while( is_valid(n) && !my_hash_compare.equal(key, n->item.first) )
@@ -674,6 +697,16 @@ protected:
         }
     }
 
+    struct call_clear_on_leave {
+        concurrent_hash_map* my_ch_map;
+        call_clear_on_leave( concurrent_hash_map* a_ch_map ) : my_ch_map(a_ch_map) {}
+        void dismiss() {my_ch_map = 0;}
+        ~call_clear_on_leave(){
+            if (my_ch_map){
+                my_ch_map->clear();
+            }
+        }
+    };
 public:
 
     class accessor;
@@ -686,7 +719,7 @@ public:
         typedef const typename concurrent_hash_map::value_type value_type;
 
         //! True if result is empty.
-        bool empty() const {return !my_node;}
+        bool empty() const { return !my_node; }
 
         //! Set to null
         void release() {
@@ -739,27 +772,49 @@ public:
     };
 
     //! Construct empty table.
-    concurrent_hash_map(const allocator_type &a = allocator_type())
+    concurrent_hash_map( const allocator_type &a = allocator_type() )
         : internal::hash_map_base(), my_allocator(a)
     {}
 
     //! Construct empty table with n preallocated buckets. This number serves also as initial concurrency level.
-    concurrent_hash_map(size_type n, const allocator_type &a = allocator_type())
+    concurrent_hash_map( size_type n, const allocator_type &a = allocator_type() )
         : my_allocator(a)
     {
         reserve( n );
     }
 
     //! Copy constructor
-    concurrent_hash_map( const concurrent_hash_map& table, const allocator_type &a = allocator_type())
+    concurrent_hash_map( const concurrent_hash_map &table, const allocator_type &a = allocator_type() )
         : internal::hash_map_base(), my_allocator(a)
     {
         internal_copy(table);
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructor
+    concurrent_hash_map( concurrent_hash_map &&table )
+        : internal::hash_map_base(), my_allocator(std::move(table.get_allocator()))
+    {
+        swap(table);
+    }
+
+    //! Move constructor 
+    concurrent_hash_map( concurrent_hash_map &&table, const allocator_type &a )
+        : internal::hash_map_base(), my_allocator(a)
+    {
+        if (a == table.get_allocator()){
+            this->swap(table);
+        }else{
+            call_clear_on_leave scope_guard(this);
+            internal_copy(std::make_move_iterator(table.begin()), std::make_move_iterator(table.end()));
+            scope_guard.dismiss();
+        }
+    }
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
     //! Construction with copying iteration range and given allocator instance
     template<typename I>
-    concurrent_hash_map(I first, I last, const allocator_type &a = allocator_type())
+    concurrent_hash_map( I first, I last, const allocator_type &a = allocator_type() )
         : my_allocator(a)
     {
         reserve( std::distance(first, last) ); // TODO: load_factor?
@@ -768,7 +823,7 @@ public:
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Construct empty table with n preallocated buckets. This number serves also as initial concurrency level.
-    concurrent_hash_map(const std::initializer_list<value_type> &il, const allocator_type &a = allocator_type())
+    concurrent_hash_map( std::initializer_list<value_type> il, const allocator_type &a = allocator_type() )
         : my_allocator(a)
     {
         reserve(il.size());
@@ -778,7 +833,7 @@ public:
 #endif //__TBB_INITIALIZER_LISTS_PRESENT
 
     //! Assignment
-    concurrent_hash_map& operator=( const concurrent_hash_map& table ) {
+    concurrent_hash_map& operator=( const concurrent_hash_map &table ) {
         if( this!=&table ) {
             clear();
             internal_copy(table);
@@ -786,9 +841,28 @@ public:
         return *this;
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move Assignment
+    concurrent_hash_map& operator=( concurrent_hash_map &&table ) {
+        if(this != &table){
+            typedef typename tbb::internal::allocator_traits<allocator_type>::propagate_on_container_move_assignment pocma_t;
+            if(pocma_t::value || this->my_allocator == table.my_allocator) {
+                concurrent_hash_map trash (std::move(*this));
+                //TODO: swapping allocators here may be a problem, replace with single direction moving iff pocma is set
+                this->swap(table);
+            } else {
+                //do per element move
+                concurrent_hash_map moved_copy(std::move(table), this->my_allocator);
+                this->swap(moved_copy);
+            }
+        }
+        return *this;
+    }
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Assignment
-    concurrent_hash_map& operator=( const std::initializer_list<value_type> &il ) {
+    concurrent_hash_map& operator=( std::initializer_list<value_type> il ) {
         clear();
         reserve(il.size());
         internal_copy(il.begin(), il.end());
@@ -821,12 +895,12 @@ public:
     //------------------------------------------------------------------------
     // STL support - not thread-safe methods
     //------------------------------------------------------------------------
-    iterator begin() {return iterator(*this,0,my_embedded_segment,my_embedded_segment->node_list);}
-    iterator end() {return iterator(*this,0,0,0);}
-    const_iterator begin() const {return const_iterator(*this,0,my_embedded_segment,my_embedded_segment->node_list);}
-    const_iterator end() const {return const_iterator(*this,0,0,0);}
-    std::pair<iterator, iterator> equal_range( const Key& key ) { return internal_equal_range(key, end()); }
-    std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const { return internal_equal_range(key, end()); }
+    iterator begin() { return iterator( *this, 0, my_embedded_segment, my_embedded_segment->node_list ); }
+    iterator end() { return iterator( *this, 0, 0, 0 ); }
+    const_iterator begin() const { return const_iterator( *this, 0, my_embedded_segment, my_embedded_segment->node_list ); }
+    const_iterator end() const { return const_iterator( *this, 0, 0, 0 ); }
+    std::pair<iterator, iterator> equal_range( const Key& key ) { return internal_equal_range( key, end() ); }
+    std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const { return internal_equal_range( key, end() ); }
 
     //! Number of items in table.
     size_type size() const { return my_size; }
@@ -844,7 +918,7 @@ public:
     allocator_type get_allocator() const { return this->my_allocator; }
 
     //! swap two instances. Iterators are invalidated
-    void swap(concurrent_hash_map &table);
+    void swap( concurrent_hash_map &table );
 
     //------------------------------------------------------------------------
     // concurrent map operations
@@ -852,64 +926,114 @@ public:
 
     //! Return count of items (0 or 1)
     size_type count( const Key &key ) const {
-        return const_cast<concurrent_hash_map*>(this)->lookup(/*insert*/false, key, NULL, NULL, /*write=*/false );
+        return const_cast<concurrent_hash_map*>(this)->lookup(/*insert*/false, key, NULL, NULL, /*write=*/false, &do_not_allocate_node );
     }
 
     //! Find item and acquire a read lock on the item.
     /** Return true if item is found, false otherwise. */
     bool find( const_accessor &result, const Key &key ) const {
         result.release();
-        return const_cast<concurrent_hash_map*>(this)->lookup(/*insert*/false, key, NULL, &result, /*write=*/false );
+        return const_cast<concurrent_hash_map*>(this)->lookup(/*insert*/false, key, NULL, &result, /*write=*/false, &do_not_allocate_node );
     }
 
     //! Find item and acquire a write lock on the item.
     /** Return true if item is found, false otherwise. */
     bool find( accessor &result, const Key &key ) {
         result.release();
-        return lookup(/*insert*/false, key, NULL, &result, /*write=*/true );
+        return lookup(/*insert*/false, key, NULL, &result, /*write=*/true, &do_not_allocate_node );
     }
 
     //! Insert item (if not already present) and acquire a read lock on the item.
     /** Returns true if item is new. */
     bool insert( const_accessor &result, const Key &key ) {
         result.release();
-        return lookup(/*insert*/true, key, NULL, &result, /*write=*/false );
+        return lookup(/*insert*/true, key, NULL, &result, /*write=*/false, &allocate_node_default_construct );
     }
 
     //! Insert item (if not already present) and acquire a write lock on the item.
     /** Returns true if item is new. */
     bool insert( accessor &result, const Key &key ) {
         result.release();
-        return lookup(/*insert*/true, key, NULL, &result, /*write=*/true );
+        return lookup(/*insert*/true, key, NULL, &result, /*write=*/true, &allocate_node_default_construct );
     }
 
     //! Insert item by copying if there is no such key present already and acquire a read lock on the item.
     /** Returns true if item is new. */
     bool insert( const_accessor &result, const value_type &value ) {
         result.release();
-        return lookup(/*insert*/true, value.first, &value.second, &result, /*write=*/false );
+        return lookup(/*insert*/true, value.first, &value.second, &result, /*write=*/false, &allocate_node_copy_construct );
     }
 
     //! Insert item by copying if there is no such key present already and acquire a write lock on the item.
     /** Returns true if item is new. */
     bool insert( accessor &result, const value_type &value ) {
         result.release();
-        return lookup(/*insert*/true, value.first, &value.second, &result, /*write=*/true );
+        return lookup(/*insert*/true, value.first, &value.second, &result, /*write=*/true, &allocate_node_copy_construct );
     }
 
     //! Insert item by copying if there is no such key present already
     /** Returns true if item is inserted. */
     bool insert( const value_type &value ) {
-        return lookup(/*insert*/true, value.first, &value.second, NULL, /*write=*/false );
+        return lookup(/*insert*/true, value.first, &value.second, NULL, /*write=*/false, &allocate_node_copy_construct );
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Insert item by copying if there is no such key present already and acquire a read lock on the item.
+    /** Returns true if item is new. */
+    bool insert( const_accessor &result, value_type && value ) {
+        return generic_move_insert(result, std::move(value));
+    }
+
+    //! Insert item by copying if there is no such key present already and acquire a write lock on the item.
+    /** Returns true if item is new. */
+    bool insert( accessor &result, value_type && value ) {
+        return generic_move_insert(result, std::move(value));
+    }
+
+    //! Insert item by copying if there is no such key present already
+    /** Returns true if item is inserted. */
+    bool insert( value_type && value ) {
+        return generic_move_insert(accessor_not_used(), std::move(value));
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    //! Insert item by copying if there is no such key present already and acquire a read lock on the item.
+    /** Returns true if item is new. */
+    template<typename... Args>
+    bool emplace( const_accessor &result, Args&&... args ) {
+        return generic_emplace(result, std::forward<Args>(args)...);
+    }
+
+    //! Insert item by copying if there is no such key present already and acquire a write lock on the item.
+    /** Returns true if item is new. */
+    template<typename... Args>
+    bool emplace( accessor &result, Args&&... args ) {
+        return generic_emplace(result, std::forward<Args>(args)...);
+    }
+
+    //! Insert item by copying if there is no such key present already
+    /** Returns true if item is inserted. */
+    template<typename... Args>
+    bool emplace( Args&&... args ) {
+        return generic_emplace(accessor_not_used(), std::forward<Args>(args)...);
     }
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 
     //! Insert range [first, last)
     template<typename I>
-    void insert(I first, I last) {
-        for(; first != last; ++first)
+    void insert( I first, I last ) {
+        for ( ; first != last; ++first )
             insert( *first );
     }
 
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    //! Insert initializer list
+    void insert( std::initializer_list<value_type> il ) {
+        insert( il.begin(), il.end() );
+    }
+#endif //__TBB_INITIALIZER_LISTS_PRESENT
+
     //! Erase item.
     /** Return true if item was erased by particularly this call. */
     bool erase( const Key& key );
@@ -928,7 +1052,32 @@ public:
 
 protected:
     //! Insert or find item and optionally acquire a lock on the item.
-    bool lookup( bool op_insert, const Key &key, const T *t, const_accessor *result, bool write );
+    bool lookup(bool op_insert, const Key &key, const T *t, const_accessor *result, bool write,  node* (*allocate_node)(node_allocator_type& ,  const Key &, const T * ), node *tmp_n = 0  ) ;
+
+    struct accessor_not_used { void release(){}};
+    friend const_accessor* accessor_location( accessor_not_used const& ){ return NULL;}
+    friend const_accessor* accessor_location( const_accessor & a )      { return &a;}
+
+    friend bool is_write_access_needed( accessor const& )           { return true;}
+    friend bool is_write_access_needed( const_accessor const& )     { return false;}
+    friend bool is_write_access_needed( accessor_not_used const& )  { return false;}
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename Accessor>
+    bool generic_move_insert( Accessor && result, value_type && value ) {
+        result.release();
+        return lookup(/*insert*/true, value.first, &value.second, accessor_location(result), is_write_access_needed(result), &allocate_node_move_construct );
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename Accessor, typename... Args>
+    bool generic_emplace( Accessor && result, Args &&... args ) {
+        result.release();
+        node * node_ptr = allocate_node_emplace_construct(my_allocator, std::forward<Args>(args)...);
+        return lookup(/*insert*/true, node_ptr->item.first, NULL, accessor_location(result), is_write_access_needed(result), &do_not_allocate_node, node_ptr );
+    }
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 
     //! delete item by accessor
     bool exclude( const_accessor &item_accessor );
@@ -941,7 +1090,7 @@ protected:
     void internal_copy( const concurrent_hash_map& source );
 
     template<typename I>
-    void internal_copy(I first, I last);
+    void internal_copy( I first, I last );
 
     //! Fast find when no concurrent erasure is used. For internal use inside TBB only!
     /** Return pointer to item with given key, or NULL if no such item exists.
@@ -973,20 +1122,14 @@ protected:
     }
 };
 
-#if _MSC_VER && !defined(__INTEL_COMPILER)
-    // Suppress "conditional expression is constant" warning.
-    #pragma warning( push )
-    #pragma warning( disable: 4127 )
-#endif
-
 template<typename Key, typename T, typename HashCompare, typename A>
-bool concurrent_hash_map<Key,T,HashCompare,A>::lookup( bool op_insert, const Key &key, const T *t, const_accessor *result, bool write ) {
+bool concurrent_hash_map<Key,T,HashCompare,A>::lookup( bool op_insert, const Key &key, const T *t, const_accessor *result, bool write, node* (*allocate_node)(node_allocator_type& , const Key&, const T*), node *tmp_n ) {
     __TBB_ASSERT( !result || !result->my_node, NULL );
     bool return_value;
     hashcode_t const h = my_hash_compare.hash( key );
     hashcode_t m = (hashcode_t) itt_load_word_with_acquire( my_mask );
     segment_index_t grow_segment = 0;
-    node *n, *tmp_n = 0;
+    node *n;
     restart:
     {//lock scope
         __TBB_ASSERT((m&(m+1))==0, "data structure is invalid");
@@ -1000,8 +1143,7 @@ bool concurrent_hash_map<Key,T,HashCompare,A>::lookup( bool op_insert, const Key
             // [opt] insert a key
             if( !n ) {
                 if( !tmp_n ) {
-                    if(t) tmp_n = new( my_allocator ) node(key, *t);
-                    else  tmp_n = new( my_allocator ) node(key);
+                    tmp_n = allocate_node(my_allocator, key, t);
                 }
                 if( !b.is_writer() && !b.upgrade_to_writer() ) { // TODO: improved insertion
                     // Rerun search_list, in case another thread inserted the item during the upgrade.
@@ -1147,6 +1289,7 @@ restart:
 
 template<typename Key, typename T, typename HashCompare, typename A>
 void concurrent_hash_map<Key,T,HashCompare,A>::swap(concurrent_hash_map<Key,T,HashCompare,A> &table) {
+    //TODO: respect C++11 allocator_traits<A>::propogate_on_constainer_swap
     using std::swap;
     swap(this->my_allocator, table.my_allocator);
     swap(this->my_hash_compare, table.my_hash_compare);
@@ -1320,10 +1463,10 @@ template<typename I>
 void concurrent_hash_map<Key,T,HashCompare,A>::internal_copy(I first, I last) {
     hashcode_t m = my_mask;
     for(; first != last; ++first) {
-        hashcode_t h = my_hash_compare.hash( first->first );
+        hashcode_t h = my_hash_compare.hash( (*first).first );
         bucket *b = get_bucket( h & m );
         __TBB_ASSERT( b->node_list != internal::rehash_req, "Invalid bucket in destination table");
-        node *n = new( my_allocator ) node(first->first, first->second);
+        node *n = new( my_allocator ) node(*first);
         add_to_bucket( b, n );
         ++my_size; // TODO: replace by non-atomic op
     }
diff --git a/include/tbb/concurrent_lru_cache.h b/include/tbb/concurrent_lru_cache.h
index 25d1c11..db50e25 100644
--- a/include/tbb/concurrent_lru_cache.h
+++ b/include/tbb/concurrent_lru_cache.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_lru_cache_H
diff --git a/include/tbb/concurrent_priority_queue.h b/include/tbb/concurrent_priority_queue.h
index 7961161..3a0ad6f 100644
--- a/include/tbb/concurrent_priority_queue.h
+++ b/include/tbb/concurrent_priority_queue.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_priority_queue_H
@@ -43,8 +35,29 @@
     #include <initializer_list>
 #endif
 
+#if __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT
+    #include <type_traits>
+#endif
+
 namespace tbb {
 namespace interface5 {
+namespace internal {
+#if __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT
+    template<typename T, bool C = std::is_copy_constructible<T>::value>
+    struct use_element_copy_constructor {
+        typedef tbb::internal::true_type type;
+    };
+    template<typename T>
+    struct use_element_copy_constructor <T,false> {
+        typedef tbb::internal::false_type type;
+    };
+#else
+    template<typename>
+    struct use_element_copy_constructor {
+        typedef tbb::internal::true_type type;
+    };
+#endif
+} // namespace internal
 
 using namespace tbb::internal;
 
@@ -96,7 +109,7 @@ class concurrent_priority_queue {
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from std::initializer_list
-    concurrent_priority_queue(std::initializer_list<T> const& init_list, const allocator_type &a = allocator_type()) :
+    concurrent_priority_queue(std::initializer_list<T> init_list, const allocator_type &a = allocator_type()) :
         mark(0),data(init_list.begin(), init_list.end(), a)
     {
         my_aggregator.initialize_handler(my_functor_t(this));
@@ -127,17 +140,68 @@ class concurrent_priority_queue {
     /** This operation is unsafe if there are pending concurrent operations on the src queue. */
     concurrent_priority_queue& operator=(const concurrent_priority_queue& src) {
         if (this != &src) {
-            std::vector<value_type, allocator_type>(src.data.begin(), src.data.end(), src.data.get_allocator()).swap(data);
+            vector_t(src.data.begin(), src.data.end(), src.data.get_allocator()).swap(data);
+            mark = src.mark;
+            my_size = src.my_size;
+        }
+        return *this;
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructor
+    /** This operation is unsafe if there are pending concurrent operations on the src queue. */
+    concurrent_priority_queue(concurrent_priority_queue&& src) : mark(src.mark),
+        my_size(src.my_size), data(std::move(src.data))
+    {
+        my_aggregator.initialize_handler(my_functor_t(this));
+    }
+
+    //! Move constructor with specific allocator
+    /** This operation is unsafe if there are pending concurrent operations on the src queue. */
+    concurrent_priority_queue(concurrent_priority_queue&& src, const allocator_type& a) : mark(src.mark),
+        my_size(src.my_size),
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+        data(std::move(src.data), a)
+#else
+    // Some early version of C++11 STL vector does not have a constructor of vector(vector&& , allocator).
+    // It seems that the reason is absence of support of allocator_traits (stateful allocators).
+        data(a)
+#endif //__TBB_ALLOCATOR_TRAITS_PRESENT
+    {
+        my_aggregator.initialize_handler(my_functor_t(this));
+#if !__TBB_ALLOCATOR_TRAITS_PRESENT
+        if (a != src.data.get_allocator()){
+            data.reserve(src.data.size());
+            data.assign(std::make_move_iterator(src.data.begin()), std::make_move_iterator(src.data.end()));
+        }else{
+            data = std::move(src.data);
+        }
+#endif //!__TBB_ALLOCATOR_TRAITS_PRESENT
+    }
+
+    //! Move assignment operator
+    /** This operation is unsafe if there are pending concurrent operations on the src queue. */
+    concurrent_priority_queue& operator=( concurrent_priority_queue&& src) {
+        if (this != &src) {
             mark = src.mark;
             my_size = src.my_size;
+#if !__TBB_ALLOCATOR_TRAITS_PRESENT
+            if (data.get_allocator() != src.data.get_allocator()){
+                vector_t(std::make_move_iterator(src.data.begin()), std::make_move_iterator(src.data.end()), data.get_allocator()).swap(data);
+            }else
+#endif //!__TBB_ALLOCATOR_TRAITS_PRESENT
+            {
+                data = std::move(src.data);
+            }
         }
         return *this;
     }
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 
     //! Assign the queue from [begin,end) range, not thread-safe
     template<typename InputIterator>
     void assign(InputIterator begin, InputIterator end) {
-        std::vector<value_type, allocator_type>(begin, end, data.get_allocator()).swap(data);
+        vector_t(begin, end, data.get_allocator()).swap(data);
         mark = 0;
         my_size = data.size();
         heapify();
@@ -145,10 +209,10 @@ class concurrent_priority_queue {
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Assign the queue from std::initializer_list, not thread-safe
-    void assign(std::initializer_list<T> const& il) { this->assign(il.begin(), il.end()); }
+    void assign(std::initializer_list<T> il) { this->assign(il.begin(), il.end()); }
 
     //! Assign from std::initializer_list, not thread-safe
-    concurrent_priority_queue& operator=(std::initializer_list<T> const& il) {
+    concurrent_priority_queue& operator=(std::initializer_list<T> il) {
         this->assign(il.begin(), il.end());
         return *this;
     }
@@ -165,18 +229,41 @@ class concurrent_priority_queue {
     size_type size() const { return __TBB_load_with_acquire(my_size); }
 
     //! Pushes elem onto the queue, increasing capacity of queue if necessary
-    /** This operation can be safely used concurrently with other push, try_pop or reserve operations. */
+    /** This operation can be safely used concurrently with other push, try_pop or emplace operations. */
     void push(const_reference elem) {
+#if __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT
+        __TBB_STATIC_ASSERT( std::is_copy_constructible<value_type>::value, "The type is not copy constructible. Copying push operation is impossible." );
+#endif
         cpq_operation op_data(elem, PUSH_OP);
         my_aggregator.execute(&op_data);
         if (op_data.status == FAILED) // exception thrown
             throw_exception(eid_bad_alloc);
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Pushes elem onto the queue, increasing capacity of queue if necessary
+    /** This operation can be safely used concurrently with other push, try_pop or emplace operations. */
+    void push(value_type &&elem) {
+        cpq_operation op_data(elem, PUSH_RVALUE_OP);
+        my_aggregator.execute(&op_data);
+        if (op_data.status == FAILED) // exception thrown
+            throw_exception(eid_bad_alloc);
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    //! Constructs a new element using args as the arguments for its construction and pushes it onto the queue */
+    /** This operation can be safely used concurrently with other push, try_pop or emplace operations. */
+    template<typename... Args>
+    void emplace(Args&&... args) {
+        push(value_type(std::forward<Args>(args)...));
+    }
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
     //! Gets a reference to and removes highest priority element
     /** If a highest priority element was found, sets elem and returns true,
         otherwise returns false.
-        This operation can be safely used concurrently with other push, try_pop or reserve operations. */
+        This operation can be safely used concurrently with other push, try_pop or emplace operations. */
     bool try_pop(reference elem) {
         cpq_operation op_data(POP_OP);
         op_data.elem = &elem;
@@ -207,7 +294,7 @@ class concurrent_priority_queue {
     allocator_type get_allocator() const { return data.get_allocator(); }
 
  private:
-    enum operation_type {INVALID_OP, PUSH_OP, POP_OP};
+    enum operation_type {INVALID_OP, PUSH_OP, POP_OP, PUSH_RVALUE_OP};
     enum operation_status { WAIT=0, SUCCEEDED, FAILED };
 
     class cpq_operation : public aggregated_operation<cpq_operation> {
@@ -232,9 +319,10 @@ class concurrent_priority_queue {
         }
     };
 
-    aggregator< my_functor_t, cpq_operation> my_aggregator;
+    typedef tbb::internal::aggregator< my_functor_t, cpq_operation > aggregator_t;
+    aggregator_t my_aggregator;
     //! Padding added to avoid false sharing
-    char padding1[NFS_MaxLineSize - sizeof(aggregator< my_functor_t, cpq_operation >)];
+    char padding1[NFS_MaxLineSize - sizeof(aggregator_t)];
     //! The point at which unsorted elements begin
     size_type mark;
     __TBB_atomic size_type my_size;
@@ -259,7 +347,8 @@ class concurrent_priority_queue {
         mark-1 (it may be empty).  Then there are 0 or more elements
         that have not yet been inserted into the heap, in positions
         mark through my_size-1. */
-    std::vector<value_type, allocator_type> data;
+    typedef std::vector<value_type, allocator_type> vector_t;
+    vector_t data;
 
     void handle_operations(cpq_operation *op_list) {
         cpq_operation *tmp, *pop_list=NULL;
@@ -279,22 +368,12 @@ class concurrent_priority_queue {
             __TBB_ASSERT(op_list->type != INVALID_OP, NULL);
             tmp = op_list;
             op_list = itt_hide_load_word(op_list->next);
-            if (tmp->type == PUSH_OP) {
-                __TBB_TRY {
-                    data.push_back(*(tmp->elem));
-                    __TBB_store_with_release(my_size, my_size+1);
-                    itt_store_word_with_release(tmp->status, uintptr_t(SUCCEEDED));
-                } __TBB_CATCH(...) {
-                    itt_store_word_with_release(tmp->status, uintptr_t(FAILED));
-                }
-            }
-            else { // tmp->type == POP_OP
-                __TBB_ASSERT(tmp->type == POP_OP, NULL);
+            if (tmp->type == POP_OP) {
                 if (mark < data.size() &&
                     compare(data[0], data[data.size()-1])) {
                     // there are newly pushed elems and the last one
                     // is higher than top
-                    *(tmp->elem) = data[data.size()-1]; // copy the data
+                    *(tmp->elem) = move(data[data.size()-1]);
                     __TBB_store_with_release(my_size, my_size-1);
                     itt_store_word_with_release(tmp->status, uintptr_t(SUCCEEDED));
                     data.pop_back();
@@ -304,6 +383,19 @@ class concurrent_priority_queue {
                     itt_hide_store_word(tmp->next, pop_list);
                     pop_list = tmp;
                 }
+            } else { // PUSH_OP or PUSH_RVALUE_OP
+                __TBB_ASSERT(tmp->type == PUSH_OP || tmp->type == PUSH_RVALUE_OP, "Unknown operation" );
+                __TBB_TRY{
+                    if (tmp->type == PUSH_OP) {
+                        push_back_helper(*(tmp->elem), typename internal::use_element_copy_constructor<value_type>::type());
+                    } else {
+                        data.push_back(move(*(tmp->elem)));
+                    }
+                    __TBB_store_with_release(my_size, my_size + 1);
+                    itt_store_word_with_release(tmp->status, uintptr_t(SUCCEEDED));
+                } __TBB_CATCH(...) {
+                    itt_store_word_with_release(tmp->status, uintptr_t(FAILED));
+                }
             }
         }
 
@@ -321,13 +413,13 @@ class concurrent_priority_queue {
                     compare(data[0], data[data.size()-1])) {
                     // there are newly pushed elems and the last one is
                     // higher than top
-                    *(tmp->elem) = data[data.size()-1]; // copy the data
+                    *(tmp->elem) = move(data[data.size()-1]);
                     __TBB_store_with_release(my_size, my_size-1);
                     itt_store_word_with_release(tmp->status, uintptr_t(SUCCEEDED));
                     data.pop_back();
                 }
                 else { // extract top and push last element down heap
-                    *(tmp->elem) = data[0]; // copy the data
+                    *(tmp->elem) = move(data[0]);
                     __TBB_store_with_release(my_size, my_size-1);
                     itt_store_word_with_release(tmp->status, uintptr_t(SUCCEEDED));
                     reheap();
@@ -347,14 +439,14 @@ class concurrent_priority_queue {
         for (; mark<data.size(); ++mark) {
             // for each unheapified element under size
             size_type cur_pos = mark;
-            value_type to_place = data[mark];
+            value_type to_place = move(data[mark]);
             do { // push to_place up the heap
                 size_type parent = (cur_pos-1)>>1;
                 if (!compare(data[parent], to_place)) break;
-                data[cur_pos] = data[parent];
+                data[cur_pos] = move(data[parent]);
                 cur_pos = parent;
             } while( cur_pos );
-            data[cur_pos] = to_place;
+            data[cur_pos] = move(to_place);
         }
     }
 
@@ -369,14 +461,23 @@ class concurrent_priority_queue {
                 ++target;
             // target now has the higher priority child
             if (compare(data[target], data[data.size()-1])) break;
-            data[cur_pos] = data[target];
+            data[cur_pos] = move(data[target]);
             cur_pos = target;
             child = (cur_pos<<1)+1;
         }
-        data[cur_pos] = data[data.size()-1];
+        if (cur_pos != data.size()-1)
+            data[cur_pos] = move(data[data.size()-1]);
         data.pop_back();
         if (mark > data.size()) mark = data.size();
     }
+
+    void push_back_helper(const T& t, tbb::internal::true_type) {
+        data.push_back(t);
+    }
+
+    void push_back_helper(const T&, tbb::internal::false_type) {
+        __TBB_ASSERT( false, "The type is not copy constructible. Copying push operation is impossible." );
+    }
 };
 
 } // namespace interface5
diff --git a/include/tbb/concurrent_queue.h b/include/tbb/concurrent_queue.h
index ebd11c2..4cb0586 100644
--- a/include/tbb/concurrent_queue.h
+++ b/include/tbb/concurrent_queue.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_queue_H
@@ -60,6 +52,15 @@ class concurrent_queue: public internal::concurrent_queue_base_v3<T> {
         my_allocator.deallocate( reinterpret_cast<char*>(b), n );
     }
 
+    static void copy_construct_item(T* location, const void* src){
+        new (location) T(*static_cast<const T*>(src));
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    static void move_construct_item(T* location, const void* src) {
+        new (location) T( std::move(*static_cast<T*>(const_cast<void*>(src))) );
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
 public:
     //! Element type in the queue.
     typedef T value_type;
@@ -80,7 +81,7 @@ public:
     typedef A allocator_type;
 
     //! Construct empty queue
-    explicit concurrent_queue(const allocator_type& a = allocator_type()) : 
+    explicit concurrent_queue(const allocator_type& a = allocator_type()) :
         my_allocator( a )
     {
     }
@@ -91,23 +92,59 @@ public:
         my_allocator( a )
     {
         for( ; begin != end; ++begin )
-            this->internal_push(&*begin);
+            this->push(*begin);
     }
-    
+
     //! Copy constructor
-    concurrent_queue( const concurrent_queue& src, const allocator_type& a = allocator_type()) : 
+    concurrent_queue( const concurrent_queue& src, const allocator_type& a = allocator_type()) :
+        internal::concurrent_queue_base_v3<T>(), my_allocator( a )
+    {
+        this->assign( src, copy_construct_item );
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructors
+    concurrent_queue( concurrent_queue&& src ) :
+        internal::concurrent_queue_base_v3<T>(), my_allocator( std::move(src.my_allocator) )
+    {
+        this->internal_swap( src );
+    }
+
+    concurrent_queue( concurrent_queue&& src, const allocator_type& a ) :
         internal::concurrent_queue_base_v3<T>(), my_allocator( a )
     {
-        this->assign( src );
+        // checking that memory allocated by one instance of allocator can be deallocated
+        // with another
+        if( my_allocator == src.my_allocator) {
+            this->internal_swap( src );
+        } else {
+            // allocators are different => performing per-element move
+            this->assign( src, move_construct_item );
+            src.clear();
+        }
     }
-    
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
     //! Destroy queue
     ~concurrent_queue();
 
     //! Enqueue an item at tail of queue.
     void push( const T& source ) {
-        this->internal_push( &source );
+        this->internal_push( &source, copy_construct_item );
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void push( T&& source ) {
+        this->internal_push( &source, move_construct_item );
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename... Arguments>
+    void emplace( Arguments&&... args ) {
+        push( T(std::forward<Arguments>( args )...) );
     }
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
 
     //! Attempt to dequeue an item from head of queue.
     /** Does not wait for item to become available.
@@ -155,7 +192,7 @@ void concurrent_queue<T,A>::clear() {
 }
 
 } // namespace strict_ppl
-    
+
 //! A high-performance thread-safe blocking concurrent bounded queue.
 /** This is the pre-PPL TBB concurrent queue which supports boundedness and blocking semantics.
     Note that method names agree with the PPL-style concurrent queue.
@@ -163,7 +200,7 @@ void concurrent_queue<T,A>::clear() {
     Assignment construction is not allowed.
     @ingroup containers */
 template<typename T, class A = cache_aligned_allocator<T> >
-class concurrent_bounded_queue: public internal::concurrent_queue_base_v3 {
+class concurrent_bounded_queue: public internal::concurrent_queue_base_v8 {
     template<typename Container, typename Value> friend class internal::concurrent_queue_iterator;
 
     //! Allocator type
@@ -171,13 +208,14 @@ class concurrent_bounded_queue: public internal::concurrent_queue_base_v3 {
     page_allocator_type my_allocator;
 
     typedef typename concurrent_queue_base_v3::padded_page<T> padded_page;
- 
-    //! Class used to ensure exception-safety of method "pop" 
+    typedef typename concurrent_queue_base_v3::copy_specifics copy_specifics;
+
+    //! Class used to ensure exception-safety of method "pop"
     class destroyer: internal::no_copy {
         T& my_value;
     public:
         destroyer( T& value ) : my_value(value) {}
-        ~destroyer() {my_value.~T();}          
+        ~destroyer() {my_value.~T();}
     };
 
     T& get_ref( page& p, size_t index ) {
@@ -186,24 +224,44 @@ class concurrent_bounded_queue: public internal::concurrent_queue_base_v3 {
     }
 
     /*override*/ virtual void copy_item( page& dst, size_t index, const void* src ) {
-        new( &get_ref(dst,index) ) T(*static_cast<const T*>(src)); 
+        new( &get_ref(dst,index) ) T(*static_cast<const T*>(src));
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    /*override*/ virtual void move_item( page& dst, size_t index, const void* src ) {
+        new( &get_ref(dst,index) ) T( std::move(*static_cast<T*>(const_cast<void*>(src))) );
+    }
+#else
+    /*override*/ virtual void move_item( page&, size_t, const void* ) {
+        __TBB_ASSERT( false, "Unreachable code" );
     }
+#endif
 
     /*override*/ virtual void copy_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) {
         new( &get_ref(dst,dindex) ) T( get_ref( const_cast<page&>(src), sindex ) );
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    /*override*/ virtual void move_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) {
+        new( &get_ref(dst,dindex) ) T( std::move(get_ref( const_cast<page&>(src), sindex )) );
+    }
+#else
+    /*override*/ virtual void move_page_item( page&, size_t, const page&, size_t ) {
+        __TBB_ASSERT( false, "Unreachable code" );
+    }
+#endif
+
     /*override*/ virtual void assign_and_destroy_item( void* dst, page& src, size_t index ) {
         T& from = get_ref(src,index);
         destroyer d(from);
-        *static_cast<T*>(dst) = from;
+        *static_cast<T*>(dst) = tbb::internal::move( from );
     }
 
     /*override*/ virtual page *allocate_page() {
         size_t n = sizeof(padded_page) + (items_per_page-1)*sizeof(T);
         page *p = reinterpret_cast<page*>(my_allocator.allocate( n ));
         if( !p )
-            internal::throw_exception(internal::eid_bad_alloc); 
+            internal::throw_exception(internal::eid_bad_alloc);
         return p;
     }
 
@@ -235,21 +293,45 @@ public:
 
     //! Construct empty queue
     explicit concurrent_bounded_queue(const allocator_type& a = allocator_type()) : 
-        concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+        concurrent_queue_base_v8( sizeof(T) ), my_allocator( a )
     {
     }
 
     //! Copy constructor
-    concurrent_bounded_queue( const concurrent_bounded_queue& src, const allocator_type& a = allocator_type()) : 
-        concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+    concurrent_bounded_queue( const concurrent_bounded_queue& src, const allocator_type& a = allocator_type())
+        : concurrent_queue_base_v8( sizeof(T) ), my_allocator( a )
     {
         assign( src );
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructors
+    concurrent_bounded_queue( concurrent_bounded_queue&& src )
+        : concurrent_queue_base_v8( sizeof(T) ), my_allocator( std::move(src.my_allocator) )
+    {
+        internal_swap( src );
+    }
+
+    concurrent_bounded_queue( concurrent_bounded_queue&& src, const allocator_type& a )
+        : concurrent_queue_base_v8( sizeof(T) ), my_allocator( a )
+    {
+        // checking that memory allocated by one instance of allocator can be deallocated
+        // with another
+        if( my_allocator == src.my_allocator) {
+            this->internal_swap( src );
+        } else {
+            // allocators are different => performing per-element move
+            this->move_content( src );
+            src.clear();
+        }
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
     //! [begin,end) constructor
     template<typename InputIterator>
-    concurrent_bounded_queue( InputIterator begin, InputIterator end, const allocator_type& a = allocator_type()) :
-        concurrent_queue_base_v3( sizeof(T) ), my_allocator( a )
+    concurrent_bounded_queue( InputIterator begin, InputIterator end,
+                              const allocator_type& a = allocator_type())
+        : concurrent_queue_base_v8( sizeof(T) ), my_allocator( a )
     {
         for( ; begin != end; ++begin )
             internal_push_if_not_full(&*begin);
@@ -263,6 +345,20 @@ public:
         internal_push( &source );
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move an item at tail of queue.
+    void push( T&& source ) {
+        internal_push_move( &source );
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename... Arguments>
+    void emplace( Arguments&&... args ) {
+        push( T(std::forward<Arguments>( args )...) );
+    }
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
     //! Dequeue item from head of queue.
     /** Block until an item becomes available, and then dequeue it. */
     void pop( T& destination ) {
@@ -283,6 +379,21 @@ public:
         return internal_push_if_not_full( &source );
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move an item at tail of queue if queue is not already full.
+    /** Does not wait for queue to become not full.
+        Returns true if item is pushed; false if queue was already full. */
+    bool try_push( T&& source ) {
+        return internal_push_move_if_not_full( &source );
+    }
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename... Arguments>
+    bool try_emplace( Arguments&&... args ) {
+        return try_push( T(std::forward<Arguments>( args )...) );
+    }
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
     //! Attempt to dequeue an item from head of queue.
     /** Does not wait for item to become available.
         Returns true if successful; false otherwise. */
@@ -344,76 +455,7 @@ void concurrent_bounded_queue<T,A>::clear() {
     }
 }
 
-namespace deprecated {
-
-//! A high-performance thread-safe blocking concurrent bounded queue.
-/** This is the pre-PPL TBB concurrent queue which support boundedness and blocking semantics.
-    Note that method names agree with the PPL-style concurrent queue.
-    Multiple threads may each push and pop concurrently.
-    Assignment construction is not allowed.
-    @ingroup containers */
-template<typename T, class A = cache_aligned_allocator<T> > 
-class concurrent_queue: public concurrent_bounded_queue<T,A> {
-#if !__TBB_TEMPLATE_FRIENDS_BROKEN
-    template<typename Container, typename Value> friend class internal::concurrent_queue_iterator;
-#endif 
-
-public:
-    //! Construct empty queue
-    explicit concurrent_queue(const A& a = A()) : 
-        concurrent_bounded_queue<T,A>( a )
-    {
-    }
-
-    //! Copy constructor
-    concurrent_queue( const concurrent_queue& src, const A& a = A()) : 
-        concurrent_bounded_queue<T,A>( src, a )
-    {
-    }
-
-    //! [begin,end) constructor
-    template<typename InputIterator>
-    concurrent_queue( InputIterator b /*begin*/, InputIterator e /*end*/, const A& a = A()) :
-        concurrent_bounded_queue<T,A>( b, e, a )
-    {
-    }
-
-    //! Enqueue an item at tail of queue if queue is not already full.
-    /** Does not wait for queue to become not full.
-        Returns true if item is pushed; false if queue was already full. */
-    bool push_if_not_full( const T& source ) {
-        return this->try_push( source );
-    }
-
-    //! Attempt to dequeue an item from head of queue.
-    /** Does not wait for item to become available.
-        Returns true if successful; false otherwise. 
-        @deprecated Use try_pop()
-        */
-    bool pop_if_present( T& destination ) {
-        return this->try_pop( destination );
-    }
-
-    typedef typename concurrent_bounded_queue<T,A>::iterator iterator;
-    typedef typename concurrent_bounded_queue<T,A>::const_iterator const_iterator;
-    //
-    //------------------------------------------------------------------------
-    // The iterators are intended only for debugging.  They are slow and not thread safe.
-    //------------------------------------------------------------------------
-    iterator begin() {return this->unsafe_begin();}
-    iterator end() {return this->unsafe_end();}
-    const_iterator begin() const {return this->unsafe_begin();}
-    const_iterator end() const {return this->unsafe_end();}
-}; 
-
-}
-    
-
-#if TBB_DEPRECATED
-using deprecated::concurrent_queue;
-#else
-using strict_ppl::concurrent_queue;    
-#endif
+using strict_ppl::concurrent_queue;
 
 } // namespace tbb
 
diff --git a/include/tbb/concurrent_unordered_map.h b/include/tbb/concurrent_unordered_map.h
index 06bfa09..ab97b3e 100644
--- a/include/tbb/concurrent_unordered_map.h
+++ b/include/tbb/concurrent_unordered_map.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* Container implementations in this header are based on PPL implementations
@@ -87,7 +79,6 @@ class concurrent_unordered_map :
     typedef internal::hash_compare<Key, Hasher, Key_equality> hash_compare;
     typedef concurrent_unordered_map_traits<Key, T, hash_compare, Allocator, false> traits_type;
     typedef internal::concurrent_unordered_base< traits_type > base_type;
-    using traits_type::my_hash_compare;
 #if __TBB_EXTRA_DEBUG
 public:
 #endif
@@ -120,30 +111,29 @@ public:
     typedef typename base_type::const_iterator const_local_iterator;
 
     // Construction/destruction/copying
-    explicit concurrent_unordered_map(size_type n_of_buckets = 8,
+    explicit concurrent_unordered_map(size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
     {
     }
 
-    concurrent_unordered_map(const Allocator& a) : base_type(8, key_compare(), a)
+    concurrent_unordered_map(const Allocator& a) : base_type(base_type::initial_bucket_number, key_compare(), a)
     {
     }
 
     template <typename Iterator>
-    concurrent_unordered_map(Iterator first, Iterator last, size_type n_of_buckets = 8,
+    concurrent_unordered_map(Iterator first, Iterator last, size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
     {
-        for (; first != last; ++first)
-            base_type::insert(*first);
+        insert(first, last);
     }
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from initializer_list
-    concurrent_unordered_map(std::initializer_list<value_type> const& il, size_type n_of_buckets = 8,
+    concurrent_unordered_map(std::initializer_list<value_type> il, size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
@@ -152,61 +142,39 @@ public:
     }
 #endif //# __TBB_INITIALIZER_LISTS_PRESENT
 
-    concurrent_unordered_map(const concurrent_unordered_map& table) : base_type(table)
-    {
-    }
-
-    concurrent_unordered_map(const concurrent_unordered_map& table, const Allocator& a)
-        : base_type(table, a)
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
+    concurrent_unordered_map(const concurrent_unordered_map& table)
+        : base_type(table)
     {
     }
 
     concurrent_unordered_map& operator=(const concurrent_unordered_map& table)
     {
-        base_type::operator=(table);
-        return (*this);
+        return static_cast<concurrent_unordered_map&>(base_type::operator=(table));
     }
 
-#if __TBB_INITIALIZER_LISTS_PRESENT
-    //! assignment operator from initializer_list
-    concurrent_unordered_map& operator=(std::initializer_list<value_type> const& il)
+    concurrent_unordered_map(concurrent_unordered_map&& table)
+        : base_type(std::move(table))
     {
-        base_type::operator=(il);
-        return (*this);
     }
-#endif //# __TBB_INITIALIZER_LISTS_PRESENT
 
-    iterator unsafe_erase(const_iterator where)
+    concurrent_unordered_map& operator=(concurrent_unordered_map&& table)
     {
-        return base_type::unsafe_erase(where);
+        return static_cast<concurrent_unordered_map&>(base_type::operator=(std::move(table)));
     }
+#endif //__TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
 
-    size_type unsafe_erase(const key_type& key)
-    {
-        return base_type::unsafe_erase(key);
-    }
-
-    iterator unsafe_erase(const_iterator first, const_iterator last)
+    concurrent_unordered_map(const concurrent_unordered_map& table, const Allocator& a)
+        : base_type(table, a)
     {
-        return base_type::unsafe_erase(first, last);
     }
 
-    void swap(concurrent_unordered_map& table)
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_map(concurrent_unordered_map&& table, const Allocator& a) : base_type(std::move(table), a)
     {
-        base_type::swap(table);
     }
-
+#endif
     // Observers
-    hasher hash_function() const
-    {
-        return my_hash_compare.my_hash_object;
-    }
-
-    key_equal key_eq() const
-    {
-        return my_hash_compare.my_key_compare_object;
-    }
-
     mapped_type& operator[](const key_type& key)
     {
         iterator where = find(key);
@@ -253,15 +221,12 @@ class concurrent_unordered_multimap :
     // Base type definitions
     typedef internal::hash_compare<Key, Hasher, Key_equality> hash_compare;
     typedef concurrent_unordered_map_traits<Key, T, hash_compare, Allocator, true> traits_type;
-    typedef internal::concurrent_unordered_base< traits_type > base_type;
-    using traits_type::my_hash_compare;
+    typedef internal::concurrent_unordered_base<traits_type> base_type;
 #if __TBB_EXTRA_DEBUG
 public:
 #endif
     using traits_type::allow_multimapping;
 public:
-    using base_type::end;
-    using base_type::find;
     using base_type::insert;
 
     // Type definitions
@@ -287,30 +252,29 @@ public:
     typedef typename base_type::const_iterator const_local_iterator;
 
     // Construction/destruction/copying
-    explicit concurrent_unordered_multimap(size_type n_of_buckets = 8,
+    explicit concurrent_unordered_multimap(size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
     {
     }
 
-    concurrent_unordered_multimap(const Allocator& a) : base_type(8, key_compare(), a)
+    concurrent_unordered_multimap(const Allocator& a) : base_type(base_type::initial_bucket_number, key_compare(), a)
     {
     }
 
     template <typename Iterator>
-    concurrent_unordered_multimap(Iterator first, Iterator last, size_type n_of_buckets = 8,
+    concurrent_unordered_multimap(Iterator first, Iterator last, size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets,key_compare(_Hasher,_Key_equality), a)
     {
-        for (; first != last; ++first)
-            base_type::insert(*first);
+        insert(first, last);
     }
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from initializer_list
-    concurrent_unordered_multimap(std::initializer_list<value_type> const& il, size_type n_of_buckets = 8,
+    concurrent_unordered_multimap(std::initializer_list<value_type> il, size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
@@ -319,60 +283,38 @@ public:
     }
 #endif //# __TBB_INITIALIZER_LISTS_PRESENT
 
-    concurrent_unordered_multimap(const concurrent_unordered_multimap& table) : base_type(table)
-    {
-    }
-
-    concurrent_unordered_multimap(const concurrent_unordered_multimap& table, const Allocator& a)
-        : base_type(table, a)
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
+    concurrent_unordered_multimap(const concurrent_unordered_multimap& table)
+        : base_type(table)
     {
     }
 
     concurrent_unordered_multimap& operator=(const concurrent_unordered_multimap& table)
     {
-        base_type::operator=(table);
-        return (*this);
+        return static_cast<concurrent_unordered_multimap&>(base_type::operator=(table));
     }
 
-#if __TBB_INITIALIZER_LISTS_PRESENT
-    //! assignment operator from initializer_list
-    concurrent_unordered_multimap& operator=(std::initializer_list<value_type> const& il)
-    {
-        base_type::operator=(il);
-        return (*this);
-    }
-#endif //# __TBB_INITIALIZER_LISTS_PRESENT
-
-    iterator unsafe_erase(const_iterator where)
+    concurrent_unordered_multimap(concurrent_unordered_multimap&& table)
+        : base_type(std::move(table))
     {
-        return base_type::unsafe_erase(where);
     }
 
-    size_type unsafe_erase(const key_type& key)
+    concurrent_unordered_multimap& operator=(concurrent_unordered_multimap&& table)
     {
-        return base_type::unsafe_erase(key);
+        return static_cast<concurrent_unordered_multimap&>(base_type::operator=(std::move(table)));
     }
+#endif //__TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
 
-    iterator unsafe_erase(const_iterator first, const_iterator last)
-    {
-        return base_type::unsafe_erase(first, last);
-    }
-
-    void swap(concurrent_unordered_multimap& table)
-    {
-        base_type::swap(table);
-    }
-
-    // Observers
-    hasher hash_function() const
+    concurrent_unordered_multimap(const concurrent_unordered_multimap& table, const Allocator& a)
+        : base_type(table, a)
     {
-        return my_hash_compare.my_hash_object;
     }
 
-    key_equal key_eq() const
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_multimap(concurrent_unordered_multimap&& table, const Allocator& a) : base_type(std::move(table), a)
     {
-        return my_hash_compare.my_key_compare_object;
     }
+#endif
 };
 } // namespace interface5
 
diff --git a/include/tbb/concurrent_unordered_set.h b/include/tbb/concurrent_unordered_set.h
index 15ca9fa..0d0df90 100644
--- a/include/tbb/concurrent_unordered_set.h
+++ b/include/tbb/concurrent_unordered_set.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* Container implementations in this header are based on PPL implementations
@@ -69,14 +61,11 @@ class concurrent_unordered_set : public internal::concurrent_unordered_base< con
     typedef internal::hash_compare<Key, Hasher, Key_equality> hash_compare;
     typedef internal::concurrent_unordered_base< concurrent_unordered_set_traits<Key, hash_compare, Allocator, false> > base_type;
     typedef concurrent_unordered_set_traits<Key, internal::hash_compare<Key, Hasher, Key_equality>, Allocator, false> traits_type;
-    using traits_type::my_hash_compare;
 #if __TBB_EXTRA_DEBUG
 public:
 #endif
     using traits_type::allow_multimapping;
 public:
-    using base_type::end;
-    using base_type::find;
     using base_type::insert;
 
     // Type definitions
@@ -102,28 +91,27 @@ public:
     typedef typename base_type::const_iterator const_local_iterator;
 
     // Construction/destruction/copying
-    explicit concurrent_unordered_set(size_type n_of_buckets = 8, const hasher& a_hasher = hasher(),
+    explicit concurrent_unordered_set(size_type n_of_buckets = base_type::initial_bucket_number, const hasher& a_hasher = hasher(),
         const key_equal& a_keyeq = key_equal(), const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(a_hasher, a_keyeq), a)
     {
     }
 
-    concurrent_unordered_set(const Allocator& a) : base_type(8, key_compare(), a)
+    concurrent_unordered_set(const Allocator& a) : base_type(base_type::initial_bucket_number, key_compare(), a)
     {
     }
 
     template <typename Iterator>
-    concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets = 8, const hasher& a_hasher = hasher(),
+    concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets = base_type::initial_bucket_number, const hasher& a_hasher = hasher(),
         const key_equal& a_keyeq = key_equal(), const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(a_hasher, a_keyeq), a)
     {
-        for (; first != last; ++first)
-            base_type::insert(*first);
+        insert(first, last);
     }
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from initializer_list
-   concurrent_unordered_set(std::initializer_list<value_type> const& il, size_type n_of_buckets = 8, const hasher& a_hasher = hasher(),
+   concurrent_unordered_set(std::initializer_list<value_type> il, size_type n_of_buckets = base_type::initial_bucket_number, const hasher& a_hasher = hasher(),
         const key_equal& a_keyeq = key_equal(), const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(a_hasher, a_keyeq), a)
     {
@@ -131,60 +119,40 @@ public:
     }
 #endif //# __TBB_INITIALIZER_LISTS_PRESENT
 
-    concurrent_unordered_set(const concurrent_unordered_set& table) : base_type(table)
-    {
-    }
-
-    concurrent_unordered_set(const concurrent_unordered_set& table, const Allocator& a)
-        : base_type(table, a)
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
+    concurrent_unordered_set(const concurrent_unordered_set& table)
+        : base_type(table)
     {
     }
 
     concurrent_unordered_set& operator=(const concurrent_unordered_set& table)
     {
-        base_type::operator=(table);
-        return (*this);
-    }
-
-#if __TBB_INITIALIZER_LISTS_PRESENT
-    //! assignment operator from initializer_list
-    concurrent_unordered_set& operator=(std::initializer_list<value_type> const& il)
-    {
-        base_type::operator=(il);
-        return (*this);
-    }
-#endif //# __TBB_INITIALIZER_LISTS_PRESENT
-
-    iterator unsafe_erase(const_iterator where)
-    {
-        return base_type::unsafe_erase(where);
+        return static_cast<concurrent_unordered_set&>(base_type::operator=(table));
     }
 
-    size_type unsafe_erase(const key_type& key)
+    concurrent_unordered_set(concurrent_unordered_set&& table)
+        : base_type(std::move(table))
     {
-        return base_type::unsafe_erase(key);
     }
 
-    iterator unsafe_erase(const_iterator first, const_iterator last)
+    concurrent_unordered_set& operator=(concurrent_unordered_set&& table)
     {
-        return base_type::unsafe_erase(first, last);
+        return static_cast<concurrent_unordered_set&>(base_type::operator=(std::move(table)));
     }
+#endif //__TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
 
-    void swap(concurrent_unordered_set& table)
+    concurrent_unordered_set(const concurrent_unordered_set& table, const Allocator& a)
+        : base_type(table, a)
     {
-        base_type::swap(table);
     }
 
-    // Observers
-    hasher hash_function() const
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_set(concurrent_unordered_set&& table, const Allocator& a)
+        : base_type(std::move(table), a)
     {
-        return my_hash_compare.my_hash_object;
     }
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 
-    key_equal key_eq() const
-    {
-        return my_hash_compare.my_key_compare_object;
-    }
 };
 
 template <typename Key, typename Hasher = tbb::tbb_hash<Key>, typename Key_equality = std::equal_to<Key>,
@@ -193,13 +161,16 @@ class concurrent_unordered_multiset :
     public internal::concurrent_unordered_base< concurrent_unordered_set_traits<Key,
     internal::hash_compare<Key, Hasher, Key_equality>, Allocator, true> >
 {
-public:
     // Base type definitions
     typedef internal::hash_compare<Key, Hasher, Key_equality> hash_compare;
     typedef concurrent_unordered_set_traits<Key, hash_compare, Allocator, true> traits_type;
     typedef internal::concurrent_unordered_base< traits_type > base_type;
+#if __TBB_EXTRA_DEBUG
+public:
+#endif
     using traits_type::allow_multimapping;
-    using traits_type::my_hash_compare;
+public:
+    using base_type::insert;
 
     // Type definitions
     typedef Key key_type;
@@ -224,32 +195,29 @@ public:
     typedef typename base_type::const_iterator const_local_iterator;
 
     // Construction/destruction/copying
-    explicit concurrent_unordered_multiset(size_type n_of_buckets = 8,
+    explicit concurrent_unordered_multiset(size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
     {
     }
 
-    concurrent_unordered_multiset(const Allocator& a) : base_type(8, key_compare(), a)
+    concurrent_unordered_multiset(const Allocator& a) : base_type(base_type::initial_bucket_number, key_compare(), a)
     {
     }
 
     template <typename Iterator>
-    concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets = 8,
+    concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets = base_type::initial_bucket_number,
         const hasher& _Hasher = hasher(), const key_equal& _Key_equality = key_equal(),
         const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(_Hasher, _Key_equality), a)
     {
-        for (; first != last; ++first)
-        {
-            base_type::insert(*first);
-        }
+        insert(first, last);
     }
-    
+
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from initializer_list
-   concurrent_unordered_multiset(std::initializer_list<value_type> const& il, size_type n_of_buckets = 8, const hasher& a_hasher = hasher(),
+   concurrent_unordered_multiset(std::initializer_list<value_type> il, size_type n_of_buckets = base_type::initial_bucket_number, const hasher& a_hasher = hasher(),
         const key_equal& a_keyeq = key_equal(), const allocator_type& a = allocator_type())
         : base_type(n_of_buckets, key_compare(a_hasher, a_keyeq), a)
     {
@@ -257,76 +225,39 @@ public:
     }
 #endif //# __TBB_INITIALIZER_LISTS_PRESENT    
 
-    concurrent_unordered_multiset(const concurrent_unordered_multiset& table) : base_type(table)
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
+   concurrent_unordered_multiset(const concurrent_unordered_multiset& table)
+        : base_type(table)
     {
     }
 
-    concurrent_unordered_multiset(const concurrent_unordered_multiset& table, const Allocator& a) : base_type(table, a)
+   concurrent_unordered_multiset& operator=(const concurrent_unordered_multiset& table)
     {
+        return static_cast<concurrent_unordered_multiset&>(base_type::operator=(table));
     }
 
-    concurrent_unordered_multiset& operator=(const concurrent_unordered_multiset& table)
+   concurrent_unordered_multiset(concurrent_unordered_multiset&& table)
+        : base_type(std::move(table))
     {
-        base_type::operator=(table);
-        return (*this);
     }
 
-#if __TBB_INITIALIZER_LISTS_PRESENT
-    //! assignment operator from initializer_list
-    concurrent_unordered_multiset& operator=(std::initializer_list<value_type> const& il)
-    {
-        base_type::operator=(il);
-        return (*this);
-    }
-#endif //# __TBB_INITIALIZER_LISTS_PRESENT
-
-    // Modifiers
-    std::pair<iterator, bool> insert(const value_type& value)
-    {
-        return base_type::insert(value);
-    }
-
-    iterator insert(const_iterator where, const value_type& value)
-    {
-        return base_type::insert(where, value);
-    }
-
-    template<class Iterator>
-    void insert(Iterator first, Iterator last)
-    {
-        base_type::insert(first, last);
-    }
-
-    iterator unsafe_erase(const_iterator where)
-    {
-        return base_type::unsafe_erase(where);
-    }
-
-    size_type unsafe_erase(const key_type& key)
-    {
-        return base_type::unsafe_erase(key);
-    }
-
-    iterator unsafe_erase(const_iterator first, const_iterator last)
-    {
-        return base_type::unsafe_erase(first, last);
-    }
-
-    void swap(concurrent_unordered_multiset& table)
+   concurrent_unordered_multiset& operator=(concurrent_unordered_multiset&& table)
     {
-        base_type::swap(table);
+        return static_cast<concurrent_unordered_multiset&>(base_type::operator=(std::move(table)));
     }
+#endif //__TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN
 
-    // Observers
-    hasher hash_function() const
+    concurrent_unordered_multiset(const concurrent_unordered_multiset& table, const Allocator& a)
+        : base_type(table, a)
     {
-        return my_hash_compare.my_hash_object;
     }
 
-    key_equal key_eq() const
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_multiset(concurrent_unordered_multiset&& table, const Allocator& a)
+        : base_type(std::move(table), a)
     {
-        return my_hash_compare.my_key_compare_object;
     }
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 };
 } // namespace interface5
 
diff --git a/include/tbb/concurrent_vector.h b/include/tbb/concurrent_vector.h
index 29dbbfb..80d56f6 100644
--- a/include/tbb/concurrent_vector.h
+++ b/include/tbb/concurrent_vector.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_vector_H
@@ -66,11 +58,14 @@
     #include <initializer_list>
 #endif
 
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
     // Workaround for overzealous compiler warnings in /Wp64 mode
     #pragma warning (push)
+#if defined(_Wp64)
     #pragma warning (disable: 4267)
 #endif
+    #pragma warning (disable: 4127) //warning C4127: conditional expression is constant
+#endif
 
 namespace tbb {
 
@@ -86,6 +81,12 @@ namespace internal {
     //! Bad allocation marker
     static void *const vector_allocation_error_flag = reinterpret_cast<void*>(size_t(63));
 
+    //! Exception helper function
+    template<typename T>
+    void handle_unconstructed_elements(T* array, size_t n_of_elements){
+        std::memset(array, 0, n_of_elements * sizeof(T));
+    }
+
     //! Base class of concurrent vector implementation.
     /** @ingroup containers */
     class concurrent_vector_base_v3 {
@@ -99,20 +100,80 @@ namespace internal {
         enum {
             // Size constants
             default_initial_segments = 1, // 2 initial items
-            //! Number of slots for segment's pointers inside the class
+            //! Number of slots for segment pointers inside the class
             pointers_per_short_table = 3, // to fit into 8 words of entire structure
             pointers_per_long_table = sizeof(segment_index_t) * 8 // one segment per bit
         };
 
-        // Segment pointer. Can be zero-initialized
-        struct segment_t {
+        struct segment_not_used {};
+        struct segment_allocated {};
+        struct segment_allocation_failed {};
+
+        class segment_t;
+        class segment_value_t {
             void* array;
+        private:
+            //TODO: More elegant way to grant access to selected functions _only_?
+            friend class segment_t;
+            explicit segment_value_t(void* an_array):array(an_array) {}
+        public:
+            friend bool operator==(segment_value_t const& lhs, segment_not_used ) { return lhs.array == 0;}
+            friend bool operator==(segment_value_t const& lhs, segment_allocated) { return lhs.array > internal::vector_allocation_error_flag;}
+            friend bool operator==(segment_value_t const& lhs, segment_allocation_failed) { return lhs.array == internal::vector_allocation_error_flag;}
+            template<typename argument_type>
+            friend bool operator!=(segment_value_t const& lhs, argument_type arg) { return ! (lhs == arg);}
+
+            template<typename T>
+            T* pointer() const {  return static_cast<T*>(const_cast<void*>(array)); }
+        };
+
+        // Segment pointer.
+        class segment_t {
+            atomic<void*> array;
+        public:
+            segment_t(){ store<relaxed>(segment_not_used());}
+            //Copy ctor and assignment operator are defined to ease using of stl algorithms.
+            //These algorithms usually not a synchronization point, so, semantic is
+            //intentionally relaxed here.
+            segment_t(segment_t const& rhs ){ array.store<relaxed>(rhs.array.load<relaxed>());}
+
+            void swap(segment_t & rhs ){
+                tbb::internal::swap<relaxed>(array, rhs.array);
+            }
+
+            segment_t& operator=(segment_t const& rhs ){
+                array.store<relaxed>(rhs.array.load<relaxed>());
+                return *this;
+            }
+
+            template<memory_semantics M>
+            segment_value_t load() const { return segment_value_t(array.load<M>());}
+
+            template<memory_semantics M>
+            void store(segment_not_used) {
+                array.store<M>(0);
+            }
+
+            template<memory_semantics M>
+            void store(segment_allocation_failed) {
+                __TBB_ASSERT(load<relaxed>() != segment_allocated(),"transition from \"allocated\" to \"allocation failed\" state looks non-logical");
+                array.store<M>(internal::vector_allocation_error_flag);
+            }
+
+            template<memory_semantics M>
+            void store(void* allocated_segment_pointer) __TBB_NOEXCEPT(true) {
+                __TBB_ASSERT(segment_value_t(allocated_segment_pointer) == segment_allocated(),
+                     "other overloads of store should be used for marking segment as not_used or allocation_failed" );
+                array.store<M>(allocated_segment_pointer);
+            }
+
 #if TBB_USE_ASSERT
             ~segment_t() {
-                __TBB_ASSERT( array <= internal::vector_allocation_error_flag, "should have been freed by clear" );
+                __TBB_ASSERT(load<relaxed>() != segment_allocated(), "should have been freed by clear" );
             }
 #endif /* TBB_USE_ASSERT */
         };
+        friend void swap(segment_t & , segment_t & ) __TBB_NOEXCEPT(true);
 
         // Data fields
 
@@ -134,12 +195,19 @@ namespace internal {
         // Methods
 
         concurrent_vector_base_v3() {
-            my_early_size = 0;
-            my_first_block = 0; // here is not default_initial_segments
-            for( segment_index_t i = 0; i < pointers_per_short_table; i++)
-                my_storage[i].array = NULL;
-            my_segment = my_storage;
+            //Here the semantic is intentionally relaxed.
+            //The reason this is next:
+            //Object that is in middle of construction (i.e. its constructor is not yet finished)
+            //cannot be used concurrently until the construction is finished.
+            //Thus to flag other threads that construction is finished, some synchronization with
+            //acquire-release semantic should be done by the (external) code that uses the vector.
+            //So, no need to do the synchronization inside the vector.
+
+            my_early_size.store<relaxed>(0);
+            my_first_block.store<relaxed>(0); // here is not default_initial_segments
+            my_segment.store<relaxed>(my_storage);
         }
+
         __TBB_EXPORTED_METHOD ~concurrent_vector_base_v3();
 
         //these helpers methods use the fact that segments are allocated so
@@ -183,7 +251,7 @@ namespace internal {
         //! Internal structure for compact()
         struct internal_segments_table {
             segment_index_t first_block;
-            void* table[pointers_per_long_table];
+            segment_t table[pointers_per_long_table];
         };
 
         void __TBB_EXPORTED_METHOD internal_reserve( size_type n, size_type element_size, size_type max_size );
@@ -216,6 +284,10 @@ private:
 
     };
 
+    inline void swap(concurrent_vector_base_v3::segment_t & lhs, concurrent_vector_base_v3::segment_t & rhs) __TBB_NOEXCEPT(true) {
+        lhs.swap(rhs);
+    }
+
     typedef concurrent_vector_base_v3 concurrent_vector_base;
 
     //! Meets requirements of a forward iterator for STL and a Value for a blocked_range.*/
@@ -249,11 +321,11 @@ private:
         template<typename C, typename U>
         friend class internal::vector_iterator;
 
-#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)
+#if !__TBB_TEMPLATE_FRIENDS_BROKEN
         template<typename T, class A>
         friend class tbb::concurrent_vector;
 #else
-public: // workaround for MSVC
+public:
 #endif
 
         vector_iterator( const Container& vector, size_t index, void *ptr = 0 ) :
@@ -404,6 +476,7 @@ public: // workaround for MSVC
         allocator_type my_allocator;
 
         allocator_base(const allocator_type &a = allocator_type() ) : my_allocator(a) {}
+
     };
 
 } // namespace internal
@@ -491,6 +564,7 @@ private:
 
     template<typename C, typename U>
     friend class internal::vector_iterator;
+
 public:
     //------------------------------------------------------------------------
     // STL compatible types
@@ -535,6 +609,8 @@ public:
         vector_allocator_ptr = &internal_allocator;
     }
 
+    //Constructors are not required to have synchronization
+    //(for more details see comment in the concurrent_vector_base constructor).
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Constructor from initializer_list
     concurrent_vector(std::initializer_list<T> init_list, const allocator_type &a = allocator_type())
@@ -544,8 +620,8 @@ public:
         __TBB_TRY {
             internal_assign_iterators(init_list.begin(), init_list.end());
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();;
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>());
             __TBB_RETHROW();
         }
 
@@ -560,12 +636,43 @@ public:
         __TBB_TRY {
             internal_copy(vector, sizeof(T), &copy_array);
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>());
             __TBB_RETHROW();
         }
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move constructor
+    //TODO add __TBB_NOEXCEPT(true) and static_assert(std::has_nothrow_move_constructor<A>::value)
+    concurrent_vector( concurrent_vector&& source)
+        : internal::allocator_base<T, A>(std::move(source)), internal::concurrent_vector_base()
+    {
+        vector_allocator_ptr = &internal_allocator;
+        concurrent_vector_base_v3::internal_swap(source);
+    }
+
+    concurrent_vector( concurrent_vector&& source, const allocator_type& a)
+        : internal::allocator_base<T, A>(a), internal::concurrent_vector_base()
+    {
+        vector_allocator_ptr = &internal_allocator;
+        //C++ standard requires instances of an allocator being compared for equality,
+        //which means that memory allocated by one instance is possible to deallocate with the other one.
+        if (a == source.my_allocator) {
+            concurrent_vector_base_v3::internal_swap(source);
+        } else {
+            __TBB_TRY {
+                internal_copy(source, sizeof(T), &move_array);
+            } __TBB_CATCH(...) {
+                segment_t *table = my_segment.load<relaxed>();
+                internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>());
+                __TBB_RETHROW();
+            }
+        }
+    }
+
+#endif
+
     //! Copying constructor for vector with different allocator type
     template<class M>
     concurrent_vector( const concurrent_vector<T, M>& vector, const allocator_type& a = allocator_type() )
@@ -575,8 +682,8 @@ public:
         __TBB_TRY {
             internal_copy(vector.internal_vector_base(), sizeof(T), &copy_array);
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>() );
             __TBB_RETHROW();
         }
     }
@@ -588,8 +695,8 @@ public:
         __TBB_TRY {
             internal_resize( n, sizeof(T), max_size(), NULL, &destroy_array, &initialize_array );
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>() );
             __TBB_RETHROW();
         }
     }
@@ -602,8 +709,8 @@ public:
         __TBB_TRY {
             internal_resize( n, sizeof(T), max_size(), static_cast<const void*>(&t), &destroy_array, &initialize_array_by );
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>() );
             __TBB_RETHROW();
         }
     }
@@ -617,8 +724,8 @@ public:
         __TBB_TRY {
             internal_assign_range(first, last, static_cast<is_integer_tag<std::numeric_limits<I>::is_integer> *>(0) );
         } __TBB_CATCH(...) {
-            segment_t *table = my_segment;
-            internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+            segment_t *table = my_segment.load<relaxed>();
+            internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>() );
             __TBB_RETHROW();
         }
     }
@@ -630,6 +737,24 @@ public:
         return *this;
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //TODO: add __TBB_NOEXCEPT()
+    //! Move assignment
+    concurrent_vector& operator=( concurrent_vector&& other ) {
+        __TBB_ASSERT(this != &other, "Move assignment to itself is prohibited ");
+        typedef typename tbb::internal::allocator_traits<A>::propagate_on_container_move_assignment pocma_t;
+        if(pocma_t::value || this->my_allocator == other.my_allocator) {
+            concurrent_vector trash (std::move(*this));
+            internal_swap(other);
+            if (pocma_t::value) {
+                this->my_allocator = std::move(other.my_allocator);
+            }
+        } else {
+            internal_assign(other, sizeof(T), &destroy_array, &move_assign_array, &move_array);
+        }
+        return *this;
+    }
+#endif
     //TODO: add an template assignment operator? (i.e. with different element type)
 
     //! Assignment for vector with different allocator type
@@ -643,7 +768,7 @@ public:
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! Assignment for initializer_list
-    concurrent_vector& operator=( const std::initializer_list<T> & init_list) {
+    concurrent_vector& operator=( std::initializer_list<T> init_list ) {
         internal_clear(&destroy_array);
         internal_assign_iterators(init_list.begin(), init_list.end());
         return *this;
@@ -653,42 +778,35 @@ public:
     //------------------------------------------------------------------------
     // Concurrent operations
     //------------------------------------------------------------------------
-    //TODO: consider adding overload of grow_by accepting range of iterators:  grow_by(iterator,iterator)
-    //TODO: consider adding overload of grow_by accepting initializer_list:  grow_by(std::initializer_list<T>), as a analogy to std::vector::insert(initializer_list)
     //! Grow by "delta" elements.
-#if TBB_DEPRECATED
-    /** Returns old size. */
-    size_type grow_by( size_type delta ) {
-        return delta ? internal_grow_by( delta, sizeof(T), &initialize_array, NULL ) : my_early_size.load();
-    }
-#else
     /** Returns iterator pointing to the first new element. */
     iterator grow_by( size_type delta ) {
         return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array, NULL ) : my_early_size.load());
     }
-#endif
 
     //! Grow by "delta" elements using copying constructor.
-#if TBB_DEPRECATED
-    /** Returns old size. */
-    size_type grow_by( size_type delta, const_reference t ) {
-        return delta ? internal_grow_by( delta, sizeof(T), &initialize_array_by, static_cast<const void*>(&t) ) : my_early_size.load();
-    }
-#else
     /** Returns iterator pointing to the first new element. */
     iterator grow_by( size_type delta, const_reference t ) {
         return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array_by, static_cast<const void*>(&t) ) : my_early_size.load());
     }
-#endif
+
+    /** Returns iterator pointing to the first new element. */
+    template<typename I>
+    iterator grow_by( I first, I last ) {
+        typename std::iterator_traits<I>::difference_type delta = std::distance(first, last);
+        __TBB_ASSERT( delta >= 0, NULL);
+
+        return iterator(*this, delta ? internal_grow_by(delta, sizeof(T), &copy_range<I>, static_cast<const void*>(&first)) : my_early_size.load());
+    }
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    /** Returns iterator pointing to the first new element. */
+    iterator grow_by( std::initializer_list<T> init_list ) {
+        return grow_by( init_list.begin(), init_list.end() );
+    }
+#endif //#if __TBB_INITIALIZER_LISTS_PRESENT
 
     //! Append minimal sequence of elements such that size()>=n.
-#if TBB_DEPRECATED
-    /** The new elements are default constructed.  Blocks until all elements in range [0..n) are allocated.
-        May return while other elements are being constructed by other threads. */
-    void grow_to_at_least( size_type n ) {
-        if( n ) internal_grow_to_at_least_with_result( n, sizeof(T), &initialize_array, NULL );
-    };
-#else
     /** The new elements are default constructed.  Blocks until all elements in range [0..n) are allocated.
         May return while other elements are being constructed by other threads.
         Returns iterator that points to beginning of appended sequence.
@@ -701,30 +819,51 @@ public:
         }
         return iterator(*this, m);
     };
-#endif
+
+    /** Analogous to grow_to_at_least( size_type n ) with exception that the new
+        elements are initialized by copying of t instead of default construction. */
+    iterator grow_to_at_least( size_type n, const_reference t ) {
+        size_type m=0;
+        if( n ) {
+            m = internal_grow_to_at_least_with_result( n, sizeof(T), &initialize_array_by, &t);
+            if( m>n ) m=n;
+        }
+        return iterator(*this, m);
+    };
 
     //! Push item
-#if TBB_DEPRECATED
-    size_type push_back( const_reference item )
-#else
     /** Returns iterator pointing to the new element. */
     iterator push_back( const_reference item )
-#endif
     {
-        size_type k;
-        void *ptr = internal_push_back(sizeof(T),k);
-        internal_loop_guide loop(1, ptr);
-        loop.init(&item);
-#if TBB_DEPRECATED
-        return k;
-#else
-        return iterator(*this, k, ptr);
-#endif
+        push_back_helper prolog(*this);
+        new(prolog.internal_push_back_result()) T(item);
+        return prolog.return_iterator_and_dismiss();
     }
 
+#if    __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Push item, move-aware
+    /** Returns iterator pointing to the new element. */
+    iterator push_back(  T&& item )
+    {
+        push_back_helper prolog(*this);
+        new(prolog.internal_push_back_result()) T(std::move(item));
+        return prolog.return_iterator_and_dismiss();
+    }
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    //! Push item, create item "in place" with provided arguments
+    /** Returns iterator pointing to the new element. */
+    template<typename... Args>
+    iterator emplace_back(  Args&&... args )
+    {
+        push_back_helper prolog(*this);
+        new(prolog.internal_push_back_result()) T(std::forward<Args>(args)...);
+        return prolog.return_iterator_and_dismiss();
+    }
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
     //! Get reference to element at given index.
     /** This method is thread-safe for concurrent reads, and also while growing the vector,
-        as long as the calling thread has checked that index<size(). */
+        as long as the calling thread has checked that index < size(). */
     reference operator[]( size_type index ) {
         return internal_subscript(index);
     }
@@ -787,11 +926,6 @@ public:
         internal_resize( n, sizeof(T), max_size(), static_cast<const void*>(&t), &destroy_array, &initialize_array_by );
     }
 
-#if TBB_DEPRECATED
-    //! An alias for shrink_to_fit()
-    void compact() {shrink_to_fit();}
-#endif /* TBB_DEPRECATED */
-
     //! Optimize memory usage and fragmentation.
     void shrink_to_fit();
 
@@ -829,12 +963,14 @@ public:
     //! the first item
     reference front() {
         __TBB_ASSERT( size()>0, NULL);
-        return static_cast<T*>(my_segment[0].array)[0];
+        const segment_value_t& segment_value = my_segment[0].template load<relaxed>();
+        return (segment_value.template pointer<T>())[0];
     }
     //! the first item const
     const_reference front() const {
         __TBB_ASSERT( size()>0, NULL);
-        return static_cast<const T*>(my_segment[0].array)[0];
+        const segment_value_t& segment_value = my_segment[0].template load<relaxed>();
+        return (segment_value.template pointer<const T>())[0];
     }
     //! the last item
     reference back() {
@@ -885,8 +1021,8 @@ public:
 
     //! Clear and destroy vector.
     ~concurrent_vector() {
-        segment_t *table = my_segment;
-        internal_free_segments( reinterpret_cast<void**>(table), internal_clear(&destroy_array), my_first_block );
+        segment_t *table = my_segment.load<relaxed>();
+        internal_free_segments( table, internal_clear(&destroy_array), my_first_block.load<relaxed>() );
         // base class destructor call should be then
     }
 
@@ -897,7 +1033,7 @@ private:
         return static_cast<concurrent_vector<T, A>&>(vb).my_allocator.allocate(k);
     }
     //! Free k segments from table
-    void internal_free_segments(void *table[], segment_index_t k, segment_index_t first_block);
+    void internal_free_segments(segment_t table[], segment_index_t k, segment_index_t first_block);
 
     //! Get reference to element at given index.
     T& internal_subscript( size_type index ) const;
@@ -927,16 +1063,34 @@ private:
     template<class I>
     void internal_assign_iterators(I first, I last);
 
+    //these functions are marked __TBB_EXPORTED_FUNC as they are called from within the library
+
     //! Construct n instances of T, starting at "begin".
     static void __TBB_EXPORTED_FUNC initialize_array( void* begin, const void*, size_type n );
 
-    //! Construct n instances of T, starting at "begin".
+    //! Copy-construct n instances of T, starting at "begin".
     static void __TBB_EXPORTED_FUNC initialize_array_by( void* begin, const void* src, size_type n );
 
-    //! Construct n instances of T, starting at "begin".
+    //! Copy-construct n instances of T by copying single element pointed to by src, starting at "dst".
     static void __TBB_EXPORTED_FUNC copy_array( void* dst, const void* src, size_type n );
 
-    //! Assign n instances of T, starting at "begin".
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+    //! Either opy or move-construct n instances of T, starting at "dst" by copying according element of src array.
+    static void __TBB_EXPORTED_FUNC move_array_if_noexcept( void* dst, const void* src, size_type n );
+#endif //__TBB_MOVE_IF_NO_EXCEPT_PRESENT
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! Move-construct n instances of T, starting at "dst" by copying according element of src array.
+    static void __TBB_EXPORTED_FUNC move_array( void* dst, const void* src, size_type n );
+
+    //! Move-assign (using operator=) n instances of T, starting at "dst" by assigning according element of src array.
+    static void __TBB_EXPORTED_FUNC move_assign_array( void* dst, const void* src, size_type n );
+#endif
+    //! Copy-construct n instances of T, starting at "dst" by iterator range of [p_type_erased_iterator, p_type_erased_iterator+n).
+    template<typename Iterator>
+    static void __TBB_EXPORTED_FUNC copy_range( void* dst, const void* p_type_erased_iterator, size_type n );
+
+    //! Assign (using operator=) n instances of T, starting at "dst" by assigning according element of src array.
     static void __TBB_EXPORTED_FUNC assign_array( void* dst, const void* src, size_type n );
 
     //! Destroy n instances of T, starting at "begin".
@@ -948,17 +1102,59 @@ private:
         const pointer array;
         const size_type n;
         size_type i;
+
+        static const T* as_const_pointer(const void *ptr) { return static_cast<const T *>(ptr); }
+        static T* as_pointer(const void *src) { return static_cast<T*>(const_cast<void *>(src)); }
+
         internal_loop_guide(size_type ntrials, void *ptr)
-            : array(static_cast<pointer>(ptr)), n(ntrials), i(0) {}
+            : array(as_pointer(ptr)), n(ntrials), i(0) {}
         void init() {   for(; i < n; ++i) new( &array[i] ) T(); }
-        void init(const void *src) { for(; i < n; ++i) new( &array[i] ) T(*static_cast<const T*>(src)); }
-        void copy(const void *src) { for(; i < n; ++i) new( &array[i] ) T(static_cast<const T*>(src)[i]); }
-        void assign(const void *src) { for(; i < n; ++i) array[i] = static_cast<const T*>(src)[i]; }
+        void init(const void *src) { for(; i < n; ++i) new( &array[i] ) T(*as_const_pointer(src)); }
+        void copy(const void *src) { for(; i < n; ++i) new( &array[i] ) T(as_const_pointer(src)[i]); }
+        void assign(const void *src) { for(; i < n; ++i) array[i] = as_const_pointer(src)[i]; }
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        void move_assign(const void *src)       { for(; i < n; ++i) array[i]         =  std::move(as_pointer(src)[i]);   }
+        void move_construct(const void *src)    { for(; i < n; ++i) new( &array[i] ) T( std::move(as_pointer(src)[i]) ); }
+#endif
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+        void move_construct_if_noexcept(const void *src)    { for(; i < n; ++i) new( &array[i] ) T( std::move_if_noexcept(as_pointer(src)[i]) ); }
+#endif //__TBB_MOVE_IF_NOEXCEPT_PRESENT
+
         //TODO: rename to construct_range
         template<class I> void iterate(I &src) { for(; i < n; ++i, ++src) new( &array[i] ) T( *src ); }
         ~internal_loop_guide() {
-            if(i < n) // if exception raised, do zeroing on the rest of items
-                std::memset(array+i, 0, (n-i)*sizeof(value_type));
+            if(i < n) {// if an exception was raised, fill the rest of items with zeros
+                internal::handle_unconstructed_elements(array+i, n-i);
+            }
+        }
+    };
+
+    struct push_back_helper : internal::no_copy{
+        struct element_construction_guard : internal::no_copy{
+            pointer element;
+
+            element_construction_guard(pointer an_element) : element (an_element){}
+            void dismiss(){ element = NULL; }
+            ~element_construction_guard(){
+                if (element){
+                    internal::handle_unconstructed_elements(element, 1);
+                }
+            }
+        };
+
+        concurrent_vector & v;
+        size_type k;
+        element_construction_guard g;
+
+        push_back_helper(concurrent_vector & vector) :
+            v(vector),
+            g (static_cast<T*>(v.internal_push_back(sizeof(T),k)))
+        {}
+
+        pointer internal_push_back_result(){ return g.element;}
+        iterator return_iterator_and_dismiss(){
+            g.dismiss();
+            return iterator(v, k, g.element);
         }
     };
 };
@@ -971,7 +1167,14 @@ template<typename T, class A>
 void concurrent_vector<T, A>::shrink_to_fit() {
     internal_segments_table old;
     __TBB_TRY {
-        if( internal_compact( sizeof(T), &old, &destroy_array, &copy_array ) )
+        internal_array_op2 copy_or_move_array =
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+                &move_array_if_noexcept
+#else
+                &copy_array
+#endif
+        ;
+        if( internal_compact( sizeof(T), &old, &destroy_array, copy_or_move_array ) )
             internal_free_segments( old.table, pointers_per_long_table, old.first_block ); // free joined and unnecessary segments
     } __TBB_CATCH(...) {
         if( old.first_block ) // free segment allocated for compacting. Only for support of exceptions in ctor of user T[ype]
@@ -984,34 +1187,38 @@ void concurrent_vector<T, A>::shrink_to_fit() {
 #endif // warning 4701 is back
 
 template<typename T, class A>
-void concurrent_vector<T, A>::internal_free_segments(void *table[], segment_index_t k, segment_index_t first_block) {
+void concurrent_vector<T, A>::internal_free_segments(segment_t table[], segment_index_t k, segment_index_t first_block) {
     // Free the arrays
     while( k > first_block ) {
         --k;
-        T* array = static_cast<T*>(table[k]);
-        table[k] = NULL;
-        if( array > internal::vector_allocation_error_flag ) // check for correct segment pointer
-            this->my_allocator.deallocate( array, segment_size(k) );
+        segment_value_t segment_value = table[k].load<relaxed>();
+        table[k].store<relaxed>(segment_not_used());
+        if( segment_value == segment_allocated() ) // check for correct segment pointer
+            this->my_allocator.deallocate( (segment_value.pointer<T>()), segment_size(k) );
     }
-    T* array = static_cast<T*>(table[0]);
-    if( array > internal::vector_allocation_error_flag ) {
+    segment_value_t segment_value = table[0].load<relaxed>();
+    if( segment_value == segment_allocated() ) {
         __TBB_ASSERT( first_block > 0, NULL );
-        while(k > 0) table[--k] = NULL;
-        this->my_allocator.deallocate( array, segment_size(first_block) );
+        while(k > 0) table[--k].store<relaxed>(segment_not_used());
+        this->my_allocator.deallocate( (segment_value.pointer<T>()), segment_size(first_block) );
     }
 }
 
 template<typename T, class A>
 T& concurrent_vector<T, A>::internal_subscript( size_type index ) const {
+    //TODO: unify both versions of internal_subscript
     __TBB_ASSERT( index < my_early_size, "index out of bounds" );
     size_type j = index;
     segment_index_t k = segment_base_index_of( j );
-    __TBB_ASSERT( (segment_t*)my_segment != my_storage || k < pointers_per_short_table, "index is being allocated" );
-    // no need in __TBB_load_with_acquire since thread works in own space or gets 
-    T* array = static_cast<T*>( tbb::internal::itt_hide_load_word(my_segment[k].array));
-    __TBB_ASSERT( array != internal::vector_allocation_error_flag, "the instance is broken by bad allocation. Use at() instead" );
-    __TBB_ASSERT( array, "index is being allocated" );
-    return array[j];
+    __TBB_ASSERT( my_segment.load<acquire>() != my_storage || k < pointers_per_short_table, "index is being allocated" );
+    //no need in load with acquire (load<acquire>) since thread works in own space or gets
+    //the information about added elements via some form of external synchronization
+    //TODO: why not make a load of my_segment relaxed as well ?
+    //TODO: add an assertion that my_segment[k] is properly aligned to please ITT
+    segment_value_t segment_value =  my_segment[k].template load<relaxed>();
+    __TBB_ASSERT( segment_value != segment_allocation_failed(), "the instance is broken by bad allocation. Use at() instead" );
+    __TBB_ASSERT( segment_value != segment_not_used(), "index is being allocated" );
+    return (( segment_value.pointer<T>()))[j];
 }
 
 template<typename T, class A>
@@ -1020,12 +1227,17 @@ T& concurrent_vector<T, A>::internal_subscript_with_exceptions( size_type index
         internal::throw_exception(internal::eid_out_of_range); // throw std::out_of_range
     size_type j = index;
     segment_index_t k = segment_base_index_of( j );
-    if( (segment_t*)my_segment == my_storage && k >= pointers_per_short_table )
+    //TODO: refactor this condition into separate helper function, e.g. fits_into_small_table
+    if( my_segment.load<acquire>() == my_storage && k >= pointers_per_short_table )
         internal::throw_exception(internal::eid_segment_range_error); // throw std::range_error
-    void *array = my_segment[k].array; // no need in __TBB_load_with_acquire
-    if( array <= internal::vector_allocation_error_flag ) // check for correct segment pointer
+    // no need in load with acquire (load<acquire>) since thread works in own space or gets
+    //the information about added elements via some form of external synchronization
+    //TODO: why not make a load of my_segment relaxed as well ?
+    //TODO: add an assertion that my_segment[k] is properly aligned to please ITT
+    segment_value_t segment_value =  my_segment[k].template load<relaxed>();
+    if( segment_value != segment_allocated() ) // check for correct segment pointer
         internal::throw_exception(internal::eid_index_range_error); // throw std::range_error
-    return static_cast<T*>(array)[j];
+    return (segment_value.pointer<T>())[j];
 }
 
 template<typename T, class A> template<class I>
@@ -1036,15 +1248,16 @@ void concurrent_vector<T, A>::internal_assign_iterators(I first, I last) {
     internal_reserve(n, sizeof(T), max_size());
     my_early_size = n;
     segment_index_t k = 0;
+    //TODO: unify segment iteration code with concurrent_base_v3::helper
     size_type sz = segment_size( my_first_block );
     while( sz < n ) {
-        internal_loop_guide loop(sz, my_segment[k].array);
+        internal_loop_guide loop(sz, my_segment[k].template load<relaxed>().template pointer<void>());
         loop.iterate(first);
         n -= sz;
         if( !k ) k = my_first_block;
         else { ++k; sz <<= 1; }
     }
-    internal_loop_guide loop(n, my_segment[k].array);
+    internal_loop_guide loop(n, my_segment[k].template load<relaxed>().template pointer<void>());
     loop.iterate(first);
 }
 
@@ -1063,6 +1276,31 @@ void concurrent_vector<T, A>::copy_array( void* dst, const void* src, size_type
     internal_loop_guide loop(n, dst); loop.copy(src);
 }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+template<typename T, class A>
+void concurrent_vector<T, A>::move_array( void* dst, const void* src, size_type n ) {
+    internal_loop_guide loop(n, dst); loop.move_construct(src);
+}
+template<typename T, class A>
+void concurrent_vector<T, A>::move_assign_array( void* dst, const void* src, size_type n ) {
+    internal_loop_guide loop(n, dst); loop.move_assign(src);
+}
+#endif
+
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+template<typename T, class A>
+void concurrent_vector<T, A>::move_array_if_noexcept( void* dst, const void* src, size_type n ) {
+    internal_loop_guide loop(n, dst); loop.move_construct_if_noexcept(src);
+}
+#endif //__TBB_MOVE_IF_NOEXCEPT_PRESENT
+
+template<typename T, class A>
+template<typename I>
+void concurrent_vector<T, A>::copy_range( void* dst, const void* p_type_erased_iterator, size_type n ){
+    I & iterator ((*const_cast<I*>(static_cast<const I*>(p_type_erased_iterator))));
+    internal_loop_guide loop(n, dst); loop.iterate(iterator);
+}
+
 template<typename T, class A>
 void concurrent_vector<T, A>::assign_array( void* dst, const void* src, size_type n ) {
     internal_loop_guide loop(n, dst); loop.assign(src);
@@ -1086,6 +1324,7 @@ void concurrent_vector<T, A>::destroy_array( void* begin, size_type n ) {
 // concurrent_vector's template functions
 template<typename T, class A1, class A2>
 inline bool operator==(const concurrent_vector<T, A1> &a, const concurrent_vector<T, A2> &b) {
+    //TODO: call size() only once per vector (in operator==)
     // Simply:    return a.size() == b.size() && std::equal(a.begin(), a.end(), b.begin());
     if(a.size() != b.size()) return false;
     typename concurrent_vector<T, A1>::const_iterator i(a.begin());
@@ -1121,8 +1360,8 @@ inline void swap(concurrent_vector<T, A> &a, concurrent_vector<T, A> &b)
 
 } // namespace tbb
 
-#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && defined(_Wp64)
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
     #pragma warning (pop)
-#endif // warning 4267 is back
+#endif // warning 4267,4127 are back
 
 #endif /* __TBB_concurrent_vector_H */
diff --git a/include/tbb/critical_section.h b/include/tbb/critical_section.h
index 45b2a5c..973dd48 100644
--- a/include/tbb/critical_section.h
+++ b/include/tbb/critical_section.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_CRITICAL_SECTION_H_
diff --git a/include/tbb/enumerable_thread_specific.h b/include/tbb/enumerable_thread_specific.h
index bbf7827..3fca9e3 100644
--- a/include/tbb/enumerable_thread_specific.h
+++ b/include/tbb/enumerable_thread_specific.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_enumerable_thread_specific_H
@@ -35,6 +27,7 @@
 #include "tbb_profiling.h"
 #include "cache_aligned_allocator.h"
 #include "aligned_space.h"
+#include "internal/_template_helpers.h"
 #include <string.h>  // for memcpy
 
 #if _WIN32||_WIN64
@@ -43,6 +36,10 @@
 #include <pthread.h>
 #endif
 
+#define __TBB_ETS_USE_CPP11 \
+    (__TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT \
+     && __TBB_CPP11_DECLTYPE_PRESENT && __TBB_CPP11_LAMBDAS_PRESENT)
+
 namespace tbb {
 
 //! enum for selecting between single key and key-per-instance versions
@@ -50,6 +47,10 @@ enum ets_key_usage_type { ets_key_per_instance, ets_no_key };
 
 namespace interface6 {
 
+    // Forward declaration to use in internal classes
+    template <typename T, typename Allocator, ets_key_usage_type ETS_key_type>
+    class enumerable_thread_specific;
+
     //! @cond
     namespace internal {
 
@@ -87,6 +88,7 @@ namespace interface6 {
                 bool match( key_type k ) const {return key==k;}
                 bool claim( key_type k ) {
                     __TBB_ASSERT(sizeof(tbb::atomic<key_type>)==sizeof(key_type), NULL);
+                    // TODO: maybe claim ptr, because key_type is not guaranteed to match word size
                     return tbb::internal::punned_cast<tbb::atomic<key_type>*>(&key)->compare_and_swap(k,0)==0;
                 }
             };
@@ -95,6 +97,7 @@ namespace interface6 {
 #endif
 
             static key_type key_of_current_thread() {
+               // TODO: replace key_type with tbb::tbb_thread::id
                tbb::tbb_thread::id id = tbb::this_tbb_thread::get_id();
                key_type k;
                memcpy( &k, &id, sizeof(k) );
@@ -123,6 +126,7 @@ namespace interface6 {
             static size_t hash( key_type k ) {
                 // Multiplicative hashing.  Client should use *upper* bits.
                 // casts required for Mac gcc4.* compiler
+                // TODO: casting of key_type to uintptr_t is not portable; implement and use hashing of thread::id
                 return uintptr_t(k)*tbb::internal::select_size_t_constant<0x9E3779B9,0x9E3779B97F4A7C15ULL>::value;
             }
 
@@ -357,9 +361,9 @@ namespace interface6 {
             Value& operator*() const {
                 Value* value = my_value;
                 if( !value ) {
-                    value = my_value = reinterpret_cast<Value *>(&(*my_container)[my_index].value);
+                    value = my_value = (*my_container)[my_index].value();
                 }
-                __TBB_ASSERT( value==reinterpret_cast<Value *>(&(*my_container)[my_index].value), "corrupt cache" );
+                __TBB_ASSERT( value==(*my_container)[my_index].value(), "corrupt cache" );
                 return *value;
             }
 
@@ -594,12 +598,6 @@ namespace interface6 {
         }
 
         template<typename T>
-        struct destruct_only: tbb::internal::no_copy {
-            tbb::aligned_space<T,1> value;
-            ~destruct_only() {value.begin()[0].~T();}
-        };
-
-        template<typename T>
         struct construct_by_default: tbb::internal::no_assign {
             void construct(void*where) {new(where) T();} // C++ note: the () in T() ensure zero initialization.
             construct_by_default( int ) {}
@@ -610,6 +608,9 @@ namespace interface6 {
             const T exemplar;
             void construct(void*where) {new(where) T(exemplar);}
             construct_by_exemplar( const T& t ) : exemplar(t) {}
+#if __TBB_ETS_USE_CPP11
+            construct_by_exemplar( T&& t ) : exemplar(std::move(t)) {}
+#endif
         };
 
         template<typename T, typename Finit>
@@ -617,14 +618,30 @@ namespace interface6 {
             Finit f;
             void construct(void* where) {new(where) T(f());}
             construct_by_finit( const Finit& f_ ) : f(f_) {}
+#if __TBB_ETS_USE_CPP11
+            construct_by_finit( Finit&& f_ ) : f(std::move(f_)) {}
+#endif
         };
 
+#if __TBB_ETS_USE_CPP11
+        template<typename T, typename... P>
+        struct construct_by_args: tbb::internal::no_assign {
+            internal::stored_pack<P...> pack;
+            void construct(void* where) {
+                internal::call( [where](const typename strip<P>::type&... args ){
+                   new(where) T(args...);
+                }, pack );
+            }
+            construct_by_args( P&& ... args ) : pack(std::forward<P>(args)...) {}
+        };
+#endif 
+
         // storage for initialization function pointer
         template<typename T>
         class callback_base {
         public:
             // Clone *this
-            virtual callback_base* clone() = 0;
+            virtual callback_base* clone() const = 0;
             // Destruct and free *this
             virtual void destroy() = 0;
             // Need virtual destructor to satisfy GCC compiler warning
@@ -635,13 +652,16 @@ namespace interface6 {
 
         template <typename T, typename Constructor>
         class callback_leaf: public callback_base<T>, Constructor {
+#if __TBB_ETS_USE_CPP11
+            template<typename... P> callback_leaf( P&& ... params ) : Constructor(std::forward<P>(params)...) {}
+#else
             template<typename X> callback_leaf( const X& x ) : Constructor(x) {}
+#endif
 
             typedef typename tbb::tbb_allocator<callback_leaf> my_allocator_type;
 
-            /*override*/ callback_base<T>* clone() {
-                void* where = my_allocator_type().allocate(1);
-                return new(where) callback_leaf(*this);
+            /*override*/ callback_base<T>* clone() const {
+                return make(*this);
             }
 
             /*override*/ void destroy() {
@@ -653,27 +673,67 @@ namespace interface6 {
                 Constructor::construct(where);
             }
         public:
+#if __TBB_ETS_USE_CPP11
+            template<typename... P>
+            static callback_base<T>* make( P&& ... params ) {
+                void* where = my_allocator_type().allocate(1);
+                return new(where) callback_leaf( std::forward<P>(params)... );
+            }
+#else
             template<typename X>
             static callback_base<T>* make( const X& x ) {
                 void* where = my_allocator_type().allocate(1);
                 return new(where) callback_leaf(x);
             }
+#endif
         };
 
-        //! Template for adding padding in order to avoid false sharing
-        /** ModularSize should be sizeof(U) modulo the cache line size.
-            All maintenance of the space will be done explicitly on push_back,
+        //! Template for recording construction of objects in table
+        /** All maintenance of the space will be done explicitly on push_back,
             and all thread local copies must be destroyed before the concurrent
             vector is deleted.
+
+            The flag is_built is initialized to false.  When the local is
+            successfully-constructed, set the flag to true.  If the constructor
+            throws, the flag will be false.
         */
-        template<typename U, size_t ModularSize>
+        template<typename U>
         struct ets_element {
-            char value[ModularSize==0 ? sizeof(U) : sizeof(U)+(tbb::internal::NFS_MaxLineSize-ModularSize)];
-            void unconstruct() {
-                tbb::internal::punned_cast<U*>(&value)->~U();
+            tbb::aligned_space<U> my_space;
+            bool is_built;
+            ets_element() { is_built = false; }  // not currently-built
+            U *value() { return my_space.begin(); }
+            void unconstruct() { 
+                if(is_built) {
+                    my_space.begin()->~U();
+                    is_built = false;
+                }
             }
+            ~ets_element() {unconstruct();}
         };
 
+        // A predicate that can be used for a compile-time compatibility check of ETS instances
+        // Ideally, it should have been declared inside the ETS class, but unfortunately
+        // in that case VS2013 does not enable the variadic constructor.
+        template<typename T, typename ETS> struct is_compatible_ets { static const bool value = false; };
+        template<typename T, typename U, typename A, ets_key_usage_type C>
+        struct is_compatible_ets< T, enumerable_thread_specific<U,A,C> > { static const bool value = internal::is_same_type<T,U>::value; };
+
+#if __TBB_ETS_USE_CPP11
+        // A predicate that checks whether, for a variable 'foo' of type T, foo() is a valid expression
+        template <typename T>
+        class is_callable_no_args {
+        private:
+            typedef char yes[1];
+            typedef char no [2];
+
+            template<typename U> static yes& decide( decltype(declval<U>()())* );
+            template<typename U> static no&  decide(...);
+        public:
+            static const bool value = (sizeof(decide<T>(NULL)) == sizeof(yes));
+        };
+#endif
+
     } // namespace internal
     //! @endcond
 
@@ -692,7 +752,7 @@ namespace interface6 {
 
     @par combine and combine_each
         - Both methods are defined for enumerable_thread_specific.
-        - combine() requires the the type T have operator=() defined.
+        - combine() requires the type T have operator=() defined.
         - neither method modifies the contents of the object (though there is no guarantee that the applied methods do not modify the object.)
         - Both are evaluated in serial context (the methods are assumed to be non-benign.)
 
@@ -704,7 +764,7 @@ namespace interface6 {
 
         template<typename U, typename A, ets_key_usage_type C> friend class enumerable_thread_specific;
 
-        typedef internal::ets_element<T,sizeof(T)%tbb::internal::NFS_MaxLineSize> padded_element;
+        typedef internal::padded< internal::ets_element<T> > padded_element;
 
         //! A generic range, used to create range objects from the iterators
         template<typename I>
@@ -729,12 +789,9 @@ namespace interface6 {
         internal_collection_type my_locals;
 
         /*override*/ void* create_local() {
-#if TBB_DEPRECATED
-            void* lref = &my_locals[my_locals.push_back(padded_element())];
-#else
-            void* lref = &*my_locals.push_back(padded_element());
-#endif
-            my_construct_callback->construct(lref);
+            padded_element* lref = &*my_locals.grow_by(1);
+            my_construct_callback->construct(lref->value());
+            lref->is_built = true;
             return lref;
         }
 
@@ -778,20 +835,40 @@ namespace interface6 {
         typedef generic_range_type< const_iterator > const_range_type;
 
         //! Default constructor.  Each local instance of T is default constructed.
-        enumerable_thread_specific() :
-            my_construct_callback( internal::callback_leaf<T,internal::construct_by_default<T> >::make(/*dummy argument*/0) )
-        {}
+        enumerable_thread_specific() : my_construct_callback(
+            internal::callback_leaf<T,internal::construct_by_default<T> >::make(/*dummy argument*/0)
+        ){}
 
         //! Constructor with initializer functor.  Each local instance of T is constructed by T(finit()).
-        template <typename Finit>
-        enumerable_thread_specific( Finit finit ) :
-            my_construct_callback( internal::callback_leaf<T,internal::construct_by_finit<T,Finit> >::make( finit ) )
-        {}
-
-        //! Constructor with exemplar.  Each local instance of T is copied-constructed from the exemplar.
-        enumerable_thread_specific(const T& exemplar) :
-            my_construct_callback( internal::callback_leaf<T,internal::construct_by_exemplar<T> >::make( exemplar ) )
-        {}
+        template <typename Finit
+#if __TBB_ETS_USE_CPP11
+                  , typename = typename internal::enable_if<internal::is_callable_no_args<typename internal::strip<Finit>::type>::value>::type
+#endif
+        >
+        enumerable_thread_specific( Finit finit ) : my_construct_callback(
+            internal::callback_leaf<T,internal::construct_by_finit<T,Finit> >::make( tbb::internal::move(finit) )
+        ){}
+
+        //! Constructor with exemplar. Each local instance of T is copy-constructed from the exemplar.
+        enumerable_thread_specific( const T& exemplar ) : my_construct_callback(
+            internal::callback_leaf<T,internal::construct_by_exemplar<T> >::make( exemplar )
+        ){}
+
+#if __TBB_ETS_USE_CPP11
+        enumerable_thread_specific( T&& exemplar ) : my_construct_callback(
+            internal::callback_leaf<T,internal::construct_by_exemplar<T> >::make( std::move(exemplar) )
+        ){}
+
+        //! Variadic constructor with initializer arguments.  Each local instance of T is constructed by T(args...)
+        template <typename P1, typename... P,
+                  typename = typename internal::enable_if<!internal::is_callable_no_args<typename internal::strip<P1>::type>::value
+                                                          && !internal::is_compatible_ets<T, typename internal::strip<P1>::type>::value
+                                                          && !internal::is_same_type<T, typename internal::strip<P1>::type>::value
+                                                         >::type>
+        enumerable_thread_specific( P1&& arg1, P&& ... args ) : my_construct_callback(
+            internal::callback_leaf<T,internal::construct_by_args<T,P1,P...> >::make( std::forward<P1>(arg1), std::forward<P>(args)... )
+        ){}
+#endif
 
         //! Destructor
         ~enumerable_thread_specific() {
@@ -846,13 +923,13 @@ namespace interface6 {
 
     private:
 
-        template<typename U, typename A2, ets_key_usage_type C2>
-        void internal_copy( const enumerable_thread_specific<U, A2, C2>& other);
+        template<typename A2, ets_key_usage_type C2>
+        void internal_copy( const enumerable_thread_specific<T, A2, C2>& other);
 
     public:
 
-        template<typename U, typename Alloc, ets_key_usage_type Cachetype>
-        enumerable_thread_specific( const enumerable_thread_specific<U, Alloc, Cachetype>& other ) : internal::ets_base<ETS_key_type> ()
+        template<typename Alloc, ets_key_usage_type Cachetype>
+        enumerable_thread_specific( const enumerable_thread_specific<T, Alloc, Cachetype>& other ) : internal::ets_base<ETS_key_type> ()
         {
             internal_copy(other);
         }
@@ -861,12 +938,13 @@ namespace interface6 {
         {
             internal_copy(other);
         }
+        // TODO: add move constructors
 
     private:
 
-        template<typename U, typename A2, ets_key_usage_type C2>
+        template<typename A2, ets_key_usage_type C2>
         enumerable_thread_specific &
-        internal_assign(const enumerable_thread_specific<U, A2, C2>& other) {
+        internal_assign(const enumerable_thread_specific<T, A2, C2>& other) {
             if(static_cast<void *>( this ) != static_cast<const void *>( &other )) {
                 this->clear();
                 my_construct_callback->destroy();
@@ -883,19 +961,21 @@ namespace interface6 {
             return internal_assign(other);
         }
 
-        template<typename U, typename Alloc, ets_key_usage_type Cachetype>
-        enumerable_thread_specific& operator=(const enumerable_thread_specific<U, Alloc, Cachetype>& other)
+        template<typename Alloc, ets_key_usage_type Cachetype>
+        enumerable_thread_specific& operator=(const enumerable_thread_specific<T, Alloc, Cachetype>& other)
         {
             return internal_assign(other);
         }
+        // TODO: add move assignments
 
         // combine_func_t has signature T(T,T) or T(const T&, const T&)
         template <typename combine_func_t>
         T combine(combine_func_t f_combine) {
             if(begin() == end()) {
-                internal::destruct_only<T> location;
-                my_construct_callback->construct(location.value.begin());
-                return *location.value.begin();
+                internal::ets_element<T> location;
+                my_construct_callback->construct(location.value());
+                location.is_built = true;
+                return *location.value();
             }
             const_iterator ci = begin();
             T my_result = *ci;
@@ -904,10 +984,10 @@ namespace interface6 {
             return my_result;
         }
 
-        // combine_func_t has signature void(T) or void(const T&)
+        // combine_func_t takes T by value or by [const] reference, and returns nothing
         template <typename combine_func_t>
         void combine_each(combine_func_t f_combine) {
-            for(const_iterator ci = begin(); ci != end(); ++ci) {
+            for(iterator ci = begin(); ci != end(); ++ci) {
                 f_combine( *ci );
             }
         }
@@ -915,8 +995,11 @@ namespace interface6 {
     }; // enumerable_thread_specific
 
     template <typename T, typename Allocator, ets_key_usage_type ETS_key_type>
-    template<typename U, typename A2, ets_key_usage_type C2>
-    void enumerable_thread_specific<T,Allocator,ETS_key_type>::internal_copy( const enumerable_thread_specific<U, A2, C2>& other) {
+    template<typename A2, ets_key_usage_type C2>
+    void enumerable_thread_specific<T,Allocator,ETS_key_type>::internal_copy( const enumerable_thread_specific<T, A2, C2>& other) {
+#if __TBB_ETS_USE_CPP11
+        __TBB_STATIC_ASSERT( (internal::is_compatible_ets<T, typename internal::strip<decltype(other)>::type>::value), "Maybe is_compatible_ets works incorrectly" );
+#endif
         // Initialize my_construct_callback first, so that it is valid even if rest of this routine throws an exception.
         my_construct_callback = other.my_construct_callback->clone();
 
@@ -929,12 +1012,8 @@ namespace interface6 {
                 if( !s1.empty() ) {
                     base::slot& s2 = this->table_find(s1.key);
                     if( s2.empty() ) {
-#if TBB_DEPRECATED
-                        void* lref = &my_locals[my_locals.push_back(padded_element())];
-#else
-                        void* lref = &*my_locals.push_back(padded_element());
-#endif
-                        s2.ptr = new(lref) T(*(U*)s1.ptr);
+                        void* lref = &*my_locals.grow_by(1);
+                        s2.ptr = new(lref) T(*(T*)s1.ptr);
                         s2.key = s1.key;
                     } else {
                         // Skip the duplicate
diff --git a/include/tbb/flow_graph.h b/include/tbb/flow_graph.h
index cbe2bbc..11f2a3d 100644
--- a/include/tbb/flow_graph.h
+++ b/include/tbb/flow_graph.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_flow_graph_H
@@ -36,7 +28,9 @@
 #include "spin_rw_mutex.h"
 #include "null_rw_mutex.h"
 #include "task.h"
-#include "concurrent_vector.h"
+#include "cache_aligned_allocator.h"
+#include "tbb_exception.h"
+#include "internal/_template_helpers.h"
 #include "internal/_aggregator_impl.h"
 #include "tbb_profiling.h"
 
@@ -71,7 +65,7 @@ namespace tbb {
   passed between nodes in a graph.  These messages may contain data or
   simply act as signals that a predecessors has completed. The graph
   class and its associated node classes can be used to express such
-  applcations.
+  applications.
 */
 
 namespace tbb {
@@ -86,8 +80,15 @@ namespace internal {
     template<typename T, typename M> class successor_cache;
     template<typename T, typename M> class broadcast_cache;
     template<typename T, typename M> class round_robin_cache;
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    template< typename C> class edge_container;
+#endif
 }
 
+//A generic null type
+struct null_type {};
+
 //! An empty class used for messages that mean "I'm done"
 class continue_msg {};
 
@@ -124,13 +125,39 @@ public:
 
     //! Consumes the reserved item
     virtual bool try_consume( ) { return false; }
-};
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    //! interface to record edges for traversal & deletion
+    typedef typename  internal::edge_container<successor_type> built_successors_type;
+    typedef typename  built_successors_type::edge_list_type successor_list_type;
+    virtual built_successors_type &built_successors()                   = 0;
+    virtual void    internal_add_built_successor( successor_type & )    = 0;
+    virtual void    internal_delete_built_successor( successor_type & ) = 0;
+    virtual void    copy_successors( successor_list_type &)             = 0;
+    virtual size_t  successor_count()                                   = 0;
+#endif
+};  // class sender<T>
 
 template< typename T > class limiter_node;  // needed for resetting decrementer
 template< typename R, typename B > class run_and_put_task;
 
 static tbb::task * const SUCCESSFULLY_ENQUEUED = (task *)-1;
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+// flags to modify the behavior of the graph reset().  Can be combined.
+enum reset_flags {
+    rf_reset_protocol   = 0,
+    rf_reset_bodies     = 1<<0,  // delete the current node body, reset to a copy of the initial node body.
+    rf_clear_edges          = 1<<1   // delete edges
+};
+
+#define __TBB_PFG_RESET_ARG(exp) exp
+#define __TBB_COMMA ,
+#else
+#define __TBB_PFG_RESET_ARG(exp)  /* nothing */
+#define __TBB_COMMA /* nothing */
+#endif  // TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
 // enqueue left task if necessary.  Returns the non-enqueued task if there is one.
 static inline tbb::task *combine_tasks( tbb::task * left, tbb::task * right) {
     // if no RHS task, don't change left.
@@ -162,11 +189,11 @@ public:
 
     //! Put an item to the receiver
     bool try_put( const T& t ) {
-            task *res = try_put_task(t);
-            if(!res) return false;
-            if (res != SUCCESSFULLY_ENQUEUED) FLOW_SPAWN(*res);
-            return true;
-        }
+        task *res = try_put_task(t);
+        if(!res) return false;
+        if (res != SUCCESSFULLY_ENQUEUED) FLOW_SPAWN(*res);
+        return true;
+    }
 
     //! put item to successor; return task to run the successor if possible.
 protected:
@@ -182,15 +209,71 @@ public:
     //! Remove a predecessor from the node
     virtual bool remove_predecessor( predecessor_type & ) { return false; }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename internal::edge_container<predecessor_type> built_predecessors_type;
+    typedef typename built_predecessors_type::edge_list_type predecessor_list_type;
+    virtual built_predecessors_type &built_predecessors()                  = 0;
+    virtual void   internal_add_built_predecessor( predecessor_type & )    = 0;
+    virtual void   internal_delete_built_predecessor( predecessor_type & ) = 0;
+    virtual void   copy_predecessors( predecessor_list_type & )            = 0;
+    virtual size_t predecessor_count()                                     = 0;
+#endif
+
 protected:
     //! put receiver back in initial state
     template<typename U> friend class limiter_node;
-    virtual void reset_receiver() = 0;
+    virtual void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags f = rf_reset_protocol ) ) = 0;
 
     template<typename TT, typename M>
         friend class internal::successor_cache;
     virtual bool is_continue_receiver() { return false; }
-};
+};  // class receiver<T>
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+//* holder of edges both for caches and for those nodes which do not have predecessor caches.
+// C == receiver< ... > or sender< ... >, depending.
+namespace internal {
+template<typename C>
+class edge_container {
+
+public:
+    typedef std::list<C *, tbb::tbb_allocator<C *> > edge_list_type;
+
+    void add_edge( C &s) {
+        built_edges.push_back( &s );
+    }
+
+    void delete_edge( C &s) {
+        for ( typename edge_list_type::iterator i = built_edges.begin(); i != built_edges.end(); ++i ) {
+            if ( *i == &s )  {
+                (void)built_edges.erase(i);
+                return;  // only remove one predecessor per request
+            }
+        }
+    }
+
+    void copy_edges( edge_list_type &v) {
+        v = built_edges;
+    }
+
+    size_t edge_count() {
+        return (size_t)(built_edges.size());
+    }
+
+    void clear() {
+        built_edges.clear();
+    }
+
+    // methods remove the statement from all predecessors/successors liste in the edge
+    // container.
+    template< typename S > void sender_extract( S &s ); 
+    template< typename R > void receiver_extract( R &r ); 
+    
+private: 
+    edge_list_type built_edges;
+};  // class edge_container
+}  // namespace internal
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
 
 //! Base class for receivers of completion messages
 /** These receivers automatically reset, but cannot be explicitly waited on */
@@ -235,6 +318,33 @@ public:
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef internal::edge_container<predecessor_type> built_predecessors_type;
+    typedef built_predecessors_type::edge_list_type predecessor_list_type;
+    /*override*/ built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+
+    /*override*/ void internal_add_built_predecessor( predecessor_type &s) {
+        spin_mutex::scoped_lock l(my_mutex);
+        my_built_predecessors.add_edge( s );
+    }
+
+    /*override*/ void internal_delete_built_predecessor( predecessor_type &s) {
+        spin_mutex::scoped_lock l(my_mutex);
+        my_built_predecessors.delete_edge(s);
+    }
+
+    /*override*/ void copy_predecessors( predecessor_list_type &v) {
+        spin_mutex::scoped_lock l(my_mutex);
+        my_built_predecessors.copy_edges(v);
+    }
+
+    /*override*/ size_t predecessor_count() {
+        spin_mutex::scoped_lock l(my_mutex);
+        return my_built_predecessors.edge_count();
+    }
+
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+    
 protected:
     template< typename R, typename B > friend class run_and_put_task;
     template<typename X, typename Y> friend class internal::broadcast_cache;
@@ -253,6 +363,11 @@ protected:
         return res;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    // continue_receiver must contain its own built_predecessors because it does
+    // not have a node_cache.
+    built_predecessors_type my_built_predecessors;
+#endif
     spin_mutex my_mutex;
     int my_predecessor_count;
     int my_current_count;
@@ -260,8 +375,16 @@ protected:
     // the friend declaration in the base class did not eliminate the "protected class"
     // error in gcc 4.1.2
     template<typename U> friend class limiter_node;
-    /*override*/void reset_receiver() {
+
+    /*override*/void reset_receiver( __TBB_PFG_RESET_ARG(reset_flags f) )
+    {
         my_current_count = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if(f & rf_clear_edges) {
+            my_built_predecessors.clear();
+            my_predecessor_count = my_initial_predecessor_count;
+        }
+#endif
     }
 
     //! Does whatever should happen when the threshold is reached
@@ -271,7 +394,8 @@ protected:
     template<typename TT, typename M>
         friend class internal::successor_cache;
     /*override*/ bool is_continue_receiver() { return true; }
-};
+
+}; // class continue_receiver
 }  // interface7
 }  // flow
 }  // tbb
@@ -282,6 +406,7 @@ namespace tbb {
 namespace flow {
 namespace interface7 {
 
+#include "internal/_flow_graph_types_impl.h"
 #include "internal/_flow_graph_impl.h"
 using namespace internal::graph_policy_namespace;
 
@@ -353,7 +478,7 @@ private:
     //! Private initializing constructor for begin() and end() iterators
     graph_iterator(GraphContainerType *g, bool begin);
     void internal_forward();
-};
+};  // class graph_iterator
 
 //! The graph class
 /** This class serves as a handle to the graph */
@@ -397,6 +522,9 @@ public:
         my_root_task = ( new ( task::allocate_root(*my_context) ) empty_task );
         my_root_task->set_ref_count(1);
         tbb::internal::fgt_graph( this );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        my_is_active = true;
+#endif
     }
 
     //! Constructs a graph with use_this_context as context
@@ -407,6 +535,9 @@ public:
         my_root_task = ( new ( task::allocate_root(*my_context) ) empty_task );
         my_root_task->set_ref_count(1);
         tbb::internal::fgt_graph( this );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        my_is_active = true;
+#endif
     }
 
     //! Destroys the graph.
@@ -485,8 +616,23 @@ public:
 
     //! Returns the root task of the graph
     task * root_task() {
-        return my_root_task;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if (!my_is_active) 
+            return NULL;
+        else
+#endif
+            return my_root_task;
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    void set_active(bool a = true) {
+       my_is_active = a;
+    }
+
+    bool is_active() {
+       return my_is_active;
     }
+#endif
 
     // ITERATORS
     template<typename C, typename N>
@@ -514,8 +660,8 @@ public:
     bool is_cancelled() { return cancelled; }
     bool exception_thrown() { return caught_exception; }
 
-    // un-thread-safe state reset.
-    void reset();
+    // thread-unsafe state reset.
+    void reset(__TBB_PFG_RESET_ARG(reset_flags f = rf_reset_protocol));
 
 private:
     task *my_root_task;
@@ -523,6 +669,10 @@ private:
     bool own_context;
     bool cancelled;
     bool caught_exception;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    bool my_is_active;
+#endif
+
 
     graph_node *my_nodes, *my_nodes_last;
 
@@ -576,9 +726,14 @@ public:
     virtual void set_name( const char *name ) = 0;
 #endif
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    virtual void extract( ) = 0;
+#endif
+
 protected:
-    virtual void reset() = 0;
-};
+    // performs the reset on an individual node.
+    virtual void reset_node(__TBB_PFG_RESET_ARG(reset_flags f=rf_reset_protocol)) = 0;
+};  // class graph_node
 
 inline void graph::register_node(graph_node *n) {
     n->next = NULL;
@@ -603,7 +758,7 @@ inline void graph::remove_node(graph_node *n) {
     n->prev = n->next = NULL;
 }
 
-inline void graph::reset() {
+inline void graph::reset( __TBB_PFG_RESET_ARG( reset_flags f )) {
     // reset context
     task *saved_my_root_task = my_root_task;
     my_root_task = NULL;
@@ -613,7 +768,7 @@ inline void graph::reset() {
     // reset all the nodes comprising the graph
     for(iterator ii = begin(); ii != end(); ++ii) {
         graph_node *my_p = &(*ii);
-        my_p->reset();
+        my_p->reset_node(__TBB_PFG_RESET_ARG(f));
     }
     my_root_task = saved_my_root_task;
 }
@@ -633,6 +788,14 @@ public:
     //! The type of successors of this node
     typedef receiver< Output > successor_type;
 
+    //Source node has no input type
+    typedef null_type input_type;
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename sender<output_type>::built_successors_type built_successors_type;
+    typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
+
     //! Constructor for a node with a successor
     template< typename Body >
     source_node( graph &g, Body body, bool is_active = true )
@@ -641,7 +804,7 @@ public:
         my_reserved(false), my_has_cached_item(false)
     {
         my_successors.set_owner(this);
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_SOURCE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_SOURCE_NODE, &this->my_graph,
                                            static_cast<sender<output_type> *>(this), this->my_body );
     }
 
@@ -653,7 +816,7 @@ public:
         my_reserved(false), my_has_cached_item(false)
     {
         my_successors.set_owner(this);
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_SOURCE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_SOURCE_NODE, &this->my_graph,
                                            static_cast<sender<output_type> *>(this), this->my_body );
     }
 
@@ -667,7 +830,7 @@ public:
 #endif
 
     //! Add a new successor to this node
-    /* override */ bool register_successor( receiver<output_type> &r ) {
+    /* override */ bool register_successor( successor_type &r ) {
         spin_mutex::scoped_lock lock(my_mutex);
         my_successors.register_successor(r);
         if ( my_active )
@@ -676,12 +839,37 @@ public:
     }
 
     //! Removes a successor from this node
-    /* override */ bool remove_successor( receiver<output_type> &r ) {
+    /* override */ bool remove_successor( successor_type &r ) {
         spin_mutex::scoped_lock lock(my_mutex);
         my_successors.remove_successor(r);
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
+    /*override*/ built_successors_type &built_successors() { return my_successors.built_successors(); }
+
+    /*override*/void internal_add_built_successor( successor_type &r) {
+        spin_mutex::scoped_lock lock(my_mutex);
+        my_successors.internal_add_built_successor(r);
+    }
+
+    /*override*/void internal_delete_built_successor( successor_type &r) {
+        spin_mutex::scoped_lock lock(my_mutex);
+        my_successors.internal_delete_built_successor(r);
+    }
+
+    /*override*/size_t successor_count() {
+        spin_mutex::scoped_lock lock(my_mutex);
+        return my_successors.successor_count();
+    }
+
+    /*override*/void copy_successors(successor_list_type &v) {
+        spin_mutex::scoped_lock l(my_mutex);
+        my_successors.copy_successors(v);
+    }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
     //! Request an item from the node
     /*override */ bool try_get( output_type &v ) {
         spin_mutex::scoped_lock lock(my_mutex);
@@ -752,15 +940,28 @@ public:
         return dynamic_cast< internal::source_body_leaf<output_type, Body> & >(body_ref).get_body();
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract( ) {
+        my_successors.built_successors().sender_extract(*this);   // removes "my_owner" == this from each successor
+        my_active = init_my_active;
+        my_reserved = false;
+        if(my_has_cached_item) my_has_cached_item = false;
+    }
+#endif
+
 protected:
 
-    //! resets the node to its initial state
-    void reset() {
+    //! resets the source_node to its initial state
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
         my_active = init_my_active;
         my_reserved =false;
         if(my_has_cached_item) {
             my_has_cached_item = false;
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if(f & rf_clear_edges) my_successors.clear();
+        if(f & rf_reset_bodies) my_body->reset_body();
+#endif
     }
 
 private:
@@ -781,7 +982,7 @@ private:
         }
         if ( !my_has_cached_item ) {
             tbb::internal::fgt_begin_body( my_body );
-            bool r = (*my_body)(my_cached_item); 
+            bool r = (*my_body)(my_cached_item);
             tbb::internal::fgt_end_body( my_body );
             if (r) {
                 my_has_cached_item = true;
@@ -819,35 +1020,44 @@ private:
             try_release();
         return last_task;
     }
-};  // source_node
+};  // class source_node
 
 //! Implements a function node that supports Input -> Output
-template < typename Input, typename Output = continue_msg, graph_buffer_policy = queueing, typename Allocator=cache_aligned_allocator<Input> >
+template < typename Input, typename Output = continue_msg, graph_buffer_policy G = queueing, typename Allocator=cache_aligned_allocator<Input> >
 class function_node : public graph_node, public internal::function_input<Input,Output,Allocator>, public internal::function_output<Output> {
-protected:
-    using graph_node::my_graph;
 public:
     typedef Input input_type;
     typedef Output output_type;
     typedef sender< input_type > predecessor_type;
     typedef receiver< output_type > successor_type;
     typedef internal::function_input<input_type,output_type,Allocator> fInput_type;
+    typedef internal::function_input_queue<input_type, Allocator> input_queue_type;
     typedef internal::function_output<output_type> fOutput_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    using typename fInput_type::predecessor_list_type;
+    using typename fOutput_type::successor_list_type;
+    using fInput_type::my_predecessors;
+#endif
 
     //! Constructor
+    // input_queue_type is allocated here, but destroyed in the function_input_base.
+    // TODO: pass the graph_buffer_policy to the function_input_base so it can all
+    // be done in one place.  This would be an interface-breaking change.
     template< typename Body >
     function_node( graph &g, size_t concurrency, Body body ) :
-        graph_node(g), internal::function_input<input_type,output_type,Allocator>(g, concurrency, body) {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this), 
-                                           static_cast<sender<output_type> *>(this), this->my_body );
+        graph_node(g), fInput_type(g, concurrency, body, G == queueing ?
+               new input_queue_type( ) : NULL ) {
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->graph_node::my_graph,
+                static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this), this->my_body );
     }
 
     //! Copy constructor
     function_node( const function_node& src ) :
-        graph_node(src.my_graph), internal::function_input<input_type,output_type,Allocator>( src ),
+        graph_node(src.graph_node::my_graph),
+        fInput_type(src, G == queueing ? new input_queue_type : NULL),
         fOutput_type() {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->my_graph, static_cast<receiver<input_type> *>(this), 
-                                           static_cast<sender<output_type> *>(this), this->my_body );
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->graph_node::my_graph,
+                static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this), this->my_body );
     }
 
 #if TBB_PREVIEW_FLOW_GRAPH_TRACE
@@ -856,50 +1066,10 @@ public:
     }
 #endif
 
-protected:
-    template< typename R, typename B > friend class run_and_put_task;
-    template<typename X, typename Y> friend class internal::broadcast_cache;
-    template<typename X, typename Y> friend class internal::round_robin_cache;
-    using fInput_type::try_put_task;
-
-    // override of graph_node's reset.
-    /*override*/void reset() {fInput_type::reset_function_input(); }
-
-    /* override */ internal::broadcast_cache<output_type> &successors () { return fOutput_type::my_successors; }
-};
-
-//! Implements a function node that supports Input -> Output
-template < typename Input, typename Output, typename Allocator >
-class function_node<Input,Output,queueing,Allocator> : public graph_node, public internal::function_input<Input,Output,Allocator>, public internal::function_output<Output> {
-protected:
-    using graph_node::my_graph;
-public:
-    typedef Input input_type;
-    typedef Output output_type;
-    typedef sender< input_type > predecessor_type;
-    typedef receiver< output_type > successor_type;
-    typedef internal::function_input<input_type,output_type,Allocator> fInput_type;
-    typedef internal::function_input_queue<input_type, Allocator> queue_type;
-    typedef internal::function_output<output_type> fOutput_type;
-
-    //! Constructor
-    template< typename Body >
-    function_node( graph &g, size_t concurrency, Body body ) :
-        graph_node(g), fInput_type( g, concurrency, body, new queue_type() ) {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
-                                           static_cast<sender<output_type> *>(this), this->my_body );
-    }
-
-    //! Copy constructor
-    function_node( const function_node& src ) :
-        graph_node(src.graph_node::my_graph), fInput_type( src, new queue_type() ), fOutput_type() {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_FUNCTION_NODE, &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
-                                           static_cast<sender<output_type> *>(this), this->my_body );
-    }
-
-#if TBB_PREVIEW_FLOW_GRAPH_TRACE
-    /* override */ void set_name( const char *name ) {
-        tbb::internal::fgt_node_desc( this, name );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract( ) {
+        my_predecessors.built_predecessors().receiver_extract(*this);
+        successors().built_successors().sender_extract(*this);
     }
 #endif
 
@@ -909,16 +1079,28 @@ protected:
     template<typename X, typename Y> friend class internal::round_robin_cache;
     using fInput_type::try_put_task;
 
-    /*override*/void reset() { fInput_type::reset_function_input(); }
-
     /* override */ internal::broadcast_cache<output_type> &successors () { return fOutput_type::my_successors; }
-};
 
-#include "tbb/internal/_flow_graph_types_impl.h"
+    // override of graph_node's reset.
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) {
+        fInput_type::reset_function_input(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        // TODO: use clear() instead.
+        if(f & rf_clear_edges) { 
+            successors().clear();
+            my_predecessors.clear();
+        }
+        __TBB_ASSERT(!(f & rf_clear_edges) || successors().empty(), "function_node successors not empty");
+        __TBB_ASSERT(this->my_predecessors.empty(), "function_node predecessors not empty");
+#endif
+    }
+
+};  // class function_node
+
 
 //! implements a function node that supports Input -> (set of outputs)
 // Output is a tuple of output types.
-template < typename Input, typename Output, graph_buffer_policy = queueing, typename Allocator=cache_aligned_allocator<Input> >
+template < typename Input, typename Output, graph_buffer_policy G = queueing, typename Allocator=cache_aligned_allocator<Input> >
 class multifunction_node :
     public graph_node,
     public internal::multifunction_input
@@ -933,28 +1115,30 @@ class multifunction_node :
     > {
 protected:
     using graph_node::my_graph;
-private:
     static const int N = tbb::flow::tuple_size<Output>::value;
 public:
     typedef Input input_type;
+    typedef null_type output_type;
     typedef typename internal::wrap_tuple_elements<N,internal::multifunction_output, Output>::type output_ports_type;
+    typedef internal::multifunction_input<input_type, output_ports_type, Allocator> fInput_type;
+    typedef internal::function_input_queue<input_type, Allocator> input_queue_type;
 private:
     typedef typename internal::multifunction_input<input_type, output_ports_type, Allocator> base_type;
-    typedef typename internal::function_input_queue<input_type,Allocator> queue_type;
+    using fInput_type::my_predecessors;
 public:
     template<typename Body>
     multifunction_node( graph &g, size_t concurrency, Body body ) :
-        graph_node(g), base_type(g,concurrency, body) {
-        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE, 
-                                                                 &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this), 
-                                                                 this->output_ports(), this->my_body );
+        graph_node(g), base_type(g,concurrency, body,  G == queueing ? new input_queue_type : NULL) {
+        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE,
+                &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
+                this->output_ports(), this->my_body );
     }
 
     multifunction_node( const multifunction_node &other) :
-        graph_node(other.graph_node::my_graph), base_type(other) {
-        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE, 
-                                                                 &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this), 
-                                                                 this->output_ports(), this->my_body );
+        graph_node(other.graph_node::my_graph), base_type(other,  G == queueing ? new input_queue_type : NULL) {
+        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE,
+                &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
+                this->output_ports(), this->my_body );
     }
 
 #if TBB_PREVIEW_FLOW_GRAPH_TRACE
@@ -963,48 +1147,15 @@ public:
     }
 #endif
 
-    // all the guts are in multifunction_input...
-protected:
-    /*override*/void reset() { base_type::reset(); }
-};  // multifunction_node
-
-template < typename Input, typename Output, typename Allocator >
-class multifunction_node<Input,Output,queueing,Allocator> : public graph_node, public internal::multifunction_input<Input,
-    typename internal::wrap_tuple_elements<tbb::flow::tuple_size<Output>::value, internal::multifunction_output, Output>::type, Allocator> {
-protected:
-    using graph_node::my_graph;
-    static const int N = tbb::flow::tuple_size<Output>::value;
-public:
-    typedef Input input_type;
-    typedef typename internal::wrap_tuple_elements<N, internal::multifunction_output, Output>::type output_ports_type;
-private:
-    typedef typename internal::multifunction_input<input_type, output_ports_type, Allocator> base_type;
-    typedef typename internal::function_input_queue<input_type,Allocator> queue_type;
-public:
-    template<typename Body>
-    multifunction_node( graph &g, size_t concurrency, Body body) :
-        graph_node(g), base_type(g,concurrency, body, new queue_type()) {
-        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE, 
-                                                                 &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
-                                                                 this->output_ports(), this->my_body );
-    }
-
-    multifunction_node( const multifunction_node &other) :
-        graph_node(other.graph_node::my_graph), base_type(other, new queue_type()) {
-        tbb::internal::fgt_multioutput_node_with_body<Output,N>( tbb::internal::FLOW_MULTIFUNCTION_NODE, 
-                                                                 &this->graph_node::my_graph, static_cast<receiver<input_type> *>(this),
-                                                                 this->output_ports(), this->my_body );
-    }
-
-#if TBB_PREVIEW_FLOW_GRAPH_TRACE
-    /* override */ void set_name( const char *name ) {
-        tbb::internal::fgt_multioutput_node_desc( this, name );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    void extract( ) {
+        my_predecessors.built_predecessors().receiver_extract(*this);
+        base_type::extract();
     }
 #endif
-
     // all the guts are in multifunction_input...
 protected:
-    /*override*/void reset() { base_type::reset(); }
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) { base_type::reset(__TBB_PFG_RESET_ARG(f)); }
 };  // multifunction_node
 
 //! split_node: accepts a tuple as input, forwards each element of the tuple to its
@@ -1016,6 +1167,7 @@ class split_node : public multifunction_node<TupleType, TupleType, rejecting, Al
     typedef multifunction_node<TupleType,TupleType,rejecting,Allocator> base_type;
 public:
     typedef typename base_type::output_ports_type output_ports_type;
+    typedef typename base_type::output_type output_type;
 private:
     struct splitting_body {
         void operator()(const TupleType& t, output_ports_type &p) {
@@ -1026,12 +1178,12 @@ public:
     typedef TupleType input_type;
     typedef Allocator allocator_type;
     split_node(graph &g) : base_type(g, unlimited, splitting_body()) {
-        tbb::internal::fgt_multioutput_node<TupleType,N>( tbb::internal::FLOW_SPLIT_NODE, &this->graph_node::my_graph, 
+        tbb::internal::fgt_multioutput_node<TupleType,N>( tbb::internal::FLOW_SPLIT_NODE, &this->graph_node::my_graph,
                                                           static_cast<receiver<input_type> *>(this), this->output_ports() );
     }
 
     split_node( const split_node & other) : base_type(other) {
-        tbb::internal::fgt_multioutput_node<TupleType,N>( tbb::internal::FLOW_SPLIT_NODE, &this->graph_node::my_graph, 
+        tbb::internal::fgt_multioutput_node<TupleType,N>( tbb::internal::FLOW_SPLIT_NODE, &this->graph_node::my_graph,
                                                           static_cast<receiver<input_type> *>(this), this->output_ports() );
     }
 
@@ -1060,7 +1212,7 @@ public:
     template <typename Body >
     continue_node( graph &g, Body body ) :
         graph_node(g), internal::continue_input<output_type>( g, body ) {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph,
                                            static_cast<receiver<input_type> *>(this),
                                            static_cast<sender<output_type> *>(this), this->my_body );
     }
@@ -1070,7 +1222,7 @@ public:
     template <typename Body >
     continue_node( graph &g, int number_of_predecessors, Body body ) :
         graph_node(g), internal::continue_input<output_type>( g, number_of_predecessors, body ) {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph,
                                            static_cast<receiver<input_type> *>(this),
                                            static_cast<sender<output_type> *>(this), this->my_body );
     }
@@ -1079,7 +1231,7 @@ public:
     continue_node( const continue_node& src ) :
         graph_node(src.graph_node::my_graph), internal::continue_input<output_type>(src),
         internal::function_output<Output>() {
-        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_CONTINUE_NODE, &this->my_graph,
                                            static_cast<receiver<input_type> *>(this),
                                            static_cast<sender<output_type> *>(this), this->my_body );
     }
@@ -1090,15 +1242,28 @@ public:
     }
 #endif
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override graph_node*/ void extract() {
+        fInput_type::my_built_predecessors.receiver_extract(*this);
+        successors().built_successors().sender_extract(*this);
+    }
+#endif
+
 protected:
     template< typename R, typename B > friend class run_and_put_task;
     template<typename X, typename Y> friend class internal::broadcast_cache;
     template<typename X, typename Y> friend class internal::round_robin_cache;
     using fInput_type::try_put_task;
+    /* override */ internal::broadcast_cache<output_type> &successors () { return fOutput_type::my_successors; }
 
-    /*override*/void reset() { internal::continue_input<Output>::reset_receiver(); }
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) {
+        fInput_type::reset_receiver(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if(f & rf_clear_edges)successors().clear();
+        __TBB_ASSERT(!(f & rf_clear_edges) || successors().empty(), "continue_node not reset");
+#endif
+    }
 
-    /* override */ internal::broadcast_cache<output_type> &successors () { return fOutput_type::my_successors; }
 };  // continue_node
 
 template< typename T >
@@ -1110,10 +1275,16 @@ public:
     typedef T output_type;
     typedef sender< input_type > predecessor_type;
     typedef receiver< output_type > successor_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename receiver<input_type>::built_predecessors_type built_predecessors_type;
+    typedef typename sender<output_type>::built_successors_type built_successors_type;
+    typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+    typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
 
     overwrite_node(graph &g) : graph_node(g), my_buffer_is_valid(false) {
         my_successors.set_owner( this );
-        tbb::internal::fgt_node( tbb::internal::FLOW_OVERWRITE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_OVERWRITE_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
@@ -1122,7 +1293,7 @@ public:
         graph_node(src.my_graph), receiver<T>(), sender<T>(), my_buffer_is_valid(false)
     {
         my_successors.set_owner( this );
-        tbb::internal::fgt_node( tbb::internal::FLOW_OVERWRITE_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_OVERWRITE_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
@@ -1136,12 +1307,12 @@ public:
 
     /* override */ bool register_successor( successor_type &s ) {
         spin_mutex::scoped_lock l( my_mutex );
-        if ( my_buffer_is_valid ) {
+        task* tp = this->my_graph.root_task();  // just to test if we are resetting
+        if (my_buffer_is_valid && tp) {
             // We have a valid value that must be forwarded immediately.
             if ( s.try_put( my_buffer ) || !s.register_predecessor( *this  ) ) {
                 // We add the successor: it accepted our put or it rejected it but won't let us become a predecessor
                 my_successors.register_successor( s );
-                return true;
             } else {
                 // We don't add the successor: it rejected our put and we became its predecessor instead
                 return false;
@@ -1149,8 +1320,8 @@ public:
         } else {
             // No valid value yet, just add as successor
             my_successors.register_successor( s );
-            return true;
         }
+        return true;
     }
 
     /* override */ bool remove_successor( successor_type &s ) {
@@ -1159,14 +1330,65 @@ public:
         return true;
     }
 
-    /* override */ bool try_get( T &v ) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+    /*override*/built_successors_type   &built_successors()   { return my_successors.built_successors(); }
+
+    /*override*/void internal_add_built_successor( successor_type &s) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_successors.internal_add_built_successor(s);
+    }
+
+    /*override*/void internal_delete_built_successor( successor_type &s) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_successors.internal_delete_built_successor(s);
+    }
+
+    /*override*/size_t successor_count() {
+        spin_mutex::scoped_lock l( my_mutex );
+        return my_successors.successor_count();
+    }
+
+    /*override*/ void copy_successors(successor_list_type &v) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_successors.copy_successors(v);
+    }
+
+    /*override*/ void internal_add_built_predecessor( predecessor_type &p) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_built_predecessors.add_edge(p);
+    }
+
+    /*override*/ void internal_delete_built_predecessor( predecessor_type &p) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_built_predecessors.delete_edge(p);
+    }
+
+    /*override*/size_t predecessor_count() {
+        spin_mutex::scoped_lock l( my_mutex );
+        return my_built_predecessors.edge_count();
+    }
+
+    /*override*/void copy_predecessors(predecessor_list_type &v) {
+        spin_mutex::scoped_lock l( my_mutex );
+        my_built_predecessors.copy_edges(v);
+    }
+
+    /*override*/ void extract() {
+        my_buffer_is_valid = false;
+        built_successors().sender_extract(*this);
+        built_predecessors().receiver_extract(*this);
+    }
+
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
+    /* override */ bool try_get( input_type &v ) {
         spin_mutex::scoped_lock l( my_mutex );
         if ( my_buffer_is_valid ) {
             v = my_buffer;
             return true;
-        } else {
-            return false;
         }
+        return false;
     }
 
     bool is_valid() {
@@ -1183,7 +1405,7 @@ protected:
     template< typename R, typename B > friend class run_and_put_task;
     template<typename X, typename Y> friend class internal::broadcast_cache;
     template<typename X, typename Y> friend class internal::round_robin_cache;
-    /* override */ task * try_put_task( const T &v ) {
+    /* override */ task * try_put_task( const input_type &v ) {
         spin_mutex::scoped_lock l( my_mutex );
         my_buffer = v;
         my_buffer_is_valid = true;
@@ -1192,14 +1414,25 @@ protected:
         return rtask;
     }
 
-    /*override*/void reset() { my_buffer_is_valid = false; }
-
     spin_mutex my_mutex;
-    internal::broadcast_cache< T, null_rw_mutex > my_successors;
-    T my_buffer;
+    internal::broadcast_cache< input_type, null_rw_mutex > my_successors;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    internal::edge_container<predecessor_type> my_built_predecessors;
+#endif
+    input_type my_buffer;
     bool my_buffer_is_valid;
-    /*override*/void reset_receiver() {}
-};
+    /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) {}
+
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
+        my_buffer_is_valid = false;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+       if (f&rf_clear_edges) {
+           my_successors.clear();
+           my_built_predecessors.receiver_extract(*this);
+       }
+#endif
+    }
+};  // overwrite_node
 
 template< typename T >
 class write_once_node : public overwrite_node<T> {
@@ -1211,14 +1444,14 @@ public:
 
     //! Constructor
     write_once_node(graph& g) : overwrite_node<T>(g) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_WRITE_ONCE_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_WRITE_ONCE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
 
     //! Copy constructor: call base class copy constructor
     write_once_node( const write_once_node& src ) : overwrite_node<T>(src) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_WRITE_ONCE_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_WRITE_ONCE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
@@ -1252,17 +1485,26 @@ template <typename T>
 class broadcast_node : public graph_node, public receiver<T>, public sender<T> {
 protected:
     using graph_node::my_graph;
-private:
-    internal::broadcast_cache<T> my_successors;
 public:
     typedef T input_type;
     typedef T output_type;
     typedef sender< input_type > predecessor_type;
     typedef receiver< output_type > successor_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+    typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
+private:
+    internal::broadcast_cache<input_type> my_successors;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    internal::edge_container<predecessor_type> my_built_predecessors;
+    spin_mutex pred_mutex;  // serialize accesses on edge_container
+#endif
+public:
 
     broadcast_node(graph& g) : graph_node(g) {
         my_successors.set_owner( this );
-        tbb::internal::fgt_node( tbb::internal::FLOW_BROADCAST_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_BROADCAST_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
@@ -1271,7 +1513,7 @@ public:
         graph_node(src.my_graph), receiver<T>(), sender<T>()
     {
         my_successors.set_owner( this );
-        tbb::internal::fgt_node( tbb::internal::FLOW_BROADCAST_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_BROADCAST_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
@@ -1293,6 +1535,57 @@ public:
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename sender<T>::built_successors_type built_successors_type;
+
+    /*override sender*/ built_successors_type &built_successors() { return my_successors.built_successors(); }
+
+    /*override sender*/ void internal_add_built_successor(successor_type &r) {
+        my_successors.internal_add_built_successor(r);
+    }
+
+    /*override sender*/ void internal_delete_built_successor(successor_type &r) {
+        my_successors.internal_delete_built_successor(r);
+    }
+
+    /*override sender*/ size_t successor_count() {
+        return my_successors.successor_count();
+    }
+
+    /*override*/ void copy_successors(successor_list_type &v) {
+        my_successors.copy_successors(v);
+    }
+
+    typedef typename receiver<T>::built_predecessors_type built_predecessors_type;
+
+    /*override receiver*/ built_predecessors_type &built_predecessors() { return my_built_predecessors; } 
+
+    /*override*/ void internal_add_built_predecessor( predecessor_type &p) {
+        spin_mutex::scoped_lock l(pred_mutex);
+        my_built_predecessors.add_edge(p);
+    }
+
+    /*override*/ void internal_delete_built_predecessor( predecessor_type &p) {
+        spin_mutex::scoped_lock l(pred_mutex);
+        my_built_predecessors.delete_edge(p);
+    }
+
+    /*override*/ size_t predecessor_count() {
+        spin_mutex::scoped_lock l(pred_mutex);
+        return my_built_predecessors.edge_count();
+    }
+
+    /*override*/ void copy_predecessors(predecessor_list_type &v) {
+        spin_mutex::scoped_lock l(pred_mutex);
+        my_built_predecessors.copy_edges(v);
+    }
+
+    /*override graph_node*/ void extract() {
+        my_built_predecessors.receiver_extract(*this);
+        my_successors.built_successors().sender_extract(*this);
+    }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
 protected:
     template< typename R, typename B > friend class run_and_put_task;
     template<typename X, typename Y> friend class internal::broadcast_cache;
@@ -1304,15 +1597,22 @@ protected:
         return new_task;
     }
 
-    /*override*/void reset() {}
-    /*override*/void reset_receiver() {}
-};  // broadcast_node
+    /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) {}
 
-#include "internal/_flow_graph_item_buffer_impl.h"
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if (f&rf_clear_edges) {
+           my_successors.clear();
+           my_built_predecessors.clear();
+        }
+        __TBB_ASSERT(!(f & rf_clear_edges) || my_successors.empty(), "Error resetting broadcast_node");
+#endif
+    }
+};  // broadcast_node
 
 //! Forwards messages in arbitrary order
 template <typename T, typename A=cache_aligned_allocator<T> >
-class buffer_node : public graph_node, public reservable_item_buffer<T, A>, public receiver<T>, public sender<T> {
+class buffer_node : public graph_node, public internal::reservable_item_buffer<T, A>, public receiver<T>, public sender<T> {
 protected:
     using graph_node::my_graph;
 public:
@@ -1321,24 +1621,58 @@ public:
     typedef sender< input_type > predecessor_type;
     typedef receiver< output_type > successor_type;
     typedef buffer_node<T, A> my_class;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+    typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
 protected:
     typedef size_t size_type;
     internal::round_robin_cache< T, null_rw_mutex > my_successors;
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    internal::edge_container<predecessor_type> my_built_predecessors;
+#endif
+
     friend class internal::forward_task_bypass< buffer_node< T, A > >;
 
-    enum op_type {reg_succ, rem_succ, req_item, res_item, rel_res, con_res, put_item, try_fwd_task };
+    enum op_type {reg_succ, rem_succ, req_item, res_item, rel_res, con_res, put_item, try_fwd_task
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        , add_blt_succ, del_blt_succ,
+        add_blt_pred, del_blt_pred,
+        blt_succ_cnt, blt_pred_cnt,
+        blt_succ_cpy, blt_pred_cpy   // create vector copies of preds and succs
+#endif
+    };
     enum op_stat {WAIT=0, SUCCEEDED, FAILED};
 
     // implements the aggregator_operation concept
     class buffer_operation : public internal::aggregated_operation< buffer_operation > {
     public:
         char type;
-        T *elem;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        task * ltask;
+        union {
+            input_type *elem;
+            successor_type *r;
+            predecessor_type *p;
+            size_t cnt_val;
+            successor_list_type *svec;
+            predecessor_list_type *pvec;
+        };
+#else
+        T *elem;
         task * ltask;
         successor_type *r;
-        buffer_operation(const T& e, op_type t) : type(char(t)), elem(const_cast<T*>(&e)) , ltask(NULL) , r(NULL) {}
-        buffer_operation(op_type t) : type(char(t)) , ltask(NULL) , r(NULL) {}
+#endif
+        buffer_operation(const T& e, op_type t) : type(char(t))
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                                                  , ltask(NULL), elem(const_cast<T*>(&e))
+#else
+                                                  , elem(const_cast<T*>(&e)) , ltask(NULL)
+#endif
+        {}
+        buffer_operation(op_type t) : type(char(t)),  ltask(NULL) {}
     };
 
     bool forwarder_busy;
@@ -1359,8 +1693,19 @@ protected:
             case res_item: internal_reserve(tmp); break;
             case rel_res:  internal_release(tmp);  try_forwarding = true; break;
             case con_res:  internal_consume(tmp);  try_forwarding = true; break;
-            case put_item: internal_push(tmp);  try_forwarding = true; break;
+            case put_item: internal_push(tmp);  try_forwarding = (tmp->status == SUCCEEDED); break;
             case try_fwd_task: internal_forward_task(tmp); break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            // edge recording
+            case add_blt_succ: internal_add_built_succ(tmp); break;
+            case del_blt_succ: internal_del_built_succ(tmp); break;
+            case add_blt_pred: internal_add_built_pred(tmp); break;
+            case del_blt_pred: internal_del_built_pred(tmp); break;
+            case blt_succ_cnt: internal_succ_cnt(tmp); break;
+            case blt_pred_cnt: internal_pred_cnt(tmp); break;
+            case blt_succ_cpy: internal_copy_succs(tmp); break;
+            case blt_pred_cpy: internal_copy_preds(tmp); break;
+#endif
             }
         }
         if (try_forwarding && !forwarder_busy) {
@@ -1376,7 +1721,7 @@ protected:
                 tmp->ltask = combine_tasks(z, new_task);  // in case the op generated a task
             }
         }
-    }
+    }  // handle_operations
 
     inline task *grab_forwarding_task( buffer_operation &op_data) {
         return op_data.ltask;
@@ -1417,9 +1762,60 @@ protected:
         __TBB_store_with_release(op->status, SUCCEEDED);
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename sender<T>::built_successors_type built_successors_type;
+
+    /*override sender*/ built_successors_type &built_successors() { return my_successors.built_successors(); }
+
+    virtual void internal_add_built_succ(buffer_operation *op) {
+        my_successors.internal_add_built_successor(*(op->r));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_del_built_succ(buffer_operation *op) {
+        my_successors.internal_delete_built_successor(*(op->r));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    typedef typename receiver<T>::built_predecessors_type built_predecessors_type;
+
+    /*override receiver*/ built_predecessors_type &built_predecessors() { return my_built_predecessors; } 
+
+    virtual void internal_add_built_pred(buffer_operation *op) {
+        my_built_predecessors.add_edge(*(op->p));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_del_built_pred(buffer_operation *op) {
+        my_built_predecessors.delete_edge(*(op->p));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_succ_cnt(buffer_operation *op) {
+        op->cnt_val = my_successors.successor_count();
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_pred_cnt(buffer_operation *op) {
+        op->cnt_val = my_built_predecessors.edge_count();
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_copy_succs(buffer_operation *op) {
+        my_successors.copy_successors(*(op->svec));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+    virtual void internal_copy_preds(buffer_operation *op) {
+        my_built_predecessors.copy_edges(*(op->pvec));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+    }
+
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
     //! Tries to forward valid items to successors
     virtual void internal_forward_task(buffer_operation *op) {
-        if (this->my_reserved || !this->item_valid(this->my_tail-1)) {
+        if (this->my_reserved || !this->my_item_valid(this->my_tail-1)) {
             __TBB_store_with_release(op->status, FAILED);
             this->forwarder_busy = false;
             return;
@@ -1428,13 +1824,12 @@ protected:
         task * last_task = NULL;
         size_type counter = my_successors.size();
         // Try forwarding, giving each successor a chance
-        while (counter>0 && !this->buffer_empty() && this->item_valid(this->my_tail-1)) {
-            this->fetch_back(i_copy);
+        while (counter>0 && !this->buffer_empty() && this->my_item_valid(this->my_tail-1)) {
+            this->copy_back(i_copy);
             task *new_task = my_successors.try_put_task(i_copy);
-            last_task = combine_tasks(last_task, new_task);
             if(new_task) {
-                this->invalidate_back();
-                --(this->my_tail);
+                last_task = combine_tasks(last_task, new_task);
+                this->destroy_back();
             }
             --counter;
         }
@@ -1483,21 +1878,21 @@ protected:
 
 public:
     //! Constructor
-    buffer_node( graph &g ) : graph_node(g), reservable_item_buffer<T>(),
+    buffer_node( graph &g ) : graph_node(g), internal::reservable_item_buffer<T>(),
         forwarder_busy(false) {
         my_successors.set_owner(this);
         my_aggregator.initialize_handler(my_handler(this));
-        tbb::internal::fgt_node( tbb::internal::FLOW_BUFFER_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_BUFFER_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
     //! Copy constructor
     buffer_node( const buffer_node& src ) : graph_node(src.my_graph),
-        reservable_item_buffer<T>(), receiver<T>(), sender<T>() {
+        internal::reservable_item_buffer<T>(), receiver<T>(), sender<T>() {
         forwarder_busy = false;
         my_successors.set_owner(this);
         my_aggregator.initialize_handler(my_handler(this));
-        tbb::internal::fgt_node( tbb::internal::FLOW_BUFFER_NODE, &this->my_graph, 
+        tbb::internal::fgt_node( tbb::internal::FLOW_BUFFER_NODE, &this->my_graph,
                                  static_cast<receiver<input_type> *>(this), static_cast<sender<output_type> *>(this) );
     }
 
@@ -1515,7 +1910,7 @@ public:
 
     //! Adds a new successor.
     /** Adds successor r to the list of successors; may forward tasks.  */
-    /* override */ bool register_successor( receiver<output_type> &r ) {
+    /* override */ bool register_successor( successor_type &r ) {
         buffer_operation op_data(reg_succ);
         op_data.r = &r;
         my_aggregator.execute(&op_data);
@@ -1523,10 +1918,61 @@ public:
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/ void internal_add_built_successor( successor_type &r) {
+        buffer_operation op_data(add_blt_succ);
+        op_data.r = &r;
+        my_aggregator.execute(&op_data);
+    }
+
+    /*override*/ void internal_delete_built_successor( successor_type &r) {
+        buffer_operation op_data(del_blt_succ);
+        op_data.r = &r;
+        my_aggregator.execute(&op_data);
+    }
+
+    /*override*/ void internal_add_built_predecessor( predecessor_type &p) {
+        buffer_operation op_data(add_blt_pred);
+        op_data.p = &p;
+        my_aggregator.execute(&op_data);
+    }
+
+    /*override*/ void internal_delete_built_predecessor( predecessor_type &p) {
+        buffer_operation op_data(del_blt_pred);
+        op_data.p = &p;
+        my_aggregator.execute(&op_data);
+    }
+
+    /*override*/ size_t predecessor_count() {
+        buffer_operation op_data(blt_pred_cnt);
+        my_aggregator.execute(&op_data);
+        return op_data.cnt_val;
+    }
+
+    /*override*/ size_t successor_count() {
+        buffer_operation op_data(blt_succ_cnt);
+        my_aggregator.execute(&op_data);
+        return op_data.cnt_val;
+    }
+
+    /*override*/ void copy_predecessors( predecessor_list_type &v ) {
+        buffer_operation op_data(blt_pred_cpy);
+        op_data.pvec = &v;
+        my_aggregator.execute(&op_data);
+    }
+
+    /*override*/ void copy_successors( successor_list_type &v ) {
+        buffer_operation op_data(blt_succ_cpy);
+        op_data.svec = &v;
+        my_aggregator.execute(&op_data);
+    }
+
+#endif
+
     //! Removes a successor.
     /** Removes successor r from the list of successors.
         It also calls r.remove_predecessor(*this) to remove this node as a predecessor. */
-    /* override */ bool remove_successor( receiver<output_type> &r ) {
+    /* override */ bool remove_successor( successor_type &r ) {
         r.remove_predecessor(*this);
         buffer_operation op_data(rem_succ);
         op_data.r = &r;
@@ -1588,34 +2034,59 @@ protected:
         buffer_operation op_data(t, put_item);
         my_aggregator.execute(&op_data);
         task *ft = grab_forwarding_task(op_data);
-        if(!ft) {
+        // sequencer_nodes can return failure (if an item has been previously inserted)
+        // We have to spawn the returned task if our own operation fails.
+
+        if(ft && op_data.status == FAILED) {
+            // we haven't succeeded queueing the item, but for some reason the
+            // call returned a task (if another request resulted in a successful
+            // forward this could happen.)  Queue the task and reset the pointer.
+            FLOW_SPAWN(*ft); ft = NULL;
+        }
+        else if(!ft && op_data.status == SUCCEEDED) {
             ft = SUCCESSFULLY_ENQUEUED;
         }
         return ft;
     }
 
-    /*override*/void reset() {
-        reservable_item_buffer<T, A>::reset();
-        forwarder_busy = false;
+    /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) { }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+public:
+    /* override*/ void extract() {
+        my_built_predecessors.receiver_extract(*this);
+        my_successors.built_successors().sender_extract(*this);
     }
+#endif
 
-    /*override*/void reset_receiver() {
-        // nothing to do; no predecesor_cache
+protected:
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
+        internal::reservable_item_buffer<T, A>::reset();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        // TODO: just clear structures
+        if (f&rf_clear_edges) {
+            my_successors.clear();
+            my_built_predecessors.clear();
+        }
+#endif
+        forwarder_busy = false;
     }
 
+
 };  // buffer_node
 
 //! Forwards messages in FIFO order
 template <typename T, typename A=cache_aligned_allocator<T> >
 class queue_node : public buffer_node<T, A> {
 protected:
-    typedef typename buffer_node<T, A>::size_type size_type;
-    typedef typename buffer_node<T, A>::buffer_operation queue_operation;
+    typedef buffer_node<T, A> base_type;
+    typedef typename base_type::size_type size_type;
+    typedef typename base_type::buffer_operation queue_operation;
 
     enum op_stat {WAIT=0, SUCCEEDED, FAILED};
 
     /* override */ void internal_forward_task(queue_operation *op) {
-        if (this->my_reserved || !this->item_valid(this->my_head)) {
+        if (this->my_reserved || !this->my_item_valid(this->my_head)) {
             __TBB_store_with_release(op->status, FAILED);
             this->forwarder_busy = false;
             return;
@@ -1624,12 +2095,11 @@ protected:
         task *last_task = NULL;
         size_type counter = this->my_successors.size();
         // Keep trying to send items while there is at least one accepting successor
-        while (counter>0 && this->item_valid(this->my_head)) {
-            this->fetch_front(i_copy);
+        while (counter>0 && this->my_item_valid(this->my_head)) {
+            this->copy_front(i_copy);
             task *new_task = this->my_successors.try_put_task(i_copy);
             if(new_task) {
-                this->invalidate_front();
-                ++(this->my_head);
+                this->destroy_front();
                 last_task = combine_tasks(last_task, new_task);
             }
             --counter;
@@ -1644,7 +2114,7 @@ protected:
     }
 
     /* override */ void internal_pop(queue_operation *op) {
-        if ( this->my_reserved || !this->item_valid(this->my_head)){
+        if ( this->my_reserved || !this->my_item_valid(this->my_head)){
             __TBB_store_with_release(op->status, FAILED);
         }
         else {
@@ -1653,13 +2123,11 @@ protected:
         }
     }
     /* override */ void internal_reserve(queue_operation *op) {
-        if (this->my_reserved || !this->item_valid(this->my_head)) {
+        if (this->my_reserved || !this->my_item_valid(this->my_head)) {
             __TBB_store_with_release(op->status, FAILED);
         }
         else {
-            this->my_reserved = true;
-            this->fetch_front(*(op->elem));
-            this->invalidate_front();
+            this->reserve_front(*(op->elem));
             __TBB_store_with_release(op->status, SUCCEEDED);
         }
     }
@@ -1675,15 +2143,15 @@ public:
     typedef receiver< output_type > successor_type;
 
     //! Constructor
-    queue_node( graph &g ) : buffer_node<T, A>(g) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_QUEUE_NODE, &(this->my_graph), 
+    queue_node( graph &g ) : base_type(g) {
+        tbb::internal::fgt_node( tbb::internal::FLOW_QUEUE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
 
     //! Copy constructor
-    queue_node( const queue_node& src) : buffer_node<T, A>(src) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_QUEUE_NODE, &(this->my_graph), 
+    queue_node( const queue_node& src) : base_type(src) {
+        tbb::internal::fgt_node( tbb::internal::FLOW_QUEUE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
@@ -1694,12 +2162,18 @@ public:
     }
 #endif
 
-};
+protected:
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
+        base_type::reset_node(__TBB_PFG_RESET_ARG(f));
+    }
+};  // queue_node
 
 //! Forwards messages in sequence order
 template< typename T, typename A=cache_aligned_allocator<T> >
 class sequencer_node : public queue_node<T, A> {
     internal::function_body< T, size_t > *my_sequencer;
+    // my_sequencer should be a benign function and must be callable
+    // from a parallel context.  Does this mean it needn't be reset?
 public:
     typedef T input_type;
     typedef T output_type;
@@ -1710,7 +2184,7 @@ public:
     template< typename Sequencer >
     sequencer_node( graph &g, const Sequencer& s ) : queue_node<T, A>(g),
         my_sequencer(new internal::function_body_leaf< T, size_t, Sequencer>(s) ) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_SEQUENCER_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_SEQUENCER_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
@@ -1718,7 +2192,7 @@ public:
     //! Copy constructor
     sequencer_node( const sequencer_node& src ) : queue_node<T, A>(src),
         my_sequencer( src.my_sequencer->clone() ) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_SEQUENCER_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_SEQUENCER_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
@@ -1741,15 +2215,29 @@ protected:
 private:
     /* override */ void internal_push(sequencer_operation *op) {
         size_type tag = (*my_sequencer)(*(op->elem));
+#if !TBB_DEPRECATED_SEQUENCER_DUPLICATES
+        if(tag < this->my_head) {
+            // have already emitted a message with this tag
+            __TBB_store_with_release(op->status, FAILED);
+            return;
+        }
+#endif
+        // cannot modify this->my_tail now; the buffer would be inconsistent.
+        size_t new_tail = (tag+1 > this->my_tail) ? tag+1 : this->my_tail;
 
-        this->my_tail = (tag+1 > this->my_tail) ? tag+1 : this->my_tail;
-
-        if(this->size() > this->capacity())
-            this->grow_my_array(this->size());  // tail already has 1 added to it
-        this->item(tag) = std::make_pair( *(op->elem), true );
-        __TBB_store_with_release(op->status, SUCCEEDED);
+        if(this->size(new_tail) > this->capacity()) {
+            this->grow_my_array(this->size(new_tail));
+        }
+        this->my_tail = new_tail;
+        if(this->place_item(tag,*(op->elem))) {
+            __TBB_store_with_release(op->status, SUCCEEDED);
+        }
+        else {
+            // already have a message with this tag
+            __TBB_store_with_release(op->status, FAILED);
+        }
     }
-};
+};  // sequencer_node
 
 //! Forwards messages in priority order
 template< typename T, typename Compare = std::less<T>, typename A=cache_aligned_allocator<T> >
@@ -1763,14 +2251,14 @@ public:
 
     //! Constructor
     priority_queue_node( graph &g ) : buffer_node<T, A>(g), mark(0) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_PRIORITY_QUEUE_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_PRIORITY_QUEUE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
 
     //! Copy constructor
     priority_queue_node( const priority_queue_node &src ) : buffer_node<T, A>(src), mark(0) {
-        tbb::internal::fgt_node( tbb::internal::FLOW_PRIORITY_QUEUE_NODE, &(this->my_graph), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_PRIORITY_QUEUE_NODE, &(this->my_graph),
                                  static_cast<receiver<input_type> *>(this),
                                  static_cast<sender<output_type> *>(this) );
     }
@@ -1784,9 +2272,9 @@ public:
 
 protected:
 
-    /*override*/void reset() {
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
         mark = 0;
-        base_type::reset();
+        base_type::reset_node(__TBB_PFG_RESET_ARG(f));
     }
 
     typedef typename buffer_node<T, A>::size_type size_type;
@@ -1810,11 +2298,24 @@ protected:
             case buffer_node<T, A>::con_res: internal_consume(tmp); try_forwarding = true; break;
             case buffer_node<T, A>::req_item: internal_pop(tmp); break;
             case buffer_node<T, A>::res_item: internal_reserve(tmp); break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            case buffer_node<T, A>::add_blt_succ: this->internal_add_built_succ(tmp); break;
+            case buffer_node<T, A>::del_blt_succ: this->internal_del_built_succ(tmp); break;
+            case buffer_node<T, A>::add_blt_pred: this->internal_add_built_pred(tmp); break;
+            case buffer_node<T, A>::del_blt_pred: this->internal_del_built_pred(tmp); break;
+            case buffer_node<T, A>::blt_succ_cnt: this->internal_succ_cnt(tmp); break;
+            case buffer_node<T, A>::blt_pred_cnt: this->internal_pred_cnt(tmp); break;
+            case buffer_node<T, A>::blt_succ_cpy: this->internal_copy_succs(tmp); break;
+            case buffer_node<T, A>::blt_pred_cpy: this->internal_copy_preds(tmp); break;
+#endif
             }
         }
         // process pops!  for now, no special pop processing
+        // concurrent_priority_queue handles pushes first, then pops.
+        // that is the genesis of this comment
         if (mark<this->my_tail) heapify();
-        if (try_forwarding && !this->forwarder_busy) {
+        __TBB_ASSERT(mark == this->my_tail, "mark unequal after heapify");
+        if (try_forwarding && !this->forwarder_busy) {  // could we also test for this->my_tail (queue non-empty)?
             task* tp = this->my_graph.root_task();
             if(tp) {
                 this->forwarder_busy = true;
@@ -1842,15 +2343,11 @@ protected:
         }
         // Keep trying to send while there exists an accepting successor
         while (counter>0 && this->my_tail > 0) {
-            i_copy = this->my_array[0].first;
+            prio_copy(i_copy);
             task * new_task = this->my_successors.try_put_task(i_copy);
-            last_task = combine_tasks(last_task, new_task);
             if ( new_task ) {
-                 if (mark == this->my_tail) --mark;
-                --(this->my_tail);
-                this->my_array[0].first=this->my_array[this->my_tail].first;
-                if (this->my_tail > 1) // don't reheap for heap of size 1
-                    reheap();
+                last_task = combine_tasks(last_task, new_task);
+                prio_pop();
             }
             --counter;
         }
@@ -1864,106 +2361,145 @@ protected:
     }
 
     /* override */ void internal_push(prio_operation *op) {
-        if ( this->my_tail >= this->my_array_size )
-            this->grow_my_array( this->my_tail + 1 );
-        this->my_array[this->my_tail] = std::make_pair( *(op->elem), true );
-        ++(this->my_tail);
+        prio_push(*(op->elem));
         __TBB_store_with_release(op->status, SUCCEEDED);
     }
 
     /* override */ void internal_pop(prio_operation *op) {
+        // if empty or already reserved, don't pop
         if ( this->my_reserved == true || this->my_tail == 0 ) {
             __TBB_store_with_release(op->status, FAILED);
+            return;
         }
-        else {
-            if (mark<this->my_tail &&
-                compare(this->my_array[0].first,
-                        this->my_array[this->my_tail-1].first)) {
-                // there are newly pushed elems; last one higher than top
-                // copy the data
-                *(op->elem) = this->my_array[this->my_tail-1].first;
-                --(this->my_tail);
-                __TBB_store_with_release(op->status, SUCCEEDED);
-            }
-            else { // extract and push the last element down heap
-                *(op->elem) = this->my_array[0].first; // copy the data
-                if (mark == this->my_tail) --mark;
-                --(this->my_tail);
-                __TBB_store_with_release(op->status, SUCCEEDED);
-                this->my_array[0].first=this->my_array[this->my_tail].first;
-                if (this->my_tail > 1) // don't reheap for heap of size 1
-                    reheap();
-            }
-        }
+
+        prio_copy(*(op->elem));
+        __TBB_store_with_release(op->status, SUCCEEDED);
+        prio_pop();
+
     }
+
+    // pops the highest-priority item, saves copy
     /* override */ void internal_reserve(prio_operation *op) {
         if (this->my_reserved == true || this->my_tail == 0) {
             __TBB_store_with_release(op->status, FAILED);
+            return;
         }
-        else {
-            this->my_reserved = true;
-            *(op->elem) = reserved_item = this->my_array[0].first;
-            if (mark == this->my_tail) --mark;
-            --(this->my_tail);
-            __TBB_store_with_release(op->status, SUCCEEDED);
-            this->my_array[0].first = this->my_array[this->my_tail].first;
-            if (this->my_tail > 1) // don't reheap for heap of size 1
-                reheap();
-        }
+        this->my_reserved = true;
+        prio_copy(*(op->elem));
+        reserved_item = *(op->elem);
+        __TBB_store_with_release(op->status, SUCCEEDED);
+        prio_pop();
     }
+
     /* override */ void internal_consume(prio_operation *op) {
-        this->my_reserved = false;
         __TBB_store_with_release(op->status, SUCCEEDED);
+        this->my_reserved = false;
+        reserved_item = input_type();
     }
+
     /* override */ void internal_release(prio_operation *op) {
-        if (this->my_tail >= this->my_array_size)
-            this->grow_my_array( this->my_tail + 1 );
-        this->my_array[this->my_tail] = std::make_pair(reserved_item, true);
-        ++(this->my_tail);
-        this->my_reserved = false;
         __TBB_store_with_release(op->status, SUCCEEDED);
-        heapify();
+        prio_push(reserved_item);
+        this->my_reserved = false;
+        reserved_item = input_type();
     }
 private:
     Compare compare;
     size_type mark;
+
     input_type reserved_item;
 
+    // in case a reheap has not been done after a push, check if the mark item is higher than the 0'th item
+    bool prio_use_tail() {
+        __TBB_ASSERT(mark <= this->my_tail, "mark outside bounds before test");
+        return mark < this->my_tail && compare(this->get_my_item(0), this->get_my_item(this->my_tail - 1));
+    }
+
+    // prio_push: checks that the item will fit, expand array if necessary, put at end
+    void prio_push(const T &src) {
+        if ( this->my_tail >= this->my_array_size )
+            this->grow_my_array( this->my_tail + 1 );
+        (void) this->place_item(this->my_tail, src);
+        ++(this->my_tail);
+        __TBB_ASSERT(mark < this->my_tail, "mark outside bounds after push");
+    }
+
+    // prio_pop: deletes highest priority item from the array, and if it is item
+    // 0, move last item to 0 and reheap.  If end of array, just destroy and decrement tail
+    // and mark.  Assumes the array has already been tested for emptiness; no failure.
+    void prio_pop()  {
+        if (prio_use_tail()) {
+            // there are newly pushed elems; last one higher than top
+            // copy the data
+            this->destroy_item(this->my_tail-1);
+            --(this->my_tail);
+            __TBB_ASSERT(mark <= this->my_tail, "mark outside bounds after pop");
+            return;
+        }
+        this->destroy_item(0);
+        if(this->my_tail > 1) {
+            // push the last element down heap
+            __TBB_ASSERT(this->my_item_valid(this->my_tail - 1), NULL);
+            this->move_item(0,this->my_tail - 1);
+        }
+        --(this->my_tail);
+        if(mark > this->my_tail) --mark;
+        if (this->my_tail > 1) // don't reheap for heap of size 1
+            reheap();
+        __TBB_ASSERT(mark <= this->my_tail, "mark outside bounds after pop");
+    }
+
+    void prio_copy(T &res) {
+        if (prio_use_tail()) {
+            res = this->get_my_item(this->my_tail - 1);
+        }
+        else {
+            res = this->get_my_item(0);
+        }
+    }
+
+    // turn array into heap
     void heapify() {
+        if(this->my_tail == 0) {
+            mark = 0;
+            return;
+        }
         if (!mark) mark = 1;
         for (; mark<this->my_tail; ++mark) { // for each unheaped element
             size_type cur_pos = mark;
-            input_type to_place = this->my_array[mark].first;
+            input_type to_place;
+            this->fetch_item(mark,to_place);
             do { // push to_place up the heap
                 size_type parent = (cur_pos-1)>>1;
-                if (!compare(this->my_array[parent].first, to_place))
+                if (!compare(this->get_my_item(parent), to_place))
                     break;
-                this->my_array[cur_pos].first = this->my_array[parent].first;
+                this->move_item(cur_pos, parent);
                 cur_pos = parent;
             } while( cur_pos );
-            this->my_array[cur_pos].first = to_place;
+            (void) this->place_item(cur_pos, to_place);
         }
     }
 
+    // otherwise heapified array with new root element; rearrange to heap
     void reheap() {
         size_type cur_pos=0, child=1;
         while (child < mark) {
             size_type target = child;
             if (child+1<mark &&
-                compare(this->my_array[child].first,
-                        this->my_array[child+1].first))
+                compare(this->get_my_item(child),
+                        this->get_my_item(child+1)))
                 ++target;
             // target now has the higher priority child
-            if (compare(this->my_array[target].first,
-                        this->my_array[this->my_tail].first))
+            if (compare(this->get_my_item(target),
+                        this->get_my_item(cur_pos)))
                 break;
-            this->my_array[cur_pos].first = this->my_array[target].first;
+            // swap
+            this->swap_items(cur_pos, target);
             cur_pos = target;
             child = (cur_pos<<1)+1;
         }
-        this->my_array[cur_pos].first = this->my_array[this->my_tail].first;
     }
-};
+};  // priority_queue_node
 
 //! Forwards messages only if the threshold has not been reached
 /** This node forwards items until its threshold is reached.
@@ -1978,12 +2514,18 @@ public:
     typedef T output_type;
     typedef sender< input_type > predecessor_type;
     typedef receiver< output_type > successor_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename receiver<input_type>::built_predecessors_type built_predecessors_type;
+    typedef typename sender<output_type>::built_successors_type built_successors_type;
+    typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+    typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
 
 private:
     size_t my_threshold;
-    size_t my_count; //number of successful puts 
+    size_t my_count; //number of successful puts
     size_t my_tries; //number of active put attempts
-    internal::reservable_predecessor_cache< T > my_predecessors;
+    internal::reservable_predecessor_cache< T, spin_mutex > my_predecessors;
     spin_mutex my_mutex;
     internal::broadcast_cache< T > my_successors;
     int init_decrement_predecessors;
@@ -1993,10 +2535,10 @@ private:
     // Let decrementer call decrement_counter()
     friend class internal::decrementer< limiter_node<T> >;
 
-    bool check_conditions() {    
+    bool check_conditions() {  // always called under lock
         return ( my_count + my_tries < my_threshold && !my_predecessors.empty() && !my_successors.empty() );
-    } 
-    
+    }
+
     // only returns a valid task pointer or NULL, never SUCCESSFULLY_ENQUEUED
     task *forward_task() {
         input_type v;
@@ -2005,8 +2547,8 @@ private:
             {
                 spin_mutex::scoped_lock lock(my_mutex);
                 if ( check_conditions() )
-                    ++my_tries;  
-                else  
+                    ++my_tries;
+                else
                     return NULL;
             }
 
@@ -2019,9 +2561,9 @@ private:
                 {
                     spin_mutex::scoped_lock lock(my_mutex);
                     ++my_count;
-                    --my_tries; 
+                    --my_tries;
                     my_predecessors.try_consume();
-                    if ( check_conditions() ) { 
+                    if ( check_conditions() ) {
                         task* tp = this->my_graph.root_task();
                         if ( tp ) {
                             task *rtask = new ( task::allocate_additional_child_of( *tp ) )
@@ -2030,17 +2572,17 @@ private:
                         }
                     }
                 }
-                return rval; 
-            } 
+                return rval;
+            }
         }
         //FAILURE
-        //if we can't reserve, we decrement the tries 
+        //if we can't reserve, we decrement the tries
         //if we can reserve but can't put, we decrement the tries and release the reservation
-        { 
+        {
             spin_mutex::scoped_lock lock(my_mutex);
             --my_tries;
             if (reserved) my_predecessors.try_release();
-            if ( check_conditions() ) { 
+            if ( check_conditions() ) {
                 task* tp = this->my_graph.root_task();
                 if ( tp ) {
                     task *rtask = new ( task::allocate_additional_child_of( *tp ) )
@@ -2059,7 +2601,7 @@ private:
     }
 
     task * decrement_counter() {
-        { 
+        {
             spin_mutex::scoped_lock lock(my_mutex);
             if(my_count) --my_count;
         }
@@ -2079,8 +2621,8 @@ public:
         my_predecessors.set_owner(this);
         my_successors.set_owner(this);
         decrement.set_owner(this);
-        tbb::internal::fgt_node( tbb::internal::FLOW_LIMITER_NODE, &this->my_graph, 
-                                 static_cast<receiver<input_type> *>(this), static_cast<receiver<continue_msg> *>(&decrement), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_LIMITER_NODE, &this->my_graph,
+                                 static_cast<receiver<input_type> *>(this), static_cast<receiver<continue_msg> *>(&decrement),
                                  static_cast<sender<output_type> *>(this) );
     }
 
@@ -2094,8 +2636,8 @@ public:
         my_predecessors.set_owner(this);
         my_successors.set_owner(this);
         decrement.set_owner(this);
-        tbb::internal::fgt_node( tbb::internal::FLOW_LIMITER_NODE, &this->my_graph, 
-                                 static_cast<receiver<input_type> *>(this), static_cast<receiver<continue_msg> *>(&decrement), 
+        tbb::internal::fgt_node( tbb::internal::FLOW_LIMITER_NODE, &this->my_graph,
+                                 static_cast<receiver<input_type> *>(this), static_cast<receiver<continue_msg> *>(&decrement),
                                  static_cast<sender<output_type> *>(this) );
     }
 
@@ -2111,12 +2653,12 @@ public:
         bool was_empty = my_successors.empty();
         my_successors.register_successor(r);
         //spawn a forward task if this is the only successor
-        if ( was_empty && !my_predecessors.empty() && my_count + my_tries < my_threshold ) { 
+        if ( was_empty && !my_predecessors.empty() && my_count + my_tries < my_threshold ) {
             task* tp = this->my_graph.root_task();
             if ( tp ) {
                 FLOW_SPAWN( (* new ( task::allocate_additional_child_of( *tp ) )
                             internal::forward_task_bypass < limiter_node<T> >( *this ) ) );
-            } 
+            }
         }
         return true;
     }
@@ -2129,6 +2671,46 @@ public:
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/ built_successors_type &built_successors() { return my_successors.built_successors(); }
+    /*override*/ built_predecessors_type &built_predecessors() { return my_predecessors.built_predecessors(); }
+
+    /*override*/void internal_add_built_successor(receiver<output_type> &src) {
+        my_successors.internal_add_built_successor(src);
+    }
+
+    /*override*/void internal_delete_built_successor(receiver<output_type> &src) {
+        my_successors.internal_delete_built_successor(src);
+    }
+
+    /*override*/size_t successor_count() { return my_successors.successor_count(); }
+
+    /*override*/ void copy_successors(successor_list_type &v) {
+        my_successors.copy_successors(v);
+    }
+
+    /*override*/void internal_add_built_predecessor(sender<output_type> &src) {
+        my_predecessors.internal_add_built_predecessor(src);
+    }
+
+    /*override*/void internal_delete_built_predecessor(sender<output_type> &src) {
+        my_predecessors.internal_delete_built_predecessor(src);
+    }
+
+    /*override*/size_t predecessor_count() { return my_predecessors.predecessor_count(); }
+
+    /*override*/ void copy_predecessors(predecessor_list_type &v) {
+        my_predecessors.copy_predecessors(v);
+    }
+
+    /*override*/void extract() {
+        my_count = 0;
+        my_successors.built_successors().sender_extract(*this);
+        my_predecessors.built_predecessors().receiver_extract(*this);
+        decrement.built_predecessors().receiver_extract(decrement);
+    }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
     //! Adds src to the list of cached predecessors.
     /* override */ bool register_predecessor( predecessor_type &src ) {
         spin_mutex::scoped_lock lock(my_mutex);
@@ -2137,7 +2719,7 @@ public:
         if ( my_count + my_tries < my_threshold && !my_successors.empty() && tp ) {
             FLOW_SPAWN( (* new ( task::allocate_additional_child_of( *tp ) )
                         internal::forward_task_bypass < limiter_node<T> >( *this ) ) );
-        }    
+        }
         return true;
     }
 
@@ -2166,7 +2748,7 @@ protected:
 
         if ( !rtask ) {  // try_put_task failed.
             spin_mutex::scoped_lock lock(my_mutex);
-            --my_tries;  
+            --my_tries;
             task* tp = this->my_graph.root_task();
             if ( check_conditions() && tp ) {
                 rtask = new ( task::allocate_additional_child_of( *tp ) )
@@ -2176,18 +2758,29 @@ protected:
         else {
             spin_mutex::scoped_lock lock(my_mutex);
             ++my_count;
-            --my_tries; 
+            --my_tries;
              }
         return rtask;
     }
 
-    /*override*/void reset() {
-        my_count = 0;
-        my_predecessors.reset();
-        decrement.reset_receiver();
+    /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) { 
+        __TBB_ASSERT(false,NULL);  // should never be called
     }
 
-    /*override*/void reset_receiver() { my_predecessors.reset(); }
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
+        my_count = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if(f & rf_clear_edges) {
+            my_predecessors.clear();
+            my_successors.clear();
+        }
+        else
+#endif
+        {
+            my_predecessors.reset( );
+        }
+        decrement.reset_receiver(__TBB_PFG_RESET_ARG(f));
+    }
 };  // limiter_node
 
 #include "internal/_flow_graph_join_impl.h"
@@ -2209,7 +2802,7 @@ private:
 public:
     typedef OutputTuple output_type;
     typedef typename unfolded_type::input_ports_type input_ports_type;
-    join_node(graph &g) : unfolded_type(g) { 
+    join_node(graph &g) : unfolded_type(g) {
         tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_RESERVING, &this->my_graph,
                                             this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
@@ -2234,7 +2827,7 @@ private:
 public:
     typedef OutputTuple output_type;
     typedef typename unfolded_type::input_ports_type input_ports_type;
-    join_node(graph &g) : unfolded_type(g) { 
+    join_node(graph &g) : unfolded_type(g) {
         tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_QUEUEING, &this->my_graph,
                                             this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
@@ -2261,34 +2854,34 @@ private:
 public:
     typedef OutputTuple output_type;
     typedef typename unfolded_type::input_ports_type input_ports_type;
-    
+
     template<typename __TBB_B0, typename __TBB_B1>
-    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1) : unfolded_type(g, b0, b1) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1) : unfolded_type(g, b0, b1) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2>
-    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2) : unfolded_type(g, b0, b1, b2) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2) : unfolded_type(g, b0, b1, b2) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3>
-    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3) : unfolded_type(g, b0, b1, b2, b3) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+    join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3) : unfolded_type(g, b0, b1, b2, b3) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4) :
-            unfolded_type(g, b0, b1, b2, b3, b4) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            unfolded_type(g, b0, b1, b2, b3, b4) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #if __TBB_VARIADIC_MAX >= 6
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4,
         typename __TBB_B5>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5) :
-            unfolded_type(g, b0, b1, b2, b3, b4, b5) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            unfolded_type(g, b0, b1, b2, b3, b4, b5) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #endif
@@ -2296,8 +2889,8 @@ public:
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4,
         typename __TBB_B5, typename __TBB_B6>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6) :
-            unfolded_type(g, b0, b1, b2, b3, b4, b5, b6) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            unfolded_type(g, b0, b1, b2, b3, b4, b5, b6) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #endif
@@ -2305,8 +2898,8 @@ public:
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4,
         typename __TBB_B5, typename __TBB_B6, typename __TBB_B7>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6,
-            __TBB_B7 b7) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            __TBB_B7 b7) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #endif
@@ -2314,8 +2907,8 @@ public:
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4,
         typename __TBB_B5, typename __TBB_B6, typename __TBB_B7, typename __TBB_B8>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6,
-            __TBB_B7 b7, __TBB_B8 b8) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7, b8) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            __TBB_B7 b7, __TBB_B8 b8) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7, b8) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #endif
@@ -2323,13 +2916,13 @@ public:
     template<typename __TBB_B0, typename __TBB_B1, typename __TBB_B2, typename __TBB_B3, typename __TBB_B4,
         typename __TBB_B5, typename __TBB_B6, typename __TBB_B7, typename __TBB_B8, typename __TBB_B9>
     join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6,
-            __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) { 
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+            __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9) : unfolded_type(g, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) {
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 #endif
     join_node(const join_node &other) : unfolded_type(other) {
-        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph, 
+        tbb::internal::fgt_multiinput_node<OutputTuple,N>( tbb::internal::FLOW_JOIN_NODE_TAG_MATCHING, &this->my_graph,
                                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 
@@ -2341,77 +2934,880 @@ public:
 
 };
 
-#if TBB_PREVIEW_GRAPH_NODES
-// or node
-#include "internal/_flow_graph_or_impl.h"
+// indexer node
+#include "internal/_flow_graph_indexer_impl.h"
+
+template<typename T0, typename T1=null_type, typename T2=null_type, typename T3=null_type,
+                      typename T4=null_type, typename T5=null_type, typename T6=null_type,
+                      typename T7=null_type, typename T8=null_type, typename T9=null_type> class indexer_node;
 
-template<typename InputTuple>
-class or_node : public internal::unfolded_or_node<InputTuple> {
+//indexer node specializations
+template<typename T0>
+class indexer_node<T0> : public internal::unfolded_indexer_node<tuple<T0> > {
 private:
-    static const int N = tbb::flow::tuple_size<InputTuple>::value;
+    static const int N = 1;
 public:
-    typedef typename internal::or_output_type<InputTuple>::type output_type;
-    typedef typename internal::unfolded_or_node<InputTuple> unfolded_type;
-    or_node(graph& g) : unfolded_type(g) { 
-        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_OR_NODE, &this->my_graph,
+    typedef tuple<T0> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
     // Copy constructor
-    or_node( const or_node& other ) : unfolded_type(other) { 
-        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_OR_NODE, &this->my_graph,
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
                                            this->input_ports(), static_cast< sender< output_type > *>(this) );
     }
 
 #if TBB_PREVIEW_FLOW_GRAPH_TRACE
-    /* override */ void set_name( const char *name ) {
+     void set_name( const char *name ) {
         tbb::internal::fgt_node_desc( this, name );
     }
 #endif
-
 };
-#endif  // TBB_PREVIEW_GRAPH_NODES
 
-//! Makes an edge between a single predecessor and a single successor
-template< typename T >
-inline void make_edge( sender<T> &p, receiver<T> &s ) {
-    p.register_successor( s );
-    tbb::internal::fgt_make_edge( &p, &s );
-}
+template<typename T0, typename T1>
+class indexer_node<T0, T1> : public internal::unfolded_indexer_node<tuple<T0, T1> > {
+private:
+    static const int N = 2;
+public:
+    typedef tuple<T0, T1> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
 
-//! Makes an edge between a single predecessor and a single successor
-template< typename T >
-inline void remove_edge( sender<T> &p, receiver<T> &s ) {
-    p.remove_successor( s );
-    tbb::internal::fgt_remove_edge( &p, &s );
-}
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+     void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
 
-//! Returns a copy of the body from a function or continue node
-template< typename Body, typename Node >
-Body copy_body( Node &n ) {
-    return n.template copy_function_object<Body>();
-}
+template<typename T0, typename T1, typename T2>
+class indexer_node<T0, T1, T2> : public internal::unfolded_indexer_node<tuple<T0, T1, T2> > {
+private:
+    static const int N = 3;
+public:
+    typedef tuple<T0, T1, T2> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
 
-} // interface7
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+        void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
 
-    using interface7::graph;
-    using interface7::graph_node;
-    using interface7::continue_msg;
-    using interface7::sender;
-    using interface7::receiver;
-    using interface7::continue_receiver;
+template<typename T0, typename T1, typename T2, typename T3>
+class indexer_node<T0, T1, T2, T3> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3> > {
+private:
+    static const int N = 4;
+public:
+    typedef tuple<T0, T1, T2, T3> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
 
-    using interface7::source_node;
-    using interface7::function_node;
-    using interface7::multifunction_node;
-    using interface7::split_node;
-    using interface7::internal::output_port;
-#if TBB_PREVIEW_GRAPH_NODES
-    using interface7::or_node;
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
 #endif
-    using interface7::continue_node;
-    using interface7::overwrite_node;
-    using interface7::write_once_node;
-    using interface7::broadcast_node;
+};
+
+template<typename T0, typename T1, typename T2, typename T3, typename T4>
+class indexer_node<T0, T1, T2, T3, T4> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4> > {
+private:
+    static const int N = 5;
+public:
+    typedef tuple<T0, T1, T2, T3, T4> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+
+#if __TBB_VARIADIC_MAX >= 6
+template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
+class indexer_node<T0, T1, T2, T3, T4, T5> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4, T5> > {
+private:
+    static const int N = 6;
+public:
+    typedef tuple<T0, T1, T2, T3, T4, T5> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4, T5> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+#endif //variadic max 6
+
+#if __TBB_VARIADIC_MAX >= 7
+template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+         typename T6>
+class indexer_node<T0, T1, T2, T3, T4, T5, T6> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4, T5, T6> > {
+private:
+    static const int N = 7;
+public:
+    typedef tuple<T0, T1, T2, T3, T4, T5, T6> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4, T5, T6> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+#endif //variadic max 7
+
+#if __TBB_VARIADIC_MAX >= 8
+template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+         typename T6, typename T7>
+class indexer_node<T0, T1, T2, T3, T4, T5, T6, T7> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4, T5, T6, T7> > {
+private:
+    static const int N = 8;
+public:
+    typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4, T5, T6, T7> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+#endif //variadic max 8
+
+#if __TBB_VARIADIC_MAX >= 9
+template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+         typename T6, typename T7, typename T8>
+class indexer_node<T0, T1, T2, T3, T4, T5, T6, T7, T8> : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> > {
+private:
+    static const int N = 9;
+public:
+    typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4, T5, T6, T7, T8> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+#endif //variadic max 9
+
+#if __TBB_VARIADIC_MAX >= 10
+template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+         typename T6, typename T7, typename T8, typename T9>
+class indexer_node/*default*/ : public internal::unfolded_indexer_node<tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> > {
+private:
+    static const int N = 10;
+public:
+    typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> InputTuple;
+    typedef typename internal::tagged_msg<size_t, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> output_type;
+    typedef typename internal::unfolded_indexer_node<InputTuple> unfolded_type;
+    indexer_node(graph& g) : unfolded_type(g) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+    // Copy constructor
+    indexer_node( const indexer_node& other ) : unfolded_type(other) {
+        tbb::internal::fgt_multiinput_node<InputTuple,N>( tbb::internal::FLOW_INDEXER_NODE, &this->my_graph,
+                                           this->input_ports(), static_cast< sender< output_type > *>(this) );
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+};
+#endif //variadic max 10
+
+//! Makes an edge between a single predecessor and a single successor
+template< typename T >
+inline void make_edge( sender<T> &p, receiver<T> &s ) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    s.internal_add_built_predecessor(p);
+    p.internal_add_built_successor(s);
+#endif
+    p.register_successor( s );
+    tbb::internal::fgt_make_edge( &p, &s );
+}
+
+#if __TBB_PREVIEW_COMPOSITE_NODE
+//Makes an edge from port 0 of a multi-output predecessor to port 0 of a multi-input successor.
+template< typename T, typename V,
+          bool = tbb::internal::is_same_type< typename tuple_element<0,typename T::output_ports_type>::type,
+                                              typename tuple_element<0,typename V::input_ports_type>::type
+                                            >::value >
+inline void make_edge( T& output, V& input) {
+    make_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
+}
+
+//Makes an edge from port 0 of a multi-output predecessor to a receiver.
+template< typename T, typename R, 
+          bool = tbb::internal::is_same_type<typename tuple_element<0,typename T::output_ports_type>::type, receiver<R> >::value >
+inline void make_edge( T& output, receiver<R>& input) {
+     make_edge(get<0>(output.output_ports()), input);
+}
+
+//Makes an edge from a sender to port 0 of a multi-input successor.
+template<typename S,  typename V,
+          bool = tbb::internal::is_same_type<sender<S>, typename tuple_element<0,typename V::input_ports_type>::type >::value >
+inline void make_edge( sender<S>& output, V& input) {
+     make_edge(output, get<0>(input.input_ports()));
+}
+#endif
+
+//! Removes an edge between a single predecessor and a single successor
+template< typename T >
+inline void remove_edge( sender<T> &p, receiver<T> &s ) {
+    p.remove_successor( s );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    // TODO: should we try to remove p from the predecessor list of s, in case the edge is reversed?
+    p.internal_delete_built_successor(s);
+    s.internal_delete_built_predecessor(p);
+#endif
+    tbb::internal::fgt_remove_edge( &p, &s );
+}
+
+#if __TBB_PREVIEW_COMPOSITE_NODE
+//Removes an edge between port 0 of a multi-output predecessor and port 0 of a multi-input successor.
+template< typename T, typename V,
+          bool = tbb::internal::is_same_type< typename tuple_element<0,typename T::output_ports_type>::type,
+                                              typename tuple_element<0,typename V::input_ports_type>::type
+                                            >::value >
+inline void remove_edge( T& output, V& input) {
+    remove_edge(get<0>(output.output_ports()), get<0>(input.input_ports()));
+}
+
+//Removes an edge between port 0 of a multi-output predecessor and a receiver.
+template< typename T, typename R,
+          bool = tbb::internal::is_same_type<typename tuple_element<0,typename T::output_ports_type>::type, receiver<R> >::value >
+inline void remove_edge( T& output, receiver<R>& input) {
+     remove_edge(get<0>(output.output_ports()), input);
+}
+//Removes an edge between a sender and port 0 of a multi-input successor.
+template<typename S,  typename V,
+          bool = tbb::internal::is_same_type<sender<S>, typename tuple_element<0,typename V::input_ports_type>::type >::value >
+inline void remove_edge( sender<S>& output, V& input) {
+     remove_edge(output, get<0>(input.input_ports()));
+}
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+template<typename C >
+template< typename S >
+void internal::edge_container<C>::sender_extract( S &s ) {
+    edge_list_type e = built_edges;
+    for ( typename edge_list_type::iterator i = e.begin(); i != e.end(); ++i ) {
+        remove_edge(s, **i);
+    }
+}
+
+template<typename C >
+template< typename R >
+void internal::edge_container<C>::receiver_extract( R &r ) {
+    edge_list_type e = built_edges;
+    for ( typename edge_list_type::iterator i = e.begin(); i != e.end(); ++i ) {
+        remove_edge(**i, r);
+    }
+}
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
+//! Returns a copy of the body from a function or continue node
+template< typename Body, typename Node >
+Body copy_body( Node &n ) {
+    return n.template copy_function_object<Body>();
+}
+
+#if __TBB_PREVIEW_COMPOSITE_NODE
+
+//composite_node
+template< typename InputTuple, typename OutputTuple > class composite_node;
+
+template< typename... InputTypes, typename... OutputTypes>
+class composite_node <tbb::flow::tuple<InputTypes...>, tbb::flow::tuple<OutputTypes...> > : public graph_node {
+
+public:
+    typedef tbb::flow::tuple< receiver<InputTypes>&... > input_ports_type;
+    typedef tbb::flow::tuple< sender<OutputTypes>&... > output_ports_type;
+
+private:
+    input_ports_type *my_input_ports;
+    output_ports_type *my_output_ports;
+    const char *type_name;
+
+    static const size_t NUM_INPUTS = sizeof...(InputTypes);
+    static const size_t NUM_OUTPUTS = sizeof...(OutputTypes);
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    //TODO: extend to include multiinput-multioutput nodes
+    template<typename NodeType>
+    auto sender_cast(const NodeType &n)-> sender< typename NodeType::output_type >* {
+        return dynamic_cast< sender< typename NodeType::output_type > * >(const_cast< NodeType *>(&n));
+    }
+
+    template<typename NodeType>
+    auto receiver_cast(const NodeType &n)-> receiver< typename NodeType::input_type >* {
+        return dynamic_cast< receiver< typename NodeType::input_type > * >(const_cast< NodeType *>(&n)) ;
+    }
+
+    bool add_nodes_impl(bool) {return true; }  
+
+    template< typename NodeType1, typename... NodeTypes >
+    bool add_nodes_impl(bool visible, const NodeType1& n1, const NodeTypes&... n) {
+     //    try to dynamic cast to sender< NodeType::output_type >; if successful, its a single-output node
+        void *addr = sender_cast(n1);       
+     
+        if(!addr)  
+            addr = receiver_cast(n1);
+
+        if(addr) {
+            if (visible)
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_parent_of, addr, tbb::internal::FLOW_NODE );
+            else
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, addr, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_child_of, this, tbb::internal::FLOW_NODE );
+            return add_nodes_impl(visible, n...);
+        } else {
+            return false; 
+        }
+    }
+#endif
+
+protected:
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags)) {}
+
+public:
+    composite_node( graph &g, const char *my_type_name = " ") : graph_node(g), type_name(my_type_name)  {
+        my_input_ports = NULL;
+        my_output_ports = NULL;
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+        tbb::internal::itt_make_task_group( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, &g, tbb::internal::FLOW_GRAPH, tbb::internal::FLOW_COMPOSITE_NODE );
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, type_name );
+#endif
+    }
+
+   void set_external_ports(input_ports_type&& input_ports_tuple, output_ports_type&& output_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_INPUTS == tbb::flow::tuple_size<input_ports_type>::value, "number of arguments does not match number of input ports");
+       __TBB_STATIC_ASSERT(NUM_OUTPUTS == tbb::flow::tuple_size<output_ports_type>::value, "number of arguments does not match number of output ports");
+
+      my_input_ports = new input_ports_type(std::move(input_ports_tuple));
+      my_output_ports = new output_ports_type(std::move(output_ports_tuple));
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_input_helper<input_ports_type, input_ports_type, NUM_INPUTS>::register_port( this, input_ports_tuple );
+      tbb::internal::fgt_internal_output_helper<output_ports_type, output_ports_type, NUM_OUTPUTS>::register_port( this, output_ports_tuple);
+#endif
+   }
+
+   void set_external_ports(const input_ports_type& input_ports_tuple, const output_ports_type& output_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_INPUTS == tbb::flow::tuple_size<input_ports_type>::value, "number of arguments does not match number of input ports");
+       __TBB_STATIC_ASSERT(NUM_OUTPUTS == tbb::flow::tuple_size<output_ports_type>::value, "number of arguments does not match number of output ports");
+
+      my_input_ports = new input_ports_type(input_ports_tuple);
+      my_output_ports = new output_ports_type(output_ports_tuple);
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_input_helper<input_ports_type, input_ports_type, NUM_INPUTS>::register_port( this, input_ports_tuple );
+      tbb::internal::fgt_internal_output_helper<output_ports_type, output_ports_type, NUM_OUTPUTS>::register_port( this, output_ports_tuple);
+#endif
+   }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    template< typename... NodeTypes >
+    bool add_visible_nodes(const NodeTypes&... n) {
+        return add_nodes_impl(true, n...);
+    }
+
+    template< typename... NodeTypes >
+    bool add_nodes(const NodeTypes&... n) {
+        return add_nodes_impl(false, n...);
+    }
+#else
+    template<typename... Nodes> bool add_nodes(Nodes&...) { return true; }
+    template<typename... Nodes> bool add_visible_nodes(Nodes&...) { return true; }
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, name );
+    }
+#endif
+
+    input_ports_type input_ports() { 
+         __TBB_ASSERT(my_input_ports, "input ports not set, call set_external_ports to set input ports");
+         return *my_input_ports;
+    }
+
+    output_ports_type output_ports() { 
+         __TBB_ASSERT(my_output_ports, "output ports not set, call set_external_ports to set output ports");
+         return *my_output_ports;
+    }
+
+    virtual ~composite_node() {
+        if(my_input_ports) delete my_input_ports;
+        if(my_output_ports) delete my_output_ports;
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract() {
+        __TBB_ASSERT(false, "Current composite_node implementation does not support extract");
+    }
+#endif
+
+};  // class composite_node
+
+//composite_node with only input ports
+//TODO: trim specializations
+
+template< typename... InputTypes>
+class composite_node <tbb::flow::tuple<InputTypes...>, tbb::flow::tuple<> > : public graph_node {
+public:
+    typedef tbb::flow::tuple< receiver<InputTypes>&... > input_ports_type;
+
+private:
+    input_ports_type *my_input_ports;
+    static const size_t NUM_INPUTS = sizeof...(InputTypes);
+    const char *type_name;
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    template<typename NodeType>
+    auto sender_cast(const NodeType &n)-> sender< typename NodeType::output_type >* {
+        return dynamic_cast< sender< typename NodeType::output_type > * >(const_cast< NodeType *>(&n));
+    }
+
+    template<typename NodeType>
+    auto receiver_cast(const NodeType &n)-> receiver< typename NodeType::input_type >* {
+        return dynamic_cast< receiver< typename NodeType::input_type > * >(const_cast< NodeType *>(&n)) ;
+    }
+
+    bool add_nodes_impl(bool) { return true; }
+
+    template< typename NodeType1, typename... NodeTypes >
+    bool add_nodes_impl(bool visible, const NodeType1& n1, const NodeTypes&... n) {
+     //    try to dynamic cast to sender< NodeType::output_type >; if successful, its a single-output node
+        void *addr = sender_cast(n1);
+
+        if(!addr)
+            addr = receiver_cast(n1);
+
+        if(addr) {
+            if (visible)
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_parent_of, addr, tbb::internal::FLOW_NODE );
+            else
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, addr, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_child_of, this, tbb::internal::FLOW_NODE );
+             return add_nodes_impl(visible, n...);
+        } else {
+            return false; 
+        }
+    }
+#endif
+
+protected:
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags)) {}
+
+public:
+    composite_node( graph &g, const char *my_type_name = " ") : graph_node(g), type_name(my_type_name)  {
+        my_input_ports = NULL;
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+        tbb::internal::itt_make_task_group( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, &g, tbb::internal::FLOW_GRAPH, tbb::internal::FLOW_COMPOSITE_NODE );
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, type_name );
+#endif
+    }
+
+   void set_external_ports(input_ports_type&& input_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_INPUTS == tbb::flow::tuple_size<input_ports_type>::value, "number of arguments does not match number of input ports");
+
+      my_input_ports = new input_ports_type(std::move(input_ports_tuple));
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_input_helper<input_ports_type, input_ports_type, NUM_INPUTS>::register_port( this, input_ports_tuple );
+#endif
+   }
+
+   void set_external_ports(const input_ports_type& input_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_INPUTS == tbb::flow::tuple_size<input_ports_type>::value, "number of arguments does not match number of input ports");
+
+      my_input_ports = new input_ports_type(input_ports_tuple);
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_input_helper<input_ports_type, input_ports_type, NUM_INPUTS>::register_port( this, input_ports_tuple );
+#endif
+   }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    template< typename... NodeTypes >
+    bool add_visible_nodes(const NodeTypes&... n) {
+        return add_nodes_impl(true, n...);
+    }
+
+    template< typename... NodeTypes >
+    bool add_nodes( const NodeTypes&... n) {
+        return add_nodes_impl(false, n...);
+    }
+#else
+    template<typename... Nodes> bool add_nodes(Nodes&...) { return true; }
+    template<typename... Nodes> bool add_visible_nodes(Nodes&...) { return true; }
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, name );
+    }
+#endif
+
+    input_ports_type input_ports() { 
+         __TBB_ASSERT(my_input_ports, "input ports not set, call set_external_ports to set input ports");
+         return *my_input_ports;
+    }
+
+    virtual ~composite_node() {
+        if(my_input_ports) delete my_input_ports;
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract() {
+        __TBB_ASSERT(false, "Current composite_node implementation does not support extract");
+    }
+#endif
+
+};  // class composite_node
+
+//composite_nodes with only output_ports
+template<typename... OutputTypes>
+class composite_node <tbb::flow::tuple<>, tbb::flow::tuple<OutputTypes...> > : public graph_node {
+public:
+    typedef tbb::flow::tuple< sender<OutputTypes>&... > output_ports_type;
+
+private:
+    output_ports_type *my_output_ports;
+    static const size_t NUM_OUTPUTS = sizeof...(OutputTypes);
+    const char *type_name;
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    template<typename NodeType>
+    auto sender_cast(const NodeType &n)-> sender< typename NodeType::output_type >* {
+        return dynamic_cast< sender< typename NodeType::output_type > * >(const_cast< NodeType *>(&n));
+    }
+
+    template<typename NodeType>
+    auto receiver_cast(const NodeType &n)-> receiver< typename NodeType::input_type >* {
+        return dynamic_cast< receiver< typename NodeType::input_type > * >(const_cast< NodeType *>(&n)) ;
+    }
+
+    bool add_nodes_impl(bool) {return true;}
+
+    template< typename NodeType1, typename... NodeTypes >
+    bool add_nodes_impl(bool visible, const NodeType1& n1, const NodeTypes&... n) {
+     //    try to dynamic cast to sender< NodeType::output_type >; if successful, its a single-output node
+        void *addr = sender_cast(n1);
+
+        if(!addr)
+            addr = receiver_cast(n1);
+
+        if(addr) {
+            if (visible)
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_parent_of, addr, tbb::internal::FLOW_NODE );
+            else
+                tbb::internal::itt_relation_add( tbb::internal::ITT_DOMAIN_FLOW, addr, tbb::internal::FLOW_NODE, tbb::internal::__itt_relation_is_child_of, this, tbb::internal::FLOW_NODE );
+            return add_nodes_impl(visible, n...);
+        } else {
+            return false; 
+        }
+    }
+#endif
+
+protected:
+    /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags)) {}
+
+public:
+    composite_node( graph &g, const char *my_type_name = " ") : graph_node(g), type_name(my_type_name)  {
+        my_output_ports = NULL;
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+        tbb::internal::itt_make_task_group( tbb::internal::ITT_DOMAIN_FLOW, this, tbb::internal::FLOW_NODE, &g, tbb::internal::FLOW_GRAPH, tbb::internal::FLOW_COMPOSITE_NODE );
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, type_name );
+#endif
+    }
+
+   void set_external_ports(output_ports_type&& output_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_OUTPUTS == tbb::flow::tuple_size<output_ports_type>::value, "number of arguments does not match number of output ports");
+
+      my_output_ports = new output_ports_type(std::move(output_ports_tuple));
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_output_helper<output_ports_type, output_ports_type, NUM_OUTPUTS>::register_port( this, output_ports_tuple);
+#endif
+   }
+
+   void set_external_ports(const output_ports_type& output_ports_tuple) {
+       __TBB_STATIC_ASSERT(NUM_OUTPUTS == tbb::flow::tuple_size<output_ports_type>::value, "number of arguments does not match number of output ports");
+
+      my_output_ports = new output_ports_type(output_ports_tuple);
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+      tbb::internal::fgt_internal_output_helper<output_ports_type, output_ports_type, NUM_OUTPUTS>::register_port( this, output_ports_tuple);
+#endif
+   }
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    template<typename... NodeTypes >
+    bool add_visible_nodes(const NodeTypes&... n) {
+        return add_nodes_impl(true, n...);
+    }
+
+    template<typename... NodeTypes >
+    bool add_nodes(const NodeTypes&... n) {
+        return add_nodes_impl(false, n...);
+    }
+#else
+    template<typename... Nodes> bool add_nodes(Nodes&...) { return true; }
+    template<typename... Nodes> bool add_visible_nodes(Nodes&...) { return true; }
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+        tbb::internal::fgt_multiinput_multioutput_node_desc( this, name );
+    }
+#endif
+
+
+    output_ports_type output_ports() { 
+         __TBB_ASSERT(my_output_ports, "output ports not set, call set_external_ports to set output ports");
+         return *my_output_ports;
+    }
+
+    virtual ~composite_node() {
+        if(my_output_ports) delete my_output_ports;
+    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract() {
+        __TBB_ASSERT(false, "Current composite_node implementation does not support extract");
+    }
+#endif
+
+};  // class composite_node
+
+#endif // __TBB_PREVIEW_COMPOSITE_NODE
+
+#if __TBB_PREVIEW_ASYNC_NODE
+namespace internal {
+//! Pure virtual template class that defines interface for async communication
+template < typename Output >
+class async_gateway {
+public:
+    typedef Output output_type;
+
+    //! Submit signal from Async Activity to FG
+    virtual bool async_try_put(const output_type &i ) = 0;
+
+    virtual void async_reserve() = 0;
+
+    virtual void async_commit() = 0;
+
+    virtual ~async_gateway() {}
+};
+}
+
+//! Implements a async node
+template < typename Input, typename Output, typename Allocator=cache_aligned_allocator<Input> >
+class async_node : public graph_node, public internal::async_input<Input, Allocator, internal::async_gateway<Output> >, public internal::function_output<Output>, public internal::async_gateway<Output> {
+protected:
+    using graph_node::my_graph;
+public:
+    typedef Input input_type;
+    typedef Output output_type;
+    typedef async_node< input_type, output_type, Allocator > my_class;
+    typedef sender< input_type > predecessor_type;
+    typedef receiver< output_type > successor_type;
+    typedef internal::async_gateway< output_type > async_gateway_type;
+    typedef internal::async_input<input_type, Allocator, async_gateway_type > async_input_type;
+    typedef internal::function_output<output_type> async_output_type;
+
+
+    //! Constructor
+    template< typename Body >
+    async_node( graph &g, Body body ) : 
+        graph_node( g ), async_input_type( g, body ) {
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_ASYNC_NODE, &this->graph_node::my_graph,
+                                           static_cast<receiver<input_type> *>(this),
+                                           static_cast<sender<output_type> *>(this), this->my_body );
+    }
+
+    //! Copy constructor
+    async_node( const async_node& src ) :
+        graph_node(src.graph_node::my_graph), async_input_type( src ), async_output_type(){
+        tbb::internal::fgt_node_with_body( tbb::internal::FLOW_ASYNC_NODE, &this->graph_node::my_graph,
+                                           static_cast<receiver<input_type> *>(this),
+                                           static_cast<sender<output_type> *>(this), this->my_body );
+    }
+
+    /* override */ async_gateway_type& async_gateway() {
+        return static_cast< async_gateway_type& >(*this);
+    }   
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+    /* override */ void set_name( const char *name ) {
+            tbb::internal::fgt_node_desc( this, name );
+    }
+#endif
+
+protected:
+    template< typename R, typename B > friend class run_and_put_task;
+    template<typename X, typename Y> friend class internal::broadcast_cache;
+    template<typename X, typename Y> friend class internal::round_robin_cache;
+    using async_input_type::try_put_task;
+
+    /*override*/void reset_node( __TBB_PFG_RESET_ARG(reset_flags f)) {
+        async_input_type::reset_async_input(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if(f & rf_clear_edges) successors().clear();
+        __TBB_ASSERT(!(f & rf_clear_edges) || successors().empty(), "function_node successors not empty");
+        __TBB_ASSERT(!(f & rf_clear_edges) || this->my_predecessors.empty(), "function_node predecessors not empty");
+#endif
+    }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void extract() {
+        this->my_predecessors.built_predecessors().receiver_extract(*this);
+        successors().built_successors().sender_extract(*this);
+    }
+#endif
+
+    internal::broadcast_cache<output_type> &successors () { return async_output_type::my_successors; }
+
+    //! Submit signal from Async Activity to FG
+    /*override*/ bool async_try_put(const output_type &i ) {
+        // TODO: enqueue a task to a FG arena
+        task *res = successors().try_put_task(i);
+        if(!res) return false;
+        if (res != SUCCESSFULLY_ENQUEUED) FLOW_SPAWN(*res);
+        return true;
+    }
+
+    /*override*/ void async_reserve() {
+        my_graph.increment_wait_count();
+    }
+
+    /*override*/ void async_commit() {
+        my_graph.decrement_wait_count();
+    }
+};
+
+#endif // __TBB_PREVIEW_ASYNC_NODE
+
+} // interface7
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    using interface7::reset_flags;
+    using interface7::rf_reset_protocol;
+    using interface7::rf_reset_bodies;
+    using interface7::rf_clear_edges;
+#endif
+
+    using interface7::graph;
+    using interface7::graph_node;
+    using interface7::continue_msg;
+    using interface7::sender;
+    using interface7::receiver;
+    using interface7::continue_receiver;
+
+    using interface7::source_node;
+    using interface7::function_node;
+    using interface7::multifunction_node;
+    using interface7::split_node;
+    using interface7::internal::output_port;
+    using interface7::indexer_node;
+    using interface7::internal::tagged_msg;
+    using interface7::internal::cast_to;
+    using interface7::internal::is_a;
+    using interface7::continue_node;
+    using interface7::overwrite_node;
+    using interface7::write_once_node;
+    using interface7::broadcast_node;
     using interface7::buffer_node;
     using interface7::queue_node;
     using interface7::sequencer_node;
@@ -2425,8 +3821,16 @@ Body copy_body( Node &n ) {
     using interface7::remove_edge;
     using interface7::internal::NO_TAG;
     using interface7::internal::tag_value;
-
+#if __TBB_PREVIEW_COMPOSITE_NODE
+     using interface7::composite_node;
+#endif
+#if __TBB_PREVIEW_ASYNC_NODE
+    using interface7::async_node;
+#endif
 } // flow
 } // tbb
 
+#undef __TBB_PFG_RESET_ARG
+#undef __TBB_COMMA
+
 #endif // __TBB_flow_graph_H
diff --git a/include/tbb/global_control.h b/include/tbb/global_control.h
new file mode 100644
index 0000000..9b773d3
--- /dev/null
+++ b/include/tbb/global_control.h
@@ -0,0 +1,87 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB_global_control_H
+#define __TBB_global_control_H
+
+#if !TBB_PREVIEW_GLOBAL_CONTROL && !__TBB_BUILD
+#error Set TBB_PREVIEW_GLOBAL_CONTROL before including global_control.h
+#endif
+
+#include "tbb_stddef.h"
+
+namespace tbb {
+namespace interface9 {
+
+class global_control {
+public:
+    enum parameter {
+        max_allowed_parallelism,
+        thread_stack_size,
+        parameter_max // insert new parameters above this point
+    };
+
+    global_control(parameter p, size_t value) :
+        my_value(value), my_next(NULL), my_param(p) {
+        __TBB_ASSERT(my_param < parameter_max, "Invalid parameter");
+#if __TBB_WIN8UI_SUPPORT
+        // For Windows Store* apps it's impossible to set stack size
+        if (p==thread_stack_size)
+            return;
+#elif __TBB_x86_64 && (_WIN32 || _WIN64)
+        if (p==thread_stack_size)
+            __TBB_ASSERT_RELEASE((unsigned)value == value, "Stack size is limited to unsigned int range");
+#endif
+        if (my_param==max_allowed_parallelism)
+            // TODO: support for serialization via max_allowed_parallelism==1
+            __TBB_ASSERT_RELEASE(my_value>1, "Values of 1 and 0 are not supported for max_allowed_parallelism.");
+        internal_create();
+    }
+
+    ~global_control() {
+        __TBB_ASSERT(my_param < parameter_max, "Invalid parameter. Probably the object was corrupted.");
+#if __TBB_WIN8UI_SUPPORT
+        // For Windows Store* apps it's impossible to set stack size
+        if (my_param==thread_stack_size)
+            return;
+#endif
+        internal_destroy();
+    }
+
+    static size_t active_value(parameter p) {
+        __TBB_ASSERT(p < parameter_max, "Invalid parameter");
+        return active_value((int)p);
+    }
+private:
+    size_t    my_value;
+    global_control *my_next;
+    parameter my_param;
+
+    void __TBB_EXPORTED_METHOD internal_create();
+    void __TBB_EXPORTED_METHOD internal_destroy();
+    static size_t __TBB_EXPORTED_FUNC active_value(int param);
+};
+} // namespace interface9
+
+using interface9::global_control;
+
+} // tbb
+
+#endif // __TBB_global_control_H
diff --git a/include/tbb/index.html b/include/tbb/index.html
index 6ceb5da..a403e1f 100644
--- a/include/tbb/index.html
+++ b/include/tbb/index.html
@@ -19,7 +19,7 @@ Include files for Intel® Threading Building Blocks classes and functions.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/include/tbb/internal/_aggregator_impl.h b/include/tbb/internal/_aggregator_impl.h
index 102d625..6782b6a 100644
--- a/include/tbb/internal/_aggregator_impl.h
+++ b/include/tbb/internal/_aggregator_impl.h
@@ -1,36 +1,30 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__aggregator_impl_H
 #define __TBB__aggregator_impl_H
 
 #include "../atomic.h"
+#if !__TBBMALLOC_BUILD
 #include "../tbb_profiling.h"
+#endif
 
 namespace tbb {
 namespace interface6 {
@@ -53,21 +47,26 @@ class aggregated_operation {
     aggregated_operation. The parameter handler_type is a functor that will be passed the
     list of operations and is expected to handle each operation appropriately, setting the
     status of each operation to non-zero.*/
-template < typename handler_type, typename operation_type >
-class aggregator {
- public:
-    aggregator() : handler_busy(false) { pending_operations = NULL; }
-    explicit aggregator(handler_type h) : handler_busy(false), handle_operations(h) {
-        pending_operations = NULL;
-    }
-
-    void initialize_handler(handler_type h) { handle_operations = h; }
+template < typename operation_type >
+class aggregator_generic {
+public:
+    aggregator_generic() : handler_busy(false) { pending_operations = NULL; }
 
     //! Place operation in list
     /** Place operation in list and either handle list or wait for operation to
-        complete.  */
-    void execute(operation_type *op) {
+        complete.
+        long_life_time specifies life time of an operation inserting in an aggregator.
+        "Long" (long_life_time == true) life time operation can be accessed
+        even after executing it.
+        "Short" (long_life_time == false) life time operations can be destroyed
+        during executing so any access to it after executing is invalid.*/
+    template < typename handler_type >
+    void execute(operation_type *op, handler_type &handle_operations, bool long_life_time = true) {
         operation_type *res;
+        // op->status should be read before inserting the operation in the
+        // aggregator queue since it can become invalid after executing a
+        // handler (if the operation has 'short' life time.)
+        const uintptr_t status = op->status;
 
         // ITT note: &(op->status) tag is used to cover accesses to this op node. This
         // thread has created the operation, and now releases it so that the handler
@@ -75,21 +74,25 @@ class aggregator {
         // thus this tag will be acquired just before the operation is handled in the
         // handle_operations functor.
         call_itt_notify(releasing, &(op->status));
-        // insert the operation in the queue
+        // insert the operation in the queue.
         do {
             // ITT may flag the following line as a race; it is a false positive:
             // This is an atomic read; we don't provide itt_hide_load_word for atomics
             op->next = res = pending_operations; // NOT A RACE
         } while (pending_operations.compare_and_swap(op, res) != res);
-        if (!res) { // first in the list; handle the operations
+        if (!res) { // first in the list; handle the operations.
             // ITT note: &pending_operations tag covers access to the handler_busy flag,
             // which this waiting handler thread will try to set before entering
             // handle_operations.
             call_itt_notify(acquired, &pending_operations);
-            start_handle_operations();
-            __TBB_ASSERT(op->status, NULL);
+            start_handle_operations(handle_operations);
+            // The operation with 'short' life time can already be destroyed.
+            if (long_life_time)
+                __TBB_ASSERT(op->status, NULL);
         }
-        else { // not first; wait for op to be ready
+        // not first; wait for op to be ready.
+        else if (!status) { // operation is blocking here.
+            __TBB_ASSERT(long_life_time, "The blocking operation cannot have 'short' life time. Since it can already be destroyed.");
             call_itt_notify(prepare, &(op->status));
             spin_wait_while_eq(op->status, uintptr_t(0));
             itt_load_word_with_acquire(op->status);
@@ -101,10 +104,10 @@ class aggregator {
     atomic<operation_type *> pending_operations;
     //! Controls thread access to handle_operations
     uintptr_t handler_busy;
-    handler_type handle_operations;
 
     //! Trigger the handling of operations when the handler is free
-    void start_handle_operations() {
+    template < typename handler_type >
+    void start_handle_operations( handler_type &handle_operations ) {
         operation_type *op_list;
 
         // ITT note: &handler_busy tag covers access to pending_operations as it is passed
@@ -137,6 +140,20 @@ class aggregator {
     }
 };
 
+template < typename handler_type, typename operation_type >
+class aggregator : public aggregator_generic<operation_type> {
+    handler_type handle_operations;
+public:
+    aggregator() {}
+    explicit aggregator(handler_type h) : handle_operations(h) {}
+
+    void initialize_handler(handler_type h) { handle_operations = h; }
+
+    void execute(operation_type *op) {
+        aggregator_generic<operation_type>::execute(op, handle_operations);
+    }
+};
+
 // the most-compatible friend declaration (vs, gcc, icc) is
 //    template<class U, class V> friend class aggregating_functor;
 template<typename aggregating_class, typename operation_list>
@@ -153,6 +170,7 @@ public:
 
 namespace internal {
     using interface6::internal::aggregated_operation;
+    using interface6::internal::aggregator_generic;
     using interface6::internal::aggregator;
     using interface6::internal::aggregating_functor;
 } // namespace internal
diff --git a/include/tbb/internal/_concurrent_queue_impl.h b/include/tbb/internal/_concurrent_queue_impl.h
index 15d9ab5..30b738f 100644
--- a/include/tbb/internal/_concurrent_queue_impl.h
+++ b/include/tbb/internal/_concurrent_queue_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__concurrent_queue_impl_H
@@ -41,6 +33,7 @@
 #include "../tbb_exception.h"
 #include "../tbb_profiling.h"
 #include <new>
+#include <utility>
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     // Suppress "C++ exception handler used, but unwind semantics are not enabled" warning in STL headers
@@ -65,9 +58,6 @@ template<typename T, typename A> class concurrent_queue;
 
 template<typename T, typename A> class concurrent_bounded_queue;
 
-namespace deprecated {
-template<typename T, typename A> class concurrent_queue;
-}
 #endif
 
 //! For internal use only.
@@ -83,6 +73,7 @@ typedef size_t ticket;
 template<typename T> class micro_queue ;
 template<typename T> class micro_queue_pop_finalizer ;
 template<typename T> class concurrent_queue_base_v3;
+template<typename T> struct concurrent_queue_rep;
 
 //! parts of concurrent_queue_rep that do not have references to micro_queue
 /**
@@ -153,6 +144,9 @@ private:
     The caller is expected to zero-initialize it. */
 template<typename T>
 class micro_queue : no_copy {
+public:
+    typedef void (*item_constructor_t)(T* location, const void* src);
+private:
     typedef concurrent_queue_rep_base::page page;
 
     //! Class used to ensure exception-safety of method "pop"
@@ -163,18 +157,21 @@ class micro_queue : no_copy {
         ~destroyer() {my_value.~T();}
     };
 
-    void copy_item( page& dst, size_t index, const void* src ) {
-        new( &get_ref(dst,index) ) T(*static_cast<const T*>(src));
+    void copy_item( page& dst, size_t dindex, const void* src, item_constructor_t construct_item ) {
+        construct_item( &get_ref(dst, dindex), src );
     }
 
-    void copy_item( page& dst, size_t dindex, const page& src, size_t sindex ) {
-        new( &get_ref(dst,dindex) ) T( get_ref(const_cast<page&>(src),sindex) );
+    void copy_item( page& dst, size_t dindex, const page& src, size_t sindex,
+        item_constructor_t construct_item )
+    {
+        T& src_item = get_ref( const_cast<page&>(src), sindex );
+        construct_item( &get_ref(dst, dindex), static_cast<const void*>(&src_item) );
     }
 
     void assign_and_destroy_item( void* dst, page& src, size_t index ) {
         T& from = get_ref(src,index);
         destroyer d(from);
-        *static_cast<T*>(dst) = from;
+        *static_cast<T*>(dst) = tbb::internal::move( from );
     }
 
     void spin_wait_until_my_turn( atomic<ticket>& counter, ticket k, concurrent_queue_rep_base& rb ) const ;
@@ -203,13 +200,16 @@ public:
 
     spin_mutex page_mutex;
 
-    void push( const void* item, ticket k, concurrent_queue_base_v3<T>& base ) ;
+    void push( const void* item, ticket k, concurrent_queue_base_v3<T>& base,
+        item_constructor_t construct_item ) ;
 
     bool pop( void* dst, ticket k, concurrent_queue_base_v3<T>& base ) ;
 
-    micro_queue& assign( const micro_queue& src, concurrent_queue_base_v3<T>& base ) ;
+    micro_queue& assign( const micro_queue& src, concurrent_queue_base_v3<T>& base,
+        item_constructor_t construct_item ) ;
 
-    page* make_copy( concurrent_queue_base_v3<T>& base, const page* src_page, size_t begin_in_page, size_t end_in_page, ticket& g_index ) ;
+    page* make_copy( concurrent_queue_base_v3<T>& base, const page* src_page, size_t begin_in_page,
+        size_t end_in_page, ticket& g_index, item_constructor_t construct_item ) ;
 
     void invalidate_page_and_rethrow( ticket k ) ;
 };
@@ -227,7 +227,9 @@ void micro_queue<T>::spin_wait_until_my_turn( atomic<ticket>& counter, ticket k,
 }
 
 template<typename T>
-void micro_queue<T>::push( const void* item, ticket k, concurrent_queue_base_v3<T>& base ) {
+void micro_queue<T>::push( const void* item, ticket k, concurrent_queue_base_v3<T>& base,
+    item_constructor_t construct_item )
+{
     k &= -concurrent_queue_rep_base::n_queue;
     page* p = NULL;
     size_t index = modulo_power_of_two( k/concurrent_queue_rep_base::n_queue, base.my_rep->items_per_page);
@@ -243,7 +245,7 @@ void micro_queue<T>::push( const void* item, ticket k, concurrent_queue_base_v3<
         p->next = NULL;
     }
 
-    if( tail_counter!=k ) spin_wait_until_my_turn( tail_counter, k, *base.my_rep );
+    if( tail_counter != k ) spin_wait_until_my_turn( tail_counter, k, *base.my_rep );
     call_itt_notify(acquired, &tail_counter);
 
     if( p ) {
@@ -257,8 +259,9 @@ void micro_queue<T>::push( const void* item, ticket k, concurrent_queue_base_v3<
     } else {
         p = tail_page;
     }
+
     __TBB_TRY {
-        copy_item( *p, index, item );
+        copy_item( *p, index, item, construct_item );
         // If no exception was thrown, mark item as present.
         itt_hide_store_word(p->mask,  p->mask | uintptr_t(1)<<index);
         call_itt_notify(releasing, &tail_counter);
@@ -295,10 +298,11 @@ bool micro_queue<T>::pop( void* dst, ticket k, concurrent_queue_base_v3<T>& base
 }
 
 template<typename T>
-micro_queue<T>& micro_queue<T>::assign( const micro_queue<T>& src, concurrent_queue_base_v3<T>& base ) {
+micro_queue<T>& micro_queue<T>::assign( const micro_queue<T>& src, concurrent_queue_base_v3<T>& base,
+    item_constructor_t construct_item )
+{
     head_counter = src.head_counter;
     tail_counter = src.tail_counter;
-    page_mutex   = src.page_mutex;
 
     const page* srcp = src.head_page;
     if( is_valid_page(srcp) ) {
@@ -308,12 +312,12 @@ micro_queue<T>& micro_queue<T>::assign( const micro_queue<T>& src, concurrent_qu
             size_t index = modulo_power_of_two( head_counter/concurrent_queue_rep_base::n_queue, base.my_rep->items_per_page );
             size_t end_in_first_page = (index+n_items<base.my_rep->items_per_page)?(index+n_items):base.my_rep->items_per_page;
 
-            head_page = make_copy( base, srcp, index, end_in_first_page, g_index );
+            head_page = make_copy( base, srcp, index, end_in_first_page, g_index, construct_item );
             page* cur_page = head_page;
 
             if( srcp != src.tail_page ) {
                 for( srcp = srcp->next; srcp!=src.tail_page; srcp=srcp->next ) {
-                    cur_page->next = make_copy( base, srcp, 0, base.my_rep->items_per_page, g_index );
+                    cur_page->next = make_copy( base, srcp, 0, base.my_rep->items_per_page, g_index, construct_item );
                     cur_page = cur_page->next;
                 }
 
@@ -321,7 +325,7 @@ micro_queue<T>& micro_queue<T>::assign( const micro_queue<T>& src, concurrent_qu
                 size_t last_index = modulo_power_of_two( tail_counter/concurrent_queue_rep_base::n_queue, base.my_rep->items_per_page );
                 if( last_index==0 ) last_index = base.my_rep->items_per_page;
 
-                cur_page->next = make_copy( base, srcp, 0, last_index, g_index );
+                cur_page->next = make_copy( base, srcp, 0, last_index, g_index, construct_item );
                 cur_page = cur_page->next;
             }
             tail_page = cur_page;
@@ -352,14 +356,17 @@ void micro_queue<T>::invalidate_page_and_rethrow( ticket k ) {
 }
 
 template<typename T>
-concurrent_queue_rep_base::page* micro_queue<T>::make_copy( concurrent_queue_base_v3<T>& base, const concurrent_queue_rep_base::page* src_page, size_t begin_in_page, size_t end_in_page, ticket& g_index ) {
+concurrent_queue_rep_base::page* micro_queue<T>::make_copy( concurrent_queue_base_v3<T>& base,
+    const concurrent_queue_rep_base::page* src_page, size_t begin_in_page, size_t end_in_page,
+    ticket& g_index, item_constructor_t construct_item )
+{
     concurrent_queue_page_allocator& pa = base;
     page* new_page = pa.allocate_page();
     new_page->next = NULL;
     new_page->mask = src_page->mask;
     for( ; begin_in_page!=end_in_page; ++begin_in_page, ++g_index )
         if( new_page->mask & uintptr_t(1)<<begin_in_page )
-            copy_item( *new_page, begin_in_page, *src_page, begin_in_page );
+            copy_item( *new_page, begin_in_page, *src_page, begin_in_page, construct_item );
     return new_page;
 }
 
@@ -427,6 +434,7 @@ struct concurrent_queue_rep : public concurrent_queue_rep_base {
  */
 template<typename T>
 class concurrent_queue_base_v3: public concurrent_queue_page_allocator {
+private:
     //! Internal representation
     concurrent_queue_rep<T>* my_rep;
 
@@ -440,6 +448,7 @@ protected:
 
 private:
     typedef typename micro_queue<T>::padded_page padded_page;
+    typedef typename micro_queue<T>::item_constructor_t item_constructor_t;
 
     /* override */ virtual page *allocate_page() {
         concurrent_queue_rep<T>& r = *my_rep;
@@ -472,10 +481,10 @@ protected:
     }
 
     //! Enqueue item at tail of queue
-    void internal_push( const void* src ) {
-        concurrent_queue_rep<T>& r = *my_rep;
-        ticket k = r.tail_counter++;
-        r.choose(k).push( src, k, *this );
+    void internal_push( const void* src, item_constructor_t construct_item ) {
+         concurrent_queue_rep<T>& r = *my_rep;
+         ticket k = r.tail_counter++;
+         r.choose(k).push( src, k, *this, construct_item );
     }
 
     //! Attempt to dequeue item from queue.
@@ -497,8 +506,15 @@ protected:
         throw_exception( eid_bad_alloc );
     }
 
-    //! copy internal representation
-    void assign( const concurrent_queue_base_v3& src ) ;
+    //! copy or move internal representation
+    void assign( const concurrent_queue_base_v3& src, item_constructor_t construct_item ) ;
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! swap internal representation
+    void internal_swap( concurrent_queue_base_v3& src ) {
+        std::swap( my_rep, src.my_rep );
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
 };
 
 template<typename T>
@@ -585,18 +601,20 @@ void concurrent_queue_base_v3<T>::internal_finish_clear() {
 }
 
 template<typename T>
-void concurrent_queue_base_v3<T>::assign( const concurrent_queue_base_v3& src ) {
+void concurrent_queue_base_v3<T>::assign( const concurrent_queue_base_v3& src,
+    item_constructor_t construct_item )
+{
     concurrent_queue_rep<T>& r = *my_rep;
     r.items_per_page = src.my_rep->items_per_page;
 
-    // copy concurrent_queue_rep.
+    // copy concurrent_queue_rep data
     r.head_counter = src.my_rep->head_counter;
     r.tail_counter = src.my_rep->tail_counter;
     r.n_invalid_entries = src.my_rep->n_invalid_entries;
 
-    // copy micro_queues
-    for( size_t i = 0; i<r.n_queue; ++i )
-        r.array[i].assign( src.my_rep->array[i], *this);
+    // copy or move micro_queues
+    for( size_t i = 0; i < r.n_queue; ++i )
+        r.array[i].assign( src.my_rep->array[i], *this, construct_item);
 
     __TBB_ASSERT( r.head_counter==src.my_rep->head_counter && r.tail_counter==src.my_rep->tail_counter,
             "the source concurrent queue should not be concurrently modified." );
@@ -743,7 +761,7 @@ class concurrent_queue_iterator: public concurrent_queue_iterator_base_v3<typena
     template<typename T, class A>
     friend class ::tbb::strict_ppl::concurrent_queue;
 #else
-public: // workaround for MSVC
+public:
 #endif
     //! Construct iterator pointing to head of queue.
     concurrent_queue_iterator( const concurrent_queue_base_v3<Value>& queue ) :
@@ -814,6 +832,7 @@ template<typename Container, typename Value> class concurrent_queue_iterator;
 /** Type-independent portion of concurrent_queue.
     @ingroup containers */
 class concurrent_queue_base_v3: no_copy {
+private:
     //! Internal representation
     concurrent_queue_rep* my_rep;
 
@@ -838,6 +857,8 @@ protected:
     //! Size of an item
     size_t item_size;
 
+    enum copy_specifics { copy, move };
+
 #if __TBB_PROTECTED_NESTED_CLASS_BROKEN
 public:
 #endif
@@ -858,7 +879,7 @@ protected:
     __TBB_EXPORTED_METHOD concurrent_queue_base_v3( size_t item_size );
     virtual __TBB_EXPORTED_METHOD ~concurrent_queue_base_v3();
 
-    //! Enqueue item at tail of queue
+    //! Enqueue item at tail of queue using copy operation
     void __TBB_EXPORTED_METHOD internal_push( const void* src );
 
     //! Dequeue item from head of queue
@@ -867,7 +888,7 @@ protected:
     //! Abort all pending queue operations
     void __TBB_EXPORTED_METHOD internal_abort();
 
-    //! Attempt to enqueue item onto queue.
+    //! Attempt to enqueue item onto queue using copy operation
     bool __TBB_EXPORTED_METHOD internal_push_if_not_full( const void* src );
 
     //! Attempt to dequeue item from queue.
@@ -899,10 +920,49 @@ protected:
     //! copy internal representation
     void __TBB_EXPORTED_METHOD assign( const concurrent_queue_base_v3& src ) ;
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    //! swap queues
+    void internal_swap( concurrent_queue_base_v3& src ) {
+        std::swap( my_capacity, src.my_capacity );
+        std::swap( items_per_page, src.items_per_page );
+        std::swap( item_size, src.item_size );
+        std::swap( my_rep, src.my_rep );
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+    //! Enqueues item at tail of queue using specified operation (copy or move)
+    void internal_insert_item( const void* src, copy_specifics op_type );
+
+    //! Attempts to enqueue at tail of queue using specified operation (copy or move)
+    bool internal_insert_if_not_full( const void* src, copy_specifics op_type );
+
+    //! Assigns one queue to another using specified operation (copy or move)
+    void internal_assign( const concurrent_queue_base_v3& src, copy_specifics op_type );
 private:
     virtual void copy_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) = 0;
 };
 
+//! For internal use only.
+/** Backward compatible modification of concurrent_queue_base_v3
+    @ingroup containers */
+class concurrent_queue_base_v8: public concurrent_queue_base_v3 {
+protected:
+    concurrent_queue_base_v8( size_t item_sz ) : concurrent_queue_base_v3( item_sz ) {}
+
+    //! move items
+    void __TBB_EXPORTED_METHOD move_content( concurrent_queue_base_v8& src ) ;
+
+    //! Attempt to enqueue item onto queue using move operation
+    bool __TBB_EXPORTED_METHOD internal_push_move_if_not_full( const void* src );
+
+    //! Enqueue item at tail of queue using move operation
+    void __TBB_EXPORTED_METHOD internal_push_move( const void* src );
+private:
+    friend struct micro_queue;
+    virtual void move_page_item( page& dst, size_t dindex, const page& src, size_t sindex ) = 0;
+    virtual void move_item( page& dst, size_t index, const void* src ) = 0;
+};
+
 //! Type-independent portion of concurrent_queue_iterator.
 /** @ingroup containers */
 class concurrent_queue_iterator_base_v3 {
@@ -955,15 +1015,13 @@ template<typename Container, typename Value>
 class concurrent_queue_iterator: public concurrent_queue_iterator_base,
         public std::iterator<std::forward_iterator_tag,Value> {
 
-#if !defined(_MSC_VER) || defined(__INTEL_COMPILER)
+#if !__TBB_TEMPLATE_FRIENDS_BROKEN
     template<typename T, class A>
     friend class ::tbb::concurrent_bounded_queue;
-
-    template<typename T, class A>
-    friend class ::tbb::deprecated::concurrent_queue;
 #else
-public: // workaround for MSVC
+public:
 #endif
+
     //! Construct iterator pointing to head of queue.
     concurrent_queue_iterator( const concurrent_queue_base_v3& queue ) :
         concurrent_queue_iterator_base_v3(queue,__TBB_offsetof(concurrent_queue_base_v3::padded_page<Value>,last))
diff --git a/include/tbb/internal/_concurrent_unordered_impl.h b/include/tbb/internal/_concurrent_unordered_impl.h
index 08415a1..1d5ac6a 100644
--- a/include/tbb/internal/_concurrent_unordered_impl.h
+++ b/include/tbb/internal/_concurrent_unordered_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* Container implementations in this header are based on PPL implementations 
@@ -48,6 +40,7 @@
 #include <functional>   // Need std::equal_to (in ../concurrent_unordered_*.h)
 #include <string>       // For tbb_hasher
 #include <cstring>      // Need std::memset
+#include <algorithm>    // Need std::swap
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     #pragma warning (pop)
@@ -56,7 +49,6 @@
 #include "../atomic.h"
 #include "../tbb_exception.h"
 #include "../tbb_allocator.h"
-#include "tbb/atomic.h"
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
     #include <initializer_list>
@@ -266,12 +258,21 @@ public:
         sokey_t    my_order_key; // Order key for this element
     };
 
+    // Allocate a new node with the given order key; used to allocate dummy nodes
+    nodeptr_t create_node(sokey_t order_key) {
+        nodeptr_t pnode = my_node_allocator.allocate(1);
+        pnode->init(order_key);
+        return (pnode);
+    }
+
     // Allocate a new node with the given order key and value
-    nodeptr_t create_node(sokey_t order_key, const T &value) {
+    template<typename Arg>
+    nodeptr_t create_node(sokey_t order_key, __TBB_FORWARDING_REF(Arg) t){
         nodeptr_t pnode = my_node_allocator.allocate(1);
 
+        //TODO: use RAII scoped guard instead of explicit catch
         __TBB_TRY {
-            new(static_cast<void*>(&pnode->my_element)) T(value);
+            new(static_cast<void*>(&pnode->my_element)) T(tbb::internal::forward<Arg>(t));
             pnode->init(order_key);
         } __TBB_CATCH(...) {
             my_node_allocator.deallocate(pnode, 1);
@@ -281,10 +282,19 @@ public:
         return (pnode);
     }
 
-    // Allocate a new node with the given order key; used to allocate dummy nodes
-    nodeptr_t create_node(sokey_t order_key) {
+    // Allocate a new node with the given parameters for constructing value
+    template<typename __TBB_PARAMETER_PACK Args>
+    nodeptr_t create_node_v( __TBB_FORWARDING_REF(Args) __TBB_PARAMETER_PACK args){
         nodeptr_t pnode = my_node_allocator.allocate(1);
-        pnode->init(order_key);
+
+        //TODO: use RAII scoped guard instead of explicit catch
+        __TBB_TRY {
+            new(static_cast<void*>(&pnode->my_element)) T(__TBB_PACK_EXPANSION(tbb::internal::forward<Args>(args)));
+        } __TBB_CATCH(...) {
+            my_node_allocator.deallocate(pnode, 1);
+            __TBB_RETHROW();
+        }
+
         return (pnode);
     }
 
@@ -293,7 +303,7 @@ public:
     {
         // Immediately allocate a dummy node with order key of 0. This node
         // will always be the head of the list.
-        my_head = create_node(0);
+        my_head = create_node(sokey_t(0));
     }
 
     ~split_ordered_list()
@@ -470,30 +480,27 @@ public:
         my_node_allocator.deallocate(pnode, 1);
     }
 
-    // Try to insert a new element in the list. If insert fails, return the node that
-    // was inserted instead.
-    nodeptr_t try_insert(nodeptr_t previous, nodeptr_t new_node, nodeptr_t current_node) {
+    // Try to insert a new element in the list.
+    // If insert fails, return the node that was inserted instead.
+    static nodeptr_t try_insert_atomic(nodeptr_t previous, nodeptr_t new_node, nodeptr_t current_node) {
         new_node->my_next = current_node;
         return previous->atomic_set_next(new_node, current_node);
     }
 
     // Insert a new element between passed in iterators
-    std::pair<iterator, bool> try_insert(raw_iterator it, raw_iterator next, const value_type &value, sokey_t order_key, size_type *new_count)
+    std::pair<iterator, bool> try_insert(raw_iterator it, raw_iterator next, nodeptr_t pnode, size_type *new_count)
     {
-        nodeptr_t pnode = create_node(order_key, value);
-        nodeptr_t inserted_node = try_insert(it.get_node_ptr(), pnode, next.get_node_ptr());
+        nodeptr_t inserted_node = try_insert_atomic(it.get_node_ptr(), pnode, next.get_node_ptr());
 
         if (inserted_node == pnode)
         {
             // If the insert succeeded, check that the order is correct and increment the element count
-            check_range();
-            *new_count = __TBB_FetchAndAddW((uintptr_t*)&my_element_count, uintptr_t(1));
+            check_range(it, next);
+            *new_count = tbb::internal::as_atomic(my_element_count).fetch_and_increment();
             return std::pair<iterator, bool>(iterator(pnode, this), true);
         }
         else
         {
-            // If the insert failed (element already there), then delete the new one
-            destroy_node(pnode);
             return std::pair<iterator, bool>(end(), false);
         }
     }
@@ -522,12 +529,12 @@ public:
                 __TBB_ASSERT(get_order_key(it) < order_key, "Invalid node order in the list");
 
                 // Try to insert it in the right place
-                nodeptr_t inserted_node = try_insert(it.get_node_ptr(), dummy_node, where.get_node_ptr());
+                nodeptr_t inserted_node = try_insert_atomic(it.get_node_ptr(), dummy_node, where.get_node_ptr());
 
                 if (inserted_node == dummy_node)
                 {
                     // Insertion succeeded, check the list for order violations
-                    check_range();
+                    check_range(it, where);
                     return raw_iterator(dummy_node);
                 }
                 else
@@ -595,7 +602,7 @@ public:
             nodeptr_t pnode = it.get_node_ptr();
 
             nodeptr_t dummy_node = pnode->is_dummy() ? create_node(pnode->get_order_key()) : create_node(pnode->get_order_key(), pnode->my_element);
-            previous_node = try_insert(previous_node, dummy_node, NULL);
+            previous_node = try_insert_atomic(previous_node, dummy_node, NULL);
             __TBB_ASSERT(previous_node != NULL, "Insertion must succeed");
             raw_const_iterator where = it++;
             source.erase_node(get_iterator(begin_iterator), where);
@@ -605,18 +612,29 @@ public:
 
 
 private:
+    //Need to setup private fields of split_ordered_list in move constructor and assignment of concurrent_unordered_base
+    template <typename Traits>
+    friend class concurrent_unordered_base;
 
     // Check the list for order violations
-    void check_range()
+    void check_range( raw_iterator first, raw_iterator last )
     {
 #if TBB_USE_ASSERT
-        for (raw_iterator it = raw_begin(); it != raw_end(); ++it)
+        for (raw_iterator it = first; it != last; ++it)
         {
-            raw_iterator next_iterator = it;
-            ++next_iterator;
+            raw_iterator next = it;
+            ++next;
 
-            __TBB_ASSERT(next_iterator == end() || next_iterator.get_node_ptr()->get_order_key() >= it.get_node_ptr()->get_order_key(), "!!! List order inconsistency !!!");
+            __TBB_ASSERT(next == raw_end() || get_order_key(next) >= get_order_key(it), "!!! List order inconsistency !!!");
         }
+#else
+        tbb::internal::suppress_unused_warning(first, last);
+#endif
+    }
+    void check_range()
+    {
+#if TBB_USE_ASSERT
+        check_range( raw_begin(), raw_end() );
 #endif
     }
 
@@ -630,6 +648,9 @@ template<typename Key, typename Hasher, typename Key_equality>
 class hash_compare
 {
 public:
+    typedef Hasher hasher;
+    typedef Key_equality key_equal;
+
     hash_compare() {}
 
     hash_compare(Hasher a_hasher) : my_hash_object(a_hasher) {}
@@ -648,9 +669,9 @@ public:
     Key_equality my_key_compare_object; // The equality comparator object
 };
 
-#if _MSC_VER
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
 #pragma warning(push)
-#pragma warning(disable: 4127) // warning 4127 -- while (true) has a constant expression in it (for allow_multimapping)
+#pragma warning(disable: 4127) // warning C4127: conditional expression is constant
 #endif
 
 template <typename Traits>
@@ -664,6 +685,8 @@ protected:
     typedef typename Traits::hash_compare hash_compare;
     typedef typename Traits::value_compare value_compare;
     typedef typename Traits::allocator_type allocator_type;
+    typedef typename hash_compare::hasher hasher;
+    typedef typename hash_compare::key_equal key_equal;
     typedef typename allocator_type::pointer pointer;
     typedef typename allocator_type::const_pointer const_pointer;
     typedef typename allocator_type::reference reference;
@@ -683,14 +706,24 @@ protected:
     using Traits::get_key;
     using Traits::allow_multimapping;
 
+    static const size_type initial_bucket_number = 8;                               // Initial number of buckets
 private:
     typedef std::pair<iterator, iterator> pairii_t;
     typedef std::pair<const_iterator, const_iterator> paircc_t;
 
     static size_type const pointers_per_table = sizeof(size_type) * 8;              // One bucket segment per bit
-    static const size_type initial_bucket_number = 8;                               // Initial number of buckets
     static const size_type initial_bucket_load = 4;                                // Initial maximum number of elements per bucket
 
+    struct call_internal_clear_on_exit{
+        concurrent_unordered_base* my_instance;
+        call_internal_clear_on_exit(concurrent_unordered_base* instance) : my_instance(instance) {}
+        void dismiss(){ my_instance = NULL;}
+        ~call_internal_clear_on_exit(){
+            if (my_instance){
+                my_instance->internal_clear();
+            }
+        }
+    };
 protected:
     // Constructors/Destructors
     concurrent_unordered_base(size_type n_of_buckets = initial_bucket_number,
@@ -713,25 +746,99 @@ protected:
     concurrent_unordered_base(const concurrent_unordered_base& right)
         : Traits(right.my_hash_compare), my_solist(right.get_allocator()), my_allocator(right.get_allocator())
     {
+        //FIXME:exception safety seems to be broken here
         internal_init();
         internal_copy(right);
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_base(concurrent_unordered_base&& right)
+        : Traits(right.my_hash_compare), my_solist(right.get_allocator()), my_allocator(right.get_allocator())
+    {
+        internal_init();
+        swap(right);
+    }
+
+    concurrent_unordered_base(concurrent_unordered_base&& right, const allocator_type& a)
+        : Traits(right.my_hash_compare), my_solist(a), my_allocator(a)
+    {
+        call_internal_clear_on_exit clear_buckets_on_exception(this);
+
+        internal_init();
+        if (a == right.get_allocator()){
+            this->swap(right);
+        }else{
+            my_maximum_bucket_size = right.my_maximum_bucket_size;
+            my_number_of_buckets = right.my_number_of_buckets;
+            my_solist.my_element_count = right.my_solist.my_element_count;
+
+            if (! right.my_solist.empty()){
+                nodeptr_t previous_node = my_solist.my_head;
+
+                // Move all elements one by one, including dummy ones
+                for (raw_const_iterator it = ++(right.my_solist.raw_begin()), last = right.my_solist.raw_end(); it != last; ++it)
+                {
+                    const nodeptr_t pnode = it.get_node_ptr();
+                    nodeptr_t node;
+                    if (pnode->is_dummy()) {
+                        node = my_solist.create_node(pnode->get_order_key());
+                        size_type bucket = __TBB_ReverseBits(pnode->get_order_key()) % my_number_of_buckets;
+                        set_bucket(bucket, node);
+                    }else{
+                        node = my_solist.create_node(pnode->get_order_key(), std::move(pnode->my_element));
+                    }
+
+                    previous_node = my_solist.try_insert_atomic(previous_node, node, NULL);
+                    __TBB_ASSERT(previous_node != NULL, "Insertion of node failed. Concurrent inserts in constructor ?");
+                }
+                my_solist.check_range();
+            }
+        }
+
+        clear_buckets_on_exception.dismiss();
+    }
+
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
     concurrent_unordered_base& operator=(const concurrent_unordered_base& right) {
         if (this != &right)
             internal_copy(right);
         return (*this);
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    concurrent_unordered_base& operator=(concurrent_unordered_base&& other)
+    {
+        if(this != &other){
+            typedef typename tbb::internal::allocator_traits<allocator_type>::propagate_on_container_move_assignment pocma_t;
+            if(pocma_t::value || this->my_allocator == other.my_allocator) {
+                concurrent_unordered_base trash (std::move(*this));
+                swap(other);
+                if (pocma_t::value) {
+                    using std::swap;
+                    //TODO: swapping allocators here may be a problem, replace with single direction moving
+                    swap(this->my_solist.my_node_allocator, other.my_solist.my_node_allocator);
+                    swap(this->my_allocator, other.my_allocator);
+                }
+            } else {
+                concurrent_unordered_base moved_copy(std::move(other),this->my_allocator);
+                this->swap(moved_copy);
+            }
+        }
+        return *this;
+    }
+
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
 #if __TBB_INITIALIZER_LISTS_PRESENT
     //! assignment operator from initializer_list
-    concurrent_unordered_base& operator=(std::initializer_list<value_type> const& il)
+    concurrent_unordered_base& operator=(std::initializer_list<value_type> il)
     {
         this->clear();
         this->insert(il.begin(),il.end());
         return (*this);
     }
-#endif //# __TBB_INITIALIZER_LISTS_PRESENT
+#endif // __TBB_INITIALIZER_LISTS_PRESENT
 
 
     ~concurrent_unordered_base() {
@@ -883,12 +990,49 @@ public:
         return insert(value).first;
     }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    std::pair<iterator, bool> insert(value_type&& value) {
+        return internal_insert(std::move(value));
+    }
+
+    iterator insert(const_iterator, value_type&& value) {
+        // Ignore hint
+        return insert(std::move(value)).first;
+    }
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    template<typename... Args>
+    std::pair<iterator, bool> emplace(Args&&... args) {
+        nodeptr_t pnode = my_solist.create_node_v(tbb::internal::forward<Args>(args)...);
+        const sokey_t hashed_element_key = (sokey_t) my_hash_compare(get_key(pnode->my_element));
+        const sokey_t order_key = split_order_key_regular(hashed_element_key);
+        pnode->init(order_key);
+
+        return internal_insert(pnode->my_element, pnode);
+    }
+
+    template<typename... Args>
+    iterator emplace_hint(const_iterator, Args&&... args) {
+        // Ignore hint
+        return emplace(tbb::internal::forward<Args>(args)...).first;
+    }
+
+#endif // __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
     template<class Iterator>
     void insert(Iterator first, Iterator last) {
         for (Iterator it = first; it != last; ++it)
             insert(*it);
     }
 
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    //! Insert initializer list
+    void insert(std::initializer_list<value_type> il) {
+        insert(il.begin(), il.end());
+    }
+#endif
+
     iterator unsafe_erase(const_iterator where) {
         return internal_erase(where);
     }
@@ -917,6 +1061,14 @@ public:
     }
 
     // Observers
+    hasher hash_function() const {
+        return my_hash_compare.my_hash_object;
+    }
+
+    key_equal key_eq() const {
+        return my_hash_compare.my_key_compare_object;
+    }
+
     void clear() {
         // Clear list
         my_solist.clear();
@@ -1036,12 +1188,12 @@ public:
         return my_solist.first_real_iterator(it);
     }
 
-    const_local_iterator unsafe_cbegin(size_type /*bucket*/) const {
-        return ((const self_type *) this)->begin();
+    const_local_iterator unsafe_cbegin(size_type bucket) const {
+        return ((const self_type *) this)->unsafe_begin(bucket);
     }
 
-    const_local_iterator unsafe_cend(size_type /*bucket*/) const {
-        return ((const self_type *) this)->end();
+    const_local_iterator unsafe_cend(size_type bucket) const {
+        return ((const self_type *) this)->unsafe_end(bucket);
     }
 
     // Hash policy
@@ -1119,8 +1271,9 @@ private:
         }
     }
 
+    //TODO: why not use std::distance?
     // Hash APIs
-    size_type internal_distance(const_iterator first, const_iterator last) const
+    static size_type internal_distance(const_iterator first, const_iterator last)
     {
         size_type num = 0;
 
@@ -1131,11 +1284,13 @@ private:
     }
 
     // Insert an element in the hash given its value
-    std::pair<iterator, bool> internal_insert(const value_type& value)
+    template< typename ValueType>
+    std::pair<iterator, bool> internal_insert( __TBB_FORWARDING_REF(ValueType) value, nodeptr_t pnode = NULL)
     {
         sokey_t order_key = (sokey_t) my_hash_compare(get_key(value));
         size_type bucket = order_key % my_number_of_buckets;
 
+        //TODO:refactor the get_bucket related stuff into separate function something like acquire_bucket(key_type)
         // If bucket is empty, initialize it first
         if (!is_initialized(bucket))
             init_bucket(bucket);
@@ -1153,10 +1308,16 @@ private:
 
         for (;;)
         {
-            if (where == last || solist_t::get_order_key(where) > order_key)
+            if (where == last || solist_t::get_order_key(where) > order_key ||
+                    // if multimapped, stop at the first item equal to us.
+                    (allow_multimapping && solist_t::get_order_key(where) == order_key &&
+                     !my_hash_compare(get_key(*where), get_key(value))))
             {
-                // Try to insert it in the right place
-                std::pair<iterator, bool> result = my_solist.try_insert(it, where, value, order_key, &new_count);
+                 if (!pnode)
+                     pnode = my_solist.create_node(order_key, tbb::internal::forward<ValueType>(value));
+            
+                // Try to insert 'pnode' between 'it' and 'where'
+                std::pair<iterator, bool> result = my_solist.try_insert(it, where, pnode, &new_count);
                 
                 if (result.second)
                 {
@@ -1176,12 +1337,13 @@ private:
                     continue;
                 }
             }
-            else if (!allow_multimapping && solist_t::get_order_key(where) == order_key && my_hash_compare(get_key(*where), get_key(value)) == 0)
-            {
-                // Element already in the list, return it
+            else if (!allow_multimapping && solist_t::get_order_key(where) == order_key &&
+                    my_hash_compare(get_key(*where), get_key(value)) == 0)
+            { // Element already in the list, return it
+                 if (pnode)
+                     my_solist.destroy_node(pnode);            
                 return std::pair<iterator, bool>(my_solist.get_iterator(where), false);
             }
-
             // Move the iterator forward
             it = where;
             ++where;
@@ -1225,7 +1387,8 @@ private:
     // Erase an element from the list. This is not a concurrency safe function.
     iterator internal_erase(const_iterator it)
     {
-        key_type key = get_key(*it);
+        //const reference extends lifetime of possible temporary coming from get_key
+        const key_type& key = get_key(*it);
         sokey_t order_key = (sokey_t) my_hash_compare(key);
         size_type bucket = order_key % my_number_of_buckets;
 
@@ -1397,8 +1560,8 @@ private:
     float                                                         my_maximum_bucket_size;     // Maximum size of the bucket
     atomic<raw_iterator*>                                         my_buckets[pointers_per_table]; // The segment table
 };
-#if _MSC_VER
-#pragma warning(pop) // warning 4127 -- while (true) has a constant expression in it
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
+#pragma warning(pop) // warning 4127 is back
 #endif
 
 //! Hash multiplier
@@ -1444,4 +1607,4 @@ public:
 };
 
 } // namespace tbb
-#endif// __TBB__concurrent_unordered_impl_H
+#endif // __TBB__concurrent_unordered_impl_H
diff --git a/include/tbb/internal/_flow_graph_impl.h b/include/tbb/internal/_flow_graph_impl.h
index 26bfa30..c5b73f8 100644
--- a/include/tbb/internal/_flow_graph_impl.h
+++ b/include/tbb/internal/_flow_graph_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__flow_graph_impl_H
@@ -48,23 +40,31 @@ namespace internal {
         virtual ~source_body() {}
         virtual bool operator()(Output &output) = 0;
         virtual source_body* clone() = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        virtual void reset_body() = 0;
+#endif
     };
-    
+
     //! The leaf for source_body
     template< typename Output, typename Body>
     class source_body_leaf : public source_body<Output> {
     public:
         source_body_leaf( const Body &_body ) : body(_body), init_body(_body) { }
         /*override*/ bool operator()(Output &output) { return body( output ); }
-        /*override*/ source_body_leaf* clone() { 
-            return new source_body_leaf< Output, Body >(init_body); 
+        /*override*/ source_body_leaf* clone() {
+            return new source_body_leaf< Output, Body >(init_body);
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
+        }
+#endif
         Body get_body() { return body; }
     private:
         Body body;
         Body init_body;
     };
-    
+
     //! A functor that takes an Input and generates an Output
     template< typename Input, typename Output >
     class function_body : tbb::internal::no_assign {
@@ -72,14 +72,22 @@ namespace internal {
         virtual ~function_body() {}
         virtual Output operator()(const Input &input) = 0;
         virtual function_body* clone() = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        virtual void reset_body() = 0;
+#endif
     };
-    
+
     //! the leaf for function_body
     template <typename Input, typename Output, typename B>
     class function_body_leaf : public function_body< Input, Output > {
     public:
         function_body_leaf( const B &_body ) : body(_body), init_body(_body) { }
         Output operator()(const Input &i) { return body(i); }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
+        }
+#endif
         B get_body() { return body; }
         /*override*/ function_body_leaf* clone() {
             return new function_body_leaf< Input, Output, B >(init_body);
@@ -88,55 +96,70 @@ namespace internal {
         B body;
         B init_body;
     };
-    
+
     //! the leaf for function_body specialized for Input and output of continue_msg
     template <typename B>
     class function_body_leaf< continue_msg, continue_msg, B> : public function_body< continue_msg, continue_msg > {
     public:
         function_body_leaf( const B &_body ) : body(_body), init_body(_body) { }
-        continue_msg operator()( const continue_msg &i ) { 
-            body(i); 
-            return i; 
+        continue_msg operator()( const continue_msg &i ) {
+            body(i);
+            return i;
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
         }
+#endif
         B get_body() { return body; }
         /*override*/ function_body_leaf* clone() {
            return new function_body_leaf< continue_msg, continue_msg, B >(init_body);
-        }    
+        }
     private:
         B body;
         B init_body;
     };
-    
+
     //! the leaf for function_body specialized for Output of continue_msg
     template <typename Input, typename B>
     class function_body_leaf< Input, continue_msg, B> : public function_body< Input, continue_msg > {
     public:
         function_body_leaf( const B &_body ) : body(_body), init_body(_body) { }
-        continue_msg operator()(const Input &i) { 
-            body(i); 
+        continue_msg operator()(const Input &i) {
+            body(i);
             return continue_msg();
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
+        }
+#endif
         B get_body() { return body; }
         /*override*/ function_body_leaf* clone() {
             return new function_body_leaf< Input, continue_msg, B >(init_body);
-        }    
+        }
     private:
         B body;
         B init_body;
     };
-    
+
     //! the leaf for function_body specialized for Input of continue_msg
     template <typename Output, typename B>
     class function_body_leaf< continue_msg, Output, B > : public function_body< continue_msg, Output > {
     public:
         function_body_leaf( const B &_body ) : body(_body), init_body(_body) { }
-        Output operator()(const continue_msg &i) { 
-            return body(i); 
+        Output operator()(const continue_msg &i) {
+            return body(i);
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
         }
+#endif
         B get_body() { return body; }
         /*override*/ function_body_leaf* clone() {
             return new function_body_leaf< continue_msg, Output, B >(init_body);
-        }    
+        }
     private:
         B body;
         B init_body;
@@ -144,11 +167,14 @@ namespace internal {
 
     //! function_body that takes an Input and a set of output ports
     template<typename Input, typename OutputSet>
-    class multifunction_body {
+    class multifunction_body : tbb::internal::no_assign {
     public:
         virtual ~multifunction_body () {}
         virtual void operator()(const Input &/* input*/, OutputSet &/*oset*/) = 0;
         virtual multifunction_body* clone() = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        virtual void reset_body() = 0;
+#endif
     };
 
     //! leaf for multifunction.  OutputSet can be a std::tuple or a vector.
@@ -159,6 +185,11 @@ namespace internal {
         void operator()(const Input &input, OutputSet &oset) {
             body(input, oset); // body may explicitly put() to one or more of oset.
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
+        }
+#endif
         B get_body() { return body; }
         /*override*/ multifunction_body_leaf* clone() {
             return new multifunction_body_leaf<Input, OutputSet,B>(init_body);
@@ -168,39 +199,74 @@ namespace internal {
         B init_body;
     };
 
+#if __TBB_PREVIEW_ASYNC_NODE
+
+    //! A functor that takes Input and submit it to Asynchronous Activity
+    template< typename Input, typename AsyncGateway >
+    class async_body : tbb::internal::no_assign {
+    public:
+        virtual ~async_body() {}
+        virtual void operator()(const Input &output, AsyncGateway& gateway) = 0;
+        virtual async_body* clone() = 0;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        virtual void reset_body() = 0;
+#endif
+    };
+
+    //! The leaf for async_body
+    template< typename Input, typename Body, typename AsyncGateway >
+    class async_body_leaf : public async_body< Input, AsyncGateway > {
+    public:
+        async_body_leaf( const Body &_body ) : body(_body), init_body(_body) { }
+        /*override*/ void operator()(const Input &input, AsyncGateway& gateway) { body( input, gateway ); }
+        /*override*/ async_body_leaf* clone() {
+            return new async_body_leaf< Input, Body, AsyncGateway >(init_body);
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ void reset_body() {
+            body = init_body;
+        }
+#endif
+        Body get_body() { return body; }
+    private:
+        Body body;
+        Body init_body;
+    };
+#endif
+
 // --------------------------- end of function_body containers ------------------------
 
 // --------------------------- node task bodies ---------------------------------------
-    
+
     //! A task that calls a node's forward_task function
     template< typename NodeType >
     class forward_task_bypass : public task {
-    
+
         NodeType &my_node;
-    
+
     public:
-    
+
         forward_task_bypass( NodeType &n ) : my_node(n) {}
-    
+
         task *execute() {
             task * new_task = my_node.forward_task();
             if (new_task == SUCCESSFULLY_ENQUEUED) new_task = NULL;
             return new_task;
         }
     };
-    
+
     //! A task that calls a node's apply_body_bypass function, passing in an input of type Input
     //  return the task* unless it is SUCCESSFULLY_ENQUEUED, in which case return NULL
     template< typename NodeType, typename Input >
     class apply_body_task_bypass : public task {
-    
+
         NodeType &my_node;
         Input my_input;
-        
+
     public:
-        
+
         apply_body_task_bypass( NodeType &n, const Input &i ) : my_node(n), my_input(i) {}
-        
+
         task *execute() {
             task * next_task = my_node.apply_body_bypass( my_input );
             if(next_task == SUCCESSFULLY_ENQUEUED) next_task = NULL;
@@ -211,13 +277,13 @@ namespace internal {
     //! A task that calls a node's apply_body function with no input
     template< typename NodeType >
     class source_task_bypass : public task {
-    
+
         NodeType &my_node;
-    
+
     public:
-    
+
         source_task_bypass( NodeType &n ) : my_node(n) {}
-    
+
         task *execute() {
             task *new_task = my_node.apply_body_bypass( );
             if(new_task == SUCCESSFULLY_ENQUEUED) return NULL;
@@ -230,83 +296,116 @@ namespace internal {
     //! An empty functor that takes an Input and returns a default constructed Output
     template< typename Input, typename Output >
     struct empty_body {
-       Output operator()( const Input & ) const { return Output(); } 
+       Output operator()( const Input & ) const { return Output(); }
     };
-    
-    //! A node_cache maintains a std::queue of elements of type T.  Each operation is protected by a lock. 
+
+    //! A node_cache maintains a std::queue of elements of type T.  Each operation is protected by a lock.
     template< typename T, typename M=spin_mutex >
     class node_cache {
         public:
-    
+
         typedef size_t size_type;
-        
+
         bool empty() {
             typename my_mutex_type::scoped_lock lock( my_mutex );
             return internal_empty();
         }
-    
+
         void add( T &n ) {
             typename my_mutex_type::scoped_lock lock( my_mutex );
             internal_push(n);
         }
-    
+
         void remove( T &n ) {
             typename my_mutex_type::scoped_lock lock( my_mutex );
             for ( size_t i = internal_size(); i != 0; --i ) {
                 T &s = internal_pop();
-                if ( &s != &n ) {
-                    internal_push(s);
-                }
+                if ( &s == &n )  return;  // only remove one predecessor per request
+                internal_push(s);
             }
         }
-        
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef edge_container<T> built_predecessors_type;
+        void clear() {
+            while( !my_q.empty()) (void)my_q.pop();
+            my_built_predecessors.clear();
+        }
+
+        built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+
+        typedef typename edge_container<T>::edge_list_type predecessor_list_type;
+        void internal_add_built_predecessor( T &n ) {
+            typename my_mutex_type::scoped_lock lock( my_mutex );
+            my_built_predecessors.add_edge(n);
+        }
+
+        void internal_delete_built_predecessor( T &n ) {
+            typename my_mutex_type::scoped_lock lock( my_mutex );
+            my_built_predecessors.delete_edge(n);
+        }
+
+        void copy_predecessors( predecessor_list_type &v) {
+            typename my_mutex_type::scoped_lock lock( my_mutex );
+            my_built_predecessors.copy_edges(v);
+        }
+
+        size_t predecessor_count() {
+            typename my_mutex_type::scoped_lock lock(my_mutex);
+            return (size_t)(my_built_predecessors.edge_count());
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */ 
+
     protected:
-    
+
         typedef M my_mutex_type;
         my_mutex_type my_mutex;
         std::queue< T * > my_q;
-    
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        built_predecessors_type my_built_predecessors;
+#endif
+
         // Assumes lock is held
         inline bool internal_empty( )  {
             return my_q.empty();
         }
-    
+
         // Assumes lock is held
         inline size_type internal_size( )  {
-            return my_q.size(); 
+            return my_q.size();
         }
-    
+
         // Assumes lock is held
         inline void internal_push( T &n )  {
             my_q.push(&n);
         }
-    
+
         // Assumes lock is held
         inline T &internal_pop() {
             T *v = my_q.front();
             my_q.pop();
             return *v;
         }
-    
+
     };
-    
+
     //! A cache of predecessors that only supports try_get
     template< typename T, typename M=spin_mutex >
     class predecessor_cache : public node_cache< sender<T>, M > {
     public:
         typedef M my_mutex_type;
-        typedef T output_type; 
+        typedef T output_type;
         typedef sender<output_type> predecessor_type;
         typedef receiver<output_type> successor_type;
-    
+
         predecessor_cache( ) : my_owner( NULL ) { }
-        
+
         void set_owner( successor_type *owner ) { my_owner = owner; }
-        
+
         bool get_item( output_type &v ) {
-        
+
             bool msg = false;
-        
+
             do {
                 predecessor_type *src;
                 {
@@ -316,13 +415,13 @@ namespace internal {
                     }
                     src = &this->internal_pop();
                 }
-        
+
                 // Try to get from this sender
                 msg = src->try_get( v );
-        
+
                 if (msg == false) {
                     // Relinquish ownership of the edge
-                    if ( my_owner) 
+                    if ( my_owner)
                         src->register_successor( *my_owner );
                 } else {
                     // Retain ownership of the edge
@@ -332,53 +431,55 @@ namespace internal {
             return msg;
         }
 
+        // If we are removing arcs (rf_clear_edges), call clear() rather than reset().
         void reset() {
-            if(!my_owner) {
-                return;  // retain ownership of edges
-            }
-            for(;;) {
-                predecessor_type *src;
-                {
-                    typename my_mutex_type::scoped_lock lock(this->my_mutex);
-                    if(this->internal_empty()) break;
-                    src = &this->internal_pop();
+            if(my_owner) {
+                for(;;) {
+                    predecessor_type *src;
+                    {
+                        if(this->internal_empty()) break;
+                        src = &this->internal_pop();
+                    }
+                    src->register_successor( *my_owner);
                 }
-                src->register_successor( *my_owner);
             }
         }
 
     protected:
-    
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        using node_cache< sender<T>, M >::my_built_predecessors;
+#endif
         successor_type *my_owner;
     };
-    
+
     //! An cache of predecessors that supports requests and reservations
     template< typename T, typename M=spin_mutex >
     class reservable_predecessor_cache : public predecessor_cache< T, M > {
     public:
         typedef M my_mutex_type;
-        typedef T output_type; 
+        typedef T output_type;
         typedef sender<T> predecessor_type;
         typedef receiver<T> successor_type;
-        
+
         reservable_predecessor_cache( ) : reserved_src(NULL) { }
-        
-        bool 
+
+        bool
         try_reserve( output_type &v ) {
             bool msg = false;
-        
+
             do {
                 {
                     typename my_mutex_type::scoped_lock lock(this->my_mutex);
-                    if ( reserved_src || this->internal_empty() ) 
+                    if ( reserved_src || this->internal_empty() )
                         return false;
-        
+
                     reserved_src = &this->internal_pop();
                 }
-        
+
                 // Try to get from this sender
                 msg = reserved_src->try_reserve( v );
-        
+
                 if (msg == false) {
                     typename my_mutex_type::scoped_lock lock(this->my_mutex);
                     // Relinquish ownership of the edge
@@ -389,113 +490,190 @@ namespace internal {
                     this->add( *reserved_src );
                 }
             } while ( msg == false );
-        
+
             return msg;
         }
-        
-        bool 
+
+        bool
         try_release( ) {
             reserved_src->try_release( );
             reserved_src = NULL;
             return true;
         }
-        
-        bool 
+
+        bool
         try_consume( ) {
             reserved_src->try_consume( );
             reserved_src = NULL;
             return true;
         }
 
-        void reset() {
+        void reset( ) {
+            reserved_src = NULL;
+            predecessor_cache<T,M>::reset( );
+        }
+
+        void clear() {
             reserved_src = NULL;
-            predecessor_cache<T,M>::reset();
+            predecessor_cache<T,M>::clear();
         }
-    
+
     private:
         predecessor_type *reserved_src;
     };
-    
-    
+
+
     //! An abstract cache of successors
     template<typename T, typename M=spin_rw_mutex >
     class successor_cache : tbb::internal::no_copy {
     protected:
-        
+
         typedef M my_mutex_type;
         my_mutex_type my_mutex;
-        
-        typedef std::list< receiver<T> * > my_successors_type;
+
+        typedef receiver<T> successor_type;
+        typedef receiver<T> *pointer_type;
+        typedef std::list< pointer_type > my_successors_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        edge_container<successor_type> my_built_successors;
+#endif
         my_successors_type my_successors;
-        
+
         sender<T> *my_owner;
-        
+
     public:
-        
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename edge_container<successor_type>::edge_list_type successor_list_type;
+
+        edge_container<successor_type> &built_successors() { return my_built_successors; }
+
+        void internal_add_built_successor( successor_type &r) {
+            typename my_mutex_type::scoped_lock l(my_mutex, true);
+            my_built_successors.add_edge( r );
+        }
+
+        void internal_delete_built_successor( successor_type &r) {
+            typename my_mutex_type::scoped_lock l(my_mutex, true);
+            my_built_successors.delete_edge(r);
+        }
+
+        void copy_successors( successor_list_type &v) {
+            typename my_mutex_type::scoped_lock l(my_mutex, false);
+            my_built_successors.copy_edges(v);
+        }
+
+        size_t successor_count() {
+            typename my_mutex_type::scoped_lock l(my_mutex,false);
+            return my_built_successors.edge_count();
+        }
+
+#endif /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
         successor_cache( ) : my_owner(NULL) {}
-        
+
         void set_owner( sender<T> *owner ) { my_owner = owner; }
-        
+
         virtual ~successor_cache() {}
-        
-        void register_successor( receiver<T> &r ) {
+
+        void register_successor( successor_type &r ) {
             typename my_mutex_type::scoped_lock l(my_mutex, true);
-            my_successors.push_back( &r ); 
+            my_successors.push_back( &r );
         }
-    
-        void remove_successor( receiver<T> &r ) {
+
+        void remove_successor( successor_type &r ) {
             typename my_mutex_type::scoped_lock l(my_mutex, true);
             for ( typename my_successors_type::iterator i = my_successors.begin();
-                  i != my_successors.end(); ++i ) { 
-                if ( *i == & r ) { 
+                  i != my_successors.end(); ++i ) {
+                if ( *i == & r ) {
                     my_successors.erase(i);
                     break;
                 }
             }
         }
-        
-        bool empty() { 
+
+        bool empty() {
             typename my_mutex_type::scoped_lock l(my_mutex, false);
-            return my_successors.empty(); 
+            return my_successors.empty();
+        }
+
+        void clear() {
+            my_successors.clear();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            my_built_successors.clear();
+#endif
         }
-        
-        virtual task * try_put_task( const T &t ) = 0; 
-     };
-    
-    //! An abstract cache of succesors, specialized to continue_msg
+
+        virtual task * try_put_task( const T &t ) = 0;
+     };  // successor_cache<T>
+
+    //! An abstract cache of successors, specialized to continue_msg
     template<>
     class successor_cache< continue_msg > : tbb::internal::no_copy {
     protected:
-        
+
         typedef spin_rw_mutex my_mutex_type;
         my_mutex_type my_mutex;
-        
-        typedef std::list< receiver<continue_msg> * > my_successors_type;
+
+        typedef receiver<continue_msg> successor_type;
+        typedef receiver<continue_msg> *pointer_type;
+        typedef std::list< pointer_type > my_successors_type;
         my_successors_type my_successors;
-        
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        edge_container<successor_type> my_built_successors;
+        typedef edge_container<successor_type>::edge_list_type successor_list_type;
+#endif
+
         sender<continue_msg> *my_owner;
-        
+
     public:
-        
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
+        edge_container<successor_type> &built_successors() { return my_built_successors; }
+
+        void internal_add_built_successor( successor_type &r) {
+            my_mutex_type::scoped_lock l(my_mutex, true);
+            my_built_successors.add_edge( r );
+        }
+
+        void internal_delete_built_successor( successor_type &r) {
+            my_mutex_type::scoped_lock l(my_mutex, true);
+            my_built_successors.delete_edge(r);
+        }
+
+        void copy_successors( successor_list_type &v) {
+            my_mutex_type::scoped_lock l(my_mutex, false);
+            my_built_successors.copy_edges(v);
+        }
+
+        size_t successor_count() {
+            my_mutex_type::scoped_lock l(my_mutex,false);
+            return my_built_successors.edge_count();
+        }
+
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
         successor_cache( ) : my_owner(NULL) {}
-        
+
         void set_owner( sender<continue_msg> *owner ) { my_owner = owner; }
-        
+
         virtual ~successor_cache() {}
-        
-        void register_successor( receiver<continue_msg> &r ) {
+
+        void register_successor( successor_type &r ) {
             my_mutex_type::scoped_lock l(my_mutex, true);
-            my_successors.push_back( &r ); 
+            my_successors.push_back( &r );
             if ( my_owner && r.is_continue_receiver() ) {
                 r.register_predecessor( *my_owner );
             }
         }
-        
-        void remove_successor( receiver<continue_msg> &r ) {
+
+        void remove_successor( successor_type &r ) {
             my_mutex_type::scoped_lock l(my_mutex, true);
             for ( my_successors_type::iterator i = my_successors.begin();
-                  i != my_successors.end(); ++i ) { 
-                if ( *i == & r ) { 
+                  i != my_successors.end(); ++i ) {
+                if ( *i == & r ) {
+                    // TODO: Check if we need to test for continue_receiver before
+                    // removing from r.
                     if ( my_owner )
                         r.remove_predecessor( *my_owner );
                     my_successors.erase(i);
@@ -503,26 +681,34 @@ namespace internal {
                 }
             }
         }
-    
-        bool empty() { 
+
+        bool empty() {
             my_mutex_type::scoped_lock l(my_mutex, false);
-            return my_successors.empty(); 
+            return my_successors.empty();
+        }
+
+        void clear() {
+            my_successors.clear();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            my_built_successors.clear();
+#endif
         }
-    
-        virtual task * try_put_task( const continue_msg &t ) = 0; 
-        
-     };
-    
+
+        virtual task * try_put_task( const continue_msg &t ) = 0;
+
+    };  // successor_cache< continue_msg >
+
     //! A cache of successors that are broadcast to
     template<typename T, typename M=spin_rw_mutex>
     class broadcast_cache : public successor_cache<T, M> {
         typedef M my_mutex_type;
-        typedef std::list< receiver<T> * > my_successors_type;
-        
+        // typedef std::list< receiver<T> * > my_successors_type;
+        typedef typename successor_cache<T,M>::my_successors_type my_successors_type;
+
     public:
-        
+
         broadcast_cache( ) {}
-        
+
         // as above, but call try_put_task instead, and return the last task we received (if any)
         /*override*/ task * try_put_task( const T &t ) {
             task * last_task = NULL;
@@ -549,6 +735,7 @@ namespace internal {
             }
             return last_task;
         }
+
     };
 
     //! A cache of successors that are put in a round-robin fashion
@@ -556,17 +743,18 @@ namespace internal {
     class round_robin_cache : public successor_cache<T, M> {
         typedef size_t size_type;
         typedef M my_mutex_type;
-        typedef std::list< receiver<T> * > my_successors_type;
-    
+        // typedef std::list< receiver<T> * > my_successors_type;
+        typedef typename successor_cache<T,M>::my_successors_type my_successors_type;
+
     public:
-        
+
         round_robin_cache( ) {}
-        
+
         size_type size() {
             typename my_mutex_type::scoped_lock l(this->my_mutex, false);
             return this->my_successors.size();
         }
-        
+
         /*override*/task *try_put_task( const T &t ) {
             bool upgraded = true;
             typename my_mutex_type::scoped_lock l(this->my_mutex, upgraded);
@@ -591,24 +779,24 @@ namespace internal {
             return NULL;
         }
     };
-    
+
     template<typename T>
     class decrementer : public continue_receiver, tbb::internal::no_copy {
-        
+
         T *my_node;
-        
+
         task *execute() {
             return my_node->decrement_counter();
         }
-        
+
     public:
-       
+
         typedef continue_msg input_type;
         typedef continue_msg output_type;
         decrementer( int number_of_predecessors = 0 ) : continue_receiver( number_of_predecessors ) { }
         void set_owner( T *node ) { my_node = node; }
     };
-    
+
 }
 
 #endif // __TBB__flow_graph_impl_H
diff --git a/include/tbb/internal/_flow_graph_indexer_impl.h b/include/tbb/internal/_flow_graph_indexer_impl.h
new file mode 100644
index 0000000..ae47615
--- /dev/null
+++ b/include/tbb/internal/_flow_graph_indexer_impl.h
@@ -0,0 +1,481 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB__flow_graph_indexer_impl_H
+#define __TBB__flow_graph_indexer_impl_H
+
+#ifndef __TBB_flow_graph_H
+#error Do not #include this internal file directly; use public TBB headers instead.
+#endif
+
+#include "tbb/internal/_flow_graph_types_impl.h"
+
+namespace internal {
+
+    // Output of the indexer_node is a tbb::flow::tagged_msg, and will be of
+    // the form  tagged_msg<tag, result>
+    // where the value of tag will indicate which result was put to the
+    // successor.  
+    
+    template<typename IndexerNodeBaseType, typename T, size_t K>
+    task* do_try_put(const T &v, void *p) {
+        typename IndexerNodeBaseType::output_type o(K, v);
+        return reinterpret_cast<IndexerNodeBaseType *>(p)->try_put_task(&o);
+    }
+
+    template<typename TupleTypes,int N>
+    struct indexer_helper {
+        template<typename IndexerNodeBaseType, typename PortTuple>
+        static inline void set_indexer_node_pointer(PortTuple &my_input, IndexerNodeBaseType *p) {
+            typedef typename tuple_element<N-1, TupleTypes>::type T;
+            task *(*indexer_node_put_task)(const T&, void *) = do_try_put<IndexerNodeBaseType, T, N-1>;
+            tbb::flow::get<N-1>(my_input).set_up(p, indexer_node_put_task);
+            indexer_helper<TupleTypes,N-1>::template set_indexer_node_pointer<IndexerNodeBaseType,PortTuple>(my_input, p);
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        template<typename InputTuple>
+        static inline void reset_inputs(InputTuple &my_input, reset_flags f) {
+            indexer_helper<TupleTypes,N-1>::reset_inputs(my_input, f);
+            tbb::flow::get<N-1>(my_input).reset_receiver(f);
+        }
+        template<typename InputTuple>
+        static inline void extract(InputTuple &my_input) {
+            indexer_helper<TupleTypes,N-1>::extract(my_input);
+            tbb::flow::get<N-1>(my_input).extract_receiver();
+        }
+#endif
+    };
+
+    template<typename TupleTypes>
+    struct indexer_helper<TupleTypes,1> {
+        template<typename IndexerNodeBaseType, typename PortTuple>
+        static inline void set_indexer_node_pointer(PortTuple &my_input, IndexerNodeBaseType *p) {
+            typedef typename tuple_element<0, TupleTypes>::type T;
+            task *(*indexer_node_put_task)(const T&, void *) = do_try_put<IndexerNodeBaseType, T, 0>;
+            tbb::flow::get<0>(my_input).set_up(p, indexer_node_put_task);
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        template<typename InputTuple>
+        static inline void reset_inputs(InputTuple &my_input, reset_flags f) {
+            tbb::flow::get<0>(my_input).reset_receiver(f);
+        }
+        template<typename InputTuple>
+        static inline void extract(InputTuple &my_input) {
+            tbb::flow::get<0>(my_input).extract_receiver();
+        }
+#endif
+    };
+
+    template<typename T>
+    class indexer_input_port : public receiver<T> {
+    private:
+        void* my_indexer_ptr;
+        typedef task* (* forward_function_ptr)(T const &, void* );
+        forward_function_ptr my_try_put_task;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        spin_mutex my_pred_mutex;
+        typedef typename receiver<T>::built_predecessors_type built_predecessors_type;
+        built_predecessors_type my_built_predecessors;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+    public:
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        indexer_input_port() : my_pred_mutex() {}
+        indexer_input_port( const indexer_input_port & /*other*/ ) : receiver<T>(), my_pred_mutex() {
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+        void set_up(void *p, forward_function_ptr f) {
+                my_indexer_ptr = p;
+                my_try_put_task = f;
+            }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename receiver<T>::predecessor_list_type predecessor_list_type;
+
+        /*override*/ built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+
+        /*override*/size_t predecessor_count() {
+            spin_mutex::scoped_lock l(my_pred_mutex);
+            return my_built_predecessors.edge_count();
+        }
+        /*override*/void internal_add_built_predecessor(sender<T> &p) {
+            spin_mutex::scoped_lock l(my_pred_mutex);
+            my_built_predecessors.add_edge(p);
+        }
+        /*override*/void internal_delete_built_predecessor(sender<T> &p) {
+            spin_mutex::scoped_lock l(my_pred_mutex);
+            my_built_predecessors.delete_edge(p);
+        }
+        /*override*/void copy_predecessors( predecessor_list_type &v) {
+            spin_mutex::scoped_lock l(my_pred_mutex);
+            return my_built_predecessors.copy_edges(v);
+        }
+        /*override*/void clear_predecessors() {
+            spin_mutex::scoped_lock l(my_pred_mutex);
+            my_built_predecessors.clear();
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+    protected:
+        template< typename R, typename B > friend class run_and_put_task;
+        template<typename X, typename Y> friend class internal::broadcast_cache;
+        template<typename X, typename Y> friend class internal::round_robin_cache;
+        task *try_put_task(const T &v) {
+            return my_try_put_task(v, my_indexer_ptr);
+        }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    public:
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags f)) {
+            if(f&rf_clear_edges) my_built_predecessors.clear();
+        }
+        void extract_receiver() { my_built_predecessors.receiver_extract(*this); }
+#else
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) { }
+#endif
+
+    };
+
+    template<typename InputTuple, typename OutputType, typename StructTypes>
+    class indexer_node_FE {
+    public:
+        static const int N = tbb::flow::tuple_size<InputTuple>::value;
+        typedef OutputType output_type;
+        typedef InputTuple input_type;
+
+        input_type &input_ports() { return my_inputs; }
+    protected:
+        input_type my_inputs;
+    };
+
+    //! indexer_node_base
+    template<typename InputTuple, typename OutputType, typename StructTypes>
+    class indexer_node_base : public graph_node, public indexer_node_FE<InputTuple, OutputType,StructTypes>,
+                           public sender<OutputType> {
+    protected:
+       using graph_node::my_graph;
+    public:
+        static const size_t N = tbb::flow::tuple_size<InputTuple>::value;
+        typedef OutputType output_type;
+        typedef StructTypes tuple_types;
+        typedef receiver<output_type> successor_type;
+        typedef indexer_node_FE<InputTuple, output_type,StructTypes> input_ports_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename sender<output_type>::built_successors_type built_successors_type;
+        typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
+
+    private:
+        // ----------- Aggregator ------------
+        enum op_type { reg_succ, rem_succ, try__put_task
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            , add_blt_succ, del_blt_succ,
+             blt_succ_cnt, blt_succ_cpy
+#endif
+        };
+        enum op_stat {WAIT=0, SUCCEEDED, FAILED};
+        typedef indexer_node_base<InputTuple,output_type,StructTypes> my_class;
+
+        class indexer_node_base_operation : public aggregated_operation<indexer_node_base_operation> {
+        public:
+            char type;
+            union {
+                output_type const *my_arg;
+                successor_type *my_succ;
+                task *bypass_t;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                size_t cnt_val;
+                successor_list_type *succv;
+#endif
+            };
+            indexer_node_base_operation(const output_type* e, op_type t) :
+                type(char(t)), my_arg(e) {}
+            indexer_node_base_operation(const successor_type &s, op_type t) : type(char(t)), 
+                my_succ(const_cast<successor_type *>(&s)) {}
+            indexer_node_base_operation(op_type t) : type(char(t)) {}
+        };
+
+        typedef internal::aggregating_functor<my_class, indexer_node_base_operation> my_handler;
+        friend class internal::aggregating_functor<my_class, indexer_node_base_operation>;
+        aggregator<my_handler, indexer_node_base_operation> my_aggregator;
+
+        void handle_operations(indexer_node_base_operation* op_list) {
+            indexer_node_base_operation *current;
+            while(op_list) {
+                current = op_list;
+                op_list = op_list->next;
+                switch(current->type) {
+
+                case reg_succ:
+                    my_successors.register_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+
+                case rem_succ:
+                    my_successors.remove_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case try__put_task: {
+                        current->bypass_t = my_successors.try_put_task(*(current->my_arg));
+                        __TBB_store_with_release(current->status, SUCCEEDED);  // return of try_put_task actual return value
+                    }
+                    break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_succ:
+                    my_successors.internal_add_built_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case del_blt_succ:
+                    my_successors.internal_delete_built_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_succ_cnt:
+                    current->cnt_val = my_successors.successor_count();
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_succ_cpy:
+                    my_successors.copy_successors(*(current->succv));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+                }
+            }
+        }
+        // ---------- end aggregator -----------
+    public:
+        indexer_node_base(graph& g) : graph_node(g), input_ports_type() {
+            indexer_helper<StructTypes,N>::set_indexer_node_pointer(this->my_inputs, this);
+            my_successors.set_owner(this);
+            my_aggregator.initialize_handler(my_handler(this));
+        }
+
+        indexer_node_base(const indexer_node_base& other) : graph_node(other.my_graph), input_ports_type(), sender<output_type>() {
+            indexer_helper<StructTypes,N>::set_indexer_node_pointer(this->my_inputs, this);
+            my_successors.set_owner(this);
+            my_aggregator.initialize_handler(my_handler(this));
+        }
+
+        bool register_successor(successor_type &r) {
+            indexer_node_base_operation op_data(r, reg_succ);
+            my_aggregator.execute(&op_data);
+            return op_data.status == SUCCEEDED;
+        }
+
+        bool remove_successor( successor_type &r) {
+            indexer_node_base_operation op_data(r, rem_succ);
+            my_aggregator.execute(&op_data);
+            return op_data.status == SUCCEEDED;
+        }
+
+        task * try_put_task(output_type const *v) {
+            indexer_node_base_operation op_data(v, try__put_task);
+            my_aggregator.execute(&op_data);
+            return op_data.bypass_t;
+        }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
+        built_successors_type &built_successors() { return my_successors.built_successors(); }
+
+        void internal_add_built_successor( successor_type &r) {
+            indexer_node_base_operation op_data(r, add_blt_succ);
+            my_aggregator.execute(&op_data);
+        }
+
+        void internal_delete_built_successor( successor_type &r) {
+            indexer_node_base_operation op_data(r, del_blt_succ);
+            my_aggregator.execute(&op_data);
+        }
+
+        size_t successor_count() {
+            indexer_node_base_operation op_data(blt_succ_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        void copy_successors( successor_list_type &v) {
+            indexer_node_base_operation op_data(blt_succ_cpy);
+            op_data.succv = &v;
+            my_aggregator.execute(&op_data);
+        } 
+        void extract() {
+            my_successors.built_successors().sender_extract(*this);
+            indexer_helper<StructTypes,N>::extract(this->my_inputs);
+        }
+#endif /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+    protected:
+        /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_clear_edges) {
+                my_successors.clear();
+                indexer_helper<StructTypes,N>::reset_inputs(this->my_inputs,f);
+            }
+#endif
+        }
+
+    private:
+        broadcast_cache<output_type, null_rw_mutex> my_successors;
+    };  //indexer_node_base
+
+
+    template<int N, typename InputTuple> struct input_types;
+
+    template<typename InputTuple>
+    struct input_types<1, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename internal::tagged_msg<size_t, first_type > type;
+    };
+
+    template<typename InputTuple>
+    struct input_types<2, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type> type;
+    };
+
+    template<typename InputTuple>
+    struct input_types<3, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type> type;
+    };
+    
+    template<typename InputTuple>
+    struct input_types<4, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type> type;
+    };
+    
+    template<typename InputTuple>
+    struct input_types<5, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type> type;
+    };
+    
+    template<typename InputTuple>
+    struct input_types<6, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename tuple_element<5, InputTuple>::type sixth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type, sixth_type> type;
+    };
+    
+    template<typename InputTuple>
+    struct input_types<7, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename tuple_element<5, InputTuple>::type sixth_type;
+        typedef typename tuple_element<6, InputTuple>::type seventh_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type, sixth_type,
+                                                      seventh_type> type;
+    };
+
+
+    template<typename InputTuple>
+    struct input_types<8, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename tuple_element<5, InputTuple>::type sixth_type;
+        typedef typename tuple_element<6, InputTuple>::type seventh_type;
+        typedef typename tuple_element<7, InputTuple>::type eighth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type, sixth_type,
+                                                      seventh_type, eighth_type> type;
+    };
+
+ 
+    template<typename InputTuple>
+    struct input_types<9, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename tuple_element<5, InputTuple>::type sixth_type;
+        typedef typename tuple_element<6, InputTuple>::type seventh_type;
+        typedef typename tuple_element<7, InputTuple>::type eighth_type;
+        typedef typename tuple_element<8, InputTuple>::type nineth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type, sixth_type,
+                                                      seventh_type, eighth_type, nineth_type> type;
+    };
+
+    template<typename InputTuple>
+    struct input_types<10, InputTuple> {
+        typedef typename tuple_element<0, InputTuple>::type first_type;
+        typedef typename tuple_element<1, InputTuple>::type second_type;
+        typedef typename tuple_element<2, InputTuple>::type third_type;
+        typedef typename tuple_element<3, InputTuple>::type fourth_type;
+        typedef typename tuple_element<4, InputTuple>::type fifth_type;
+        typedef typename tuple_element<5, InputTuple>::type sixth_type;
+        typedef typename tuple_element<6, InputTuple>::type seventh_type;
+        typedef typename tuple_element<7, InputTuple>::type eighth_type;
+        typedef typename tuple_element<8, InputTuple>::type nineth_type;
+        typedef typename tuple_element<9, InputTuple>::type tenth_type;
+        typedef typename internal::tagged_msg<size_t, first_type, second_type, third_type,
+                                                      fourth_type, fifth_type, sixth_type,
+                                                      seventh_type, eighth_type, nineth_type,
+                                                      tenth_type> type;
+    };
+
+    // type generators
+    template<typename OutputTuple>
+    struct indexer_types : public input_types<tuple_size<OutputTuple>::value, OutputTuple> {
+        static const int N = tbb::flow::tuple_size<OutputTuple>::value;
+        typedef typename input_types<N, OutputTuple>::type output_type;
+        typedef typename wrap_tuple_elements<N,indexer_input_port,OutputTuple>::type input_ports_type;
+        typedef internal::indexer_node_FE<input_ports_type,output_type,OutputTuple> indexer_FE_type;
+        typedef internal::indexer_node_base<input_ports_type, output_type, OutputTuple> indexer_base_type;
+    };
+
+    template<class OutputTuple>
+    class unfolded_indexer_node : public indexer_types<OutputTuple>::indexer_base_type {
+    public:
+        typedef typename indexer_types<OutputTuple>::input_ports_type input_ports_type;
+        typedef OutputTuple tuple_types;
+        typedef typename indexer_types<OutputTuple>::output_type output_type;
+    private:
+        typedef typename indexer_types<OutputTuple>::indexer_base_type base_type;
+    public:
+        unfolded_indexer_node(graph& g) : base_type(g) {}
+        unfolded_indexer_node(const unfolded_indexer_node &other) : base_type(other) {}
+    };
+
+} /* namespace internal */
+
+#endif  /* __TBB__flow_graph_indexer_impl_H */
diff --git a/include/tbb/internal/_flow_graph_item_buffer_impl.h b/include/tbb/internal/_flow_graph_item_buffer_impl.h
index 07621f2..e6bada0 100644
--- a/include/tbb/internal/_flow_graph_item_buffer_impl.h
+++ b/include/tbb/internal/_flow_graph_item_buffer_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__flow_graph_item_buffer_impl_H
@@ -33,19 +25,32 @@
 #error Do not #include this internal file directly; use public TBB headers instead.
 #endif
 
+#include "tbb/internal/_flow_graph_types_impl.h"  // for aligned_pair
+
+// in namespace tbb::flow::interface7 (included in _flow_graph_node_impl.h)
+
     //! Expandable buffer of items.  The possible operations are push, pop,
     //* tests for empty and so forth.  No mutual exclusion is built in.
+    //* objects are constructed into and explicitly-destroyed.  get_my_item gives
+    // a read-only reference to the item in the buffer.  set_my_item may be called
+    // with either an empty or occupied slot.
+
+    using internal::aligned_pair;
+    using internal::alignment_of;
+
+namespace internal {
+
     template <typename T, typename A=cache_aligned_allocator<T> >
     class item_buffer {
     public:
-        typedef T input_type;
-        typedef T output_type;
+        typedef T item_type;
+        enum buffer_item_state { no_item=0, has_item=1, reserved_item=2 };
     protected:
         typedef size_t size_type;
-        typedef std::pair< T, bool > item_type;
-        typedef typename A::template rebind<item_type>::other allocator_type;
+        typedef typename aligned_pair<item_type, buffer_item_state>::type buffer_item_type;
+        typedef typename A::template rebind<buffer_item_type>::other allocator_type;
 
-        item_type *my_array;
+        buffer_item_type *my_array;
         size_type my_array_size;
         static const size_type initial_buffer_size = 4;
         size_type my_head;
@@ -53,89 +58,167 @@
 
         bool buffer_empty() { return my_head == my_tail; }
 
-        item_type &item(size_type i) { return my_array[i & (my_array_size - 1) ]; } // may not be marked valid
+        buffer_item_type &item(size_type i) {
+            __TBB_ASSERT(!(size_type(&(my_array[i&(my_array_size-1)].second))%alignment_of<buffer_item_state>::value),NULL);
+            __TBB_ASSERT(!(size_type(&(my_array[i&(my_array_size-1)].first))%alignment_of<item_type>::value), NULL);
+            return my_array[i & (my_array_size - 1) ];
+        }
+
+        bool my_item_valid(size_type i) { return (i < my_tail) && (i >= my_head) && (item(i).second != no_item); }
+        bool my_item_reserved(size_type i) { return item(i).second == reserved_item; }
+
+        // object management in buffer
+        const item_type &get_my_item(size_t i) {
+            __TBB_ASSERT(my_item_valid(i),"attempt to get invalid item");
+            item_type *itm = (tbb::internal::punned_cast<item_type *>(&(item(i).first)));
+            return *(const item_type *)itm;
+        }
+
+        // may be called with an empty slot or a slot that has already been constructed into.
+        void set_my_item(size_t i, const item_type &o) { 
+            if(item(i).second != no_item) {
+                destroy_item(i);
+            }
+            new(&(item(i).first)) item_type(o);
+            item(i).second = has_item;
+        }
+
+        // destructively-fetch an object from the buffer
+        void fetch_item(size_t i, item_type &o) {
+            __TBB_ASSERT(my_item_valid(i), "Trying to fetch an empty slot");
+            o = get_my_item(i);  // could have std::move assign semantics
+            destroy_item(i);
+        }
+
+        // move an existing item from one slot to another.  The moved-to slot must be unoccupied,
+        // the moved-from slot must exist and not be reserved.  The after, from will be empty,
+        // to will be occupied but not reserved
+        void move_item(size_t to, size_t from) {
+            __TBB_ASSERT(!my_item_valid(to), "Trying to move to a non-empty slot");
+            __TBB_ASSERT(my_item_valid(from), "Trying to move from an empty slot");
+            set_my_item(to, get_my_item(from));   // could have std::move semantics
+            destroy_item(from);
+
+        }
+
+        // put an item in an empty slot.  Return true if successful, else false
+        bool place_item(size_t here, const item_type &me) {
+#if !TBB_DEPRECATED_SEQUENCER_DUPLICATES
+            if(my_item_valid(here)) return false;
+#endif
+            set_my_item(here, me);
+            return true;
+        }
+
+        // could be implemented with std::move semantics
+        void swap_items(size_t i, size_t j) {
+            __TBB_ASSERT(my_item_valid(i) && my_item_valid(j), "attempt to swap invalid item(s)");
+            item_type temp = get_my_item(i);
+            set_my_item(i, get_my_item(j));
+            set_my_item(j, temp);
+        }
 
-        bool item_valid(size_type i) { return item(i).second; }
+        void destroy_item(size_type i) {
+            __TBB_ASSERT(my_item_valid(i), "destruction of invalid item");
+            (tbb::internal::punned_cast<item_type *>(&(item(i).first)))->~item_type();
+            item(i).second = no_item;
+        }
 
-        void fetch_front(T &v) { __TBB_ASSERT(item_valid(my_head), "front not valid"); v = item(my_head).first; }
-        void fetch_back(T &v) { __TBB_ASSERT(item_valid(my_tail-1), "back not valid"); v = item(my_tail-1).first; }
+        // returns a copy of the front
+        void copy_front(item_type &v) {
+            __TBB_ASSERT(my_item_valid(my_head), "attempt to fetch head non-item");
+            v = get_my_item(my_head);
+        }
+        // returns a copy of the back
+        void copy_back(item_type &v) {
+            __TBB_ASSERT(my_item_valid(my_tail-1), "attempt to fetch head non-item");
+            v = get_my_item(my_tail-1);
+        }
 
-        void invalidate(size_type i) { __TBB_ASSERT(item_valid(i), "Item not valid"); item(i).second = false; }
-        void validate(size_type i) { __TBB_ASSERT(!item_valid(i), "Item already valid"); item(i).second = true; }
+        // following methods are for reservation of the front of a bufffer. 
+        void reserve_item(size_type i) { __TBB_ASSERT(my_item_valid(i) && !my_item_reserved(i), "item cannot be reserved"); item(i).second = reserved_item; }
+        void release_item(size_type i) { __TBB_ASSERT(my_item_reserved(i), "item is not reserved"); item(i).second = has_item; }
 
-        void invalidate_front() { invalidate(my_head); }
-        void validate_front() { validate(my_head); }
-        void invalidate_back() { invalidate(my_tail-1); }
+        void destroy_front() { destroy_item(my_head); ++my_head; }
+        void destroy_back() { destroy_item(my_tail-1); --my_tail; }
 
-        size_type size() { return my_tail - my_head; }
+        // we have to be able to test against a new tail value without changing my_tail
+        // grow_array doesn't work if we change my_tail when the old array is too small
+        size_type size(size_t new_tail = 0) { return (new_tail ? new_tail : my_tail) - my_head; }
         size_type capacity() { return my_array_size; }
-        bool buffer_full() { return size() == capacity(); }
+        // sequencer_node does not use this method, so we don't 
+        // need a version that passes in the new_tail value.
+        bool buffer_full() { return size() >= capacity(); }
 
         //! Grows the internal array.
         void grow_my_array( size_t minimum_size ) {
-            size_type old_size = my_array_size;
-            size_type new_size = old_size ? 2*old_size : initial_buffer_size;
+            // test that we haven't made the structure inconsistent.
+            __TBB_ASSERT(capacity() >= my_tail - my_head, "total items exceed capacity");
+            size_type new_size = my_array_size ? 2*my_array_size : initial_buffer_size;
             while( new_size<minimum_size )
                 new_size*=2;
 
-            item_type* new_array = allocator_type().allocate(new_size);
-            item_type* old_array = my_array;
+            buffer_item_type* new_array = allocator_type().allocate(new_size);
 
-            for( size_type i=0; i<new_size; ++i ) {
-                new (&(new_array[i].first)) input_type;
-                new_array[i].second = false;
+            // initialize validity to "no"
+            for( size_type i=0; i<new_size; ++i ) { new_array[i].second = no_item; }
+
+            for( size_type i=my_head; i<my_tail; ++i) {
+                if(my_item_valid(i)) {  // sequencer_node may have empty slots
+                    // placement-new copy-construct; could be std::move
+                    char *new_space = (char *)&(new_array[i&(new_size-1)].first);
+                    (void)new(new_space) item_type(get_my_item(i));
+                    new_array[i&(new_size-1)].second = item(i).second;
+                }
             }
 
-            size_t t=my_head;
-            for( size_type i=0; i<old_size; ++i, ++t )
-                new_array[t&(new_size-1)] = old_array[t&(old_size-1)];
+            clean_up_buffer(/*reset_pointers*/false);
+
             my_array = new_array;
             my_array_size = new_size;
-            if( old_array ) {
-                for( size_type i=0; i<old_size; ++i, ++t )
-                    old_array[i].first.~input_type();
-                allocator_type().deallocate(old_array,old_size);
-            }
         }
 
-        bool push_back(T &v) {
+        bool push_back(item_type &v) {
             if(buffer_full()) {
                 grow_my_array(size() + 1);
             }
-            item(my_tail) = std::make_pair( v, true );
+            set_my_item(my_tail, v);
             ++my_tail;
             return true;
         }
 
-        bool pop_back(T &v) {
-            if (!item_valid(my_tail-1)) {
+        bool pop_back(item_type &v) {
+            if (!my_item_valid(my_tail-1)) {
                 return false;
             }
-            fetch_back(v);
-            invalidate_back();
-            --my_tail;
+            copy_back(v);
+            destroy_back();
             return true;
         }
 
-        bool pop_front(T &v) {
-            if(!item_valid(my_head)) {
+        bool pop_front(item_type &v) {
+            if(!my_item_valid(my_head)) {
                 return false;
             }
-            fetch_front(v);
-            invalidate_front();
-            ++my_head;
+            copy_front(v);
+            destroy_front();
             return true;
         }
 
-        void clean_up_buffer() {
+        // This is used both for reset and for grow_my_array.  In the case of grow_my_array
+        // we want to retain the values of the head and tail.
+        void clean_up_buffer(bool reset_pointers) {
             if (my_array) {
-                for( size_type i=0; i<my_array_size; ++i ) {
-                    my_array[i].first.~input_type();
+                for( size_type i=my_head; i<my_tail; ++i ) {
+                    if(my_item_valid(i))
+                        destroy_item(i);
                 }
                 allocator_type().deallocate(my_array,my_array_size); 
             }
             my_array = NULL;
-            my_head = my_tail = my_array_size = 0;
+            if(reset_pointers) {
+                my_head = my_tail = my_array_size = 0;
+            }
         }
 
     public:
@@ -146,10 +229,10 @@
         }
 
         ~item_buffer() {
-            clean_up_buffer();
+            clean_up_buffer(/*reset_pointers*/true);
         }
 
-        void reset() { clean_up_buffer(); grow_my_array(initial_buffer_size); }
+        void reset() { clean_up_buffer(/*reset_pointers*/true); grow_my_array(initial_buffer_size); }
 
     };
 
@@ -159,11 +242,7 @@
     template<typename T, typename A=cache_aligned_allocator<T> >
     class reservable_item_buffer : public item_buffer<T, A> {
     protected:
-        using item_buffer<T, A>::buffer_empty;
-        using item_buffer<T, A>::fetch_front;
-        using item_buffer<T, A>::invalidate_front;
-        using item_buffer<T, A>::validate_front;
-        using item_buffer<T, A>::item_valid;
+        using item_buffer<T, A>::my_item_valid;
         using item_buffer<T, A>::my_head;
 
     public:
@@ -172,28 +251,29 @@
     protected:
 
         bool reserve_front(T &v) {
-            if(my_reserved || !item_valid(my_head)) return false;
+            if(my_reserved || !my_item_valid(my_head)) return false;
             my_reserved = true;
             // reserving the head
-            fetch_front(v);
-            // invalidate the head, but don't commit until consume is called
-            invalidate_front();
+            this->copy_front(v);
+            this->reserve_item(this->my_head);
             return true;
         }
 
         void consume_front() {
             __TBB_ASSERT(my_reserved, "Attempt to consume a non-reserved item");
-            ++my_head;
+            this->destroy_front();
             my_reserved = false;
         }
 
         void release_front() {
             __TBB_ASSERT(my_reserved, "Attempt to release a non-reserved item");
-            validate_front();
+            this->release_item(this->my_head);
             my_reserved = false;
         }
 
         bool my_reserved;
     };
 
+}  // namespace internal
+
 #endif // __TBB__flow_graph_item_buffer_impl_H
diff --git a/include/tbb/internal/_flow_graph_join_impl.h b/include/tbb/internal/_flow_graph_join_impl.h
index 388cc05..75f8c43 100644
--- a/include/tbb/internal/_flow_graph_join_impl.h
+++ b/include/tbb/internal/_flow_graph_join_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__flow_graph_join_impl_H
@@ -33,7 +25,7 @@
 #error Do not #include this internal file directly; use public TBB headers instead.
 #endif
 
-#include "tbb/internal/_flow_graph_types_impl.h"
+#include "_flow_graph_types_impl.h"
 
 namespace internal {
 
@@ -128,11 +120,19 @@ namespace internal {
         }
 
         template<typename InputTuple>
-        static inline void reset_inputs(InputTuple &my_input) {
-            join_helper<N-1>::reset_inputs(my_input);
-            tbb::flow::get<N-1>(my_input).reinitialize_port();
+        static inline void reset_inputs(InputTuple &my_input __TBB_PFG_RESET_ARG(__TBB_COMMA reset_flags f)) {
+            join_helper<N-1>::reset_inputs(my_input __TBB_PFG_RESET_ARG(__TBB_COMMA f));
+            tbb::flow::get<N-1>(my_input).reset_receiver(__TBB_PFG_RESET_ARG(f));
         }
-    };
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        template<typename InputTuple>
+        static inline void extract_inputs(InputTuple &my_input) {
+            join_helper<N-1>::extract_inputs(my_input);
+            tbb::flow::get<N-1>(my_input).extract_receiver();
+        }
+#endif
+    };  // join_helper<N>
 
     template< >
     struct join_helper<1> {
@@ -197,10 +197,17 @@ namespace internal {
             }
         }
         template<typename InputTuple>
-        static inline void reset_inputs(InputTuple &my_input) {
-            tbb::flow::get<0>(my_input).reinitialize_port();
+        static inline void reset_inputs(InputTuple &my_input __TBB_PFG_RESET_ARG(__TBB_COMMA reset_flags f)) {
+            tbb::flow::get<0>(my_input).reset_receiver(__TBB_PFG_RESET_ARG(f));
         }
-    };
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        template<typename InputTuple>
+        static inline void extract_inputs(InputTuple &my_input) {
+            tbb::flow::get<0>(my_input).extract_receiver();
+        }
+#endif
+    };  // join_helper<1>
 
     //! The two-phase join port
     template< typename T >
@@ -208,9 +215,17 @@ namespace internal {
     public:
         typedef T input_type;
         typedef sender<T> predecessor_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+        typedef typename receiver<input_type>::built_predecessors_type built_predecessors_type;
+#endif
     private:
         // ----------- Aggregator ------------
-        enum op_type { reg_pred, rem_pred, res_item, rel_res, con_res };
+        enum op_type { reg_pred, rem_pred, res_item, rel_res, con_res
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            , add_blt_pred, del_blt_pred, blt_pred_cnt, blt_pred_cpy
+#endif
+        };
         enum op_stat {WAIT=0, SUCCEEDED, FAILED};
         typedef reserving_port<T> my_class;
 
@@ -220,6 +235,10 @@ namespace internal {
             union {
                 T *my_arg;
                 predecessor_type *my_pred;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                size_t cnt_val;
+                predecessor_list_type *plist;
+#endif
             };
             reserving_port_operation(const T& e, op_type t) :
                 type(char(t)), my_arg(const_cast<T*>(&e)) {}
@@ -276,6 +295,24 @@ namespace internal {
                     my_predecessors.try_consume( );
                     __TBB_store_with_release(current->status, SUCCEEDED);
                     break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_pred:
+                    my_predecessors.internal_add_built_predecessor(*(current->my_pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case del_blt_pred:
+                    my_predecessors.internal_delete_built_predecessor(*(current->my_pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cnt:
+                    current->cnt_val = my_predecessors.predecessor_count();
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cpy:
+                    my_predecessors.copy_predecessors(*(current->plist));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
                 }
             }
         }
@@ -342,22 +379,53 @@ namespace internal {
             my_aggregator.execute(&op_data);
         }
 
-        void reinitialize_port() {
-            my_predecessors.reset();
-            reserved = false;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ built_predecessors_type &built_predecessors() { return my_predecessors.built_predecessors(); }
+        /*override*/void internal_add_built_predecessor(predecessor_type &src) {
+            reserving_port_operation op_data(src, add_blt_pred);
+            my_aggregator.execute(&op_data);
         }
 
-    protected:
+        /*override*/void internal_delete_built_predecessor(predecessor_type &src) {
+            reserving_port_operation op_data(src, del_blt_pred);
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/size_t predecessor_count() {
+            reserving_port_operation op_data(blt_pred_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        /*override*/void copy_predecessors(predecessor_list_type &l) {
+            reserving_port_operation op_data(blt_pred_cpy);
+            op_data.plist = &l;
+            my_aggregator.execute(&op_data);
+        }
+
+        void extract_receiver() {
+            my_predecessors.built_predecessors().receiver_extract(*this);
+        }
+
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
 
-        /*override*/void reset_receiver() {
+        /*override*/void reset_receiver( __TBB_PFG_RESET_ARG(reset_flags f)) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_clear_edges) my_predecessors.clear();
+            else
+#endif
             my_predecessors.reset();
+            reserved = false;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            __TBB_ASSERT(!(f&rf_clear_edges) || my_predecessors.empty(), "port edges not removed");
+#endif
         }
 
     private:
         forwarding_base *my_join;
         reservable_predecessor_cache< T, null_mutex > my_predecessors;
         bool reserved;
-    };
+    };  // reserving_port
 
     //! queueing join_port
     template<typename T>
@@ -366,10 +434,18 @@ namespace internal {
         typedef T input_type;
         typedef sender<T> predecessor_type;
         typedef queueing_port<T> my_node_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename receiver<input_type>::built_predecessors_type built_predecessors_type;
+        typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+#endif
 
     // ----------- Aggregator ------------
     private:
-        enum op_type { get__item, res_port, try__put_task };
+        enum op_type { get__item, res_port, try__put_task
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            , add_blt_pred, del_blt_pred, blt_pred_cnt, blt_pred_cpy 
+#endif
+        };
         enum op_stat {WAIT=0, SUCCEEDED, FAILED};
         typedef queueing_port<T> my_class;
 
@@ -378,6 +454,11 @@ namespace internal {
             char type;
             T my_val;
             T *my_arg;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            sender<T> *pred;
+            size_t cnt_val;
+            predecessor_list_type *plist;
+#endif
             task * bypass_t;
             // constructor for value parameter
             queueing_port_operation(const T& e, op_type t) :
@@ -419,7 +500,7 @@ namespace internal {
                     break;
                 case get__item:
                     if(!this->buffer_empty()) {
-                        this->fetch_front(*(current->my_arg));
+                        this->copy_front(*(current->my_arg));
                         __TBB_store_with_release(current->status, SUCCEEDED);
                     }
                     else {
@@ -427,13 +508,31 @@ namespace internal {
                     }
                     break;
                 case res_port:
-                    __TBB_ASSERT(this->item_valid(this->my_head), "No item to reset");
-                    this->invalidate_front(); ++(this->my_head);
-                    if(this->item_valid(this->my_head)) {
+                    __TBB_ASSERT(this->my_item_valid(this->my_head), "No item to reset");
+                    this->destroy_front();
+                    if(this->my_item_valid(this->my_head)) {
                         (void)my_join->decrement_port_count(true);
                     }
                     __TBB_store_with_release(current->status, SUCCEEDED);
                     break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_pred:
+                    my_built_predecessors.add_edge(*(current->pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case del_blt_pred:
+                    my_built_predecessors.delete_edge(*(current->pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cnt:
+                    current->cnt_val = my_built_predecessors.edge_count();
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cpy:
+                    my_built_predecessors.copy_edges(*(current->plist));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
                 }
             }
         }
@@ -484,19 +583,53 @@ namespace internal {
             return;
         }
 
-        void reinitialize_port() {
-            item_buffer<T>::reset();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/ built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+
+        /*override*/void internal_add_built_predecessor(sender<T> &p) {
+            queueing_port_operation op_data(add_blt_pred);
+            op_data.pred = &p;
+            my_aggregator.execute(&op_data);
         }
 
-    protected:
+        /*override*/void internal_delete_built_predecessor(sender<T> &p) {
+            queueing_port_operation op_data(del_blt_pred);
+            op_data.pred = &p;
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/size_t predecessor_count() {
+            queueing_port_operation op_data(blt_pred_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        /*override*/void copy_predecessors(predecessor_list_type &l) {
+            queueing_port_operation op_data(blt_pred_cpy);
+            op_data.plist = &l;
+            my_aggregator.execute(&op_data);
+        }
+
+        void extract_receiver() {
+            item_buffer<T>::reset(); 
+            my_built_predecessors.receiver_extract(*this);
+        }
 
-        /*override*/void reset_receiver() {
-            // nothing to do.  We queue, so no predecessor cache
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags f)) { 
+            item_buffer<T>::reset(); 
+            if (f & rf_clear_edges)
+                my_built_predecessors.clear();
         }
+#else
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) { item_buffer<T>::reset(); }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
 
     private:
         forwarding_base *my_join;
-    };
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        edge_container<sender<T> > my_built_predecessors;
+#endif
+    };  // queueing_port
 
 #include "_flow_graph_tagged_buffer_impl.h"
 
@@ -508,10 +641,16 @@ namespace internal {
         typedef tag_matching_port<T> my_node_type;  // for forwarding, if needed
         typedef function_body<input_type, tag_value> my_tag_func_type;
         typedef tagged_buffer<tag_value,T,NO_TAG> my_buffer_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename receiver<input_type>::built_predecessors_type built_predecessors_type;
+        typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+#endif
     private:
 // ----------- Aggregator ------------
     private:
-        enum op_type { try__put, get__item, res_port };
+        enum op_type { try__put, get__item, res_port,
+            add_blt_pred, del_blt_pred, blt_pred_cnt, blt_pred_cpy
+        };
         enum op_stat {WAIT=0, SUCCEEDED, FAILED};
         typedef tag_matching_port<T> my_class;
 
@@ -520,6 +659,11 @@ namespace internal {
             char type;
             T my_val;
             T *my_arg;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            predecessor_type *pred;
+            size_t cnt_val;
+            predecessor_list_type *plist;
+#endif
             tag_value my_tag_value;
             // constructor for value parameter
             tag_matching_port_operation(const T& e, op_type t) :
@@ -559,6 +703,24 @@ namespace internal {
                     this->tagged_delete(my_join->current_tag);
                     __TBB_store_with_release(current->status, SUCCEEDED);
                     break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_pred:
+                    my_built_predecessors.add_edge(*(current->pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case del_blt_pred:
+                    my_built_predecessors.delete_edge(*(current->pred));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cnt:
+                    current->cnt_val = my_built_predecessors.edge_count();
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_pred_cpy:
+                    my_built_predecessors.copy_edges(*(current->plist));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+#endif
                 }
             }
         }
@@ -621,6 +783,34 @@ namespace internal {
             return op_data.status == SUCCEEDED;
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/built_predecessors_type &built_predecessors() { return my_built_predecessors; }
+        
+        /*override*/void internal_add_built_predecessor(sender<T> &p) {
+            tag_matching_port_operation op_data(add_blt_pred);
+            op_data.pred = &p;
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/void internal_delete_built_predecessor(sender<T> &p) {
+            tag_matching_port_operation op_data(del_blt_pred);
+            op_data.pred = &p;
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/size_t predecessor_count() {
+            tag_matching_port_operation op_data(blt_pred_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        /*override*/void copy_predecessors(predecessor_list_type &l) {
+            tag_matching_port_operation op_data(blt_pred_cpy);
+            op_data.plist = &l;
+            my_aggregator.execute(&op_data);
+        }
+#endif
+
         // reset_port is called when item is accepted by successor, but
         // is initiated by join_node.
         void reset_port() {
@@ -632,19 +822,27 @@ namespace internal {
         my_tag_func_type *my_func() { return my_tag_func; }
         my_tag_func_type *my_original_func() { return my_original_tag_func; }
 
-        void reinitialize_port() {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        void extract_receiver() {
             my_buffer_type::reset();
+            my_built_predecessors.receiver_extract(*this);
         }
 
-    protected:
-
-        /*override*/void reset_receiver() {
-            // nothing to do.  We queue, so no predecessor cache
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags f)) { 
+            my_buffer_type::reset(); 
+           if (f & rf_clear_edges)
+              my_built_predecessors.clear();
         }
+#else
+        /*override*/void reset_receiver(__TBB_PFG_RESET_ARG(reset_flags /*f*/)) { my_buffer_type::reset(); }
+#endif
 
     private:
         // need map of tags to values
         forwarding_base *my_join;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        edge_container<predecessor_type> my_built_predecessors;
+#endif
         my_tag_func_type *my_tag_func;
         my_tag_func_type *my_original_tag_func;
     };  // tag_matching_port
@@ -700,12 +898,20 @@ namespace internal {
 
     protected:
 
-        void reset() {
+        void reset( __TBB_PFG_RESET_ARG( reset_flags f)) {
             // called outside of parallel contexts
             ports_with_no_inputs = N;
-            join_helper<N>::reset_inputs(my_inputs);
+            join_helper<N>::reset_inputs(my_inputs __TBB_PFG_RESET_ARG( __TBB_COMMA f));
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        void extract( ) {
+            // called outside of parallel contexts
+            ports_with_no_inputs = N;
+            join_helper<N>::extract_inputs(my_inputs);
+        }
+#endif
+
         // all methods on input ports should be called under mutual exclusion from join_node_base.
 
         bool tuple_build_may_succeed() {
@@ -727,7 +933,7 @@ namespace internal {
         input_type my_inputs;
         my_node_type *my_node;
         atomic<size_t> ports_with_no_inputs;
-    };
+    };  // join_node_FE<reserving, ... >
 
     template<typename InputTuple, typename OutputTuple>
     class join_node_FE<queueing, InputTuple, OutputTuple> : public forwarding_base {
@@ -775,11 +981,17 @@ namespace internal {
 
     protected:
 
-        void reset() {
+        void reset( __TBB_PFG_RESET_ARG( reset_flags f)) {
             reset_port_count();
-            join_helper<N>::reset_inputs(my_inputs);
+            join_helper<N>::reset_inputs(my_inputs __TBB_PFG_RESET_ARG( __TBB_COMMA f) );
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        void extract() {
+            reset_port_count();
+            join_helper<N>::extract_inputs(my_inputs);
+        }
+#endif
         // all methods on input ports should be called under mutual exclusion from join_node_base.
 
         bool tuple_build_may_succeed() {
@@ -802,7 +1014,7 @@ namespace internal {
         input_type my_inputs;
         my_node_type *my_node;
         atomic<size_t> ports_with_no_items;
-    };
+    };  // join_node_FE<queueing, ...>
 
     // tag_matching join input port.
     template<typename InputTuple, typename OutputTuple>
@@ -887,8 +1099,7 @@ namespace internal {
                 switch(current->type) {
                 case res_count:  // called from BE
                     {
-                        output_type l_out;
-                        this->pop_front(l_out);  // don't care about returned value.
+                        this->destroy_front();
                         __TBB_store_with_release(current->status, SUCCEEDED);
                     }
                     break;
@@ -918,7 +1129,7 @@ namespace internal {
                         __TBB_store_with_release(current->status, FAILED);
                     }
                     else {
-                        this->fetch_front(*(current->my_output));
+                        this->copy_front(*(current->my_output));
                         __TBB_store_with_release(current->status, SUCCEEDED);
                     }
                     break;
@@ -968,15 +1179,24 @@ namespace internal {
 
     protected:
 
-        void reset() {
+        void reset( __TBB_PFG_RESET_ARG( reset_flags f )) {
             // called outside of parallel contexts
-            join_helper<N>::reset_inputs(my_inputs);
+            join_helper<N>::reset_inputs(my_inputs __TBB_PFG_RESET_ARG( __TBB_COMMA f));
 
             my_tag_buffer::reset();  // have to reset the tag counts
             output_buffer_type::reset();  // also the queue of outputs
             my_node->current_tag = NO_TAG;
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        void extract() {
+            // called outside of parallel contexts
+            join_helper<N>::extract_inputs(my_inputs);
+            my_tag_buffer::reset();  // have to reset the tag counts
+            output_buffer_type::reset();  // also the queue of outputs
+            my_node->current_tag = NO_TAG;
+        }
+#endif
         // all methods on input ports should be called under mutual exclusion from join_node_base.
 
         bool tuple_build_may_succeed() {  // called from back-end
@@ -1020,10 +1240,18 @@ namespace internal {
         using input_ports_type::try_to_make_tuple;
         using input_ports_type::tuple_accepted;
         using input_ports_type::tuple_rejected;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename sender<output_type>::built_successors_type built_successors_type;
+        typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
 
     private:
         // ----------- Aggregator ------------
-        enum op_type { reg_succ, rem_succ, try__get, do_fwrd, do_fwrd_bypass };
+        enum op_type { reg_succ, rem_succ, try__get, do_fwrd, do_fwrd_bypass
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            , add_blt_succ, del_blt_succ, blt_succ_cnt, blt_succ_cpy
+#endif
+        };
         enum op_stat {WAIT=0, SUCCEEDED, FAILED};
         typedef join_node_base<JP,InputTuple,OutputTuple> my_class;
 
@@ -1033,6 +1261,10 @@ namespace internal {
             union {
                 output_type *my_arg;
                 successor_type *my_succ;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                size_t cnt_val;
+                successor_list_type *slist;
+#endif
             };
             task *bypass_t;
             join_node_base_operation(const output_type& e, op_type t) : type(char(t)),
@@ -1105,6 +1337,24 @@ namespace internal {
                         forwarder_busy = false;
                     }
                     break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_succ:
+                    my_successors.internal_add_built_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case del_blt_succ:
+                    my_successors.internal_delete_built_successor(*(current->my_succ));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_succ_cnt:
+                    current->cnt_val = my_successors.successor_count();
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+                case blt_succ_cpy:
+                    my_successors.copy_successors(*(current->slist));
+                    __TBB_store_with_release(current->status, SUCCEEDED);
+                    break;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
                 }
             }
         }
@@ -1149,10 +1399,46 @@ namespace internal {
             return op_data.status == SUCCEEDED;
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/built_successors_type &built_successors() { return my_successors.built_successors(); }
+
+        /*override*/void internal_add_built_successor( successor_type &r) {
+            join_node_base_operation op_data(r, add_blt_succ);
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/void internal_delete_built_successor( successor_type &r) {
+            join_node_base_operation op_data(r, del_blt_succ);
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/size_t successor_count() {
+            join_node_base_operation op_data(blt_succ_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        /*override*/ void copy_successors(successor_list_type &l) {
+            join_node_base_operation op_data(blt_succ_cpy);
+            op_data.slist = &l;
+            my_aggregator.execute(&op_data);
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/void extract() {
+            input_ports_type::extract();
+            my_successors.built_successors().sender_extract(*this);
+        }
+#endif
+
     protected:
 
-        /*override*/void reset() {
-            input_ports_type::reset();
+        /*override*/void reset_node(__TBB_PFG_RESET_ARG(reset_flags f)) {
+            input_ports_type::reset(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_clear_edges) my_successors.clear();
+#endif
         }
 
     private:
@@ -1206,11 +1492,11 @@ namespace internal {
         typedef typename internal::function_body<T1, tag_value> *f1_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p > func_initializer_type;
     public:
-        template<typename B0, typename B1>
-        unfolded_join_node(graph &g, B0 b0, B1 b1) : base_type(g,
+        template<typename Body0, typename Body1>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1) : base_type(g,
                 func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1)
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1231,12 +1517,12 @@ namespace internal {
         typedef typename internal::function_body<T2, tag_value> *f2_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2) : base_type(g,
+        template<typename Body0, typename Body1, typename Body2>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2) : base_type(g,
                 func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2)
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1259,13 +1545,13 @@ namespace internal {
         typedef typename internal::function_body<T3, tag_value> *f3_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3) : base_type(g,
+        template<typename Body0, typename Body1, typename Body2, typename Body3>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3) : base_type(g,
                 func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3)
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1290,14 +1576,14 @@ namespace internal {
         typedef typename internal::function_body<T4, tag_value> *f4_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4) : base_type(g,
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4) : base_type(g,
                 func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4)
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1325,15 +1611,15 @@ namespace internal {
         typedef typename internal::function_body<T5, tag_value> *f5_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p, f5_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4, typename B5>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4, B5 b5) : base_type(g,
-                func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4),
-                    new internal::function_body_leaf<T5, tag_value, B5>(b5)
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4, typename Body5>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4, Body5 body5)
+                : base_type(g, func_initializer_type(
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4),
+                    new internal::function_body_leaf<T5, tag_value, Body5>(body5)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1364,16 +1650,17 @@ namespace internal {
         typedef typename internal::function_body<T6, tag_value> *f6_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p, f5_p, f6_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4, typename B5, typename B6>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4, B5 b5, B6 b6) : base_type(g,
-                func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4),
-                    new internal::function_body_leaf<T5, tag_value, B5>(b5),
-                    new internal::function_body_leaf<T6, tag_value, B6>(b6)
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4,
+                 typename Body5, typename Body6>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4,
+                Body5 body5, Body6 body6) : base_type(g, func_initializer_type(
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4),
+                    new internal::function_body_leaf<T5, tag_value, Body5>(body5),
+                    new internal::function_body_leaf<T6, tag_value, Body6>(body6)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1406,17 +1693,18 @@ namespace internal {
         typedef typename internal::function_body<T7, tag_value> *f7_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p, f5_p, f6_p, f7_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4, typename B5, typename B6, typename B7>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4, B5 b5, B6 b6, B7 b7) : base_type(g,
-                func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4),
-                    new internal::function_body_leaf<T5, tag_value, B5>(b5),
-                    new internal::function_body_leaf<T6, tag_value, B6>(b6),
-                    new internal::function_body_leaf<T7, tag_value, B7>(b7)
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4,
+                 typename Body5, typename Body6, typename Body7>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4,
+                Body5 body5, Body6 body6, Body7 body7) : base_type(g, func_initializer_type(
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4),
+                    new internal::function_body_leaf<T5, tag_value, Body5>(body5),
+                    new internal::function_body_leaf<T6, tag_value, Body6>(body6),
+                    new internal::function_body_leaf<T7, tag_value, Body7>(body7)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1451,18 +1739,19 @@ namespace internal {
         typedef typename internal::function_body<T8, tag_value> *f8_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p, f5_p, f6_p, f7_p, f8_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4, typename B5, typename B6, typename B7, typename B8>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4, B5 b5, B6 b6, B7 b7, B8 b8) : base_type(g,
-                func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4),
-                    new internal::function_body_leaf<T5, tag_value, B5>(b5),
-                    new internal::function_body_leaf<T6, tag_value, B6>(b6),
-                    new internal::function_body_leaf<T7, tag_value, B7>(b7),
-                    new internal::function_body_leaf<T8, tag_value, B8>(b8)
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4,
+                 typename Body5, typename Body6, typename Body7, typename Body8>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4,
+                Body5 body5, Body6 body6, Body7 body7, Body8 body8) : base_type(g, func_initializer_type(
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4),
+                    new internal::function_body_leaf<T5, tag_value, Body5>(body5),
+                    new internal::function_body_leaf<T6, tag_value, Body6>(body6),
+                    new internal::function_body_leaf<T7, tag_value, Body7>(body7),
+                    new internal::function_body_leaf<T8, tag_value, Body8>(body8)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
@@ -1499,19 +1788,20 @@ namespace internal {
         typedef typename internal::function_body<T9, tag_value> *f9_p;
         typedef typename tbb::flow::tuple< f0_p, f1_p, f2_p, f3_p, f4_p, f5_p, f6_p, f7_p, f8_p, f9_p > func_initializer_type;
     public:
-        template<typename B0, typename B1, typename B2, typename B3, typename B4, typename B5, typename B6, typename B7, typename B8, typename B9>
-        unfolded_join_node(graph &g, B0 b0, B1 b1, B2 b2, B3 b3, B4 b4, B5 b5, B6 b6, B7 b7, B8 b8, B9 b9) : base_type(g,
-                func_initializer_type(
-                    new internal::function_body_leaf<T0, tag_value, B0>(b0),
-                    new internal::function_body_leaf<T1, tag_value, B1>(b1),
-                    new internal::function_body_leaf<T2, tag_value, B2>(b2),
-                    new internal::function_body_leaf<T3, tag_value, B3>(b3),
-                    new internal::function_body_leaf<T4, tag_value, B4>(b4),
-                    new internal::function_body_leaf<T5, tag_value, B5>(b5),
-                    new internal::function_body_leaf<T6, tag_value, B6>(b6),
-                    new internal::function_body_leaf<T7, tag_value, B7>(b7),
-                    new internal::function_body_leaf<T8, tag_value, B8>(b8),
-                    new internal::function_body_leaf<T9, tag_value, B9>(b9)
+        template<typename Body0, typename Body1, typename Body2, typename Body3, typename Body4,
+            typename Body5, typename Body6, typename Body7, typename Body8, typename Body9>
+        unfolded_join_node(graph &g, Body0 body0, Body1 body1, Body2 body2, Body3 body3, Body4 body4,
+                Body5 body5, Body6 body6, Body7 body7, Body8 body8, Body9 body9) : base_type(g, func_initializer_type(
+                    new internal::function_body_leaf<T0, tag_value, Body0>(body0),
+                    new internal::function_body_leaf<T1, tag_value, Body1>(body1),
+                    new internal::function_body_leaf<T2, tag_value, Body2>(body2),
+                    new internal::function_body_leaf<T3, tag_value, Body3>(body3),
+                    new internal::function_body_leaf<T4, tag_value, Body4>(body4),
+                    new internal::function_body_leaf<T5, tag_value, Body5>(body5),
+                    new internal::function_body_leaf<T6, tag_value, Body6>(body6),
+                    new internal::function_body_leaf<T7, tag_value, Body7>(body7),
+                    new internal::function_body_leaf<T8, tag_value, Body8>(body8),
+                    new internal::function_body_leaf<T9, tag_value, Body9>(body9)
                     ) ) {}
         unfolded_join_node(const unfolded_join_node &other) : base_type(other) {}
     };
diff --git a/include/tbb/internal/_flow_graph_node_impl.h b/include/tbb/internal/_flow_graph_node_impl.h
index a387648..b014857 100644
--- a/include/tbb/internal/_flow_graph_node_impl.h
+++ b/include/tbb/internal/_flow_graph_node_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__flow_graph_node_impl_H
@@ -59,18 +51,31 @@ namespace internal {
     //  call and any handling of the result.
     template< typename Input, typename A, typename ImplType >
     class function_input_base : public receiver<Input>, tbb::internal::no_assign {
-        typedef sender<Input> predecessor_type;
         enum op_stat {WAIT=0, SUCCEEDED, FAILED};
-        enum op_type {reg_pred, rem_pred, app_body, try_fwd, tryput_bypass, app_body_bypass };
+        enum op_type {reg_pred, rem_pred, app_body, try_fwd, tryput_bypass, app_body_bypass
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            , add_blt_pred, del_blt_pred,
+            blt_pred_cnt, blt_pred_cpy   // create vector copies of preds and succs
+#endif 
+        };
         typedef function_input_base<Input, A, ImplType> my_class;
         
     public:
 
         //! The input type of this receiver
         typedef Input input_type;
-        
+        typedef sender<Input> predecessor_type;
+        typedef predecessor_cache<input_type, null_mutex > predecessor_cache_type;
+        typedef function_input_queue<input_type, A> input_queue_type;
+        typedef typename A::template rebind< input_queue_type >::other queue_allocator_type;
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename predecessor_cache_type::built_predecessors_type built_predecessors_type;
+        typedef typename receiver<input_type>::predecessor_list_type predecessor_list_type;
+#endif
+
         //! Constructor for function_input_base
-        function_input_base( graph &g, size_t max_concurrency, function_input_queue<input_type,A> *q = NULL )
+        function_input_base( graph &g, size_t max_concurrency, input_queue_type *q = NULL)
             : my_graph(g), my_max_concurrency(max_concurrency), my_concurrency(0),
               my_queue(q), forwarder_busy(false) {
             my_predecessors.set_owner(this);
@@ -78,7 +83,7 @@ namespace internal {
         }
         
         //! Copy constructor
-        function_input_base( const function_input_base& src, function_input_queue<input_type,A> *q = NULL ) :
+        function_input_base( const function_input_base& src, input_queue_type *q = NULL) :
             receiver<Input>(), tbb::internal::no_assign(),
             my_graph(src.my_graph), my_max_concurrency(src.my_max_concurrency),
             my_concurrency(0), my_queue(q), forwarder_busy(false)
@@ -88,6 +93,9 @@ namespace internal {
         }
 
         //! Destructor
+        // The queue is allocated by the constructor for {multi}function_node.
+        // TODO: pass the graph_buffer_policy to the base so it can allocate the queue instead.
+        // This would be an interface-breaking change.
         virtual ~function_input_base() { 
             if ( my_queue ) delete my_queue;
         }
@@ -122,25 +130,64 @@ namespace internal {
             return true;
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        //! Adds to list of predecessors added by make_edge
+        /*override*/ void internal_add_built_predecessor( predecessor_type &src) {
+            my_operation op_data(add_blt_pred);
+            op_data.r = &src;
+            my_aggregator.execute(&op_data);
+        }
+
+        //! removes from to list of predecessors (used by remove_edge)
+        /*override*/ void internal_delete_built_predecessor( predecessor_type &src) {
+            my_operation op_data(del_blt_pred);
+            op_data.r = &src;
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/ size_t predecessor_count() {
+            my_operation op_data(blt_pred_cnt);
+            my_aggregator.execute(&op_data);
+            return op_data.cnt_val;
+        }
+
+        /*override*/ void copy_predecessors(predecessor_list_type &v) {
+            my_operation op_data(blt_pred_cpy);
+            op_data.predv = &v;
+            my_aggregator.execute(&op_data);
+        }
+
+        /*override*/built_predecessors_type &built_predecessors() {
+            return my_predecessors.built_predecessors();
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
     protected:
 
-        void reset_function_input_base() {
+        void reset_function_input_base( __TBB_PFG_RESET_ARG(reset_flags f)) {
             my_concurrency = 0;
             if(my_queue) {
                 my_queue->reset();
             }
-            my_predecessors.reset();
+            reset_receiver(__TBB_PFG_RESET_ARG(f));
             forwarder_busy = false;
         }
 
         graph& my_graph;
         const size_t my_max_concurrency;
         size_t my_concurrency;
-        function_input_queue<input_type, A> *my_queue;
+        input_queue_type *my_queue;
         predecessor_cache<input_type, null_mutex > my_predecessors;
         
-        /*override*/void reset_receiver() {
-            my_predecessors.reset();
+        /*override*/void reset_receiver( __TBB_PFG_RESET_ARG(reset_flags f)) {
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if( f & rf_clear_edges) my_predecessors.clear();
+            else
+#endif
+                my_predecessors.reset();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            __TBB_ASSERT(!(f & rf_clear_edges) || my_predecessors.empty(), "function_input_base reset failed");
+#endif
         }
 
     private:
@@ -154,6 +201,10 @@ namespace internal {
             union {
                 input_type *elem;
                 predecessor_type *r;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                size_t cnt_val;
+                predecessor_list_type *predv;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
             };
             tbb::task *bypass_t;
             my_operation(const input_type& e, op_type t) :
@@ -223,7 +274,26 @@ namespace internal {
                     break;
                 case tryput_bypass: internal_try_put_task(tmp);  break;
                 case try_fwd: internal_forward(tmp);  break;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+                case add_blt_pred: {
+                         my_predecessors.internal_add_built_predecessor(*(tmp->r));
+                        __TBB_store_with_release(tmp->status, SUCCEEDED);
                     }
+                    break;
+                case del_blt_pred:
+                    my_predecessors.internal_delete_built_predecessor(*(tmp->r));
+                    __TBB_store_with_release(tmp->status, SUCCEEDED);
+                    break;
+                case blt_pred_cnt:
+                    tmp->cnt_val = my_predecessors.predecessor_count();
+                    __TBB_store_with_release(tmp->status, SUCCEEDED);
+                    break;
+                case blt_pred_cpy:
+                    my_predecessors.copy_predecessors( *(tmp->predv) );
+                    __TBB_store_with_release(tmp->status, SUCCEEDED);
+                    break;
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+                }
             }
         }
         
@@ -349,10 +419,9 @@ namespace internal {
         typedef function_input_base<Input, A, my_class> base_type;
         typedef function_input_queue<input_type, A> input_queue_type;
 
-
         // constructor
         template<typename Body>
-        function_input( graph &g, size_t max_concurrency, Body& body, function_input_queue<input_type,A> *q = NULL ) :
+        function_input( graph &g, size_t max_concurrency, Body& body, input_queue_type *q = NULL ) :
             base_type(g, max_concurrency, q),
             my_body( new internal::function_body_leaf< input_type, output_type, Body>(body) ) {
         }
@@ -389,8 +458,11 @@ namespace internal {
 
     protected:
 
-        void reset_function_input() { 
-            base_type::reset_function_input_base();
+        void reset_function_input(__TBB_PFG_RESET_ARG(reset_flags f)) {
+            base_type::reset_function_input_base(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_reset_bodies) my_body->reset_body();
+#endif
         }
 
         function_body<input_type, output_type> *my_body;
@@ -398,25 +470,64 @@ namespace internal {
 
     };  // function_input
 
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    // helper templates to clear the successor edges of the output ports of an multifunction_node
+    template<int N> struct clear_element {
+        template<typename P> static void clear_this(P &p) {
+            (void)tbb::flow::get<N-1>(p).successors().clear();
+            clear_element<N-1>::clear_this(p);
+        }
+        template<typename P> static bool this_empty(P &p) {
+            if(tbb::flow::get<N-1>(p).successors().empty()) 
+                return clear_element<N-1>::this_empty(p);
+            return false;
+        }
+    };
+
+    template<> struct clear_element<1> {
+        template<typename P> static void clear_this(P &p) {
+            (void)tbb::flow::get<0>(p).successors().clear();
+        }
+        template<typename P> static bool this_empty(P &p) {
+            return tbb::flow::get<0>(p).successors().empty();
+        }
+    };
+
+    // helper templates to extract the output ports of an multifunction_node from graph
+    template<int N> struct extract_element {
+        template<typename P> static void extract_this(P &p) {
+            (void)tbb::flow::get<N-1>(p).successors().built_successors().sender_extract(tbb::flow::get<N-1>(p));
+            extract_element<N-1>::extract_this(p);
+        }
+    };
+
+    template<> struct extract_element<1> {
+        template<typename P> static void extract_this(P &p) {
+            (void)tbb::flow::get<0>(p).successors().built_successors().sender_extract(tbb::flow::get<0>(p));
+        }
+    };
+#endif
+
     //! Implements methods for a function node that takes a type Input as input
     //  and has a tuple of output ports specified.  
     template< typename Input, typename OutputPortSet, typename A>
     class multifunction_input : public function_input_base<Input, A, multifunction_input<Input,OutputPortSet,A> > {
     public:
+        static const int N = tbb::flow::tuple_size<OutputPortSet>::value;
         typedef Input input_type;
         typedef OutputPortSet output_ports_type;
         typedef multifunction_input<Input,OutputPortSet,A> my_class;
         typedef function_input_base<Input, A, my_class> base_type;
         typedef function_input_queue<input_type, A> input_queue_type;
 
-
         // constructor
         template<typename Body>
-        multifunction_input( 
-                graph &g, 
-                size_t max_concurrency, 
+        multifunction_input(
+                graph &g,
+                size_t max_concurrency,
                 Body& body,
-                function_input_queue<input_type,A> *q = NULL ) :
+                input_queue_type *q = NULL ) :
             base_type(g, max_concurrency, q),
             my_body( new internal::multifunction_body_leaf<input_type, output_ports_type, Body>(body) ) {
         }
@@ -450,9 +561,19 @@ namespace internal {
         output_ports_type &output_ports(){ return my_output_ports; }
 
     protected:
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        /*override*/void extract() {
+            extract_element<N>::extract_this(my_output_ports);
+        }
+#endif
 
-        void reset() {
-            base_type::reset_function_input_base();
+        /*override*/void reset(__TBB_PFG_RESET_ARG(reset_flags f)) { 
+            base_type::reset_function_input_base(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_clear_edges)clear_element<N>::clear_this(my_output_ports);
+            if(f & rf_reset_bodies) my_body->reset_body();
+            __TBB_ASSERT(!(f & rf_clear_edges) || clear_element<N>::this_empty(my_output_ports), "multifunction_node reset failed");
+#endif
         }
 
         multifunction_body<input_type, output_ports_type> *my_body;
@@ -518,6 +639,13 @@ namespace internal {
             return dynamic_cast< internal::function_body_leaf<input_type, output_type, Body> & >(body_ref).get_body(); 
         } 
 
+        /*override*/void reset_receiver( __TBB_PFG_RESET_ARG(reset_flags f)) {
+            continue_receiver::reset_receiver(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_reset_bodies) my_body->reset_body();
+#endif
+        }
+
     protected:
         
         graph* my_graph_ptr;
@@ -551,13 +679,81 @@ namespace internal {
         }
 
     };  // continue_input
+
+#if __TBB_PREVIEW_ASYNC_NODE
+
+    //! Implements methods for a async node that takes a type Input as input and 
+    //  submit it to Asynchronous activity
+    template < typename Input, typename A, typename AsyncGatewayType >
+    class async_input : public function_input_base<Input, A, async_input<Input, A, AsyncGatewayType> > {
+    public:
+        typedef Input input_type;
+        typedef AsyncGatewayType async_gateway_type;
+        typedef async_input< Input, A, async_gateway_type > my_class;
+        typedef function_input_base<Input, A, my_class> base_type;
+
+        // constructor
+        template<typename Body>
+        async_input( graph &g, Body& body ) : 
+            base_type( g, unlimited ),
+            my_body( new internal::async_body_leaf< input_type, Body, async_gateway_type >(body) ){
+        }
+
+        //! Copy constructor
+        async_input( const async_input& src ) : 
+            base_type( src ),
+            my_body( src.my_body->clone() ) {
+        }
+
+        ~async_input() {
+            delete my_body;
+        }
+
+        template< typename Body >
+        Body copy_function_object() {
+            internal::async_body<input_type, async_gateway_type> &body_ref = *this->my_body;
+            return dynamic_cast< internal::async_body_leaf<input_type, Body, async_gateway_type> & >(body_ref).get_body(); 
+        }
+
+        task * apply_body_impl_bypass( const input_type &i) {
+            // TODO: This FGT instrumentation only captures the submission of the work
+            // but not the async thread activity.
+            // We will have to think about the best way to capture that.
+            tbb::internal::fgt_begin_body( my_body );
+            (*my_body)( i, async_gateway() );
+            tbb::internal::fgt_end_body( my_body );
+            return NULL;
+        }
+
+        virtual async_gateway_type& async_gateway() = 0;
+
+    protected:
+        void reset_async_input(__TBB_PFG_RESET_ARG(reset_flags f)) {
+            base_type::reset_function_input_base(__TBB_PFG_RESET_ARG(f));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            if(f & rf_reset_bodies) my_body->reset_body();
+#endif
+        }
+
+        async_body< input_type, async_gateway_type > *my_body;
+    };
+#endif // __TBB_PREVIEW_ASYNC_NODE
         
     //! Implements methods for both executable and function nodes that puts Output to its successors
     template< typename Output >
     class function_output : public sender<Output> {
     public:
         
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        template<int N> friend struct clear_element;
+#endif
         typedef Output output_type;
+        typedef receiver<output_type> successor_type;
+        typedef broadcast_cache<output_type> broadcast_cache_type;
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename sender<output_type>::built_successors_type built_successors_type;
+        typedef typename sender<output_type>::successor_list_type successor_list_type;
+#endif
         
         function_output() { my_successors.set_owner(this); }
         function_output(const function_output & /*other*/) : sender<output_type>() {
@@ -576,18 +772,40 @@ namespace internal {
             return true;
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        built_successors_type &built_successors() { return successors().built_successors(); }
+
+
+        /*override*/ void internal_add_built_successor( receiver<output_type> &r) {
+            successors().internal_add_built_successor( r );
+        }
+
+        /*override*/ void internal_delete_built_successor( receiver<output_type> &r) {
+            successors().internal_delete_built_successor( r );
+        }
+
+        /*override*/ size_t successor_count() {
+            return successors().successor_count();
+        }
+
+        /*override*/ void  copy_successors( successor_list_type &v) {
+            successors().copy_successors(v);
+        }
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
         // for multifunction_node.  The function_body that implements
         // the node will have an input and an output tuple of ports.  To put
         // an item to a successor, the body should
         //
         //    get<I>(output_ports).try_put(output_value);
         //
+        // if task pointer is returned will always spawn and return true, else
         // return value will be bool returned from successors.try_put.
         task *try_put_task(const output_type &i) { return my_successors.try_put_task(i); }
           
+        broadcast_cache_type &successors() { return my_successors; } 
     protected:
-        broadcast_cache<output_type> my_successors;
-        broadcast_cache<output_type > &successors() { return my_successors; } 
+        broadcast_cache_type my_successors;
         
     };  // function_output
 
diff --git a/include/tbb/internal/_flow_graph_or_impl.h b/include/tbb/internal/_flow_graph_or_impl.h
deleted file mode 100644
index 395c2fc..0000000
--- a/include/tbb/internal/_flow_graph_or_impl.h
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-#ifndef __TBB__flow_graph_or_impl_H
-#define __TBB__flow_graph_or_impl_H
-
-#ifndef __TBB_flow_graph_H
-#error Do not #include this internal file directly; use public TBB headers instead.
-#endif
-
-#if TBB_PREVIEW_GRAPH_NODES
-#include "tbb/internal/_flow_graph_types_impl.h"
-
-namespace internal {
-
-    // Output of the or_node is a struct containing a tbb::flow::tuple, and will be of
-    // the form
-    //
-    //  struct {
-    //     size_t indx;
-    //     tuple_types result;
-    //  };
-    //
-    //  where the value of indx will indicate which result was put to the
-    //  successor. So if oval is the output to the successor, indx == 0 
-    //  means tbb::flow::get<0>(oval.result) is the output, and so on.
-    //
-    //  tuple_types is the tuple that specified the possible outputs (and
-    //  the corresponding inputs to the or_node.)
-    //
-    //  the types of each element are represented by tuple_types, a typedef
-    //  in the or_node.  So the 2nd type in the union that is the
-    //  output type for an or_node OrType is
-    //
-    //      tbb::flow::tuple_element<1,OrType::tuple_types>::type
-
-    // the struct has an OutputTuple default constructed, with element index assigned
-    // the actual output value.
-    template<typename OutputTuple>
-    struct or_output_type {
-        typedef OutputTuple tuple_types;
-        struct type {
-            size_t indx;
-            OutputTuple result;
-
-// The LLVM libc++ that ships with OS X* 10.7 has a bug in tuple that disables
-// the copy assignment operator (LLVM bug #11921).
-//TODO: introduce according broken macro.
-//it can not be done right now, as tbb_config.h does not allowed to include other headers,
-//and without this it is not possible to detect libc++ version, as compiler version for clang
-//is vendor specific
-#ifdef _LIBCPP_TUPLE
-            type &operator=(type const &x) {
-                indx = x.indx;
-                result = const_cast<OutputTuple&>(x.result);
-                return *this;
-            }
-#endif
-        };
-    };
-
-    template<typename TupleTypes,int N>
-    struct or_item_helper {
-        template<typename OutputType>
-        static inline void create_output_value(OutputType &o, void *v) {
-            o.indx = N;
-            tbb::flow::get<N>(o.result) = *(reinterpret_cast<typename tbb::flow::tuple_element<N, TupleTypes>::type *>(v));
-        }
-    };
-
-    template<typename TupleTypes,int N>
-    struct or_helper {
-        template<typename OutputType>
-        static inline void create_output(OutputType &o, size_t i, void* v) {
-            if(i == N-1) {
-                or_item_helper<TupleTypes,N-1>::create_output_value(o,v);
-            }
-            else
-                or_helper<TupleTypes,N-1>::create_output(o,i,v);
-        }
-        template<typename PortTuple, typename PutBase>
-        static inline void set_or_node_pointer(PortTuple &my_input, PutBase *p) {
-            tbb::flow::get<N-1>(my_input).set_up(p, N-1);
-            or_helper<TupleTypes,N-1>::set_or_node_pointer(my_input, p);
-        }
-    };
-
-    template<typename TupleTypes>
-    struct or_helper<TupleTypes,1> {
-        template<typename OutputType>
-        static inline void create_output(OutputType &o, size_t i, void* v) {
-            if(i == 0) {
-                or_item_helper<TupleTypes,0>::create_output_value(o,v);
-            }
-        }
-        template<typename PortTuple, typename PutBase>
-        static inline void set_or_node_pointer(PortTuple &my_input, PutBase *p) {
-            tbb::flow::get<0>(my_input).set_up(p, 0);
-        }
-    };
-
-    struct put_base {
-        // virtual bool try_put_with_index(size_t index, void *v) = 0;
-        virtual task * try_put_task_with_index(size_t index, void *v) = 0;
-        virtual ~put_base() { }
-    };
-
-    template<typename T>
-    class or_input_port : public receiver<T> {
-    private:
-        size_t my_index;
-        put_base *my_or_node;
-    public:
-        void set_up(put_base *p, size_t i) { my_index = i; my_or_node = p; }
-    protected:
-        template< typename R, typename B > friend class run_and_put_task;
-        template<typename X, typename Y> friend class internal::broadcast_cache;
-        template<typename X, typename Y> friend class internal::round_robin_cache;
-        task *try_put_task(const T &v) {
-            return my_or_node->try_put_task_with_index(my_index, reinterpret_cast<void *>(const_cast<T*>(&v)));
-        }
-        /*override*/void reset_receiver() {}
-    };
-
-    template<typename InputTuple, typename OutputType, typename StructTypes>
-    class or_node_FE : public put_base {
-    public:
-        static const int N = tbb::flow::tuple_size<InputTuple>::value;
-        typedef OutputType output_type;
-        typedef InputTuple input_type;
-
-        or_node_FE( ) {
-            or_helper<StructTypes,N>::set_or_node_pointer(my_inputs, this);
-        }
-
-        input_type &input_ports() { return my_inputs; }
-    protected:
-        input_type my_inputs;
-    };
-
-    //! or_node_base
-    template<typename InputTuple, typename OutputType, typename StructTypes>
-    class or_node_base : public graph_node, public or_node_FE<InputTuple, OutputType,StructTypes>,
-                           public sender<OutputType> {
-    protected:
-       using graph_node::my_graph;
-    public:
-        static const size_t N = tbb::flow::tuple_size<InputTuple>::value;
-        typedef OutputType output_type;
-        typedef StructTypes tuple_types;
-        typedef receiver<output_type> successor_type;
-        typedef or_node_FE<InputTuple, output_type,StructTypes> input_ports_type;
-
-    private:
-        // ----------- Aggregator ------------
-        enum op_type { reg_succ, rem_succ, try__put_task };
-        enum op_stat {WAIT=0, SUCCEEDED, FAILED};
-        typedef or_node_base<InputTuple,output_type,StructTypes> my_class;
-
-        class or_node_base_operation : public aggregated_operation<or_node_base_operation> {
-        public:
-            char type;
-            size_t indx;
-            union {
-                void *my_arg;
-                successor_type *my_succ;
-                task *bypass_t;
-            };
-            or_node_base_operation(size_t i, const void* e, op_type t) :
-                type(char(t)), indx(i), my_arg(const_cast<void *>(e)) {}
-            or_node_base_operation(const successor_type &s, op_type t) : type(char(t)), 
-                my_succ(const_cast<successor_type *>(&s)) {}
-            or_node_base_operation(op_type t) : type(char(t)) {}
-        };
-
-        typedef internal::aggregating_functor<my_class, or_node_base_operation> my_handler;
-        friend class internal::aggregating_functor<my_class, or_node_base_operation>;
-        aggregator<my_handler, or_node_base_operation> my_aggregator;
-
-        void handle_operations(or_node_base_operation* op_list) {
-            or_node_base_operation *current;
-            while(op_list) {
-                current = op_list;
-                op_list = op_list->next;
-                switch(current->type) {
-
-                case reg_succ:
-                    my_successors.register_successor(*(current->my_succ));
-                    __TBB_store_with_release(current->status, SUCCEEDED);
-                    break;
-
-                case rem_succ:
-                    my_successors.remove_successor(*(current->my_succ));
-                    __TBB_store_with_release(current->status, SUCCEEDED);
-                    break;
-                case try__put_task: {
-                        output_type oo;
-                        or_helper<tuple_types,N>::create_output(oo, current->indx, current->my_arg);
-                        current->bypass_t = my_successors.try_put_task(oo);
-                        __TBB_store_with_release(current->status, SUCCEEDED);  // return of try_put_task actual return value
-                    }
-                    break;
-                }
-            }
-        }
-        // ---------- end aggregator -----------
-    public:
-        or_node_base(graph& g) : graph_node(g), input_ports_type() {
-            my_successors.set_owner(this);
-            my_aggregator.initialize_handler(my_handler(this));
-        }
-
-        or_node_base(const or_node_base& other) : graph_node(other.my_graph), input_ports_type(), sender<output_type>() {
-            my_successors.set_owner(this);
-            my_aggregator.initialize_handler(my_handler(this));
-        }
-
-        bool register_successor(successor_type &r) {
-            or_node_base_operation op_data(r, reg_succ);
-            my_aggregator.execute(&op_data);
-            return op_data.status == SUCCEEDED;
-        }
-
-        bool remove_successor( successor_type &r) {
-            or_node_base_operation op_data(r, rem_succ);
-            my_aggregator.execute(&op_data);
-            return op_data.status == SUCCEEDED;
-        }
-
-        task * try_put_task_with_index(size_t indx, void *v) {
-            or_node_base_operation op_data(indx, v, try__put_task);
-            my_aggregator.execute(&op_data);
-            return op_data.bypass_t;
-        }
-
-    protected:
-        /*override*/void reset() {}
-
-    private:
-        broadcast_cache<output_type, null_rw_mutex> my_successors;
-    };
-
-    // type generators
-    template<typename OutputTuple>
-    struct or_types {
-        static const int N = tbb::flow::tuple_size<OutputTuple>::value;
-        typedef typename wrap_tuple_elements<N,or_input_port,OutputTuple>::type input_ports_type;
-        typedef typename or_output_type<OutputTuple>::type output_type;
-        typedef internal::or_node_FE<input_ports_type,output_type,OutputTuple> or_FE_type;
-        typedef internal::or_node_base<input_ports_type, output_type, OutputTuple> or_base_type;
-    };
-
-    template<class OutputTuple>
-    class unfolded_or_node : public or_types<OutputTuple>::or_base_type {
-    public:
-        typedef typename or_types<OutputTuple>::input_ports_type input_ports_type;
-        typedef OutputTuple tuple_types;
-        typedef typename or_types<OutputTuple>::output_type output_type;
-    private:
-        typedef typename or_types<OutputTuple>::or_base_type base_type;
-    public:
-        unfolded_or_node(graph& g) : base_type(g) {}
-        unfolded_or_node(const unfolded_or_node &other) : base_type(other) {}
-    };
-
-
-} /* namespace internal */
-#endif  // TBB_PREVIEW_GRAPH_NODES
-
-#endif  /* __TBB__flow_graph_or_impl_H */
diff --git a/include/tbb/internal/_flow_graph_tagged_buffer_impl.h b/include/tbb/internal/_flow_graph_tagged_buffer_impl.h
index 748f637..2223416 100644
--- a/include/tbb/internal/_flow_graph_tagged_buffer_impl.h
+++ b/include/tbb/internal/_flow_graph_tagged_buffer_impl.h
@@ -1,33 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // tagged buffer that can expand, and can support as many deletions as additions
-// list-based, with elements of list held in std::vector (for destruction management),
+// list-based, with elements of list held in array (for destruction management),
 // multiplicative hashing (like ets).  No synchronization built-in.
 //
 
@@ -38,12 +30,20 @@
 #error Do not #include this internal file directly; use public TBB headers instead.
 #endif
 
+// included in namespace tbb::flow::interface7::internal
+
+template<typename T, typename U, size_t NoTagMark>
+struct otherData {
+    T t;
+    U next;
+    otherData() : t(NoTagMark), next(NULL) {}
+};
+
 template<typename TagType, typename ValueType, size_t NoTagMark>
-struct buffer_element {
-    TagType t;
-    ValueType v;
-    buffer_element *next;
-    buffer_element() : t(NoTagMark), next(NULL) {}
+struct buffer_element_type {
+    // the second parameter below is void * because we can't forward-declare the type
+    // itself, so we just reinterpret_cast below.
+    typedef typename aligned_pair<ValueType, otherData<TagType, void *, NoTagMark> >::type type;
 };
 
 template
@@ -51,24 +51,24 @@ template
      typename TagType, 
      typename ValueType, 
      size_t   NoTagMark = 0,
-     typename Allocator=tbb::cache_aligned_allocator< buffer_element<TagType,ValueType,NoTagMark> >
+     typename Allocator=tbb::cache_aligned_allocator< typename buffer_element_type<TagType, ValueType, NoTagMark>::type >
     >
 class tagged_buffer {
 public:
     static const size_t INITIAL_SIZE = 8;  // initial size of the hash pointer table
     static const TagType NO_TAG = TagType(NoTagMark);
     typedef ValueType value_type;
-    typedef buffer_element<TagType,ValueType, NO_TAG> element_type;
+    typedef typename buffer_element_type<TagType, ValueType, NO_TAG>::type element_type;
     typedef value_type *pointer_type;
-    typedef std::vector<element_type, Allocator> list_array_type;
-    typedef typename Allocator::template rebind<element_type*>::other pointer_array_allocator_type;
-    typedef typename Allocator::template rebind<list_array_type>::other list_array_allocator;
+    typedef element_type *list_array_type;  // array we manage manually
+    typedef list_array_type *pointer_array_type;
+    typedef typename Allocator::template rebind<list_array_type>::other pointer_array_allocator_type;
+    typedef typename Allocator::template rebind<element_type>::other elements_array_allocator;
 private:
-
     size_t my_size;
     size_t nelements;
-    element_type** array;
-    std::vector<element_type, Allocator> *lists;
+    pointer_array_type pointer_array;    // pointer_array[my_size]
+    list_array_type elements_array;      // elements_array[my_size / 2]
     element_type* free_list;
 
     size_t mask() { return my_size - 1; }
@@ -77,67 +77,107 @@ private:
         return uintptr_t(t)*tbb::internal::select_size_t_constant<0x9E3779B9,0x9E3779B97F4A7C15ULL>::value;
     }
 
-    void set_up_free_list( element_type **p_free_list, list_array_type *la, size_t sz) {
+    void set_up_free_list( element_type **p_free_list, list_array_type la, size_t sz) {
         for(size_t i=0; i < sz - 1; ++i ) {  // construct free list
-            (*la)[i].next = &((*la)[i+1]);
-            (*la)[i].t = NO_TAG;
+            la[i].second.next = &(la[i+1]);
+            la[i].second.t = NO_TAG;
         }
-        (*la)[sz-1].next = NULL;
-        *p_free_list = &((*la)[0]);
+        la[sz-1].second.next = NULL;
+        *p_free_list = &(la[0]);
     }
 
+    // cleanup for exceptions
+    struct DoCleanup {
+        pointer_array_type *my_pa;
+        list_array_type *my_elements;
+        size_t my_size;
+
+        DoCleanup(pointer_array_type &pa, list_array_type &my_els, size_t sz) :
+            my_pa(&pa), my_elements(&my_els), my_size(sz) {  }
+        ~DoCleanup() {
+            if(my_pa) {
+                size_t dont_care = 0;
+                internal_free_buffer(*my_pa, *my_elements, my_size, dont_care);
+            }
+        }
+    };
+
+    // exception-safety requires we do all the potentially-throwing operations first
     void grow_array() {
-        // make the pointer array larger
-        element_type **new_array;
-        element_type **old_array = array;
-        size_t old_size = my_size;
-        my_size *=2;
-        new_array = pointer_array_allocator_type().allocate(my_size);
-        for(size_t i=0; i < my_size; ++i) new_array[i] = NULL;
-        list_array_type *new_list_array = new list_array_type(old_size, element_type(), Allocator());
-        set_up_free_list(&free_list, new_list_array, old_size );
-
-        for(size_t i=0; i < old_size; ++i) {
-            for( element_type* op = old_array[i]; op; op = op->next) {
-                internal_tagged_insert(new_array, my_size, op->t, op->v);
+        size_t new_size = my_size*2;
+        size_t new_nelements = nelements;  // internal_free_buffer zeroes this
+        list_array_type new_elements_array = NULL;
+        pointer_array_type new_pointer_array = NULL;
+        list_array_type new_free_list = NULL;
+        {
+            DoCleanup my_cleanup(new_pointer_array, new_elements_array, new_size);
+            new_elements_array = elements_array_allocator().allocate(my_size);
+            new_pointer_array = pointer_array_allocator_type().allocate(new_size);
+            for(size_t i=0; i < new_size; ++i) new_pointer_array[i] = NULL;
+            set_up_free_list(&new_free_list, new_elements_array, my_size );
+
+            for(size_t i=0; i < my_size; ++i) {
+                for( element_type* op = pointer_array[i]; op; op = (element_type *)(op->second.next)) {
+                    value_type *ov = reinterpret_cast<value_type *>(&(op->first));
+                    // could have std::move semantics
+                    internal_tagged_insert(new_pointer_array, new_size, new_free_list, op->second.t, *ov);
+                }
             }
+            my_cleanup.my_pa = NULL;
+            my_cleanup.my_elements = NULL;
         }
-        pointer_array_allocator_type().deallocate(old_array, old_size);
 
-        delete lists;  // destroy and deallocate instead
-        array = new_array;
-        lists = new_list_array;
+        internal_free_buffer(pointer_array, elements_array, my_size, nelements);
+        free_list = new_free_list;
+        pointer_array = new_pointer_array;
+        elements_array = new_elements_array;
+        my_size = new_size;
+        nelements = new_nelements;
     }
 
-    void internal_tagged_insert( element_type **ar, size_t sz, TagType t, value_type v) {
-        size_t l_mask = sz-1;
+    // v should have perfect forwarding if std::move implemented.
+    // we use this method to move elements in grow_array, so can't use class fields
+    void internal_tagged_insert( element_type **p_pointer_array, size_t p_sz, list_array_type &p_free_list,
+            const TagType t, const value_type &v) {
+        size_t l_mask = p_sz-1;
         size_t h = hash(t) & l_mask;
-        __TBB_ASSERT(free_list, "Error: free list not set up.");
-        element_type* my_elem = free_list; free_list = free_list->next;
-        my_elem->t = t;
-        my_elem->v = v;
-        my_elem->next = ar[h];
-        ar[h] = my_elem;
+        __TBB_ASSERT(p_free_list, "Error: free list not set up.");
+        element_type* my_elem = p_free_list; p_free_list = (element_type *)(p_free_list->second.next);
+        my_elem->second.t = t;
+        (void) new(&(my_elem->first)) value_type(v);
+        my_elem->second.next = p_pointer_array[h];
+        p_pointer_array[h] = my_elem;
     }
 
     void internal_initialize_buffer() {
-        array = pointer_array_allocator_type().allocate(my_size);
-        for(size_t i = 0; i < my_size; ++i) array[i] = NULL;
-        lists = new list_array_type(INITIAL_SIZE/2, element_type(), Allocator());
-        set_up_free_list(&free_list, lists, INITIAL_SIZE/2);
+        pointer_array = pointer_array_allocator_type().allocate(my_size);
+        for(size_t i = 0; i < my_size; ++i) pointer_array[i] = NULL;
+        elements_array = elements_array_allocator().allocate(my_size / 2);
+        set_up_free_list(&free_list, elements_array, my_size / 2);
     }
 
-    void internal_free_buffer() {
-        if(array) {
-            pointer_array_allocator_type().deallocate(array, my_size); 
-            array = NULL;
+    // made static so an enclosed class can use to properly dispose of the internals
+    static void internal_free_buffer( pointer_array_type &pa, list_array_type &el, size_t &sz, size_t &ne ) {
+        if(pa) {
+            for(size_t i = 0; i < sz; ++i ) {
+                element_type *p_next;
+                for( element_type *p = pa[i]; p; p = p_next) {
+                    p_next = (element_type *)p->second.next;
+                    value_type *vp = reinterpret_cast<value_type *>(&(p->first));
+                    vp->~value_type();
+                }
+            }
+            pointer_array_allocator_type().deallocate(pa, sz); 
+            pa = NULL;
         }
-        if(lists) {
-            delete lists;
-            lists = NULL;
+        // Separate test (if allocation of pa throws, el may be allocated.
+        // but no elements will be constructed.)
+        if(el) {
+            elements_array_allocator().deallocate(el, sz / 2);
+            el = NULL;
         }
-        my_size = INITIAL_SIZE;
-        nelements = 0;
+        sz = INITIAL_SIZE;
+        ne = 0;
     }
 
 public:
@@ -146,39 +186,40 @@ public:
     }
 
     ~tagged_buffer() {
-        internal_free_buffer();
+        internal_free_buffer(pointer_array, elements_array, my_size, nelements);
     }
 
     void reset() {
-        internal_free_buffer();
+        internal_free_buffer(pointer_array, elements_array, my_size, nelements);
         internal_initialize_buffer();
     }
 
-    bool tagged_insert(TagType t, value_type v) {
+    bool tagged_insert(const TagType t, const value_type &v) {
         pointer_type p;
         if(tagged_find_ref(t, p)) {
-            *p = v;  // replace the value
+            p->~value_type();
+            (void) new(p) value_type(v);  // copy-construct into the space
             return false;
         }
         ++nelements;
         if(nelements*2 > my_size) grow_array();
-        internal_tagged_insert(array, my_size, t, v);
+        internal_tagged_insert(pointer_array, my_size, free_list, t, v);
         return true;
     }
 
     // returns reference to array element.v
-    bool tagged_find_ref(TagType t, pointer_type &v) {
+    bool tagged_find_ref(const TagType t, pointer_type &v) {
         size_t i = hash(t) & mask();
-        for(element_type* p = array[i]; p; p = p->next) {
-            if(p->t == t) {
-                v = &(p->v);
+        for(element_type* p = pointer_array[i]; p; p = (element_type *)(p->second.next)) {
+            if(p->second.t == t) {
+                v = reinterpret_cast<pointer_type>(&(p->first));
                 return true;
             }
         }
         return false;
     }
 
-    bool tagged_find( TagType t, value_type &v) {
+    bool tagged_find( const TagType t, value_type &v) {
         value_type *p;
         if(tagged_find_ref(t, p)) {
             v = *p;
@@ -188,15 +229,17 @@ public:
             return false;
     }
 
-    void tagged_delete(TagType t) {
+    void tagged_delete(const TagType t) {
         size_t h = hash(t) & mask();
         element_type* prev = NULL;
-        for(element_type* p = array[h]; p; prev = p, p = p->next) {
-            if(p->t == t) {
-                p->t = NO_TAG;
-                if(prev) prev->next = p->next;
-                else array[h] = p->next;
-                p->next = free_list;
+        for(element_type* p = pointer_array[h]; p; prev = p, p = (element_type *)(p->second.next)) {
+            if(p->second.t == t) {
+                value_type *vp = reinterpret_cast<value_type *>(&(p->first));
+                vp->~value_type();
+                p->second.t = NO_TAG;
+                if(prev) prev->second.next = p->second.next;
+                else pointer_array[h] = (element_type *)(p->second.next);
+                p->second.next = free_list;
                 free_list = p;
                 --nelements;
                 return;
@@ -204,17 +247,5 @@ public:
         }
         __TBB_ASSERT(false, "tag not found for delete");
     }
-
-    // search for v in the array; if found {set t, return true} else return false
-    // we use this in join_node_FE to find if a tag's items are all available.
-    bool find_value_tag( TagType &t, value_type v) {
-        for(size_t i= 0; i < my_size / 2; ++i) {  // remember the vector is half the size of the hash array
-            if( (*lists)[i].t != NO_TAG && (*lists)[i].v == v) {
-                t = (*lists)[i].t;
-                return true;
-            }
-        }
-        return false;
-    }
 };
 #endif // __TBB__flow_graph_tagged_buffer_impl_H
diff --git a/include/tbb/internal/_flow_graph_trace_impl.h b/include/tbb/internal/_flow_graph_trace_impl.h
index 3453c7a..3493e89 100644
--- a/include/tbb/internal/_flow_graph_trace_impl.h
+++ b/include/tbb/internal/_flow_graph_trace_impl.h
@@ -1,35 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _FGT_GRAPH_TRACE_IMPL_H
 #define _FGT_GRAPH_TRACE_IMPL_H
 
-#include "tbb/tbb_profiling.h"
+#include "../tbb_profiling.h"
 
 namespace tbb {
     namespace internal {
@@ -61,6 +53,22 @@ struct fgt_internal_input_helper<TypesTuple,PortsTuple,1> {
     } 
 };
 
+//for cases where the ports tuple are already receivers
+template < typename PortsTuple, int N >
+struct fgt_internal_input_helper< PortsTuple, PortsTuple, N> {
+    static void register_port( void *node, PortsTuple &ports ) {
+        fgt_internal_create_input_port( node,&(tbb::flow::get<N-1>(ports)), static_cast<tbb::internal::string_index>(FLOW_INPUT_PORT_0 + N - 1) );
+        fgt_internal_input_helper<PortsTuple, PortsTuple, N-1>::register_port( node, ports );
+    } 
+};
+
+template < typename PortsTuple >
+struct fgt_internal_input_helper<PortsTuple, PortsTuple,1> {
+    static void register_port( void *node, PortsTuple &ports ) {
+        fgt_internal_create_input_port( node, &(tbb::flow::get<0>(ports)), FLOW_INPUT_PORT_0 );
+    } 
+};
+
 template < typename TypesTuple, typename PortsTuple, int N >
 struct fgt_internal_output_helper {
     static void register_port( void *node, PortsTuple &ports ) {
@@ -78,6 +86,22 @@ struct fgt_internal_output_helper<TypesTuple,PortsTuple,1> {
     } 
 };
 
+//for cases where the ports tuple are already senders
+template < typename PortsTuple, int N >
+struct fgt_internal_output_helper<PortsTuple, PortsTuple, N> {
+    static void register_port( void *node, PortsTuple &ports ) {
+        fgt_internal_create_output_port( node,&(tbb::flow::get<N-1>(ports)),  static_cast<tbb::internal::string_index>(FLOW_OUTPUT_PORT_0 + N - 1) ); 
+        fgt_internal_output_helper<PortsTuple, PortsTuple, N-1>::register_port( node, ports );
+    } 
+};
+
+template < typename PortsTuple >
+struct fgt_internal_output_helper<PortsTuple,PortsTuple,1> {
+    static void register_port( void *node, PortsTuple &ports ) {
+        fgt_internal_create_output_port( node,&(tbb::flow::get<0>(ports)), FLOW_OUTPUT_PORT_0 ); 
+    } 
+};
+
 template< typename NodeType >
 void fgt_multioutput_node_desc( const NodeType *node, const char *desc ) {
     void *addr =  (void *)( static_cast< tbb::flow::interface7::receiver< typename NodeType::input_type > * >(const_cast< NodeType *>(node)) ); 
@@ -85,6 +109,12 @@ void fgt_multioutput_node_desc( const NodeType *node, const char *desc ) {
 }
 
 template< typename NodeType >
+void fgt_multiinput_multioutput_node_desc( const NodeType *node, const char *desc ) {
+    void *addr =  (void *)(node); 
+    itt_metadata_str_add( ITT_DOMAIN_FLOW, addr, FLOW_NODE, FLOW_OBJECT_NAME, desc ); 
+}
+
+template< typename NodeType >
 static inline void fgt_node_desc( const NodeType *node, const char *desc ) {
     void *addr =  (void *)( static_cast< tbb::flow::interface7::sender< typename NodeType::output_type > * >(const_cast< NodeType *>(node)) ); 
     itt_metadata_str_add( ITT_DOMAIN_FLOW, addr, FLOW_NODE, FLOW_OBJECT_NAME, desc ); 
diff --git a/include/tbb/internal/_flow_graph_types_impl.h b/include/tbb/internal/_flow_graph_types_impl.h
index 8a03f08..23cddec 100644
--- a/include/tbb/internal/_flow_graph_types_impl.h
+++ b/include/tbb/internal/_flow_graph_types_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__flow_graph_types_impl_H
@@ -33,6 +25,8 @@
 #error Do not #include this internal file directly; use public TBB headers instead.
 #endif
 
+// included in namespace tbb::flow::interface7
+
 namespace internal {
 // wrap each element of a tuple in a template, and make a tuple of the result.
 
@@ -49,7 +43,7 @@ namespace internal {
     template<template<class> class PT, typename TypeTuple>
     struct wrap_tuple_elements<2, PT, TypeTuple> {
         typedef typename tbb::flow::tuple<
-                PT<typename tbb::flow::tuple_element<0,TypeTuple>::type>, 
+                PT<typename tbb::flow::tuple_element<0,TypeTuple>::type>,
                 PT<typename tbb::flow::tuple_element<1,TypeTuple>::type> >
             type;
     };
@@ -164,5 +158,337 @@ namespace internal {
     };
 #endif
 
+//! type mimicking std::pair but with trailing fill to ensure each element of an array
+//* will have the correct alignment
+    template<typename T1, typename T2, size_t REM>
+    struct type_plus_align {
+        char first[sizeof(T1)];
+        T2 second;
+        char fill1[REM];
+    };
+
+    template<typename T1, typename T2>
+    struct type_plus_align<T1,T2,0> {
+        char first[sizeof(T1)];
+        T2 second;
+    };
+
+    template<class U> struct alignment_of {
+        typedef struct { char t; U    padded; } test_alignment;
+        static const size_t value = sizeof(test_alignment) - sizeof(U);
+    };
+
+    // T1, T2 are actual types stored.  The space defined for T1 in the type returned
+    // is a char array of the correct size.  Type T2 should be trivially-constructible,
+    // T1 must be explicitly managed.
+    template<typename T1, typename T2>
+    struct aligned_pair {
+        static const size_t t1_align = alignment_of<T1>::value;
+        static const size_t t2_align = alignment_of<T2>::value;
+        typedef type_plus_align<T1, T2, 0 > just_pair;
+        static const size_t max_align = t1_align < t2_align ? t2_align : t1_align;
+        static const size_t extra_bytes = sizeof(just_pair) % max_align;
+        static const size_t remainder = extra_bytes ? max_align - extra_bytes : 0;
+    public:
+        typedef type_plus_align<T1,T2,remainder> type;
+    };  // aligned_pair
+
+// support for variant type
+// type we use when we're not storing a value
+struct default_constructed { };
+
+// type which contains another type, tests for what type is contained, and references to it.
+// internal::Wrapper<T>
+//     void CopyTo( void *newSpace) : builds a Wrapper<T> copy of itself in newSpace
+
+// struct to allow us to copy and test the type of objects
+struct WrapperBase {
+    virtual ~WrapperBase() {}
+    virtual void CopyTo(void* /*newSpace*/) const {  }
+};
+
+// Wrapper<T> contains a T, with the ability to test what T is.  The Wrapper<T> can be
+// constructed from a T, can be copy-constructed from another Wrapper<T>, and can be
+// examined via value(), but not modified.
+template<typename T>
+struct Wrapper: public WrapperBase {
+    typedef T value_type;
+    typedef T* pointer_type;
+private:
+    T value_space;
+public:
+    const value_type &value() const { return value_space; }
+
+private:
+    Wrapper();
+
+    // on exception will ensure the Wrapper will contain only a trivially-constructed object
+    struct _unwind_space {
+        pointer_type space;
+        _unwind_space(pointer_type p) : space(p) {}
+        ~_unwind_space() {
+            if(space) (void) new (space) Wrapper<default_constructed>(default_constructed());
+        }
+    };
+public:
+    explicit Wrapper( const T& other ) : value_space(other) { }
+    explicit Wrapper(const Wrapper& other) : value_space(other.value_space) { }
+
+    /*override*/void CopyTo(void* newSpace) const {
+        _unwind_space guard((pointer_type)newSpace);
+        (void) new(newSpace) Wrapper(value_space);
+        guard.space = NULL;
+    }
+    /*override*/~Wrapper() { }
+};
+
+// specialization for array objects
+template<typename T, size_t N>
+struct Wrapper<T[N]> : public WrapperBase {
+    typedef T value_type;
+    typedef T* pointer_type;
+    // space must be untyped.
+    typedef T ArrayType[N];
+private:
+    // The space is not of type T[N] because when copy-constructing, it would be
+    // default-initialized and then copied to in some fashion, resulting in two
+    // constructions and one destruction per element.  If the type is char[ ], we
+    // placement new into each element, resulting in one construction per element.
+    static const size_t space_size = sizeof(ArrayType) / sizeof(char);
+    char value_space[space_size];
+
+
+    // on exception will ensure the already-built objects will be destructed
+    // (the value_space is a char array, so it is already trivially-destructible.)
+    struct _unwind_class {
+        pointer_type space;
+        int    already_built;
+        _unwind_class(pointer_type p) : space(p), already_built(0) {}
+        ~_unwind_class() {
+            if(space) {
+                for(size_t i = already_built; i > 0 ; --i ) space[i-1].~value_type();
+                (void) new(space) Wrapper<default_constructed>(default_constructed());
+            }
+        }
+    };
+public:
+    const ArrayType &value() const {
+        char *vp = const_cast<char *>(value_space);
+        return reinterpret_cast<ArrayType &>(*vp);
+    }
+
+private:
+    Wrapper();
+public:
+    // have to explicitly construct because other decays to a const value_type*
+    explicit Wrapper(const ArrayType& other) {
+        _unwind_class guard((pointer_type)value_space);
+        pointer_type vp = reinterpret_cast<pointer_type>(&value_space);
+        for(size_t i = 0; i < N; ++i ) {
+            (void) new(vp++) value_type(other[i]);
+            ++(guard.already_built);
+        }
+        guard.space = NULL;
+    }
+    explicit Wrapper(const Wrapper& other) : WrapperBase() {
+        // we have to do the heavy lifting to copy contents
+        _unwind_class guard((pointer_type)value_space);
+        pointer_type dp = reinterpret_cast<pointer_type>(value_space);
+        pointer_type sp = reinterpret_cast<pointer_type>(const_cast<char *>(other.value_space));
+        for(size_t i = 0; i < N; ++i, ++dp, ++sp) {
+            (void) new(dp) value_type(*sp);
+            ++(guard.already_built);
+        }
+        guard.space = NULL;
+    }
+
+    /*override*/void CopyTo(void* newSpace) const {
+        (void) new(newSpace) Wrapper(*this);  // exceptions handled in copy constructor
+    }
+
+    /*override*/~Wrapper() {
+        // have to destroy explicitly in reverse order
+        pointer_type vp = reinterpret_cast<pointer_type>(&value_space);
+        for(size_t i = N; i > 0 ; --i ) vp[i-1].~value_type();
+    }
+};
+
+// given a tuple, return the type of the element that has the maximum alignment requirement.
+// Given a tuple and that type, return the number of elements of the object with the max
+// alignment requirement that is at least as big as the largest object in the tuple.
+
+template<bool, class T1, class T2> struct pick_one;
+template<class T1, class T2> struct pick_one<true , T1, T2> { typedef T1 type; };
+template<class T1, class T2> struct pick_one<false, T1, T2> { typedef T2 type; };
+
+template< template<class> class Selector, typename T1, typename T2 >
+struct pick_max {
+    typedef typename pick_one< (Selector<T1>::value > Selector<T2>::value), T1, T2 >::type type;
+};
+
+template<typename T> struct size_of { static const int value = sizeof(T); };
+
+template< size_t N, class Tuple, template<class> class Selector > struct pick_tuple_max {
+    typedef typename pick_tuple_max<N-1, Tuple, Selector>::type LeftMaxType;
+    typedef typename tbb::flow::tuple_element<N-1, Tuple>::type ThisType;
+    typedef typename pick_max<Selector, LeftMaxType, ThisType>::type type;
+};
+
+template< class Tuple, template<class> class Selector > struct pick_tuple_max<0, Tuple, Selector> {
+    typedef typename tbb::flow::tuple_element<0, Tuple>::type type;
+};
+
+// is the specified type included in a tuple?
+template<class Q, size_t N, class Tuple>
+struct is_element_of {
+    typedef typename tbb::flow::tuple_element<N-1, Tuple>::type T_i;
+    static const bool value = tbb::internal::is_same_type<Q,T_i>::value || is_element_of<Q,N-1,Tuple>::value;
+};
+
+template<class Q, class Tuple>
+struct is_element_of<Q,0,Tuple> {
+    typedef typename tbb::flow::tuple_element<0, Tuple>::type T_i;
+    static const bool value = tbb::internal::is_same_type<Q,T_i>::value;
+};
+
+// allow the construction of types that are listed tuple.  If a disallowed type
+// construction is written, a method involving this type is created.  The
+// type has no definition, so a syntax error is generated.
+template<typename T> struct ERROR_Type_Not_allowed_In_Tagged_Msg_Not_Member_Of_Tuple;
+
+template<typename T, bool BUILD_IT> struct do_if;
+template<typename T>
+struct do_if<T, true> {
+    static void construct(void *mySpace, const T& x) {
+        (void) new(mySpace) Wrapper<T>(x);
+    }
+};
+template<typename T>
+struct do_if<T, false> {
+    static void construct(void * /*mySpace*/, const T& x) {
+        // This method is instantiated when the type T does not match any of the
+        // element types in the Tuple in variant<Tuple>.
+        ERROR_Type_Not_allowed_In_Tagged_Msg_Not_Member_Of_Tuple<T>::bad_type(x);
+    }
+};
+
+// Tuple tells us the allowed types that variant can hold.  It determines the alignment of the space in
+// Wrapper, and how big Wrapper is.
+//
+// the object can only be tested for type, and a read-only reference can be fetched by cast_to<T>().
+
+using tbb::internal::punned_cast;
+struct tagged_null_type {};
+template<typename TagType, typename T0, typename T1=tagged_null_type, typename T2=tagged_null_type, typename T3=tagged_null_type, 
+                           typename T4=tagged_null_type, typename T5=tagged_null_type, typename T6=tagged_null_type,
+                           typename T7=tagged_null_type, typename T8=tagged_null_type, typename T9=tagged_null_type>
+class tagged_msg {
+    typedef tbb::flow::tuple<T0, T1, T2, T3, T4
+                  //TODO: Should we reject lists longer than a tuple can hold?
+                  #if __TBB_VARIADIC_MAX >= 6
+                  , T5
+                  #endif
+                  #if __TBB_VARIADIC_MAX >= 7
+                  , T6
+                  #endif
+                  #if __TBB_VARIADIC_MAX >= 8
+                  , T7
+                  #endif
+                  #if __TBB_VARIADIC_MAX >= 9
+                  , T8
+                  #endif
+                  #if __TBB_VARIADIC_MAX >= 10
+                  , T9
+                  #endif
+                  > Tuple;   
+
+private:
+    class variant {
+        static const size_t N = tbb::flow::tuple_size<Tuple>::value;
+        typedef typename pick_tuple_max<N, Tuple, alignment_of>::type AlignType;
+        typedef typename pick_tuple_max<N, Tuple, size_of>::type MaxSizeType;
+        static const size_t MaxNBytes = (sizeof(Wrapper<MaxSizeType>)+sizeof(AlignType)-1);
+        static const size_t MaxNElements = MaxNBytes/sizeof(AlignType);
+        typedef typename tbb::aligned_space<AlignType, MaxNElements> SpaceType;
+        SpaceType my_space;
+        static const size_t MaxSize = sizeof(SpaceType);
+
+    public:
+        variant() { (void) new(&my_space) Wrapper<default_constructed>(default_constructed()); }
+
+        template<typename T>
+        variant( const T& x ) {
+            do_if<T, is_element_of<T, N, Tuple>::value>::construct(&my_space,x);
+        }
+
+        variant(const variant& other) {
+            const WrapperBase * h = punned_cast<const WrapperBase *>(&(other.my_space));
+            h->CopyTo(&my_space);
+        }
+
+        // assignment must destroy and re-create the Wrapper type, as there is no way
+        // to create a Wrapper-to-Wrapper assign even if we find they agree in type.
+        void operator=( const variant& rhs ) {
+            if(&rhs != this) {
+                WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
+                h->~WrapperBase();
+                const WrapperBase *ch = punned_cast<const WrapperBase *>(&(rhs.my_space));
+                ch->CopyTo(&my_space);
+            }
+        }
+
+        template<typename U>
+        const U& variant_cast_to() const {
+            const Wrapper<U> *h = dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space));
+            if(!h) {
+                tbb::internal::throw_exception(tbb::internal::eid_bad_tagged_msg_cast);
+            }
+            return h->value();
+        }
+        template<typename U>
+        bool variant_is_a() const { return dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space)) != NULL; }
+
+        bool variant_is_default_constructed() const {return variant_is_a<default_constructed>();}
+
+        ~variant() {
+            WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
+            h->~WrapperBase();
+        }
+    }; //class variant
+
+    TagType my_tag;
+    variant my_msg;
+
+public:
+    tagged_msg(): my_tag(TagType(~0)), my_msg(){} 
+
+    template<typename T, typename R>
+    tagged_msg(T const &index, R const &value) : my_tag(index), my_msg(value) {}
+    
+    #if __TBB_CONST_REF_TO_ARRAY_TEMPLATE_PARAM_BROKEN
+    template<typename T, typename R, size_t N>
+    tagged_msg(T const &index,  R (&value)[N]) : my_tag(index), my_msg(value) {}
+    #endif
+
+    void set_tag(TagType const &index) {my_tag = index;}
+    TagType tag() const {return my_tag;}
+
+    template<typename V>
+    const V& cast_to() const {return my_msg.template variant_cast_to<V>();}
+
+    template<typename V>
+    bool is_a() const {return my_msg.template variant_is_a<V>();}
+
+    bool is_default_constructed() const {return my_msg.variant_is_default_constructed();}
+}; //class tagged_msg
+
+// template to simplify cast and test for tagged_msg in template contexts
+template<typename V, typename T>
+const V& cast_to(T const &t) { return t.template cast_to<V>(); }
+
+template<typename V, typename T>
+bool is_a(T const &t) { return t.template is_a<V>(); }
+
 }  // namespace internal
+
 #endif  /* __TBB__flow_graph_types_impl_H */
diff --git a/include/tbb/internal/_mutex_padding.h b/include/tbb/internal/_mutex_padding.h
index d6427ff..53d164f 100644
--- a/include/tbb/internal/_mutex_padding.h
+++ b/include/tbb/internal/_mutex_padding.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_mutex_padding_H
@@ -44,7 +36,7 @@ static const size_t cache_line_size = 64;
 template<typename Mutex, bool is_rw> class padded_mutex;
 
 template<typename Mutex>
-class padded_mutex<Mutex,false> {
+class padded_mutex<Mutex,false> : tbb::internal::mutex_copy_deprecated_and_disabled {
     typedef long pad_type;
     pad_type my_pad[((sizeof(Mutex)+cache_line_size-1)/cache_line_size+1)*cache_line_size/sizeof(pad_type)];
 
@@ -73,7 +65,7 @@ public:
 };
 
 template<typename Mutex>
-class padded_mutex<Mutex,true> {
+class padded_mutex<Mutex,true> : tbb::internal::mutex_copy_deprecated_and_disabled {
     typedef long pad_type;
     pad_type my_pad[((sizeof(Mutex)+cache_line_size-1)/cache_line_size+1)*cache_line_size/sizeof(pad_type)];
 
diff --git a/include/tbb/internal/_range_iterator.h b/include/tbb/internal/_range_iterator.h
new file mode 100644
index 0000000..37cd616
--- /dev/null
+++ b/include/tbb/internal/_range_iterator.h
@@ -0,0 +1,70 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB_range_iterator_H
+#define __TBB_range_iterator_H
+
+#include "../tbb_stddef.h"
+
+#if __TBB_CPP11_STD_BEGIN_END_PRESENT && __TBB_CPP11_AUTO_PRESENT && __TBB_CPP11_DECLTYPE_PRESENT
+    #include <iterator>
+#endif
+
+namespace tbb {
+    // iterators to first and last elements of container
+    namespace internal {
+
+#if __TBB_CPP11_STD_BEGIN_END_PRESENT && __TBB_CPP11_AUTO_PRESENT && __TBB_CPP11_DECLTYPE_PRESENT
+        using std::begin;
+        using std::end;
+        template<typename Container>
+        auto first(Container& c)-> decltype(begin(c))  {return begin(c);}
+
+        template<typename Container>
+        auto first(const Container& c)-> decltype(begin(c))  {return begin(c);}
+
+        template<typename Container>
+        auto last(Container& c)-> decltype(begin(c))  {return end(c);}
+
+        template<typename Container>
+        auto last(const Container& c)-> decltype(begin(c)) {return end(c);}
+#else
+        template<typename Container>
+        typename Container::iterator first(Container& c) {return c.begin();}
+
+        template<typename Container>
+        typename Container::const_iterator first(const Container& c) {return c.begin();}
+
+        template<typename Container>
+        typename Container::iterator last(Container& c) {return c.end();}
+
+        template<typename Container>
+        typename Container::const_iterator last(const Container& c) {return c.end();}
+#endif
+
+        template<typename T, size_t size>
+        T* first(T (&arr) [size]) {return arr;}
+
+        template<typename T, size_t size>
+        T* last(T (&arr) [size]) {return arr + size;}
+    } //namespace internal
+}  //namespace tbb
+
+#endif // __TBB_range_iterator_H
diff --git a/include/tbb/internal/_tbb_strings.h b/include/tbb/internal/_tbb_strings.h
index 9c75c81..101a521 100644
--- a/include/tbb/internal/_tbb_strings.h
+++ b/include/tbb/internal/_tbb_strings.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 TBB_STRING_RESOURCE(FLOW_BROADCAST_NODE, "broadcast_node")
@@ -35,7 +27,7 @@ TBB_STRING_RESOURCE(FLOW_JOIN_NODE_RESERVING, "join_node (reserving)")
 TBB_STRING_RESOURCE(FLOW_JOIN_NODE_TAG_MATCHING, "join_node (tag_matching)")
 TBB_STRING_RESOURCE(FLOW_LIMITER_NODE, "limiter_node")
 TBB_STRING_RESOURCE(FLOW_MULTIFUNCTION_NODE, "multifunction_node")
-TBB_STRING_RESOURCE(FLOW_OR_NODE, "or_node")
+TBB_STRING_RESOURCE(FLOW_OR_NODE, "or_node") //no longer in use, kept for backward compatibility
 TBB_STRING_RESOURCE(FLOW_OVERWRITE_NODE, "overwrite_node")
 TBB_STRING_RESOURCE(FLOW_PRIORITY_QUEUE_NODE, "priority_queue_node")
 TBB_STRING_RESOURCE(FLOW_QUEUE_NODE, "queue_node")
@@ -70,3 +62,6 @@ TBB_STRING_RESOURCE(FLOW_OUTPUT_PORT_8, "output_port_8")
 TBB_STRING_RESOURCE(FLOW_OUTPUT_PORT_9, "output_port_9")
 TBB_STRING_RESOURCE(FLOW_OBJECT_NAME, "object_name")
 TBB_STRING_RESOURCE(FLOW_NULL, "null")
+TBB_STRING_RESOURCE(FLOW_INDEXER_NODE, "indexer_node")
+TBB_STRING_RESOURCE(FLOW_COMPOSITE_NODE, "composite_node")
+TBB_STRING_RESOURCE(FLOW_ASYNC_NODE, "async_node")
diff --git a/include/tbb/internal/_tbb_windef.h b/include/tbb/internal/_tbb_windef.h
index 487a4ec..2eddc52 100644
--- a/include/tbb/internal/_tbb_windef.h
+++ b/include/tbb/internal/_tbb_windef.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_windef_H
diff --git a/include/tbb/internal/_template_helpers.h b/include/tbb/internal/_template_helpers.h
new file mode 100644
index 0000000..e126f9b
--- /dev/null
+++ b/include/tbb/internal/_template_helpers.h
@@ -0,0 +1,140 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB_template_helpers_H
+#define __TBB_template_helpers_H
+
+#include <utility>
+
+namespace tbb { namespace internal {
+
+//! Enables one or the other code branches
+template<bool Condition, typename T = void> struct enable_if {};
+template<typename T> struct enable_if<true, T> { typedef T type; };
+
+//! Strips its template type argument from cv- and ref-qualifiers
+template<typename T> struct strip                     { typedef T type; };
+template<typename T> struct strip<const T>            { typedef T type; };
+template<typename T> struct strip<volatile T>         { typedef T type; };
+template<typename T> struct strip<const volatile T>   { typedef T type; };
+template<typename T> struct strip<T&>                 { typedef T type; };
+template<typename T> struct strip<const T&>           { typedef T type; };
+template<typename T> struct strip<volatile T&>        { typedef T type; };
+template<typename T> struct strip<const volatile T&>  { typedef T type; };
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+template<typename T> struct strip<T&&>                { typedef T type; };
+template<typename T> struct strip<const T&&>          { typedef T type; };
+template<typename T> struct strip<volatile T&&>       { typedef T type; };
+template<typename T> struct strip<const volatile T&&> { typedef T type; };
+#endif
+//! Specialization for arrays converts to a corresponding pointer
+template<typename T, size_t N> struct strip<T(&)[N]>                { typedef T* type; };
+template<typename T, size_t N> struct strip<const T(&)[N]>          { typedef const T* type; };
+template<typename T, size_t N> struct strip<volatile T(&)[N]>       { typedef volatile T* type; };
+template<typename T, size_t N> struct strip<const volatile T(&)[N]> { typedef const volatile T* type; };
+
+//! Detects whether two given types are the same
+template<class U, class V> struct is_same_type      { static const bool value = false; };
+template<class W>          struct is_same_type<W,W> { static const bool value = true; };
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+
+//! Allows to store a function parameter pack as a variable and later pass it to another function
+template< typename... Types >
+struct stored_pack;
+
+template<>
+struct stored_pack<>
+{
+    typedef stored_pack<> pack_type;
+    stored_pack() {}
+
+    // Friend front-end functions
+    template< typename F, typename Pack > friend void call( F&& f, Pack&& p );
+    template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p );
+
+protected:
+    // Ideally, ref-qualified non-static methods would be used,
+    // but that would greatly reduce the set of compilers where it works.
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, const pack_type& /*pack*/, Preceding&&... params ) {
+        return std::forward<F>(f)( std::forward<Preceding>(params)... );
+    }
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, pack_type&& /*pack*/, Preceding&&... params ) {
+        return std::forward<F>(f)( std::forward<Preceding>(params)... );
+    }
+};
+
+template< typename T, typename... Types >
+struct stored_pack<T, Types...> : stored_pack<Types...>
+{
+    typedef stored_pack<T, Types...> pack_type;
+    typedef stored_pack<Types...> pack_remainder;
+    // Since lifetime of original values is out of control, copies should be made.
+    // Thus references should be stripped away from the deduced type.
+    typename strip<T>::type leftmost_value;
+
+    // Here rvalue references act in the same way as forwarding references,
+    // as long as class template parameters were deduced via forwarding references.
+    stored_pack( T&& t, Types&&... types )
+    : pack_remainder(std::forward<Types>(types)...), leftmost_value(std::forward<T>(t)) {}
+
+    // Friend front-end functions
+    template< typename F, typename Pack > friend void call( F&& f, Pack&& p );
+    template< typename Ret, typename F, typename Pack > friend Ret call_and_return( F&& f, Pack&& p );
+
+protected:
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, const pack_type& pack, Preceding&&... params ) {
+        return pack_remainder::template call<Ret>(
+            std::forward<F>(f), static_cast<const pack_remainder&>(pack),
+            std::forward<Preceding>(params)... , pack.leftmost_value
+        );
+    }
+    template< typename Ret, typename F, typename... Preceding >
+    static Ret call( F&& f, pack_type&& pack, Preceding&&... params ) {
+        return pack_remainder::template call<Ret>(
+            std::forward<F>(f), static_cast<pack_remainder&&>(pack),
+            std::forward<Preceding>(params)... , std::move(pack.leftmost_value)
+        );
+    }
+};
+
+//! Calls the given function with arguments taken from a stored_pack
+template< typename F, typename Pack >
+void call( F&& f, Pack&& p ) {
+    strip<Pack>::type::template call<void>( std::forward<F>(f), std::forward<Pack>(p) );
+}
+
+template< typename Ret, typename F, typename Pack >
+Ret call_and_return( F&& f, Pack&& p ) {
+    return strip<Pack>::type::template call<Ret>( std::forward<F>(f), std::forward<Pack>(p) );
+}
+
+template< typename... Types >
+stored_pack<Types...> save_pack( Types&&... types ) {
+    return stored_pack<Types...>( std::forward<Types>(types)... );
+}
+
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+} } // namespace internal, namespace tbb
+
+#endif /* __TBB_template_helpers_H */
diff --git a/include/tbb/internal/_x86_eliding_mutex_impl.h b/include/tbb/internal/_x86_eliding_mutex_impl.h
index 058a7d0..4b54939 100644
--- a/include/tbb/internal/_x86_eliding_mutex_impl.h
+++ b/include/tbb/internal/_x86_eliding_mutex_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__x86_eliding_mutex_impl_H
@@ -49,8 +41,7 @@ class padded_mutex;
     contended but the data it protects are not.  If zero-initialized, the
     mutex is considered unheld.
     @ingroup synchronization */
-class x86_eliding_mutex {
-
+class x86_eliding_mutex : tbb::internal::mutex_copy_deprecated_and_disabled {
     //! 0 if lock is released, 1 if lock is acquired.
     __TBB_atomic_flag flag;
 
diff --git a/include/tbb/internal/_x86_rtm_rw_mutex_impl.h b/include/tbb/internal/_x86_rtm_rw_mutex_impl.h
index 83853df..6b4fbff 100644
--- a/include/tbb/internal/_x86_rtm_rw_mutex_impl.h
+++ b/include/tbb/internal/_x86_rtm_rw_mutex_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB__x86_rtm_rw_mutex_impl_H
@@ -33,16 +25,15 @@
 #error Do not #include this internal file directly; use public TBB headers instead.
 #endif
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 #if __TBB_TSX_AVAILABLE
 
-#include "tbb/tbb_stddef.h"
-#include "tbb/tbb_machine.h"
-#include "tbb/tbb_profiling.h"
-#include "tbb/spin_rw_mutex.h"
+#include "../tbb_stddef.h"
+#include "../tbb_machine.h"
+#include "../tbb_profiling.h"
+#include "../spin_rw_mutex.h"
 
 namespace tbb {
-namespace interface7 {
+namespace interface8 {
 namespace internal {
 
 enum RTM_type {
@@ -59,18 +50,22 @@ static const unsigned long speculation_granularity = 64;
 //  writer-preference
 /** @ingroup synchronization */
 class x86_rtm_rw_mutex: private spin_rw_mutex {
-public:
-// bug in gcc 3.x.x causes syntax error in spite of the friend declaration above.
-// Make the scoped_lock public in that case.
 #if __TBB_USE_X86_RTM_RW_MUTEX || __TBB_GCC_VERSION < 40000
+// bug in gcc 3.x.x causes syntax error in spite of the friend declaration below.
+// Make the scoped_lock public in that case.
+public:
 #else
 private:
 #endif
-    friend class padded_mutex<x86_rtm_rw_mutex,true>;
+    friend class interface7::internal::padded_mutex<x86_rtm_rw_mutex,true>;
     class scoped_lock;   // should be private 
+    friend class scoped_lock;
 private:
     //! @cond INTERNAL
 
+    //! Internal construct unacquired mutex.
+    void __TBB_EXPORTED_METHOD internal_construct();
+
     //! Internal acquire write lock.
     // only_speculate == true if we're doing a try_lock, else false.
     void __TBB_EXPORTED_METHOD internal_acquire_writer(x86_rtm_rw_mutex::scoped_lock&, bool only_speculate=false);
@@ -83,17 +78,22 @@ private:
     bool __TBB_EXPORTED_METHOD internal_upgrade( x86_rtm_rw_mutex::scoped_lock& );
 
     //! Out of line code for downgrading a writer to a reader.
-    void __TBB_EXPORTED_METHOD internal_downgrade( x86_rtm_rw_mutex::scoped_lock& );
+    bool __TBB_EXPORTED_METHOD internal_downgrade( x86_rtm_rw_mutex::scoped_lock& );
 
     //! Internal try_acquire write lock.
     bool __TBB_EXPORTED_METHOD internal_try_acquire_writer( x86_rtm_rw_mutex::scoped_lock& );
 
-    //! Internal release read lock.
-    void internal_release_reader( x86_rtm_rw_mutex::scoped_lock& );
-
-    //! Out of line code for releasing a write lock.
-    void internal_release_writer(x86_rtm_rw_mutex::scoped_lock& );
+    //! Internal release lock.
+    void __TBB_EXPORTED_METHOD internal_release( x86_rtm_rw_mutex::scoped_lock& );
 
+    static x86_rtm_rw_mutex* internal_get_mutex( const spin_rw_mutex::scoped_lock& lock )
+    {
+        return static_cast<x86_rtm_rw_mutex*>( lock.internal_get_mutex() );
+    }
+    static void internal_set_mutex( spin_rw_mutex::scoped_lock& lock, spin_rw_mutex* mtx )
+    {
+        lock.internal_set_mutex( mtx );
+    }
     //! @endcond
 public:
     //! Construct unacquired mutex.
@@ -129,7 +129,7 @@ private:
     // and its scoped lock wherever possible.  The only way to use a speculative lock is to use
     // a scoped_lock. (because transaction_state must be local)
 
-    class scoped_lock {
+    class scoped_lock : tbb::internal::no_copy {
         friend class x86_rtm_rw_mutex;
         spin_rw_mutex::scoped_lock my_scoped_lock;
 
@@ -158,30 +158,38 @@ private:
             else        m.internal_acquire_reader(*this);
         }
 
-        void __TBB_EXPORTED_METHOD release();
+        //! Release lock
+        void release() {
+            x86_rtm_rw_mutex* mutex = x86_rtm_rw_mutex::internal_get_mutex(my_scoped_lock);
+            __TBB_ASSERT( mutex, "lock is not acquired" );
+            __TBB_ASSERT( transaction_state!=RTM_not_in_mutex, "lock is not acquired" );
+            return mutex->internal_release(*this);
+        }
 
         //! Upgrade reader to become a writer.
         /** Returns whether the upgrade happened without releasing and re-acquiring the lock */
         bool upgrade_to_writer() {
-            x86_rtm_rw_mutex* mutex = static_cast<x86_rtm_rw_mutex*>(my_scoped_lock.__internal_get_mutex());
+            x86_rtm_rw_mutex* mutex = x86_rtm_rw_mutex::internal_get_mutex(my_scoped_lock);
             __TBB_ASSERT( mutex, "lock is not acquired" );
+            __TBB_ASSERT( transaction_state==RTM_transacting_reader || transaction_state==RTM_real_reader, "Invalid state for upgrade" );
             return mutex->internal_upgrade(*this);
         }
 
         //! Downgrade writer to become a reader.
+        /** Returns whether the downgrade happened without releasing and re-acquiring the lock */
         bool downgrade_to_reader() {
-            x86_rtm_rw_mutex* mutex = static_cast<x86_rtm_rw_mutex*>(my_scoped_lock.__internal_get_mutex());
+            x86_rtm_rw_mutex* mutex = x86_rtm_rw_mutex::internal_get_mutex(my_scoped_lock);
             __TBB_ASSERT( mutex, "lock is not acquired" );
-            mutex->internal_downgrade(*this);
-            return true;  // real writer -> reader returns true, speculative only changes local state.
+            __TBB_ASSERT( transaction_state==RTM_transacting_writer || transaction_state==RTM_real_writer, "Invalid state for downgrade" );
+            return mutex->internal_downgrade(*this);
         }
 
         //! Attempt to acquire mutex.
         /** returns true if successful.  */
         bool try_acquire( x86_rtm_rw_mutex& m, bool write = true ) {
-#if TBB_USE_DEBUG
-            x86_rtm_rw_mutex* mutex = static_cast<x86_rtm_rw_mutex*>(my_scoped_lock.__internal_get_mutex());
-            __TBB_ASSERT( !mutex, "holding mutex already" );
+#if TBB_USE_ASSERT
+            x86_rtm_rw_mutex* mutex = x86_rtm_rw_mutex::internal_get_mutex(my_scoped_lock);
+            __TBB_ASSERT( !mutex, "lock is already acquired" );
 #endif
             // have to assign m to our mutex.
             // cannot set the mutex, because try_acquire in spin_rw_mutex depends on it being NULL.
@@ -207,13 +215,11 @@ private:
     // If true, writer holds the spin_rw_mutex.
     tbb::atomic<bool> w_flag;  // want this on a separate cache line
 
-    void __TBB_EXPORTED_METHOD internal_construct();
 };  // x86_rtm_rw_mutex
 
 }  // namespace internal
-}  // namespace interface7
+}  // namespace interface8
 }  // namespace tbb
 
-#endif  /* ( __TBB_x86_32 || __TBB_x86_64 ) */
-#endif  /* TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
+#endif  /* __TBB_TSX_AVAILABLE */
 #endif /* __TBB__x86_rtm_rw_mutex_impl_H */
diff --git a/include/tbb/machine/gcc_armv7.h b/include/tbb/machine/gcc_armv7.h
index 82025c6..6fa8536 100644
--- a/include/tbb/machine/gcc_armv7.h
+++ b/include/tbb/machine/gcc_armv7.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/include/tbb/machine/gcc_generic.h b/include/tbb/machine/gcc_generic.h
index b496aca..257af96 100644
--- a/include/tbb/machine/gcc_generic.h
+++ b/include/tbb/machine/gcc_generic.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_gcc_generic_H)
diff --git a/include/tbb/machine/gcc_ia32_common.h b/include/tbb/machine/gcc_ia32_common.h
index d8c3628..c919287 100644
--- a/include/tbb/machine/gcc_ia32_common.h
+++ b/include/tbb/machine/gcc_ia32_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_machine_gcc_ia32_common_H
@@ -33,10 +25,11 @@
 //uses __TBB_Log2 and contains the assert and remove the assert from here and all other
 //platform-specific headers.
 //TODO: Check if use of gcc intrinsic gives a better chance for cross call optimizations
-static inline intptr_t __TBB_machine_lg( uintptr_t x ) {
-    __TBB_ASSERT(x, "__TBB_Log2(0) undefined");
-    uintptr_t j;
-    __asm__ ("bsr %1,%0" : "=r"(j) : "r"(x));
+template <typename T>
+static inline intptr_t __TBB_machine_lg( T x ) {
+    __TBB_ASSERT(x>0, "The logarithm of a non-positive value is undefined.");
+    uintptr_t j, i = x;
+    __asm__("bsr %1,%0" : "=r"(j) : "r"(i));
     return j;
 }
 #define __TBB_Log2(V)  __TBB_machine_lg(V)
@@ -63,35 +56,43 @@ static inline void __TBB_machine_pause( int32_t delay ) {
 // API to retrieve/update FPU control setting
 #ifndef __TBB_CPU_CTL_ENV_PRESENT
 #define __TBB_CPU_CTL_ENV_PRESENT 1
-
-struct __TBB_cpu_ctl_env_t {
+namespace tbb {
+namespace internal {
+class cpu_ctl_env {
+private:
     int     mxcsr;
     short   x87cw;
+    static const int MXCSR_CONTROL_MASK = ~0x3f; /* all except last six status bits */
+public:
+    bool operator!=( const cpu_ctl_env& ctl ) const { return mxcsr != ctl.mxcsr || x87cw != ctl.x87cw; }
+    void get_env() {
+    #if __TBB_ICC_12_0_INL_ASM_FSTCW_BROKEN
+        cpu_ctl_env loc_ctl;
+        __asm__ __volatile__ (
+                "stmxcsr %0\n\t"
+                "fstcw %1"
+                : "=m"(loc_ctl.mxcsr), "=m"(loc_ctl.x87cw)
+        );
+        *this = loc_ctl;
+    #else
+        __asm__ __volatile__ (
+                "stmxcsr %0\n\t"
+                "fstcw %1"
+                : "=m"(mxcsr), "=m"(x87cw)
+        );
+    #endif
+        mxcsr &= MXCSR_CONTROL_MASK;
+    }
+    void set_env() const {
+        __asm__ __volatile__ (
+                "ldmxcsr %0\n\t"
+                "fldcw %1"
+                : : "m"(mxcsr), "m"(x87cw)
+        );
+    }
 };
-inline void __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* ctl ) {
-#if __TBB_ICC_12_0_INL_ASM_FSTCW_BROKEN
-    __TBB_cpu_ctl_env_t loc_ctl;
-    __asm__ __volatile__ (
-            "stmxcsr %0\n\t"
-            "fstcw %1"
-            : "=m"(loc_ctl.mxcsr), "=m"(loc_ctl.x87cw)
-    );
-    *ctl = loc_ctl;
-#else
-    __asm__ __volatile__ (
-            "stmxcsr %0\n\t"
-            "fstcw %1"
-            : "=m"(ctl->mxcsr), "=m"(ctl->x87cw)
-    );
-#endif
-}
-inline void __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* ctl ) {
-    __asm__ __volatile__ (
-            "ldmxcsr %0\n\t"
-            "fldcw %1"
-            : : "m"(ctl->mxcsr), "m"(ctl->x87cw)
-    );
-}
+} // namespace internal
+} // namespace tbb
 #endif /* !__TBB_CPU_CTL_ENV_PRESENT */
 
 #include "gcc_itsx.h"
diff --git a/include/tbb/machine/gcc_itsx.h b/include/tbb/machine/gcc_itsx.h
index bd0c5ac..af1b530 100644
--- a/include/tbb/machine/gcc_itsx.h
+++ b/include/tbb/machine/gcc_itsx.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_gcc_itsx_H)
@@ -69,6 +61,9 @@ inline static void __TBB_machine_unlock_elided( volatile uint8_t* lk )
 #include <immintrin.h>
 
 #define __TBB_machine_is_in_transaction _xtest
+#define __TBB_machine_begin_transaction _xbegin
+#define __TBB_machine_end_transaction   _xend
+#define __TBB_machine_transaction_conflict_abort() _xabort(0xff)
 
 #else
 
@@ -87,17 +82,6 @@ inline static bool __TBB_machine_is_in_transaction()
 #endif
     return res==0;
 }
-#endif /* __TBB_TSX_INTRINSICS_PRESENT */
-
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-
-#if __TBB_TSX_INTRINSICS_PRESENT
-
-#define __TBB_machine_begin_transaction _xbegin
-#define __TBB_machine_end_transaction   _xend
-#define __TBB_machine_transaction_conflict_abort() _xabort(0xff)
-
-#else
 
 /*!
  * Enter speculative execution mode.
@@ -137,4 +121,3 @@ inline static void __TBB_machine_transaction_conflict_abort()
 }
 
 #endif /* __TBB_TSX_INTRINSICS_PRESENT */
-#endif  // TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
diff --git a/include/tbb/machine/ibm_aix51.h b/include/tbb/machine/ibm_aix51.h
index 6d79511..65be8dc 100644
--- a/include/tbb/machine/ibm_aix51.h
+++ b/include/tbb/machine/ibm_aix51.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // TODO: revise by comparing with mac_ppc.h
diff --git a/include/tbb/machine/icc_generic.h b/include/tbb/machine/icc_generic.h
index c06b6f9..0ebe724 100644
--- a/include/tbb/machine/icc_generic.h
+++ b/include/tbb/machine/icc_generic.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_icc_generic_H)
@@ -57,13 +49,20 @@
 #if _MSC_VER
     //TODO: any way to use same intrinsics on windows and linux?
     #pragma intrinsic(_ReadWriteBarrier)
-    #pragma intrinsic(_mm_mfence)
     #define __TBB_compiler_fence()    _ReadWriteBarrier()
-    #define __TBB_full_memory_fence() _mm_mfence()
 #else
     #define __TBB_compiler_fence()    __asm__ __volatile__("": : :"memory")
+#endif
+
+#ifndef __TBB_full_memory_fence
+#if _MSC_VER 
+    //TODO: any way to use same intrinsics on windows and linux?
+    #pragma intrinsic(_mm_mfence)
+    #define __TBB_full_memory_fence() _mm_mfence()
+#else
     #define __TBB_full_memory_fence() __asm__ __volatile__("mfence": : :"memory")
 #endif
+#endif
 
 #define __TBB_control_consistency_helper() __TBB_compiler_fence()
 
diff --git a/include/tbb/machine/linux_common.h b/include/tbb/machine/linux_common.h
index 37013b0..7d64e3a 100644
--- a/include/tbb/machine/linux_common.h
+++ b/include/tbb/machine/linux_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_machine_H
diff --git a/include/tbb/machine/linux_ia32.h b/include/tbb/machine/linux_ia32.h
index 54c41ec..fecbe02 100644
--- a/include/tbb/machine/linux_ia32.h
+++ b/include/tbb/machine/linux_ia32.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_linux_ia32_H)
diff --git a/include/tbb/machine/linux_ia64.h b/include/tbb/machine/linux_ia64.h
index 6f69793..b7d2f1c 100644
--- a/include/tbb/machine/linux_ia64.h
+++ b/include/tbb/machine/linux_ia64.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_linux_ia64_H)
diff --git a/include/tbb/machine/linux_intel64.h b/include/tbb/machine/linux_intel64.h
index 7de9037..f63b916 100644
--- a/include/tbb/machine/linux_intel64.h
+++ b/include/tbb/machine/linux_intel64.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_linux_intel64_H)
diff --git a/include/tbb/machine/mac_ppc.h b/include/tbb/machine/mac_ppc.h
index 3d37552..f1d8e67 100644
--- a/include/tbb/machine/mac_ppc.h
+++ b/include/tbb/machine/mac_ppc.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_gcc_power_H)
diff --git a/include/tbb/machine/macos_common.h b/include/tbb/machine/macos_common.h
index c84c32b..05cfd74 100644
--- a/include/tbb/machine/macos_common.h
+++ b/include/tbb/machine/macos_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_macos_common_H)
diff --git a/include/tbb/machine/mic_common.h b/include/tbb/machine/mic_common.h
index 9312905..3a5bdae 100644
--- a/include/tbb/machine/mic_common.h
+++ b/include/tbb/machine/mic_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_mic_common_H
@@ -53,8 +45,9 @@
 #include <sched.h>
 #define __TBB_Yield() sched_yield()
 
-/** FPU control setting **/
-#define __TBB_CPU_CTL_ENV_PRESENT 0
+// low-level timing intrinsic and its type
+#define __TBB_machine_time_stamp() _rdtsc()
+typedef uint64_t machine_tsc_t;
 
 /** Specifics **/
 #define __TBB_STEALING_ABORT_ON_CONTENTION 1
diff --git a/include/tbb/machine/msvc_armv7.h b/include/tbb/machine/msvc_armv7.h
index ae4c872..de9b02e 100644
--- a/include/tbb/machine/msvc_armv7.h
+++ b/include/tbb/machine/msvc_armv7.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_msvc_armv7_H)
@@ -101,26 +93,41 @@ inline void __TBB_machine_pause (int32_t delay )
     }
 }
 
+// API to retrieve/update FPU control setting
+#define __TBB_CPU_CTL_ENV_PRESENT 1
+
 namespace tbb {
-    namespace internal {
-        template <typename T, size_t S>
-        struct machine_load_store_relaxed {
-            static inline T load ( const volatile T& location ) {
-                const T value = location;
-
-                /*
-                * An extra memory barrier is required for errata #761319
-                * Please see http://infocenter.arm.com/help/topic/com.arm.doc.uan0004a
-                */
-                __TBB_acquire_consistency_helper();
-                return value;
-            }
-
-            static inline void store ( volatile T& location, T value ) {
-                location = value;
-            }
-        };
-    }} // namespaces internal, tbb
+namespace internal {
+
+template <typename T, size_t S>
+struct machine_load_store_relaxed {
+    static inline T load ( const volatile T& location ) {
+        const T value = location;
+
+        /*
+        * An extra memory barrier is required for errata #761319
+        * Please see http://infocenter.arm.com/help/topic/com.arm.doc.uan0004a
+        */
+        __TBB_acquire_consistency_helper();
+        return value;
+    }
+
+    static inline void store ( volatile T& location, T value ) {
+        location = value;
+    }
+};
+
+class cpu_ctl_env {
+private:
+    unsigned int my_ctl;
+public:
+    bool operator!=( const cpu_ctl_env& ctl ) const { return my_ctl != ctl.my_ctl; }
+    void get_env() { my_ctl = _control87(0, 0); }
+    void set_env() const { _control87( my_ctl, ~0U ); }
+};
+
+} // namespace internal
+} // namespaces tbb
 
 // Machine specific atomic operations
 #define __TBB_CompareAndSwap4(P,V,C) __TBB_machine_cmpswp4(P,V,C)
@@ -148,18 +155,6 @@ extern "C" __declspec(dllimport) int __stdcall SwitchToThread( void );
 #define __TBB_Yield() __yield()
 #endif
 
-// API to retrieve/update FPU control setting
-#define __TBB_CPU_CTL_ENV_PRESENT 1
-
-typedef unsigned int __TBB_cpu_ctl_env_t;
-
-inline void __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* ctl ) {
-    *ctl = _control87(0, 0);
-}
-inline void __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* ctl ) {
-    _control87( *ctl, ~0U );
-}
-
 // Machine specific atomic operations
 #define __TBB_AtomicOR(P,V)     __TBB_machine_OR(P,V)
 #define __TBB_AtomicAND(P,V)    __TBB_machine_AND(P,V)
diff --git a/include/tbb/machine/msvc_ia32_common.h b/include/tbb/machine/msvc_ia32_common.h
index 560bfa7..605d996 100644
--- a/include/tbb/machine/msvc_ia32_common.h
+++ b/include/tbb/machine/msvc_ia32_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_machine_msvc_ia32_common_H
@@ -140,19 +132,17 @@ static inline intptr_t __TBB_machine_lg( uintptr_t i ) {
 
 // API to retrieve/update FPU control setting
 #define __TBB_CPU_CTL_ENV_PRESENT 1
-struct __TBB_cpu_ctl_env_t {
-    int     mxcsr;
-    short   x87cw;
-};
+
+namespace tbb { namespace internal { class cpu_ctl_env; } }
 #if __TBB_X86_MSVC_INLINE_ASM_AVAILABLE
-    inline void __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* ctl ) {
+    inline void __TBB_get_cpu_ctl_env ( tbb::internal::cpu_ctl_env* ctl ) {
         __asm {
             __asm mov     __TBB_r(ax), ctl
             __asm stmxcsr [__TBB_r(ax)]
             __asm fstcw   [__TBB_r(ax)+4]
         }
     }
-    inline void __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* ctl ) {
+    inline void __TBB_set_cpu_ctl_env ( const tbb::internal::cpu_ctl_env* ctl ) {
         __asm {
             __asm mov     __TBB_r(ax), ctl
             __asm ldmxcsr [__TBB_r(ax)]
@@ -161,11 +151,28 @@ struct __TBB_cpu_ctl_env_t {
     }
 #else
     extern "C" {
-        void __TBB_EXPORTED_FUNC __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* );
-        void __TBB_EXPORTED_FUNC __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* );
+        void __TBB_EXPORTED_FUNC __TBB_get_cpu_ctl_env ( tbb::internal::cpu_ctl_env* );
+        void __TBB_EXPORTED_FUNC __TBB_set_cpu_ctl_env ( const tbb::internal::cpu_ctl_env* );
     }
 #endif
 
+namespace tbb {
+namespace internal {
+class cpu_ctl_env {
+private:
+    int         mxcsr;
+    short       x87cw;
+    static const int MXCSR_CONTROL_MASK = ~0x3f; /* all except last six status bits */
+public:
+    bool operator!=( const cpu_ctl_env& ctl ) const { return mxcsr != ctl.mxcsr || x87cw != ctl.x87cw; }
+    void get_env() {
+        __TBB_get_cpu_ctl_env( this );
+        mxcsr &= MXCSR_CONTROL_MASK;
+    }
+    void set_env() const { __TBB_set_cpu_ctl_env( this ); }
+};
+} // namespace internal
+} // namespace tbb
 
 #if !__TBB_WIN8UI_SUPPORT
 extern "C" __declspec(dllimport) int __stdcall SwitchToThread( void );
@@ -190,29 +197,20 @@ extern "C" {
 #else
     inline static void __TBB_machine_try_lock_elided_cancel() { _asm pause; }
 #endif
-#if __TBB_TSX_INTRINSICS_PRESENT
-#define __TBB_machine_is_in_transaction _xtest
-#else
-    __int8  __TBB_EXPORTED_FUNC __TBB_machine_is_in_transaction();
-#endif /* __TBB_TSX_INTRINSICS_PRESENT */
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 #if __TBB_TSX_INTRINSICS_PRESENT
-
-#define __TBB_machine_begin_transaction _xbegin
-#define __TBB_machine_end_transaction   _xend
+    #define __TBB_machine_is_in_transaction _xtest
+    #define __TBB_machine_begin_transaction _xbegin
+    #define __TBB_machine_end_transaction   _xend
     // The value (0xFF) below comes from the
     // Intel(R) 64 and IA-32 Architectures Optimization Reference Manual 12.4.5 lock not free
-#define __TBB_machine_transaction_conflict_abort() _xabort(0xFF)
-
+    #define __TBB_machine_transaction_conflict_abort() _xabort(0xFF)
 #else
-
+    __int8           __TBB_EXPORTED_FUNC __TBB_machine_is_in_transaction();
     unsigned __int32 __TBB_EXPORTED_FUNC __TBB_machine_begin_transaction();
     void             __TBB_EXPORTED_FUNC __TBB_machine_end_transaction();
     void             __TBB_EXPORTED_FUNC __TBB_machine_transaction_conflict_abort();
-
 #endif /* __TBB_TSX_INTRINSICS_PRESENT */
-#endif  /* TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
 }
 
 #endif /* __TBB_machine_msvc_ia32_common_H */
diff --git a/include/tbb/machine/sunos_sparc.h b/include/tbb/machine/sunos_sparc.h
index aa9c2b2..a6d8cbd 100644
--- a/include/tbb/machine/sunos_sparc.h
+++ b/include/tbb/machine/sunos_sparc.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 
diff --git a/include/tbb/machine/windows_api.h b/include/tbb/machine/windows_api.h
index 570a509..32386e5 100644
--- a/include/tbb/machine/windows_api.h
+++ b/include/tbb/machine/windows_api.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_machine_windows_api_H
diff --git a/include/tbb/machine/windows_ia32.h b/include/tbb/machine/windows_ia32.h
index 11649c8..b25cb49 100644
--- a/include/tbb/machine/windows_ia32.h
+++ b/include/tbb/machine/windows_ia32.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_windows_ia32_H)
diff --git a/include/tbb/machine/windows_intel64.h b/include/tbb/machine/windows_intel64.h
index c21e516..963178f 100644
--- a/include/tbb/machine/windows_intel64.h
+++ b/include/tbb/machine/windows_intel64.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !defined(__TBB_machine_H) || defined(__TBB_machine_windows_intel64_H)
diff --git a/include/tbb/machine/xbox360_ppc.h b/include/tbb/machine/xbox360_ppc.h
index 2cc4468..4893627 100644
--- a/include/tbb/machine/xbox360_ppc.h
+++ b/include/tbb/machine/xbox360_ppc.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // TODO: revise by comparing with mac_ppc.h
@@ -102,7 +94,7 @@ static inline int __TBB_XBOX360_DetectNumberOfWorkers()
             ((__TBB_XBOX360_HARDWARE_THREAD_MASK >> 2) & 1) +
             ((__TBB_XBOX360_HARDWARE_THREAD_MASK >> 3) & 1) +
             ((__TBB_XBOX360_HARDWARE_THREAD_MASK >> 4) & 1) +
-            ((__TBB_XBOX360_HARDWARE_THREAD_MASK >> 5) & 1) + 1;  // +1 accomodates for the master thread
+            ((__TBB_XBOX360_HARDWARE_THREAD_MASK >> 5) & 1) + 1;  // +1 accommodates for the master thread
 }
 
 static inline int __TBB_XBOX360_GetHardwareThreadIndex(int workerThreadIndex)
diff --git a/include/tbb/memory_pool.h b/include/tbb/memory_pool.h
index 430d9ae..1ddec4f 100644
--- a/include/tbb/memory_pool.h
+++ b/include/tbb/memory_pool.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_memory_pool_H
@@ -35,11 +27,11 @@
 /** @file */
 
 #include "scalable_allocator.h"
-#include "tbb_stddef.h"
-#include "tbb_machine.h" // TODO: avoid linkage with libtbb on IA-64 architecture
-#include "tbb/atomic.h" // for as_atomic
 #include <new> // std::bad_alloc
-#if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_CPP11_STD_FORWARD_BROKEN
+#include <stdexcept> // std::runtime_error, std::invalid_argument
+// required in C++03 to construct std::runtime_error and std::invalid_argument
+#include <string>
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
 #include <utility> // std::forward
 #endif
 
@@ -125,7 +117,10 @@ public:
     
     //! Allocate space for n objects.
     pointer allocate( size_type n, const void* /*hint*/ = 0) {
-        return static_cast<pointer>( my_pool->malloc( n*sizeof(value_type) ) );
+        pointer p = static_cast<pointer>( my_pool->malloc( n*sizeof(value_type) ) );
+        if (!p)
+            tbb::internal::throw_exception(std::bad_alloc());
+        return p;
     }
     //! Free previously allocated block of memory.
     void deallocate( pointer p, size_type ) {
@@ -140,12 +135,11 @@ public:
 #if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     template<typename U, typename... Args>
     void construct(U *p, Args&&... args)
- #if __TBB_CPP11_STD_FORWARD_BROKEN
-        { ::new((void *)p) U((args)...); }
- #else
         { ::new((void *)p) U(std::forward<Args>(args)...); }
- #endif
 #else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void construct( pointer p, value_type&& value ) {::new((void*)(p)) value_type(std::move(value));}
+#endif
     void construct( pointer p, const value_type& value ) { ::new((void*)(p)) value_type(value); }
 #endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
 
@@ -228,7 +222,8 @@ memory_pool<Alloc>::memory_pool(const Alloc &src) : my_alloc(src) {
     rml::MemPoolPolicy args(allocate_request, deallocate_request,
                             sizeof(typename Alloc::value_type));
     rml::MemPoolError res = rml::pool_create_v1(intptr_t(this), &args, &my_pool);
-    if( res!=rml::POOL_OK ) __TBB_THROW(std::bad_alloc());
+    if (res!=rml::POOL_OK)
+        tbb::internal::throw_exception(std::runtime_error("Can't create pool"));
 }
 template <typename Alloc>
 void *memory_pool<Alloc>::allocate_request(intptr_t pool_id, size_t & bytes) {
@@ -258,16 +253,19 @@ int memory_pool<Alloc>::deallocate_request(intptr_t pool_id, void* raw_ptr, size
     #pragma warning (pop)
 #endif
 inline fixed_pool::fixed_pool(void *buf, size_t size) : my_buffer(buf), my_size(size) {
+    if (!buf || !size)
+        // TODO: improve support for mode with exceptions disabled
+        tbb::internal::throw_exception(std::invalid_argument("Zero in parameter is invalid"));
     rml::MemPoolPolicy args(allocate_request, 0, size, /*fixedPool=*/true);
     rml::MemPoolError res = rml::pool_create_v1(intptr_t(this), &args, &my_pool);
-    if( res!=rml::POOL_OK ) __TBB_THROW(std::bad_alloc());
+    if (res!=rml::POOL_OK)
+        tbb::internal::throw_exception(std::runtime_error("Can't create pool"));
 }
 inline void *fixed_pool::allocate_request(intptr_t pool_id, size_t & bytes) {
     fixed_pool &self = *reinterpret_cast<fixed_pool*>(pool_id);
-    // TODO: we can implement "buffer for fixed pools used only once" policy
-    // on low-level side, thus eliminate atomics here
-    if( !tbb::internal::as_atomic(self.my_size).compare_and_swap(0, (bytes=self.my_size)) )
-        return 0; // all the memory was given already
+    __TBBMALLOC_ASSERT(0 != self.my_size, "The buffer must not be used twice.");
+    bytes = self.my_size;
+    self.my_size = 0; // remember that buffer has been used
     return self.my_buffer;
 }
 
diff --git a/include/tbb/mutex.h b/include/tbb/mutex.h
index cdfaf0f..df328fd 100644
--- a/include/tbb/mutex.h
+++ b/include/tbb/mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_mutex_H
@@ -45,7 +37,7 @@ namespace tbb {
 //! Wrapper around the platform's native reader-writer lock.
 /** For testing purposes only.
     @ingroup synchronization */
-class mutex {
+class mutex : internal::mutex_copy_deprecated_and_disabled {
 public:
     //! Construct unacquired mutex.
     mutex() {
@@ -155,13 +147,15 @@ public:
     //! Acquire lock
     void lock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         new(tmp.begin()) scoped_lock(*this);
 #else
   #if _WIN32||_WIN64
         EnterCriticalSection(&impl);
   #else
-        pthread_mutex_lock(&impl);
+        int error_code = pthread_mutex_lock(&impl);
+        if( error_code )
+            tbb::internal::handle_perror(error_code,"mutex: pthread_mutex_lock failed");
   #endif /* _WIN32||_WIN64 */
 #endif /* TBB_USE_ASSERT */
     }
@@ -170,7 +164,7 @@ public:
     /** Return true if lock acquired; false otherwise. */
     bool try_lock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         scoped_lock& s = *tmp.begin();
         s.my_mutex = NULL;
         return s.internal_try_acquire(*this);
@@ -186,7 +180,7 @@ public:
     //! Release lock
     void unlock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         scoped_lock& s = *tmp.begin();
         s.my_mutex = this;
         s.internal_release();
diff --git a/include/tbb/null_mutex.h b/include/tbb/null_mutex.h
index 7207978..78a16b7 100644
--- a/include/tbb/null_mutex.h
+++ b/include/tbb/null_mutex.h
@@ -1,46 +1,37 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_null_mutex_H
 #define __TBB_null_mutex_H
 
+#include "tbb_stddef.h"
+
 namespace tbb {
     
 //! A mutex which does nothing
 /** A null_mutex does no operation and simulates success.
     @ingroup synchronization */
-class null_mutex {   
-    //! Deny assignment and copy construction 
-    null_mutex( const null_mutex& );   
-    void operator=( const null_mutex& );   
+class null_mutex : internal::mutex_copy_deprecated_and_disabled {
 public:   
     //! Represents acquisition of a mutex.
-    class scoped_lock {   
+    class scoped_lock : internal::no_copy {   
     public:   
         scoped_lock() {}
         scoped_lock( null_mutex& ) {}   
diff --git a/include/tbb/null_rw_mutex.h b/include/tbb/null_rw_mutex.h
index 49a94bf..390a85b 100644
--- a/include/tbb/null_rw_mutex.h
+++ b/include/tbb/null_rw_mutex.h
@@ -1,46 +1,37 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_null_rw_mutex_H
 #define __TBB_null_rw_mutex_H
 
+#include "tbb_stddef.h"
+
 namespace tbb {
     
 //! A rw mutex which does nothing
 /** A null_rw_mutex is a rw mutex that does nothing and simulates successful operation.
     @ingroup synchronization */
-class null_rw_mutex {
-    //! Deny assignment and copy construction 
-    null_rw_mutex( const null_rw_mutex& );   
-    void operator=( const null_rw_mutex& );   
+class null_rw_mutex : internal::mutex_copy_deprecated_and_disabled {
 public:   
     //! Represents acquisition of a mutex.
-    class scoped_lock {   
+    class scoped_lock : internal::no_copy {   
     public:   
         scoped_lock() {}
         scoped_lock( null_rw_mutex& , bool = true ) {}
diff --git a/include/tbb/parallel_do.h b/include/tbb/parallel_do.h
index f2e80c3..1bae6b4 100644
--- a/include/tbb/parallel_do.h
+++ b/include/tbb/parallel_do.h
@@ -1,34 +1,28 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_do_H
 #define __TBB_parallel_do_H
 
+#include "internal/_range_iterator.h"
+#include "internal/_template_helpers.h"
 #include "task.h"
 #include "aligned_space.h"
 #include <iterator>
@@ -39,26 +33,6 @@ namespace tbb {
 namespace internal {
     template<typename Body, typename Item> class parallel_do_feeder_impl;
     template<typename Body> class do_group_task;
-
-    //! Strips its template type argument from 'cv' and '&' qualifiers
-    template<typename T>
-    struct strip { typedef T type; };
-    template<typename T>
-    struct strip<T&> { typedef T type; };
-    template<typename T>
-    struct strip<const T&> { typedef T type; };
-    template<typename T>
-    struct strip<volatile T&> { typedef T type; };
-    template<typename T>
-    struct strip<const volatile T&> { typedef T type; };
-    // Most of the compilers remove cv-qualifiers from non-reference function argument types. 
-    // But unfortunately there are those that don't.
-    template<typename T>
-    struct strip<const T> { typedef T type; };
-    template<typename T>
-    struct strip<volatile T> { typedef T type; };
-    template<typename T>
-    struct strip<const volatile T> { typedef T type; };
 } // namespace internal
 //! @endcond
 
@@ -489,6 +463,16 @@ void parallel_do( Iterator first, Iterator last, const Body& body )
         );
 }
 
+template<typename Range, typename Body>
+void parallel_do(Range& rng, const Body& body) {
+    parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body);
+}
+
+template<typename Range, typename Body>
+void parallel_do(const Range& rng, const Body& body) {
+    parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body);
+}
+
 #if __TBB_TASK_GROUP_CONTEXT
 //! Parallel iteration over a range, with optional addition of more work and user-supplied context
 /** @ingroup algorithms */
@@ -499,6 +483,17 @@ void parallel_do( Iterator first, Iterator last, const Body& body, task_group_co
         return;
     internal::select_parallel_do( first, last, body, &Body::operator(), context );
 }
+
+template<typename Range, typename Body>
+void parallel_do(Range& rng, const Body& body, task_group_context& context) {
+    parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
+}
+
+template<typename Range, typename Body>
+void parallel_do(const Range& rng, const Body& body, task_group_context& context) {
+    parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
+}
+
 #endif // __TBB_TASK_GROUP_CONTEXT
 
 //@}
diff --git a/include/tbb/parallel_for.h b/include/tbb/parallel_for.h
index 7193a03..dd6eb99 100644
--- a/include/tbb/parallel_for.h
+++ b/include/tbb/parallel_for.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_for_H
@@ -37,7 +29,7 @@
 
 namespace tbb {
 
-namespace interface6 {
+namespace interface7 {
 //! @cond INTERNAL
 namespace internal {
 
@@ -68,10 +60,10 @@ namespace internal {
         }
         //! Splitting constructor used to generate children.
         /** parent_ becomes left child.  Newly constructed object is right child. */
-        start_for( start_for& parent_, split ) :
-            my_range(parent_.my_range, split()),
+        start_for( start_for& parent_, typename Partitioner::split_type& split_obj) :
+            my_range(parent_.my_range, split_obj),
             my_body(parent_.my_body),
-            my_partition(parent_.my_partition, split())
+            my_partition(parent_.my_partition, split_obj)
         {
             my_partition.set_affinity(*this);
         }
@@ -80,7 +72,7 @@ namespace internal {
         start_for( start_for& parent_, const Range& r, depth_t d ) :
             my_range(r),
             my_body(parent_.my_body),
-            my_partition(parent_.my_partition,split())
+            my_partition(parent_.my_partition, split())
         {
             my_partition.set_affinity(*this);
             my_partition.align_depth( d );
@@ -110,8 +102,8 @@ namespace internal {
         void run_body( Range &r ) { my_body( r ); }
 
         //! spawn right task, serves as callback for partitioner
-        void offer_work(split) {
-            spawn( *new( allocate_sibling(static_cast<task*>(this), sizeof(start_for)) ) start_for(*this, split()) );
+        void offer_work(typename Partitioner::split_type& split_obj) {
+            spawn( *new( allocate_sibling(static_cast<task*>(this), sizeof(start_for)) ) start_for(*this, split_obj) );
         }
         //! spawn right task, serves as callback for partitioner
         void offer_work(const Range& r, depth_t d = 0) {
@@ -141,7 +133,7 @@ namespace internal {
 
 //! @cond INTERNAL
 namespace internal {
-    using interface6::internal::start_for;
+    using interface7::internal::start_for;
 
     //! Calls the function with values from range [begin, end) with a step provided
     template<typename Function, typename Index>
diff --git a/include/tbb/parallel_for_each.h b/include/tbb/parallel_for_each.h
index a62e3dd..e0527dd 100644
--- a/include/tbb/parallel_for_each.h
+++ b/include/tbb/parallel_for_each.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_for_each_H
@@ -61,6 +53,20 @@ void parallel_for_each(InputIterator first, InputIterator last, const Function&
     internal::parallel_for_each_body<Function, InputIterator> body(f);
     tbb::parallel_do (first, last, body, context);
 }
+
+//! Calls function f for all items from rng using user-supplied context
+/** @ingroup algorithms */
+template<typename Range, typename Function>
+void parallel_for_each(Range& rng, const Function& f, task_group_context& context) {
+    parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f, context);
+}
+
+//! Calls function f for all items from const rng user-supplied context
+/** @ingroup algorithms */
+template<typename Range, typename Function>
+void parallel_for_each(const Range& rng, const Function& f, task_group_context& context) {
+    parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f, context);
+}
 #endif /* __TBB_TASK_GROUP_CONTEXT */
 
 //! Uses default context
@@ -70,6 +76,18 @@ void parallel_for_each(InputIterator first, InputIterator last, const Function&
     tbb::parallel_do (first, last, body);
 }
 
+//! Uses default context
+template<typename Range, typename Function>
+void parallel_for_each(Range& rng, const Function& f) {
+    parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f);
+}
+
+//! Uses default context
+template<typename Range, typename Function>
+void parallel_for_each(const Range& rng, const Function& f) {
+    parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f);
+}
+
 //@}
 
 } // namespace
diff --git a/include/tbb/parallel_invoke.h b/include/tbb/parallel_invoke.h
index 1a6c78a..14c0764 100644
--- a/include/tbb/parallel_invoke.h
+++ b/include/tbb/parallel_invoke.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_invoke_H
@@ -31,6 +23,10 @@
 
 #include "task.h"
 
+#if __TBB_VARIADIC_PARALLEL_INVOKE
+    #include <utility>
+#endif
+
 namespace tbb {
 
 #if !__TBB_TASK_GROUP_CONTEXT
@@ -103,9 +99,40 @@ namespace internal {
         {
             set_ref_count(number_of_children + 1);
         }
+
+#if __TBB_VARIADIC_PARALLEL_INVOKE
+        void add_children() {}
+        void add_children(tbb::task_group_context&) {}
+
+        template <typename function>
+        void add_children(function&& _func)
+        {
+            internal::function_invoker<function>* invoker = new (allocate_child()) internal::function_invoker<function>(std::forward<function>(_func));
+            __TBB_ASSERT(invoker, "Child task allocation failed");
+            spawn(*invoker);
+        }
+
+        template<typename function>
+        void add_children(function&& _func, tbb::task_group_context&)
+        {
+            add_children(std::forward<function>(_func));
+        }
+
+        // Adds child(ren) task(s) and spawns them
+        template <typename function1, typename function2, typename... function>
+        void add_children(function1&& _func1, function2&& _func2, function&&... _func)
+        {
+            // The third argument is dummy, it is ignored actually.
+            parallel_invoke_noop noop;
+            typedef internal::spawner<2, function1, function2, parallel_invoke_noop> spawner_type;
+            spawner_type & sub_root = *new(allocate_child()) spawner_type(std::forward<function1>(_func1), std::forward<function2>(_func2), noop);
+            spawn(sub_root);
+            add_children(std::forward<function>(_func)...);
+        }
+#else
         // Adds child task and spawns it
         template <typename function>
-        void add_child (const function &_func)
+        void add_children (const function &_func)
         {
             internal::function_invoker<function>* invoker = new (allocate_child()) internal::function_invoker<function>(_func);
             __TBB_ASSERT(invoker, "Child task allocation failed");
@@ -129,6 +156,7 @@ namespace internal {
             internal::spawner<3, function1, function2, function3>& sub_root = *new(allocate_child())internal::spawner<3, function1, function2, function3>(_func1, _func2, _func3);
             spawn(sub_root);
         }
+#endif // __TBB_VARIADIC_PARALLEL_INVOKE
 
         // Waits for all child tasks
         template <typename F0>
@@ -156,6 +184,51 @@ namespace internal {
         }
         internal::parallel_invoke_helper& root;
     };
+
+#if __TBB_VARIADIC_PARALLEL_INVOKE
+//  Determine whether the last parameter in a pack is task_group_context
+    template<typename... T> struct impl_selector; // to workaround a GCC bug
+
+    template<typename T1, typename... T> struct impl_selector<T1, T...> {
+        typedef typename impl_selector<T...>::type type;
+    };
+
+    template<typename T> struct impl_selector<T> {
+        typedef false_type type;
+    };
+    template<> struct impl_selector<task_group_context&> {
+        typedef true_type  type;
+    };
+
+    // Select task_group_context parameter from the back of a pack
+    inline task_group_context& get_context( task_group_context& tgc ) { return tgc; }
+
+    template<typename T1, typename... T>
+    task_group_context& get_context( T1&& /*ignored*/, T&&... t )
+    { return get_context( std::forward<T>(t)... ); }
+
+    // task_group_context is known to be at the back of the parameter pack
+    template<typename F0, typename F1, typename... F>
+    void parallel_invoke_impl(true_type, F0&& f0, F1&& f1, F&&... f) {
+        __TBB_STATIC_ASSERT(sizeof...(F)>0, "Variadic parallel_invoke implementation broken?");
+        // # of child tasks: f0, f1, and a task for each two elements of the pack except the last
+        const size_t number_of_children = 2 + sizeof...(F)/2;
+        parallel_invoke_cleaner cleaner(number_of_children, get_context(std::forward<F>(f)...));
+        parallel_invoke_helper& root = cleaner.root;
+
+        root.add_children(std::forward<F>(f)...);
+        root.add_children(std::forward<F1>(f1));
+        root.run_and_finish(std::forward<F0>(f0));
+    }
+
+    // task_group_context is not in the pack, needs to be added
+    template<typename F0, typename F1, typename... F>
+    void parallel_invoke_impl(false_type, F0&& f0, F1&& f1, F&&... f) {
+        tbb::task_group_context context;
+        // Add context to the arguments, and redirect to the other overload
+        parallel_invoke_impl(true_type(), std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F>(f)..., context);
+    }
+#endif
 } // namespace internal
 //! @endcond
 
@@ -165,6 +238,18 @@ namespace internal {
 //! Executes a list of tasks in parallel and waits for all tasks to complete.
 /** @ingroup algorithms */
 
+#if __TBB_VARIADIC_PARALLEL_INVOKE
+
+// parallel_invoke for two or more arguments via variadic templates
+// presence of task_group_context is defined automatically
+template<typename F0, typename F1, typename... F>
+void parallel_invoke(F0&& f0, F1&& f1, F&&... f) {
+    typedef typename internal::impl_selector<internal::false_type, F...>::type selector_type;
+    internal::parallel_invoke_impl(selector_type(), std::forward<F0>(f0), std::forward<F1>(f1), std::forward<F>(f)...);
+}
+
+#else
+
 // parallel_invoke with user-defined context
 // two arguments
 template<typename F0, typename F1 >
@@ -172,7 +257,7 @@ void parallel_invoke(const F0& f0, const F1& f1, tbb::task_group_context& contex
     internal::parallel_invoke_cleaner cleaner(2, context);
     internal::parallel_invoke_helper& root = cleaner.root;
 
-    root.add_child(f1);
+    root.add_children(f1);
 
     root.run_and_finish(f0);
 }
@@ -183,8 +268,8 @@ void parallel_invoke(const F0& f0, const F1& f1, const F2& f2, tbb::task_group_c
     internal::parallel_invoke_cleaner cleaner(3, context);
     internal::parallel_invoke_helper& root = cleaner.root;
 
-    root.add_child(f2);
-    root.add_child(f1);
+    root.add_children(f2);
+    root.add_children(f1);
 
     root.run_and_finish(f0);
 }
@@ -197,9 +282,9 @@ void parallel_invoke(const F0& f0, const F1& f1, const F2& f2, const F3& f3,
     internal::parallel_invoke_cleaner cleaner(4, context);
     internal::parallel_invoke_helper& root = cleaner.root;
 
-    root.add_child(f3);
-    root.add_child(f2);
-    root.add_child(f1);
+    root.add_children(f3);
+    root.add_children(f2);
+    root.add_children(f1);
 
     root.run_and_finish(f0);
 }
@@ -336,7 +421,7 @@ void parallel_invoke(const F0& f0, const F1& f1, const F2& f2, const F3& f3, con
     task_group_context context;
     parallel_invoke<F0, F1, F2, F3, F4, F5, F6>(f0, f1, f2, f3, f4, f5, f6, context);
 }
-// eigth arguments
+// eight arguments
 template<typename F0, typename F1, typename F2, typename F3, typename F4,
          typename F5, typename F6, typename F7>
 void parallel_invoke(const F0& f0, const F1& f1, const F2& f2, const F3& f3, const F4& f4,
@@ -363,7 +448,7 @@ void parallel_invoke(const F0& f0, const F1& f1, const F2& f2, const F3& f3, con
     task_group_context context;
     parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9>(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, context);
 }
-
+#endif // __TBB_VARIADIC_PARALLEL_INVOKE
 //@}
 
 } // namespace
diff --git a/include/tbb/parallel_reduce.h b/include/tbb/parallel_reduce.h
index 5abaca7..b0e9357 100644
--- a/include/tbb/parallel_reduce.h
+++ b/include/tbb/parallel_reduce.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_reduce_H
@@ -37,7 +29,7 @@
 
 namespace tbb {
 
-namespace interface6 {
+namespace interface7 {
 //! @cond INTERNAL
 namespace internal {
 
@@ -59,7 +51,7 @@ namespace internal {
         bool has_right_zombie;
         const reduction_context my_context;
         Body* my_body;
-        aligned_space<Body,1> zombie_space;
+        aligned_space<Body> zombie_space;
         finish_reduce( reduction_context context_ ) :
             has_right_zombie(false), // TODO: substitute by flag_task::child_stolen?
             my_context(context_),
@@ -116,10 +108,10 @@ public:
         }
         //! Splitting constructor used to generate children.
         /** parent_ becomes left child.  Newly constructed object is right child. */
-        start_reduce( start_reduce& parent_, split ) :
+        start_reduce( start_reduce& parent_, typename Partitioner::split_type& split_obj ) :
             my_body(parent_.my_body),
-            my_range(parent_.my_range, split()),
-            my_partition(parent_.my_partition, split()),
+            my_range(parent_.my_range, split_obj),
+            my_partition(parent_.my_partition, split_obj),
             my_context(right_child)
         {
             my_partition.set_affinity(*this);
@@ -160,11 +152,11 @@ public:
 
         //! spawn right task, serves as callback for partitioner
         // TODO: remove code duplication from 'offer_work' methods
-        void offer_work(split) {
+        void offer_work(typename Partitioner::split_type& split_obj) {
             task *tasks[2];
             allocate_sibling(static_cast<task*>(this), tasks, sizeof(start_reduce), sizeof(finish_type));
             new((void*)tasks[0]) finish_type(my_context);
-            new((void*)tasks[1]) start_reduce(*this, split());
+            new((void*)tasks[1]) start_reduce(*this, split_obj);
             spawn(*tasks[1]);
         }
         //! spawn right task, serves as callback for partitioner
@@ -289,8 +281,8 @@ public:
 
 //! @cond INTERNAL
 namespace internal {
-    using interface6::internal::start_reduce;
-    using interface6::internal::start_deterministic_reduce;
+    using interface7::internal::start_reduce;
+    using interface7::internal::start_deterministic_reduce;
     //! Auxiliary class for parallel_reduce; for internal use only.
     /** The adaptor class that implements \ref parallel_reduce_body_req "parallel_reduce Body"
         using given \ref parallel_reduce_lambda_req "anonymous function objects".
diff --git a/include/tbb/parallel_scan.h b/include/tbb/parallel_scan.h
index 987c3a1..716338b 100644
--- a/include/tbb/parallel_scan.h
+++ b/include/tbb/parallel_scan.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_scan_H
@@ -58,7 +50,7 @@ namespace internal {
     public:
         Body my_body;
     private:
-        aligned_space<Range,1> my_range;
+        aligned_space<Range> my_range;
         //! Where to put result of last subrange, or NULL if not last subrange.
         Body* my_stuff_last;
     public:
diff --git a/include/tbb/parallel_sort.h b/include/tbb/parallel_sort.h
index 445cf10..34f373a 100644
--- a/include/tbb/parallel_sort.h
+++ b/include/tbb/parallel_sort.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_sort_H
@@ -31,6 +23,7 @@
 
 #include "parallel_for.h"
 #include "blocked_range.h"
+#include "internal/_range_iterator.h"
 #include <algorithm>
 #include <iterator>
 #include <functional>
@@ -217,6 +210,34 @@ inline void parallel_sort( RandomAccessIterator begin, RandomAccessIterator end
     parallel_sort( begin, end, std::less< typename std::iterator_traits<RandomAccessIterator>::value_type >() );
 }
 
+//! Sorts the data in rng using the given comparator
+/** @ingroup algorithms **/
+template<typename Range, typename Compare>
+void parallel_sort(Range& rng, const Compare& comp) {
+    parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng), comp);
+}
+
+//! Sorts the data in const rng using the given comparator
+/** @ingroup algorithms **/
+template<typename Range, typename Compare>
+void parallel_sort(const Range& rng, const Compare& comp) {
+    parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng), comp);
+}
+
+//! Sorts the data in rng with a default comparator \c std::less<RandomAccessIterator>
+/** @ingroup algorithms **/
+template<typename Range>
+void parallel_sort(Range& rng) {
+    parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng));
+}
+
+//! Sorts the data in const rng with a default comparator \c std::less<RandomAccessIterator>
+/** @ingroup algorithms **/
+template<typename Range>
+void parallel_sort(const Range& rng) {
+    parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng));
+}
+
 //! Sorts the data in the range \c [begin,end) with a default comparator \c std::less<T>
 /** @ingroup algorithms **/
 template<typename T>
diff --git a/include/tbb/parallel_while.h b/include/tbb/parallel_while.h
index f0a1617..bf49953 100644
--- a/include/tbb/parallel_while.h
+++ b/include/tbb/parallel_while.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_parallel_while
diff --git a/include/tbb/partitioner.h b/include/tbb/partitioner.h
index 733186a..6ee98fd 100644
--- a/include/tbb/partitioner.h
+++ b/include/tbb/partitioner.h
@@ -1,47 +1,58 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_partitioner_H
 #define __TBB_partitioner_H
 
 #ifndef __TBB_INITIAL_CHUNKS
+// initial task divisions per thread
 #define __TBB_INITIAL_CHUNKS 2
 #endif
 #ifndef __TBB_RANGE_POOL_CAPACITY
+// maximum number of elements in range pool
 #define __TBB_RANGE_POOL_CAPACITY 8
 #endif
 #ifndef __TBB_INIT_DEPTH
+// initial value for depth of range pool
 #define __TBB_INIT_DEPTH 5
 #endif
+#ifndef __TBB_DEMAND_DEPTH_ADD
+// when imbalance is found range splits this value times more
+#define __TBB_DEMAND_DEPTH_ADD 2
+#endif
+#ifndef __TBB_STATIC_THRESHOLD
+// necessary number of clocks for the work to be distributed among all tasks
+#define __TBB_STATIC_THRESHOLD 40000
+#endif
+#if __TBB_DEFINE_MIC
+#define __TBB_NONUNIFORM_TASK_CREATION 1
+#ifdef __TBB_machine_time_stamp
+#define __TBB_USE_MACHINE_TIME_STAMPS 1
+#define __TBB_task_duration() __TBB_STATIC_THRESHOLD
+#endif // __TBB_machine_time_stamp
+#endif // __TBB_DEFINE_MIC
 
 #include "task.h"
 #include "aligned_space.h"
 #include "atomic.h"
+#include "internal/_template_helpers.h"
 
 #if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
     // Workaround for overzealous compiler warnings
@@ -54,7 +65,7 @@ namespace tbb {
 class auto_partitioner;
 class simple_partitioner;
 class affinity_partitioner;
-namespace interface6 {
+namespace interface7 {
     namespace internal {
         class affinity_partition_type;
     }
@@ -66,7 +77,7 @@ size_t __TBB_EXPORTED_FUNC get_initial_auto_partitioner_divisor();
 //! Defines entry point for affinity partitioner into tbb run-time library.
 class affinity_partitioner_base_v3: no_copy {
     friend class tbb::affinity_partitioner;
-    friend class tbb::interface6::internal::affinity_partition_type;
+    friend class tbb::interface7::internal::affinity_partition_type;
     //! Array that remembers affinities of tree positions to affinity_id.
     /** NULL if my_size==0. */
     affinity_id* my_array;
@@ -98,12 +109,12 @@ template<typename Range, typename Body, typename Partitioner> class start_scan;
 } //< namespace internal @endcond
 
 namespace serial {
-namespace interface6 {
+namespace interface7 {
 template<typename Range, typename Body, typename Partitioner> class start_for;
 }
 }
 
-namespace interface6 {
+namespace interface7 {
 //! @cond INTERNAL
 namespace internal {
 using namespace tbb::internal;
@@ -131,7 +142,7 @@ public:
 };
 
 //! Depth is a relative depth of recursive division inside a range pool. Relative depth allows
-//! infinite absolute depth of the recursion for heavily imbalanced workloads with range represented
+//! infinite absolute depth of the recursion for heavily unbalanced workloads with range represented
 //! by a number that cannot fit into machine word.
 typedef unsigned char depth_t;
 
@@ -148,7 +159,7 @@ public:
     //! initialize via first range in pool
     range_vector(const T& elem) : my_head(0), my_tail(0), my_size(1) {
         my_depth[0] = 0;
-        new( my_pool.begin() ) T(elem);//TODO: std::move?
+        new( static_cast<void *>(my_pool.begin()) ) T(elem);//TODO: std::move?
     }
     ~range_vector() {
         while( !empty() ) pop_back();
@@ -158,8 +169,7 @@ public:
     //! Populates range pool via ranges up to max depth or while divisible
     //! max_depth starts from 0, e.g. value 2 makes 3 ranges in the pool up to two 1/4 pieces
     void split_to_fill(depth_t max_depth) {
-        while( my_size < MaxCapacity && my_depth[my_head] < max_depth
-          && my_pool.begin()[my_head].is_divisible() ) {
+        while( my_size < MaxCapacity && is_divisible(max_depth) ) {
             depth_t prev = my_head;
             my_head = (my_head + 1) % MaxCapacity;
             new(my_pool.begin()+my_head) T(my_pool.begin()[prev]); // copy TODO: std::move?
@@ -194,11 +204,19 @@ public:
         __TBB_ASSERT(my_size > 0, "range_vector::front_depth() with empty size");
         return my_depth[my_tail];
     }
+    depth_t back_depth() {
+        __TBB_ASSERT(my_size > 0, "range_vector::back_depth() with empty size");
+        return my_depth[my_head];
+    }
+    bool is_divisible(depth_t max_depth) {
+        return back_depth() < max_depth && back().is_divisible();
+    }
 };
 
 //! Provides default methods for partition objects and common algorithm blocks.
 template <typename Partition>
 struct partition_type_base {
+    typedef split split_type;
     // decision makers
     void set_affinity( task & ) {}
     void note_affinity( task::affinity_id ) {}
@@ -207,6 +225,8 @@ struct partition_type_base {
     bool is_divisible() { return true; } // part of old should_execute_range()
     depth_t max_depth() { return 0; }
     void align_depth(depth_t) { }
+    template <typename Range> split_type get_split() { return split(); }
+
     // common function blocks
     Partition& self() { return *static_cast<Partition*>(this); } // CRTP helper
     template<typename StartType, typename Range>
@@ -219,9 +239,12 @@ struct partition_type_base {
         // }
         // If not divisible or [max depth is reached], execute, else do the range pool part
         if ( range.is_divisible() ) {
-            if ( self().is_divisible() )
-                do start.offer_work( split() ); // split until is divisible
-                while ( range.is_divisible() && self().is_divisible() );
+            if ( self().is_divisible() ) {
+                do { // split until is divisible
+                    typename Partition::split_type split_obj = self().template get_split<Range>();
+                    start.offer_work( split_obj );
+                } while ( range.is_divisible() && self().is_divisible() );
+            }
         }
         if( !range.is_divisible() || !self().max_depth() )
             start.run_body( range ); // simple partitioner goes always here
@@ -235,8 +258,8 @@ struct partition_type_base {
                         range_pool.pop_front();
                         continue;
                     }
-                    if( range_pool.back().is_divisible() ) // was not enough depth to fork a task
-                        continue; // note: check_for_demand() should guarantee increasing max_depth() next time
+                    if( range_pool.is_divisible(self().max_depth()) ) // was not enough depth to fork a task
+                        continue; // note: next split_to_fill() should split range at least once
                 }
                 start.run_body( range_pool.back() );
                 range_pool.pop_back();
@@ -247,28 +270,49 @@ struct partition_type_base {
 
 //! Provides default methods for auto (adaptive) partition objects.
 template <typename Partition>
-struct auto_partition_type_base : partition_type_base<Partition> {
+struct adaptive_partition_type_base : partition_type_base<Partition> {
     size_t my_divisor;
     depth_t my_max_depth;
-    auto_partition_type_base() : my_max_depth(__TBB_INIT_DEPTH) {
-        my_divisor = tbb::internal::get_initial_auto_partitioner_divisor()*__TBB_INITIAL_CHUNKS/4;
+    static const unsigned factor = 1;
+    adaptive_partition_type_base() : my_max_depth(__TBB_INIT_DEPTH) {
+        my_divisor = tbb::internal::get_initial_auto_partitioner_divisor() / 4 * Partition::factor;
         __TBB_ASSERT(my_divisor, "initial value of get_initial_auto_partitioner_divisor() is not valid");
     }
-    auto_partition_type_base(auto_partition_type_base &src, split) {
+    adaptive_partition_type_base(adaptive_partition_type_base &src, split) {
         my_max_depth = src.my_max_depth;
+#if TBB_USE_ASSERT
+        size_t old_divisor = src.my_divisor;
+#endif
+
 #if __TBB_INITIAL_TASK_IMBALANCE
         if( src.my_divisor <= 1 ) my_divisor = 0;
-        else my_divisor = src.my_divisor = (src.my_divisor+1u) / 2u;
+        else my_divisor = src.my_divisor = (src.my_divisor + 1u) / 2u;
 #else
         my_divisor = src.my_divisor / 2u;
         src.my_divisor = src.my_divisor - my_divisor; // TODO: check the effect separately
-        if(my_divisor) src.my_max_depth += static_cast<depth_t>(__TBB_Log2(src.my_divisor/my_divisor));
+        if (my_divisor) src.my_max_depth += static_cast<depth_t>(__TBB_Log2(src.my_divisor / my_divisor));
+#endif
+        // For affinity_partitioner, my_divisor indicates the number of affinity array indices the task reserves.
+        // A task which has only one index must produce the right split without reserved index in order to avoid
+        // it to be overwritten in note_affinity() of the created (right) task.
+        // I.e. a task created deeper than the affinity array can remember must not save its affinity (LIFO order)
+        __TBB_ASSERT( (old_divisor <= 1 && my_divisor == 0) ||
+                      (old_divisor > 1 && my_divisor != 0), NULL);
+    }
+    adaptive_partition_type_base(adaptive_partition_type_base &src, const proportional_split& split_obj) {
+        my_max_depth = src.my_max_depth;
+#if __TBB_ENABLE_RANGE_FEEDBACK
+        my_divisor = size_t(float(src.my_divisor) * float(split_obj.right())
+                            / float(split_obj.left() + split_obj.right()));
+#else
+        my_divisor = split_obj.right() * Partition::factor;
 #endif
+        src.my_divisor -= my_divisor;
     }
     bool check_being_stolen( task &t) { // part of old should_execute_range()
         if( !my_divisor ) { // if not from the top P tasks of binary tree
             my_divisor = 1; // TODO: replace by on-stack flag (partition_state's member)?
-            if( t.is_stolen_task() ) {
+            if( t.is_stolen_task() && t.parent()->ref_count() >= 2 ) { // runs concurrently with the left task
 #if TBB_USE_EXCEPTIONS
                 // RTTI is available, check whether the cast is valid
                 __TBB_ASSERT(dynamic_cast<flag_task*>(t.parent()), 0);
@@ -277,27 +321,13 @@ struct auto_partition_type_base : partition_type_base<Partition> {
                 // - is_stolen_task() always returns false for the root task.
 #endif
                 flag_task::mark_task_stolen(t);
-                my_max_depth++;
+                if( !my_max_depth ) my_max_depth++;
+                my_max_depth += __TBB_DEMAND_DEPTH_ADD;
                 return true;
             }
         }
         return false;
     }
-    bool is_divisible() { // part of old should_execute_range()
-        if( my_divisor > 1 ) return true;
-        if( my_divisor && my_max_depth > 1 ) { // can split the task and once more internally. TODO: on-stack flag instead
-            // keep same fragmentation while splitting for the local task pool
-            my_max_depth--;
-            my_divisor = 0; // decrease max_depth once per task
-            return true;
-        } else return false;
-    }
-    bool check_for_demand(task &t) {
-        if( flag_task::is_peer_stolen(t) ) {
-            my_max_depth++;
-            return true;
-        } else return false;
-    }
     void align_depth(depth_t base) {
         __TBB_ASSERT(base <= my_max_depth, 0);
         my_max_depth -= base;
@@ -305,72 +335,183 @@ struct auto_partition_type_base : partition_type_base<Partition> {
     depth_t max_depth() { return my_max_depth; }
 };
 
+//! Class determines whether template parameter has static boolean constant
+//! 'is_splittable_in_proportion' initialized with value of 'true' or not.
+/** If template parameter has such field that has been initialized with non-zero
+ *  value then class field will be set to 'true', otherwise - 'false'
+ */
+template <typename Range>
+class is_splittable_in_proportion {
+private:
+    typedef char yes[1];
+    typedef char no [2];
+
+    template <typename range_type> static yes& decide(typename enable_if<range_type::is_splittable_in_proportion>::type *);
+    template <typename range_type> static no& decide(...);
+public:
+    // equals to 'true' if and only if static const variable 'is_splittable_in_proportion' of template parameter
+    // initialized with the value of 'true'
+    static const bool value = (sizeof(decide<Range>(0)) == sizeof(yes));
+};
+
 //! Provides default methods for affinity (adaptive) partition objects.
-class affinity_partition_type : public auto_partition_type_base<affinity_partition_type> {
+class affinity_partition_type : public adaptive_partition_type_base<affinity_partition_type> {
     static const unsigned factor_power = 4;
-    static const unsigned factor = 1<<factor_power;
-    bool my_delay;
-    unsigned map_begin, map_end, map_mid;
+    enum {
+        start = 0,
+        run,
+        pass
+    } my_delay;
+#ifdef __TBB_USE_MACHINE_TIME_STAMPS
+    machine_tsc_t my_dst_tsc;
+#endif
+    size_t my_begin;
     tbb::internal::affinity_id* my_array;
-    void set_mid() {
-        unsigned d = (map_end - map_begin)/2; // we could add 1 but it is rather for LIFO affinity
-        if( d > factor )
-            d &= 0u-factor;
-        map_mid = map_end - d;
-    }
 public:
-    affinity_partition_type( tbb::internal::affinity_partitioner_base_v3& ap ) {
+    static const unsigned factor = 1 << factor_power; // number of slots in affinity array per task
+    typedef proportional_split split_type;
+
+    affinity_partition_type( tbb::internal::affinity_partitioner_base_v3& ap )
+        : adaptive_partition_type_base<affinity_partition_type>(), my_delay(start)
+#ifdef __TBB_USE_MACHINE_TIME_STAMPS
+        , my_dst_tsc(0)
+#endif
+    {
         __TBB_ASSERT( (factor&(factor-1))==0, "factor must be power of two" );
         ap.resize(factor);
         my_array = ap.my_array;
-        map_begin = 0;
-        map_end = unsigned(ap.my_size);
-        set_mid();
-        my_delay = true;
-        my_divisor /= __TBB_INITIAL_CHUNKS; // let exactly P tasks to be distributed across workers
-        my_max_depth = factor_power+1; // the first factor_power ranges will be spawned, and >=1 ranges should be left
+        my_begin = 0;
+        my_max_depth = factor_power + 1; // the first factor_power ranges will be spawned, and >=1 ranges should be left
         __TBB_ASSERT( my_max_depth < __TBB_RANGE_POOL_CAPACITY, 0 );
     }
     affinity_partition_type(affinity_partition_type& p, split)
-        : auto_partition_type_base<affinity_partition_type>(p, split()), my_array(p.my_array) {
-        __TBB_ASSERT( p.map_end-p.map_begin<factor || (p.map_end-p.map_begin)%factor==0, NULL );
-        map_end = p.map_end;
-        map_begin = p.map_end = p.map_mid;
-        set_mid(); p.set_mid();
-        my_delay = p.my_delay;
+        : adaptive_partition_type_base<affinity_partition_type>(p, split()),
+          my_delay(pass),
+#ifdef __TBB_USE_MACHINE_TIME_STAMPS
+          my_dst_tsc(0),
+#endif
+          my_array(p.my_array) {
+        // the sum of the divisors represents original value of p.my_divisor before split
+        __TBB_ASSERT(my_divisor + p.my_divisor <= factor, NULL);
+        my_begin = p.my_begin + p.my_divisor;
+    }
+    affinity_partition_type(affinity_partition_type& p, const proportional_split& split_obj)
+        : adaptive_partition_type_base<affinity_partition_type>(p, split_obj),
+          my_delay(start),
+#ifdef __TBB_USE_MACHINE_TIME_STAMPS
+          my_dst_tsc(0),
+#endif
+          my_array(p.my_array) {
+        size_t total_divisor = my_divisor + p.my_divisor;
+        __TBB_ASSERT(total_divisor % factor == 0, NULL);
+        my_divisor = (my_divisor + factor/2) & (0u - factor);
+#if __TBB_ENABLE_RANGE_FEEDBACK
+        if (!my_divisor)
+            my_divisor = factor;
+        else if (my_divisor == total_divisor)
+            my_divisor = total_divisor - factor;
+#endif
+        p.my_divisor = total_divisor - my_divisor;
+        __TBB_ASSERT(my_divisor && p.my_divisor, NULL);
+        my_begin = p.my_begin + p.my_divisor;
     }
     void set_affinity( task &t ) {
-        if( map_begin<map_end )
-            t.set_affinity( my_array[map_begin] );
+        if( my_divisor ) {
+            if( !my_array[my_begin] )
+                // TODO: consider code reuse for static_paritioner
+                t.set_affinity( affinity_id(my_begin / factor + 1) );
+            else
+                t.set_affinity( my_array[my_begin] );
+        }
     }
     void note_affinity( task::affinity_id id ) {
-        if( map_begin<map_end )
-            my_array[map_begin] = id;
+        if( my_divisor )
+            my_array[my_begin] = id;
     }
     bool check_for_demand( task &t ) {
-        if( !my_delay ) {
-            if( map_mid<map_end ) {
-                __TBB_ASSERT(my_max_depth>__TBB_Log2(map_end-map_mid), 0);
-                return true;// do not do my_max_depth++ here, but be sure my_max_depth is big enough
+        if( pass == my_delay ) {
+            if( my_divisor > 1 ) // produce affinitized tasks while they have slot in array
+                return true; // do not do my_max_depth++ here, but be sure range_pool is splittable once more
+            else if( my_divisor && my_max_depth ) { // make balancing task
+                my_divisor = 0; // once for each task; depth will be decreased in align_depth()
+                return true;
             }
-            if( flag_task::is_peer_stolen(t) ) {
-                my_max_depth++;
+            else if( flag_task::is_peer_stolen(t) ) {
+                my_max_depth += __TBB_DEMAND_DEPTH_ADD;
                 return true;
             }
-        } else my_delay = false;
+        } else if( start == my_delay ) {
+#ifndef __TBB_USE_MACHINE_TIME_STAMPS
+            my_delay = pass;
+#else
+            my_dst_tsc = __TBB_machine_time_stamp() + __TBB_task_duration();
+            my_delay = run;
+        } else if( run == my_delay ) {
+            if( __TBB_machine_time_stamp() < my_dst_tsc ) {
+                __TBB_ASSERT(my_max_depth > 0, NULL);
+                return false;
+            }
+            my_delay = pass;
+            return true;
+#endif // __TBB_USE_MACHINE_TIME_STAMPS
+        }
         return false;
     }
-    bool is_divisible() {
-        return my_divisor > 1;
+    bool is_divisible() { // part of old should_execute_range()
+        return my_divisor > factor;
+    }
+
+#if _MSC_VER && !defined(__INTEL_COMPILER)
+    // Suppress "conditional expression is constant" warning.
+    #pragma warning( push )
+    #pragma warning( disable: 4127 )
+#endif
+    template <typename Range>
+    split_type get_split() {
+        if (is_splittable_in_proportion<Range>::value) {
+            size_t size = my_divisor / factor;
+#if __TBB_NONUNIFORM_TASK_CREATION
+            size_t right = (size + 2) / 3;
+#else
+            size_t right = size / 2;
+#endif
+            size_t left = size - right;
+            return split_type(left, right);
+        } else {
+            return split_type(1, 1);
+        }
     }
+#if _MSC_VER && !defined(__INTEL_COMPILER)
+    #pragma warning( pop )
+#endif // warning 4127 is back
+
     static const unsigned range_pool_size = __TBB_RANGE_POOL_CAPACITY;
 };
 
-class auto_partition_type: public auto_partition_type_base<auto_partition_type> {
+class auto_partition_type: public adaptive_partition_type_base<auto_partition_type> {
 public:
-    auto_partition_type( const auto_partitioner& ) {}
+    auto_partition_type( const auto_partitioner& ) {
+        my_divisor *= __TBB_INITIAL_CHUNKS;
+    }
     auto_partition_type( auto_partition_type& src, split)
-      : auto_partition_type_base<auto_partition_type>(src, split()) {}
+      : adaptive_partition_type_base<auto_partition_type>(src, split()) {}
+
+    bool is_divisible() { // part of old should_execute_range()
+        if( my_divisor > 1 ) return true;
+        if( my_divisor && my_max_depth ) { // can split the task. TODO: on-stack flag instead
+            // keep same fragmentation while splitting for the local task pool
+            my_max_depth--;
+            my_divisor = 0; // decrease max_depth once per task
+            return true;
+        } else return false;
+    }
+    bool check_for_demand(task &t) {
+        if( flag_task::is_peer_stolen(t) ) {
+            my_max_depth += __TBB_DEMAND_DEPTH_ADD;
+            return true;
+        } else return false;
+    }
+
     static const unsigned range_pool_size = __TBB_RANGE_POOL_CAPACITY;
 };
 
@@ -381,8 +522,9 @@ public:
     //! simplified algorithm
     template<typename StartType, typename Range>
     void execute(StartType &start, Range &range) {
+        split_type split_obj = split(); // start.offer_work accepts split_type as reference
         while( range.is_divisible() )
-            start.offer_work( split() );
+            start.offer_work( split_obj );
         start.run_body( range );
     }
     //static const unsigned range_pool_size = 1; - not necessary because execute() is overridden
@@ -418,9 +560,9 @@ class simple_partitioner {
 public:
     simple_partitioner() {}
 private:
-    template<typename Range, typename Body, typename Partitioner> friend class serial::interface6::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_reduce;
+    template<typename Range, typename Body, typename Partitioner> friend class serial::interface7::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_reduce;
     template<typename Range, typename Body, typename Partitioner> friend class internal::start_scan;
     // backward compatibility
     class partition_type: public internal::partition_type_base {
@@ -430,7 +572,10 @@ private:
         partition_type( const partition_type&, split ) {}
     };
     // new implementation just extends existing interface
-    typedef interface6::internal::simple_partition_type task_partition_type;
+    typedef interface7::internal::simple_partition_type task_partition_type;
+
+    // TODO: consider to make split_type public
+    typedef interface7::internal::simple_partition_type::split_type split_type;
 };
 
 //! An auto partitioner
@@ -442,14 +587,17 @@ public:
     auto_partitioner() {}
 
 private:
-    template<typename Range, typename Body, typename Partitioner> friend class serial::interface6::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_reduce;
+    template<typename Range, typename Body, typename Partitioner> friend class serial::interface7::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_reduce;
     template<typename Range, typename Body, typename Partitioner> friend class internal::start_scan;
     // backward compatibility
-    typedef interface6::internal::old_auto_partition_type partition_type;
+    typedef interface7::internal::old_auto_partition_type partition_type;
     // new implementation just extends existing interface
-    typedef interface6::internal::auto_partition_type task_partition_type;
+    typedef interface7::internal::auto_partition_type task_partition_type;
+
+    // TODO: consider to make split_type public
+    typedef interface7::internal::auto_partition_type::split_type split_type;
 };
 
 //! An affinity partitioner
@@ -458,14 +606,17 @@ public:
     affinity_partitioner() {}
 
 private:
-    template<typename Range, typename Body, typename Partitioner> friend class serial::interface6::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_for;
-    template<typename Range, typename Body, typename Partitioner> friend class interface6::internal::start_reduce;
+    template<typename Range, typename Body, typename Partitioner> friend class serial::interface7::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_for;
+    template<typename Range, typename Body, typename Partitioner> friend class interface7::internal::start_reduce;
     template<typename Range, typename Body, typename Partitioner> friend class internal::start_scan;
     // backward compatibility - for parallel_scan only
-    typedef interface6::internal::old_auto_partition_type partition_type;
+    typedef interface7::internal::old_auto_partition_type partition_type;
     // new implementation just extends existing interface
-    typedef interface6::internal::affinity_partition_type task_partition_type;
+    typedef interface7::internal::affinity_partition_type task_partition_type;
+
+    // TODO: consider to make split_type public
+    typedef interface7::internal::affinity_partition_type::split_type split_type;
 };
 
 } // namespace tbb
diff --git a/include/tbb/pipeline.h b/include/tbb/pipeline.h
index ab58ced..2d7c385 100644
--- a/include/tbb/pipeline.h
+++ b/include/tbb/pipeline.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_pipeline_H 
@@ -34,8 +26,7 @@
 #include "tbb_allocator.h"
 #include <cstddef>
 
-//TODO: consider more accurate method to check if need to implement <type_trais> ourself
-#if !TBB_IMPLEMENT_CPP0X
+#if __TBB_CPP11_TYPE_PROPERTIES_PRESENT || __TBB_TR1_TYPE_PROPERTIES_IN_STD_PRESENT
 #include <type_traits>
 #endif
 
@@ -216,7 +207,9 @@ public:
 protected:
     thread_bound_filter(mode filter_mode): 
          filter(static_cast<mode>(filter_mode | filter::filter_is_bound))
-    {}
+    {
+        __TBB_ASSERT(filter_mode & filter::filter_is_serial, "thread-bound filters must be serial");
+    }
 public:
     //! If a data item is available, invoke operator() on that item.  
     /** This interface is non-blocking.
@@ -328,9 +321,13 @@ namespace internal {
 
 template<typename T> struct tbb_large_object {enum { value = sizeof(T) > sizeof(void *) }; };
 
-#if TBB_IMPLEMENT_CPP0X
-// cannot use SFINAE in current compilers.  Explicitly list the types we wish to be
-// placed as-is in the pipeline input_buffers.
+// Obtain type properties in one or another way
+#if   __TBB_CPP11_TYPE_PROPERTIES_PRESENT
+template<typename T> struct tbb_trivially_copyable { enum { value = std::is_trivially_copyable<T>::value }; };
+#elif __TBB_TR1_TYPE_PROPERTIES_IN_STD_PRESENT
+template<typename T> struct tbb_trivially_copyable { enum { value = std::has_trivial_copy_constructor<T>::value }; };
+#else
+// Explicitly list the types we wish to be placed as-is in the pipeline input_buffers.
 template<typename T> struct tbb_trivially_copyable { enum { value = false }; };
 template<typename T> struct tbb_trivially_copyable <T*> { enum { value = true }; };
 template<> struct tbb_trivially_copyable <short> { enum { value = true }; };
@@ -341,13 +338,7 @@ template<> struct tbb_trivially_copyable <long> { enum { value = !tbb_large_obje
 template<> struct tbb_trivially_copyable <unsigned long> { enum { value = !tbb_large_object<long>::value }; };
 template<> struct tbb_trivially_copyable <float> { enum { value = !tbb_large_object<float>::value }; };
 template<> struct tbb_trivially_copyable <double> { enum { value = !tbb_large_object<double>::value }; };
-#else
-#if __GNUC__==4 && __GNUC_MINOR__>=4 && __GXX_EXPERIMENTAL_CXX0X__
-template<typename T> struct tbb_trivially_copyable { enum { value = std::has_trivial_copy_constructor<T>::value }; };
-#else
-template<typename T> struct tbb_trivially_copyable { enum { value = std::is_trivially_copyable<T>::value }; };
-#endif //
-#endif // TBB_IMPLEMENT_CPP0X
+#endif // Obtaining type properties
 
 template<typename T> struct is_large_object {enum { value = tbb_large_object<T>::value || !tbb_trivially_copyable<T>::value }; };
 
@@ -604,6 +595,7 @@ class filter_t {
     template<typename T_, typename V_, typename U_>
     friend filter_t<T_,U_> operator& (const filter_t<T_,V_>& , const filter_t<V_,U_>& );
 public:
+    // TODO: add move-constructors, move-assignment, etc. where C++11 is available.
     filter_t() : root(NULL) {}
     filter_t( const filter_t<T,U>& rhs ) : root(rhs.root) {
         if( root ) root->add_ref();
diff --git a/include/tbb/queuing_mutex.h b/include/tbb/queuing_mutex.h
index e5ae366..44bd306 100644
--- a/include/tbb/queuing_mutex.h
+++ b/include/tbb/queuing_mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_queuing_mutex_H
@@ -50,7 +42,7 @@ namespace tbb {
 
 //! Queuing mutex with local-only spinning.
 /** @ingroup synchronization */
-class queuing_mutex {
+class queuing_mutex : internal::mutex_copy_deprecated_and_disabled {
 public:
     //! Construct unacquired mutex.
     queuing_mutex() {
diff --git a/include/tbb/queuing_rw_mutex.h b/include/tbb/queuing_rw_mutex.h
index abdf0c0..de1fc0f 100644
--- a/include/tbb/queuing_rw_mutex.h
+++ b/include/tbb/queuing_rw_mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_queuing_rw_mutex_H
@@ -52,7 +44,7 @@ namespace tbb {
 /** Adapted from Krieger, Stumm, et al. pseudocode at
     http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93
     @ingroup synchronization */
-class queuing_rw_mutex {
+class queuing_rw_mutex : internal::mutex_copy_deprecated_and_disabled {
 public:
     //! Construct unacquired mutex.
     queuing_rw_mutex() {
diff --git a/include/tbb/reader_writer_lock.h b/include/tbb/reader_writer_lock.h
index 94bd753..86b1af4 100644
--- a/include/tbb/reader_writer_lock.h
+++ b/include/tbb/reader_writer_lock.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_reader_writer_lock_H
diff --git a/include/tbb/recursive_mutex.h b/include/tbb/recursive_mutex.h
index ffe0bb2..f430a38 100644
--- a/include/tbb/recursive_mutex.h
+++ b/include/tbb/recursive_mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_recursive_mutex_H
@@ -44,7 +36,7 @@ namespace tbb {
 //! Mutex that allows recursive mutex acquisition.
 /** Mutex that allows recursive mutex acquisition.
     @ingroup synchronization */
-class recursive_mutex {
+class recursive_mutex : internal::mutex_copy_deprecated_and_disabled {
 public:
     //! Construct unacquired recursive_mutex.
     recursive_mutex() {
@@ -165,13 +157,15 @@ public:
     //! Acquire lock
     void lock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         new(tmp.begin()) scoped_lock(*this);
 #else
   #if _WIN32||_WIN64
         EnterCriticalSection(&impl);
   #else
-        pthread_mutex_lock(&impl);
+        int error_code = pthread_mutex_lock(&impl);
+        if( error_code )
+            tbb::internal::handle_perror(error_code,"recursive_mutex: pthread_mutex_lock failed");
   #endif /* _WIN32||_WIN64 */
 #endif /* TBB_USE_ASSERT */
     }
@@ -180,7 +174,7 @@ public:
     /** Return true if lock acquired; false otherwise. */
     bool try_lock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         return (new(tmp.begin()) scoped_lock)->internal_try_acquire(*this);
 #else        
   #if _WIN32||_WIN64
@@ -194,7 +188,7 @@ public:
     //! Release lock
     void unlock() {
 #if TBB_USE_ASSERT
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         scoped_lock& s = *tmp.begin();
         s.my_mutex = this;
         s.internal_release();
diff --git a/include/tbb/runtime_loader.h b/include/tbb/runtime_loader.h
index f491752..5dc8bab 100644
--- a/include/tbb/runtime_loader.h
+++ b/include/tbb/runtime_loader.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_runtime_loader_H
@@ -33,7 +25,7 @@
     #error Set TBB_PREVIEW_RUNTIME_LOADER to include runtime_loader.h
 #endif
 
-#include "tbb/tbb_stddef.h"
+#include "tbb_stddef.h"
 #include <climits>
 
 #if _MSC_VER
@@ -86,7 +78,7 @@ There are some implications:
         cooperatively, otherwise the second object will report an error.
 
     -   \c runtime_loader objects will not work (correctly) in parallel due to absence of
-        syncronization.
+        synchronization.
 
 */
 
diff --git a/include/tbb/scalable_allocator.h b/include/tbb/scalable_allocator.h
index 1226d70..686d771 100644
--- a/include/tbb/scalable_allocator.h
+++ b/include/tbb/scalable_allocator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_scalable_allocator_H
@@ -212,7 +204,7 @@ bool  pool_free(MemoryPool *memPool, void *object);
     #include "tbb_stddef.h"
 #endif
 
-#if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_CPP11_STD_FORWARD_BROKEN
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
  #include <utility> // std::forward
 #endif
 
@@ -224,6 +216,23 @@ namespace tbb {
     #pragma warning (disable: 4100)
 #endif
 
+//! @cond INTERNAL
+namespace internal {
+
+#if TBB_USE_EXCEPTIONS
+// forward declaration is for inlining prevention
+template<typename E> __TBB_NOINLINE( void throw_exception(const E &e) );
+#endif
+
+// keep throw in a separate function to prevent code bloat
+template<typename E>
+void throw_exception(const E &e) {
+    __TBB_THROW(e);
+}
+
+} // namespace internal
+//! @endcond
+
 //! Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5
 /** The members are ordered the same way they are in section 20.4.1
     of the ISO C++ standard.
@@ -251,7 +260,10 @@ public:
 
     //! Allocate space for n objects.
     pointer allocate( size_type n, const void* /*hint*/ =0 ) {
-        return static_cast<pointer>( scalable_malloc( n * sizeof(value_type) ) );
+        pointer p = static_cast<pointer>( scalable_malloc( n * sizeof(value_type) ) );
+        if (!p)
+            internal::throw_exception(std::bad_alloc());
+        return p;
     }
 
     //! Free previously allocated block of memory
@@ -267,12 +279,11 @@ public:
 #if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     template<typename U, typename... Args>
     void construct(U *p, Args&&... args)
- #if __TBB_CPP11_STD_FORWARD_BROKEN
-        { ::new((void *)p) U((args)...); }
- #else
         { ::new((void *)p) U(std::forward<Args>(args)...); }
- #endif
 #else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void construct( pointer p, value_type&& value ) { ::new((void*)(p)) value_type( std::move( value ) ); }
+#endif
     void construct( pointer p, const value_type& value ) {::new((void*)(p)) value_type(value);}
 #endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     void destroy( pointer p ) {p->~value_type();}
diff --git a/include/tbb/spin_mutex.h b/include/tbb/spin_mutex.h
index 2caf1b1..70ddbd8 100644
--- a/include/tbb/spin_mutex.h
+++ b/include/tbb/spin_mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_spin_mutex_H
@@ -45,7 +37,7 @@ namespace tbb {
     (typically less than 20 instructions) when fairness is not an issue.
     If zero-initialized, the mutex is considered unheld.
     @ingroup synchronization */
-class spin_mutex {
+class spin_mutex : internal::mutex_copy_deprecated_and_disabled {
     //! 0 if lock is released, 1 if lock is acquired.
     __TBB_atomic_flag flag;
 
@@ -155,7 +147,7 @@ public:
     //! Acquire lock
     void lock() {
 #if TBB_USE_THREADING_TOOLS
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         new(tmp.begin()) scoped_lock(*this);
 #else
         __TBB_LockByte(flag);
@@ -166,7 +158,7 @@ public:
     /** Return true if lock acquired; false otherwise. */
     bool try_lock() {
 #if TBB_USE_THREADING_TOOLS
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         return (new(tmp.begin()) scoped_lock)->internal_try_acquire(*this);
 #else
         return __TBB_TryLockByte(flag);
@@ -176,7 +168,7 @@ public:
     //! Release lock
     void unlock() {
 #if TBB_USE_THREADING_TOOLS
-        aligned_space<scoped_lock,1> tmp;
+        aligned_space<scoped_lock> tmp;
         scoped_lock& s = *tmp.begin();
         s.my_mutex = this;
         s.internal_release();
diff --git a/include/tbb/spin_rw_mutex.h b/include/tbb/spin_rw_mutex.h
index b1c9a39..593a4ab 100644
--- a/include/tbb/spin_rw_mutex.h
+++ b/include/tbb/spin_rw_mutex.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_spin_rw_mutex_H
@@ -33,14 +25,21 @@
 #include "tbb_machine.h"
 #include "tbb_profiling.h"
 #include "internal/_mutex_padding.h"
+
 namespace tbb {
 
+#if __TBB_TSX_AVAILABLE
+namespace interface8 { namespace internal {
+    class x86_rtm_rw_mutex;
+}}
+#endif
+
 class spin_rw_mutex_v3;
 typedef spin_rw_mutex_v3 spin_rw_mutex;
 
 //! Fast, unfair, spinning reader-writer lock with backoff and writer-preference
 /** @ingroup synchronization */
-class spin_rw_mutex_v3 {
+class spin_rw_mutex_v3 : internal::mutex_copy_deprecated_and_disabled {
     //! @cond INTERNAL
 
     //! Internal acquire write lock.
@@ -89,6 +88,12 @@ public:
     /** It helps to avoid the common problem of forgetting to release lock.
         It also nicely provides the "node" for queuing locks. */
     class scoped_lock : internal::no_copy {
+#if __TBB_TSX_AVAILABLE
+        friend class tbb::interface8::internal::x86_rtm_rw_mutex;
+        // helper methods for x86_rtm_rw_mutex
+        spin_rw_mutex *internal_get_mutex() const { return mutex; }
+        void internal_set_mutex(spin_rw_mutex* m) { mutex = m; }
+#endif
     public:
         //! Construct lock that has not acquired a mutex.
         /** Equivalent to zero-initialization of *this. */
@@ -161,21 +166,6 @@ public:
             return result;
         }
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-        // helper methods for speculation-based spin_rw_mutex
-        spin_rw_mutex *__internal_get_mutex() {
-            return mutex;
-        }
-
-        // have to be able to "NULL"-ify the mutex
-        void __internal_set_mutex(spin_rw_mutex* m) {
-            mutex = m;
-        }
-
-        void __internal_set_writer(bool flag=true) {
-            is_writer = flag;
-        }
-#endif /* TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
     protected:
 
         //! The pointer to the current mutex that is held, or NULL if no mutex is held.
@@ -240,13 +230,13 @@ private:
 __TBB_DEFINE_PROFILING_SET_NAME(spin_rw_mutex)
 
 } // namespace tbb
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
+
 #if __TBB_TSX_AVAILABLE
 #include "internal/_x86_rtm_rw_mutex_impl.h"
 #endif
 
 namespace tbb {
-namespace interface7 {
+namespace interface8 {
 //! A cross-platform spin reader/writer mutex with speculative lock acquisition.
 /** On platforms with proper HW support, this lock may speculatively execute
     its critical sections, using HW mechanisms to detect real data races and
@@ -257,14 +247,13 @@ namespace interface7 {
     contended but the data it protects are not.
     @ingroup synchronization */
 #if __TBB_TSX_AVAILABLE
-typedef interface7::internal::padded_mutex<tbb::interface7::internal::x86_rtm_rw_mutex,true> speculative_spin_rw_mutex;
+typedef interface7::internal::padded_mutex<tbb::interface8::internal::x86_rtm_rw_mutex,true> speculative_spin_rw_mutex;
 #else
 typedef interface7::internal::padded_mutex<tbb::spin_rw_mutex,true> speculative_spin_rw_mutex;
 #endif
-}  // namespace interface7
+}  // namespace interface8
 
-using interface7::speculative_spin_rw_mutex;
+using interface8::speculative_spin_rw_mutex;
 __TBB_DEFINE_PROFILING_SET_NAME(speculative_spin_rw_mutex)
 } // namespace tbb
-#endif /* TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
 #endif /* __TBB_spin_rw_mutex_H */
diff --git a/include/tbb/task.h b/include/tbb/task.h
index e1f4555..a416f3e 100644
--- a/include/tbb/task.h
+++ b/include/tbb/task.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_task_H
@@ -31,6 +23,7 @@
 
 #include "tbb_stddef.h"
 #include "tbb_machine.h"
+#include "tbb_profiling.h"
 #include <climits>
 
 typedef struct ___itt_caller *__itt_caller;
@@ -39,10 +32,7 @@ namespace tbb {
 
 class task;
 class task_list;
-
-#if __TBB_TASK_GROUP_CONTEXT
 class task_group_context;
-#endif /* __TBB_TASK_GROUP_CONTEXT */
 
 // MSVC does not allow taking the address of a member that was defined
 // privately in task_base and made public in class task via a using declaration.
@@ -64,6 +54,7 @@ namespace internal { //< @cond INTERNAL
         void __TBB_EXPORTED_METHOD free( task& ) const;
     };
 
+    struct cpu_ctl_env_space { int space[sizeof(internal::uint64_t)/sizeof(int)]; };
 } //< namespace internal @endcond
 
 namespace interface5 {
@@ -244,7 +235,7 @@ namespace internal {
         //! Miscellaneous state that is not directly visible to users, stored as a byte for compactness.
         /** 0x0 -> version 1.0 task
             0x1 -> version >=2.1 task
-            0x10 -> task was enqueued 
+            0x10 -> task was enqueued
             0x20 -> task_proxy
             0x40 -> task has live ref_count
             0x80 -> a stolen task */
@@ -286,6 +277,7 @@ enum priority_t {
 #endif /* !TBB_USE_CAPTURED_EXCEPTION */
 
 class task_scheduler_init;
+namespace interface7 { class task_arena; }
 
 //! Used to form groups of tasks
 /** @ingroup task_scheduling
@@ -312,6 +304,7 @@ class task_group_context : internal::no_copy {
 private:
     friend class internal::generic_scheduler;
     friend class task_scheduler_init;
+    friend class interface7::task_arena;
 
 #if TBB_USE_CAPTURED_EXCEPTION
     typedef tbb_exception exception_container_type;
@@ -333,6 +326,9 @@ public:
 
     enum traits_type {
         exact_exception = 0x0001ul << traits_offset,
+#if __TBB_FP_CONTEXT
+        fp_settings     = 0x0002ul << traits_offset,
+#endif
         concurrent_wait = 0x0004ul << traits_offset,
 #if TBB_USE_CAPTURED_EXCEPTION
         default_traits = 0
@@ -343,7 +339,9 @@ public:
 
 private:
     enum state {
-        may_have_children = 1
+        may_have_children = 1,
+        // the following enumerations must be the last, new 2^x values must go above
+        next_state_value, low_unused_state_bit = (next_state_value-1)*2
     };
 
     union {
@@ -370,7 +368,18 @@ private:
         line with a local variable that is frequently written to. **/
     char _leading_padding[internal::NFS_MaxLineSize
                           - 2 * sizeof(uintptr_t)- sizeof(void*) - sizeof(internal::context_list_node_t)
-                          - sizeof(__itt_caller)];
+                          - sizeof(__itt_caller)
+#if __TBB_FP_CONTEXT
+                          - sizeof(internal::cpu_ctl_env_space)
+#endif
+                         ];
+
+#if __TBB_FP_CONTEXT
+    //! Space for platform-specific FPU settings.
+    /** Must only be accessed inside TBB binaries, and never directly in user
+        code or inline methods. */
+    internal::cpu_ctl_env_space my_cpu_ctl_env;
+#endif
 
     //! Specifies whether cancellation was requested for this task group.
     uintptr_t my_cancellation_requested;
@@ -436,7 +445,7 @@ public:
     task_group_context ( kind_type relation_with_parent = bound,
                          uintptr_t traits = default_traits )
         : my_kind(relation_with_parent)
-        , my_version_and_traits(1 | traits)
+        , my_version_and_traits(2 | traits)
     {
         init();
     }
@@ -476,6 +485,18 @@ public:
         of the scheduler's dispatch loop exception handler. **/
     void __TBB_EXPORTED_METHOD register_pending_exception ();
 
+#if __TBB_FP_CONTEXT
+    //! Captures the current FPU control settings to the context.
+    /** Because the method assumes that all the tasks that used to be associated with
+        this context have already finished, calling it while the context is still
+        in use somewhere in the task hierarchy leads to undefined behavior.
+
+        IMPORTANT: This method is not thread safe!
+
+        The method does not change the FPU control settings of the context's parent. **/
+    void __TBB_EXPORTED_METHOD capture_fp_settings ();
+#endif
+
 #if __TBB_TASK_PRIORITY
     //! Changes priority of the task group
     void set_priority ( priority_t );
@@ -502,15 +523,17 @@ private:
     template <typename T>
     void propagate_task_group_state ( T task_group_context::*mptr_state, task_group_context& src, T new_state );
 
-    //! Makes sure that the context is registered with a scheduler instance.
-    inline void finish_initialization ( internal::generic_scheduler *local_sched );
-
     //! Registers this context with the local scheduler and binds it to its parent context
     void bind_to ( internal::generic_scheduler *local_sched );
 
     //! Registers this context with the local scheduler
     void register_with ( internal::generic_scheduler *local_sched );
 
+#if __TBB_FP_CONTEXT
+    //! Copies FPU control setting from another context
+    // TODO: Consider adding #else stub in order to omit #if sections in other code
+    void copy_fp_settings( const task_group_context &src );
+#endif /* __TBB_FP_CONTEXT */
 }; // class task_group_context
 
 #endif /* __TBB_TASK_GROUP_CONTEXT */
@@ -654,13 +677,6 @@ public:
     }
 #endif /* __TBB_RECYCLE_TO_ENQUEUE */
 
-    // All depth-related methods are obsolete, and are retained for the sake
-    // of backward source compatibility only
-    intptr_t depth() const {return 0;}
-    void set_depth( intptr_t ) {}
-    void add_to_depth( int ) {}
-
-
     //------------------------------------------------------------------------
     // Spawning and blocking
     //------------------------------------------------------------------------
@@ -674,12 +690,23 @@ public:
 #endif /* TBB_USE_THREADING_TOOLS||TBB_USE_ASSERT */
     }
 
-    //! Atomically increment reference count and returns its old value.
+    //! Atomically increment reference count.
     /** Has acquire semantics */
     void increment_ref_count() {
         __TBB_FetchAndIncrementWacquire( &prefix().ref_count );
     }
 
+    //! Atomically adds to reference count and returns its new value.
+    /** Has release-acquire semantics */
+    int add_ref_count( int count ) {
+        internal::call_itt_notify( internal::releasing, &prefix().ref_count );
+        internal::reference_count k = count+__TBB_FetchAndAddW( &prefix().ref_count, count );
+        __TBB_ASSERT( k>=0, "task's reference count underflowed" );
+        if( k==0 )
+            internal::call_itt_notify( internal::acquired, &prefix().ref_count );
+        return int(k);
+    }
+
     //! Atomically decrement reference count and returns its new value.
     /** Has release semantics. */
     int decrement_ref_count() {
@@ -751,7 +778,7 @@ public:
     //! sets parent task pointer to specified value
     void set_parent(task* p) {
 #if __TBB_TASK_GROUP_CONTEXT
-        __TBB_ASSERT(prefix().context == p->prefix().context, "The tasks must be in the same context");
+        __TBB_ASSERT(!p || prefix().context == p->prefix().context, "The tasks must be in the same context");
 #endif
         prefix().parent = p;
     }
@@ -910,7 +937,18 @@ public:
         *next_ptr = &task;
         next_ptr = &task.prefix().next;
     }
-
+#if __TBB_TODO
+    // TODO: add this method and implement&document the local execution ordering. See more in generic_scheduler::local_spawn
+    //! Push task onto front of list (FIFO local execution, like individual spawning in the same order).
+    void push_front( task& task ) {
+        if( empty() ) {
+            push_back(task);
+        } else {
+            task.prefix().next = first;
+            first = &task;
+        }
+    }
+#endif
     //! Pop the front task from the list.
     task& pop_front() {
         __TBB_ASSERT( !empty(), "attempt to pop item from empty task_list" );
diff --git a/include/tbb/task_arena.h b/include/tbb/task_arena.h
index e6761b7..2f26d94 100644
--- a/include/tbb/task_arena.h
+++ b/include/tbb/task_arena.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_task_arena_H
@@ -85,8 +77,16 @@ protected:
     //! Reserved master slots
     unsigned my_master_slots;
 
-    //! Reserved for future use
-    intptr_t my_reserved;
+    //! Special settings
+    intptr_t my_version_and_traits;
+
+    enum {
+        default_flags = 0
+#if __TBB_TASK_GROUP_CONTEXT
+        | (task_group_context::default_traits & task_group_context::exact_exception)  // 0 or 1 << 16
+        , exact_exception_flag = task_group_context::exact_exception // used to specify flag for context directly
+#endif
+    };
 
     task_arena_base(int max_concurrency, unsigned reserved_for_masters)
         : my_arena(0)
@@ -95,7 +95,7 @@ protected:
 #endif
         , my_max_concurrency(max_concurrency)
         , my_master_slots(reserved_for_masters)
-        , my_reserved(0)
+        , my_version_and_traits(default_flags)
         {}
 
     void __TBB_EXPORTED_METHOD internal_initialize( );
@@ -188,6 +188,7 @@ public:
     void enqueue( const F& f ) {
         initialize();
 #if __TBB_TASK_GROUP_CONTEXT
+        __TBB_ASSERT(my_context, NULL);
         internal_enqueue( *new( task::allocate_root(*my_context) ) internal::function_task<F>(f), 0 );
 #else
         internal_enqueue( *new( task::allocate_root() ) internal::function_task<F>(f), 0 );
@@ -240,7 +241,7 @@ public:
 #endif //__TBB_EXTRA_DEBUG
 
     //! Returns the index, aka slot number, of the calling thread in its current arena
-    inline static int current_slot() {
+    inline static int current_thread_index() {
         return internal_current_slot();
     }
 };
diff --git a/include/tbb/task_group.h b/include/tbb/task_group.h
index aec9177..b3fd2fa 100644
--- a/include/tbb/task_group.h
+++ b/include/tbb/task_group.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_task_group_H
@@ -116,7 +108,7 @@ public:
         my_root->set_ref_count(1);
     }
 
-    ~task_group_base() {
+    ~task_group_base() __TBB_NOEXCEPT(false) {
         if( my_root->ref_count() > 1 ) {
             bool stack_unwinding_in_progress = std::uncaught_exception();
             // Always attempt to do proper cleanup to avoid inevitable memory corruption 
@@ -172,21 +164,6 @@ class task_group : public internal::task_group_base {
 public:
     task_group () : task_group_base( task_group_context::concurrent_wait ) {}
 
-#if TBB_DEPRECATED
-    ~task_group() __TBB_TRY {
-        __TBB_ASSERT( my_root->ref_count() != 0, NULL );
-        if( my_root->ref_count() > 1 )
-            my_root->wait_for_all();
-    }
-#if TBB_USE_EXCEPTIONS
-    catch (...) {
-        // Have to destroy my_root here as the base class destructor won't be called
-        task::destroy(*my_root);
-        throw;
-    }
-#endif /* TBB_USE_EXCEPTIONS */
-#endif /* TBB_DEPRECATED */
-
 #if __SUNPRO_CC
     template<typename F>
     void run( task_handle<F>& h ) {
diff --git a/include/tbb/task_scheduler_init.h b/include/tbb/task_scheduler_init.h
index c2546f3..e98abbf 100644
--- a/include/tbb/task_scheduler_init.h
+++ b/include/tbb/task_scheduler_init.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_task_scheduler_init_H
diff --git a/include/tbb/task_scheduler_observer.h b/include/tbb/task_scheduler_observer.h
index 2860815..4865dd3 100644
--- a/include/tbb/task_scheduler_observer.h
+++ b/include/tbb/task_scheduler_observer.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_task_scheduler_observer_H
@@ -96,7 +88,7 @@ public:
 
 } // namespace internal
 
-#if TBB_PREVIEW_LOCAL_OBSERVER
+#if __TBB_ARENA_OBSERVER
 namespace interface6 {
 class task_scheduler_observer : public internal::task_scheduler_observer_v3 {
     friend class internal::task_scheduler_observer_v3;
@@ -124,7 +116,6 @@ public:
         constructor is obsolete too and will be changed in one of the future versions
         of the library. **/
     task_scheduler_observer( bool local = false ) {
-        my_busy_count.store<relaxed>(v6_trait);
         my_context_tag = local? implicit_tag : global_tag;
     }
 
@@ -134,28 +125,40 @@ public:
         If a thread is already in the arena when the observer is activated, the entry notification
         is called before it executes the first stolen task. **/
     task_scheduler_observer( task_arena & a) {
-        my_busy_count.store<relaxed>(v6_trait);
         my_context_tag = (intptr_t)&a;
     }
 #endif //__TBB_TASK_ARENA
 
-    //! Destructor additionally protects concurrent on_scheduler_leaving notification
-    // It is recommended to disable observation before destructor of a derived class starts,
-    // otherwise it can lead to concurrent notification callback on partly destroyed object
+    /** Destructor protects instance of the observer from concurrent notification.
+       It is recommended to disable observation before destructor of a derived class starts,
+       otherwise it can lead to concurrent notification callback on partly destroyed object **/
     virtual ~task_scheduler_observer() { if(my_proxy) observe(false); }
 
-    //! The callback can be invoked in a worker thread before it leaves an arena.
-    /** If it returns false, the thread remains in the arena. Will not be called for masters
-        or if the worker leaves arena due to rebalancing or priority changes, etc.
-        NOTE: The preview library must be linked for this method to take effect **/
-    virtual bool on_scheduler_leaving() { return true; }
+    //! Enable or disable observation
+    /** Warning: concurrent invocations of this method are not safe.
+        Repeated calls with the same state are no-ops. **/
+    void observe( bool state=true ) {
+        if( state && !my_proxy ) {
+            __TBB_ASSERT( !my_busy_count, "Inconsistent state of task_scheduler_observer instance");
+            my_busy_count.store<relaxed>(v6_trait);
+        }
+        internal::task_scheduler_observer_v3::observe(state);
+    }
+
+    //! Return commands for may_sleep()
+    enum { keep_awake = false, allow_sleep = true };
+
+    //! The callback can be invoked by a worker thread before it goes to sleep.
+    /** If it returns false ('keep_awake'), the thread will keep spinning and looking for work.
+        It will not be called for master threads. **/
+    virtual bool may_sleep() { return allow_sleep; }
 };
 
 } //namespace interface6
 using interface6::task_scheduler_observer;
-#else /*TBB_PREVIEW_LOCAL_OBSERVER*/
+#else /*__TBB_ARENA_OBSERVER*/
 typedef tbb::internal::task_scheduler_observer_v3 task_scheduler_observer;
-#endif /*TBB_PREVIEW_LOCAL_OBSERVER*/
+#endif /*__TBB_ARENA_OBSERVER*/
 
 } // namespace tbb
 
diff --git a/include/tbb/tbb.h b/include/tbb/tbb.h
index ef57c9f..9e830f4 100644
--- a/include/tbb/tbb.h
+++ b/include/tbb/tbb.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_H
@@ -47,12 +39,18 @@
 #include "blocked_range3d.h"
 #include "cache_aligned_allocator.h"
 #include "combinable.h"
-#include "concurrent_unordered_map.h"
 #include "concurrent_hash_map.h"
+#if TBB_PREVIEW_CONCURRENT_LRU_CACHE
+#include "concurrent_lru_cache.h"
+#endif
+#include "concurrent_priority_queue.h"
 #include "concurrent_queue.h"
+#include "concurrent_unordered_map.h"
+#include "concurrent_unordered_set.h"
 #include "concurrent_vector.h"
 #include "critical_section.h"
 #include "enumerable_thread_specific.h"
+#include "flow_graph.h"
 #include "mutex.h"
 #include "null_mutex.h"
 #include "null_rw_mutex.h"
@@ -68,11 +66,11 @@
 #include "queuing_mutex.h"
 #include "queuing_rw_mutex.h"
 #include "reader_writer_lock.h"
-#include "concurrent_priority_queue.h"
 #include "recursive_mutex.h"
 #include "spin_mutex.h"
 #include "spin_rw_mutex.h"
 #include "task.h"
+#include "task_arena.h"
 #include "task_group.h"
 #include "task_scheduler_init.h"
 #include "task_scheduler_observer.h"
diff --git a/include/tbb/tbb_allocator.h b/include/tbb/tbb_allocator.h
index c7fcca1..33d09de 100644
--- a/include/tbb/tbb_allocator.h
+++ b/include/tbb/tbb_allocator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_allocator_H
@@ -31,7 +23,7 @@
 
 #include "tbb_stddef.h"
 #include <new>
-#if __TBB_CPP11_RVALUE_REF_PRESENT && !__TBB_CPP11_STD_FORWARD_BROKEN
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
  #include <utility> // std::forward
 #endif
 
@@ -124,12 +116,11 @@ public:
 #if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     template<typename U, typename... Args>
     void construct(U *p, Args&&... args)
- #if __TBB_CPP11_STD_FORWARD_BROKEN
-        { ::new((void *)p) U((args)...); }
- #else
         { ::new((void *)p) U(std::forward<Args>(args)...); }
- #endif
 #else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void construct( pointer p, value_type&& value ) {::new((void*)(p)) value_type(std::move(value));}
+#endif
     void construct( pointer p, const value_type& value ) {::new((void*)(p)) value_type(value);}
 #endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
 
diff --git a/include/tbb/tbb_config.h b/include/tbb/tbb_config.h
index 3f0aadd..ddbe5c7 100644
--- a/include/tbb/tbb_config.h
+++ b/include/tbb/tbb_config.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_config_H
@@ -37,12 +29,18 @@
     - known compiler/platform issues
 **/
 
+/* This macro marks incomplete code or comments describing ideas which are considered for the future.
+ * See also for plain comment with TODO and FIXME marks for small improvement opportunities.
+ */
+#define __TBB_TODO 0
+
 /*Check which standard library we use on OS X.*/
 /*__TBB_SYMBOL is defined only while processing exported symbols list where C++ is not allowed.*/
 #if !defined(__TBB_SYMBOL) && __APPLE__
     #include <cstddef>
 #endif
 
+// note that when ICC is in use __TBB_GCC_VERSION might not closely match GCC version on the machine
 #define __TBB_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
 
 #if __clang__
@@ -50,6 +48,39 @@
     #define __TBB_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
 #endif
 
+/** Preprocessor symbols to determine HW architecture **/
+
+#if _WIN32||_WIN64
+#   if defined(_M_X64)||defined(__x86_64__)  // the latter for MinGW support
+#       define __TBB_x86_64 1
+#   elif defined(_M_IA64)
+#       define __TBB_ipf 1
+#   elif defined(_M_IX86)||defined(__i386__) // the latter for MinGW support
+#       define __TBB_x86_32 1
+#   else
+#       define __TBB_generic_arch 1
+#   endif
+#else /* Assume generic Unix */
+#   if !__linux__ && !__APPLE__
+#       define __TBB_generic_os 1
+#   endif
+#   if __x86_64__
+#       define __TBB_x86_64 1
+#   elif __ia64__
+#       define __TBB_ipf 1
+#   elif __i386__||__i386  // __i386 is for Sun OS
+#       define __TBB_x86_32 1
+#   else
+#       define __TBB_generic_arch 1
+#   endif
+#endif
+
+#if __MIC__ || __MIC2__
+#define __TBB_DEFINE_MIC 1
+#endif
+
+#define __TBB_TSX_AVAILABLE  (__TBB_x86_32 || __TBB_x86_64) && !__TBB_DEFINE_MIC
+
 /** Presence of compiler features **/
 
 #if __INTEL_COMPILER == 9999 && __INTEL_COMPILER_BUILD_DATE == 20110811
@@ -85,7 +116,9 @@
         // TODO: check if more conditions can be simplified with the above macro
     #endif
     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    (__INTEL_CXX11_MODE__ && __VARIADIC_TEMPLATES)
-    #define __TBB_CPP11_RVALUE_REF_PRESENT            ((__GXX_EXPERIMENTAL_CXX0X__ || _MSC_VER >= 1600) && __INTEL_COMPILER >= 1200)
+    // Both r-value reference support in compiler and std::move/std::forward
+    // presence in C++ standard library is checked.
+    #define __TBB_CPP11_RVALUE_REF_PRESENT            ((__GXX_EXPERIMENTAL_CXX0X__ && (__TBB_GCC_VERSION >= 40300 || _LIBCPP_VERSION) || _MSC_VER >= 1600) && __INTEL_COMPILER >= 1200)
     #if  _MSC_VER >= 1600
         #define __TBB_EXCEPTION_PTR_PRESENT           ( __INTEL_COMPILER > 1300                                                \
                                                       /*ICC 12.1 Upd 10 and 13 beta Upd 2 fixed exception_ptr linking  issue*/ \
@@ -98,10 +131,11 @@
         #define __TBB_EXCEPTION_PTR_PRESENT           (__GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1200)
     #elif __TBB_GCC_VERSION >= 40600
         #define __TBB_EXCEPTION_PTR_PRESENT           (__GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1300)
+    #elif _LIBCPP_VERSION
+        #define __TBB_EXCEPTION_PTR_PRESENT           __GXX_EXPERIMENTAL_CXX0X__
     #else
         #define __TBB_EXCEPTION_PTR_PRESENT           0
     #endif
-    #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (_MSC_VER >= 1700 || (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600))
     #define __TBB_STATIC_ASSERT_PRESENT               (__INTEL_CXX11_MODE__ || _MSC_VER >= 1600)
     #define __TBB_CPP11_TUPLE_PRESENT                 (_MSC_VER >= 1600 || (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300))
     /**Intel C++ compiler 14.0 crashes on using __has_include. When it fixed, condition will need to be updated. **/
@@ -116,18 +150,23 @@
     
     #define __TBB_CONSTEXPR_PRESENT                   __INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1400
     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  __INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1200
+    /** ICC seems to disable support of noexcept event in c++11 when compiling in compatibility mode for gcc <4.6 **/
+    #define __TBB_NOEXCEPT_PRESENT                    __INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1300 && (__TBB_GCC_VERSION >= 40600 || _LIBCPP_VERSION || _MSC_VER)
+    #define __TBB_CPP11_STD_BEGIN_END_PRESENT         (_MSC_VER >= 1700 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1310 && (__TBB_GCC_VERSION >= 40600 || _LIBCPP_VERSION))
+    #define __TBB_CPP11_AUTO_PRESENT                  (_MSC_VER >= 1600 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1210)
+    #define __TBB_CPP11_DECLTYPE_PRESENT              (_MSC_VER >= 1600 || __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1210)
+    #define __TBB_CPP11_LAMBDAS_PRESENT               (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1200)
 #elif __clang__
 //TODO: these options need to be rechecked
 /** on OS X* the only way to get C++11 is to use clang. For library features (e.g. exception_ptr) libc++ is also
  *  required. So there is no need to check GCC version for clang**/
-    #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT     __has_feature(__cxx_variadic_templates__)
-    #define __TBB_CPP11_RVALUE_REF_PRESENT             __has_feature(__cxx_rvalue_references__)
+    #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    (__has_feature(__cxx_variadic_templates__))
+    #define __TBB_CPP11_RVALUE_REF_PRESENT            (__has_feature(__cxx_rvalue_references__) && (__TBB_GCC_VERSION >= 40300 || _LIBCPP_VERSION))
 /** TODO: extend exception_ptr related conditions to cover libstdc++ **/
     #define __TBB_EXCEPTION_PTR_PRESENT               (__cplusplus >= 201103L && _LIBCPP_VERSION)
-    #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (__cplusplus >= 201103L && _LIBCPP_VERSION)
     #define __TBB_STATIC_ASSERT_PRESENT               __has_feature(__cxx_static_assert__)
-    /**Clang (preprocessor) has problems with dealing with expression having __has_include in #if's
-     * used inside C++ code. (At least version that comes with OS X 10.8) **/
+    /**Clang (preprocessor) has problems with dealing with expression having __has_include in #ifs
+     * used inside C++ code. (At least version that comes with OS X 10.8 : Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)) **/
     #if (__GXX_EXPERIMENTAL_CXX0X__ && __has_include(<tuple>))
         #define __TBB_CPP11_TUPLE_PRESENT             1
     #endif
@@ -136,6 +175,12 @@
     #endif
     #define __TBB_CONSTEXPR_PRESENT                   __has_feature(__cxx_constexpr__)
     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  (__has_feature(__cxx_defaulted_functions__) && __has_feature(__cxx_deleted_functions__))
+    /**For some unknown reason  __has_feature(__cxx_noexcept) does not yield true for all cases. Compiler bug ? **/
+    #define __TBB_NOEXCEPT_PRESENT                    (__cplusplus >= 201103L)
+    #define __TBB_CPP11_STD_BEGIN_END_PRESENT         (__has_feature(__cxx_range_for__) && _LIBCPP_VERSION)
+    #define __TBB_CPP11_AUTO_PRESENT                  __has_feature(__cxx_auto_type__)
+    #define __TBB_CPP11_DECLTYPE_PRESENT              __has_feature(__cxx_decltype__)
+    #define __TBB_CPP11_LAMBDAS_PRESENT               __has_feature(cxx_lambdas)
 #elif __GNUC__
     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    __GXX_EXPERIMENTAL_CXX0X__
     #define __TBB_CPP11_RVALUE_REF_PRESENT            __GXX_EXPERIMENTAL_CXX0X__
@@ -143,35 +188,63 @@
         for exception_ptr but cannot be used in this file because it is defined in a header, not by the compiler. 
         If the compiler has no atomic intrinsics, the C++ library should not expect those as well. **/
     #define __TBB_EXCEPTION_PTR_PRESENT               (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40404 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-    #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600)
     #define __TBB_STATIC_ASSERT_PRESENT               (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300)
     #define __TBB_CPP11_TUPLE_PRESENT                 (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300)
     #define __TBB_INITIALIZER_LISTS_PRESENT           (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)
     /** gcc seems have to support constexpr from 4.4 but tests in (test_atomic) seeming reasonable fail to compile prior 4.6**/
     #define __TBB_CONSTEXPR_PRESENT                   (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)
     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)
+    #define __TBB_NOEXCEPT_PRESENT                    (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600)
+    #define __TBB_CPP11_STD_BEGIN_END_PRESENT         (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600)
+    #define __TBB_CPP11_AUTO_PRESENT                  (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)
+    #define __TBB_CPP11_DECLTYPE_PRESENT              (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40400)
+    #define __TBB_CPP11_LAMBDAS_PRESENT               (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40500)
 #elif _MSC_VER
     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    (_MSC_VER >= 1800)
     #define __TBB_CPP11_RVALUE_REF_PRESENT            (_MSC_VER >= 1600)
     #define __TBB_EXCEPTION_PTR_PRESENT               (_MSC_VER >= 1600)
     #define __TBB_STATIC_ASSERT_PRESENT               (_MSC_VER >= 1600)
-    #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (_MSC_VER >= 1700)
     #define __TBB_CPP11_TUPLE_PRESENT                 (_MSC_VER >= 1600)
     #define __TBB_INITIALIZER_LISTS_PRESENT           (_MSC_VER >= 1800)
     #define __TBB_CONSTEXPR_PRESENT                   0
     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  (_MSC_VER >= 1800)
+    #define __TBB_NOEXCEPT_PRESENT                    (_MSC_VER >= 1900)
+    #define __TBB_CPP11_STD_BEGIN_END_PRESENT         (_MSC_VER >= 1700)
+    #define __TBB_CPP11_AUTO_PRESENT                  (_MSC_VER >= 1600)
+    #define __TBB_CPP11_DECLTYPE_PRESENT              (_MSC_VER >= 1600)
+    #define __TBB_CPP11_LAMBDAS_PRESENT               (_MSC_VER >= 1600)
 #else
     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    0
     #define __TBB_CPP11_RVALUE_REF_PRESENT            0
     #define __TBB_EXCEPTION_PTR_PRESENT               0
     #define __TBB_STATIC_ASSERT_PRESENT               0
-    #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          0
     #define __TBB_CPP11_TUPLE_PRESENT                 0
     #define __TBB_INITIALIZER_LISTS_PRESENT           0
     #define __TBB_CONSTEXPR_PRESENT                   0
     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  0
+    #define __TBB_NOEXCEPT_PRESENT                    0
+    #define __TBB_CPP11_STD_BEGIN_END_PRESENT         0
+    #define __TBB_CPP11_AUTO_PRESENT                  0
+    #define __TBB_CPP11_DECLTYPE_PRESENT              0
+    #define __TBB_CPP11_LAMBDAS_PRESENT               0
 #endif
 
+// C++11 standard library features
+
+#define __TBB_CPP11_VARIADIC_TUPLE_PRESENT          (!_MSC_VER || _MSC_VER >=1800)
+#define __TBB_CPP11_TYPE_PROPERTIES_PRESENT         (_LIBCPP_VERSION || _MSC_VER >= 1700)
+#define __TBB_TR1_TYPE_PROPERTIES_IN_STD_PRESENT    (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40300 || _MSC_VER >= 1600)
+// GCC has a partial support of type properties
+#define __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT   (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40700 || __TBB_CPP11_TYPE_PROPERTIES_PRESENT)
+
+// In GCC and MSVC, implementation of std::move_if_noexcept is not aligned with noexcept
+#define __TBB_MOVE_IF_NOEXCEPT_PRESENT          (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40700 || _MSC_VER >= 1800 || __clang__ && _LIBCPP_VERSION && __TBB_NOEXCEPT_PRESENT)
+//TODO: Probably more accurate way is to analyze version of stdlibc++ via__GLIBCXX__ instead of __TBB_GCC_VERSION
+#define __TBB_ALLOCATOR_TRAITS_PRESENT              (__cplusplus >= 201103L && _LIBCPP_VERSION  || _MSC_VER >= 1700 ||                                             \
+                                                     __GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40700 && !(__TBB_GCC_VERSION == 40700 && __TBB_DEFINE_MIC) \
+                                                    )
+#define __TBB_MAKE_EXCEPTION_PTR_PRESENT         (__TBB_EXCEPTION_PTR_PRESENT && (_MSC_VER >= 1700 || __TBB_GCC_VERSION >= 40600 || _LIBCPP_VERSION))
+
 //TODO: not clear how exactly this macro affects exception_ptr - investigate
 // On linux ICC fails to find existing std::exception_ptr in libstdc++ without this define
 #if __INTEL_COMPILER && __GNUC__ && __TBB_EXCEPTION_PTR_PRESENT && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
@@ -203,40 +276,24 @@
     #define __TBB_ICC_BUILTIN_ATOMICS_PRESENT 1
 #endif
 
-#if __MIC__ || __MIC2__
-#define __TBB_DEFINE_MIC 1
-#endif
-
-#define __TBB_TSX_INTRINSICS_PRESENT ( (__TBB_GCC_VERSION>=40800) || (_MSC_VER>=1700) || (__INTEL_COMPILER>=1300) ) && !__TBB_DEFINE_MIC
+#define __TBB_TSX_INTRINSICS_PRESENT ((__RTM__ || _MSC_VER>=1700 || __INTEL_COMPILER>=1300) && !__TBB_DEFINE_MIC && !__ANDROID__)
 
 /** User controlled TBB features & modes **/
 
 #ifndef TBB_USE_DEBUG
-#ifdef TBB_DO_ASSERT
-#define TBB_USE_DEBUG TBB_DO_ASSERT
-#else
 #ifdef _DEBUG
 #define TBB_USE_DEBUG _DEBUG
 #else
 #define TBB_USE_DEBUG 0
 #endif
-#endif /* TBB_DO_ASSERT */
 #endif /* TBB_USE_DEBUG */
 
 #ifndef TBB_USE_ASSERT
-#ifdef TBB_DO_ASSERT
-#define TBB_USE_ASSERT TBB_DO_ASSERT
-#else
 #define TBB_USE_ASSERT TBB_USE_DEBUG
-#endif /* TBB_DO_ASSERT */
 #endif /* TBB_USE_ASSERT */
 
 #ifndef TBB_USE_THREADING_TOOLS
-#ifdef TBB_DO_THREADING_TOOLS
-#define TBB_USE_THREADING_TOOLS TBB_DO_THREADING_TOOLS
-#else
 #define TBB_USE_THREADING_TOOLS TBB_USE_DEBUG
-#endif /* TBB_DO_THREADING_TOOLS */
 #endif /* TBB_USE_THREADING_TOOLS */
 
 #ifndef TBB_USE_PERFORMANCE_WARNINGS
@@ -264,7 +321,7 @@
 #endif
 
 #ifndef TBB_IMPLEMENT_CPP0X
-    /** By default, use C++0x classes if available **/
+    /** By default, use C++11 classes if available **/
     #if __GNUC__==4 && __GNUC_MINOR__>=4 && __GXX_EXPERIMENTAL_CXX0X__
         #define TBB_IMPLEMENT_CPP0X 0
     #elif __clang__ && __cplusplus >= 201103L
@@ -275,6 +332,10 @@
         #else
             #define TBB_IMPLEMENT_CPP0X 1
         #endif
+    #elif _MSC_VER>=1700
+        #define TBB_IMPLEMENT_CPP0X 0
+    #elif __STDCPP_THREADS__
+        #define TBB_IMPLEMENT_CPP0X 0
     #else
         #define TBB_IMPLEMENT_CPP0X 1
     #endif
@@ -314,7 +375,7 @@
 /** __TBB_SOURCE_DIRECTLY_INCLUDED is a mode used in whitebox testing when
     it's necessary to test internal functions not exported from TBB DLLs
 **/
-#if (_WIN32||_WIN64) && __TBB_SOURCE_DIRECTLY_INCLUDED
+#if (_WIN32||_WIN64) && (__TBB_SOURCE_DIRECTLY_INCLUDED || TBB_USE_PREVIEW_BINARY)
     #define __TBB_NO_IMPLICIT_LINKAGE 1
     #define __TBBMALLOC_NO_IMPLICIT_LINKAGE 1
 #endif
@@ -331,20 +392,35 @@
     #define __TBB_SCHEDULER_OBSERVER 1
 #endif /* __TBB_SCHEDULER_OBSERVER */
 
+#ifndef __TBB_FP_CONTEXT
+    #define __TBB_FP_CONTEXT __TBB_TASK_GROUP_CONTEXT
+#endif /* __TBB_FP_CONTEXT */
+
+#if __TBB_FP_CONTEXT && !__TBB_TASK_GROUP_CONTEXT
+    #error __TBB_FP_CONTEXT requires __TBB_TASK_GROUP_CONTEXT to be enabled
+#endif
+
 #ifndef __TBB_TASK_ARENA
-    #define __TBB_TASK_ARENA (__TBB_BUILD||TBB_PREVIEW_TASK_ARENA)
+    #define __TBB_TASK_ARENA 1
 #endif /* __TBB_TASK_ARENA  */
 #if __TBB_TASK_ARENA
     #define __TBB_RECYCLE_TO_ENQUEUE __TBB_BUILD // keep non-official
     #if !__TBB_SCHEDULER_OBSERVER
-        #error TBB_PREVIEW_TASK_ARENA requires __TBB_SCHEDULER_OBSERVER to be enabled
+        #error __TBB_TASK_ARENA requires __TBB_SCHEDULER_OBSERVER to be enabled
     #endif
 #endif /* __TBB_TASK_ARENA */
 
-#if !defined(TBB_PREVIEW_LOCAL_OBSERVER) && __TBB_BUILD && __TBB_SCHEDULER_OBSERVER
-    #define TBB_PREVIEW_LOCAL_OBSERVER 1
-#endif /* TBB_PREVIEW_LOCAL_OBSERVER */
+#ifndef __TBB_ARENA_OBSERVER
+    #define __TBB_ARENA_OBSERVER ((__TBB_BUILD||TBB_PREVIEW_LOCAL_OBSERVER)&& __TBB_SCHEDULER_OBSERVER)
+#endif /* __TBB_ARENA_OBSERVER */
 
+#ifndef __TBB_SLEEP_PERMISSION
+    #define __TBB_SLEEP_PERMISSION ((__TBB_CPF_BUILD||TBB_PREVIEW_LOCAL_OBSERVER)&& __TBB_SCHEDULER_OBSERVER)
+#endif /* __TBB_SLEEP_PERMISSION */
+
+#if TBB_PREVIEW_FLOW_GRAPH_TRACE
+#define __TBB_NO_IMPLICIT_LINKAGE 1
+#endif /* TBB_PREVIEW_FLOW_GRAPH_TRACE */
 
 #ifndef __TBB_ITT_STRUCTURE_API
 #define __TBB_ITT_STRUCTURE_API ( !__TBB_DEFINE_MIC && (__TBB_CPF_BUILD || TBB_PREVIEW_FLOW_GRAPH_TRACE) )
@@ -355,7 +431,7 @@
 #endif
 
 #ifndef __TBB_TASK_PRIORITY
-    #define __TBB_TASK_PRIORITY (!__TBB_CPF_BUILD&&__TBB_TASK_GROUP_CONTEXT) // TODO: it will be enabled for CPF in the next versions
+    #define __TBB_TASK_PRIORITY (__TBB_TASK_GROUP_CONTEXT)
 #endif /* __TBB_TASK_PRIORITY */
 
 #if __TBB_TASK_PRIORITY && !__TBB_TASK_GROUP_CONTEXT
@@ -381,20 +457,25 @@
 #endif /* TBB_DEPRECATED */
 #endif /* !defined(__TBB_DEFAULT_PARTITIONER */
 
-#ifdef _VARIADIC_MAX
-#define __TBB_VARIADIC_MAX _VARIADIC_MAX
-#else
-#if _MSC_VER >= 1700
-#define __TBB_VARIADIC_MAX 5  /* current VS11 setting, may change. */
-#else
-#define __TBB_VARIADIC_MAX 10
-#endif
+#ifndef __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+#define __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES 1
 #endif
 
-#if !defined(TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX)
-    #define TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX __TBB_CPF_BUILD
-#endif /* TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
+#ifndef __TBB_ENABLE_RANGE_FEEDBACK
+#define __TBB_ENABLE_RANGE_FEEDBACK 0
+#endif
 
+#ifdef _VARIADIC_MAX
+    #define __TBB_VARIADIC_MAX _VARIADIC_MAX
+#else
+    #if _MSC_VER == 1700
+        #define __TBB_VARIADIC_MAX 5 // VS11 setting, issue resolved in VS12
+    #elif _MSC_VER == 1600
+        #define __TBB_VARIADIC_MAX 10 // VS10 setting
+    #else
+        #define __TBB_VARIADIC_MAX 15 
+    #endif
+#endif
 
 /** __TBB_WIN8UI_SUPPORT enables support of New Windows*8 Store Apps and limit a possibility to load
     shared libraries at run time only from application container **/
@@ -404,32 +485,6 @@
     #define __TBB_WIN8UI_SUPPORT 0
 #endif
 
-// Define preprocessor symbols used to determine architecture
-#if _WIN32||_WIN64
-#   if defined(_M_X64)||defined(__x86_64__)  // the latter for MinGW support
-#       define __TBB_x86_64 1
-#   elif defined(_M_IA64)
-#       define __TBB_ipf 1
-#   elif defined(_M_IX86)||defined(__i386__) // the latter for MinGW support
-#       define __TBB_x86_32 1
-#   endif
-#else /* Assume generic Unix */
-#   if !__linux__ && !__APPLE__
-#       define __TBB_generic_os 1
-#   endif
-#   if __x86_64__
-#       define __TBB_x86_64 1
-#   elif __ia64__
-#       define __TBB_ipf 1
-#   elif __i386__||__i386  // __i386 is for Sun OS
-#       define __TBB_x86_32 1
-#   else
-#       define __TBB_generic_arch 1
-#   endif
-#endif
-
-#define __TBB_TSX_AVAILABLE  (__TBB_x86_32 || __TBB_x86_64) && !__TBB_DEFINE_MIC
-
 /** Macros of the form __TBB_XXX_BROKEN denote known issues that are caused by
     the bugs in compilers, standard or OS specific libraries. They should be
     removed as soon as the corresponding bugs are fixed or the buggy OS/compiler
@@ -459,14 +514,14 @@
     #define __TBB_DEFAULT_DTOR_THROW_SPEC_BROKEN 1
 #endif
 
-#if defined(_MSC_VER) && _MSC_VER < 1500 && !defined(__INTEL_COMPILER)
-    /** VS2005 and earlier do not allow declaring template class as a friend
+#if !__INTEL_COMPILER && (_MSC_VER && _MSC_VER < 1500 || __TBB_GCC_VERSION && __TBB_GCC_VERSION < 40102)
+    /** gcc 3.4.6 (and earlier) and VS2005 (and earlier) do not allow declaring template class as a friend
         of classes defined in other namespaces. **/
     #define __TBB_TEMPLATE_FRIENDS_BROKEN 1
 #endif
 
 //TODO: recheck for different clang versions 
-#if __GLIBC__==2 && __GLIBC_MINOR__==3 || __MINGW32__ || (__APPLE__ && ( __INTEL_COMPILER==1200 && !TBB_USE_DEBUG))
+#if __GLIBC__==2 && __GLIBC_MINOR__==3 ||  (__APPLE__ && ( __INTEL_COMPILER==1200 && !TBB_USE_DEBUG))
     /** Macro controlling EH usages in TBB tests.
         Some older versions of glibc crash when exception handling happens concurrently. **/
     #define __TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN 1
@@ -519,39 +574,50 @@
     #define __TBB_ALIGNOF_NOT_INSTANTIATED_TYPES_BROKEN 1
 #endif
 
-/* Actually for Clang it should be name __TBB_CPP11_STD_FORWARD_PRESENT.
- * But in order to check for presence of std:: library feature we need to recognize
- * is standard library actually used stdlibc++ (GNU one) or libc++ (clang one).
- * Unfortunately it is not possible at the moment. So postponing it to later moment.*/
-/*TODO: for clang rename it to __TBB_CPP11_STD_FORWARD_PRESENT and re-implement it.*/
-#if (__INTEL_COMPILER) || (__clang__ &&  __TBB_GCC_VERSION <= 40300)
-    #define __TBB_CPP11_STD_FORWARD_BROKEN 1
-#else
-    #define __TBB_CPP11_STD_FORWARD_BROKEN 0
-#endif
-
 #if __TBB_DEFINE_MIC
     /** Main thread and user's thread have different default thread affinity masks. **/
     #define __TBB_MAIN_THREAD_AFFINITY_BROKEN 1
 #endif
 
 #if __GXX_EXPERIMENTAL_CXX0X__ && !defined(__EXCEPTIONS) && \
-    __GNUC__==4 && (__GNUC_MINOR__==4 ||__GNUC_MINOR__==5 || (__INTEL_COMPILER==1300 && (__GNUC_MINOR__==6 ||__GNUC_MINOR__==7)))
+    ((!__INTEL_COMPILER && !__clang__ && (__TBB_GCC_VERSION>=40400 && __TBB_GCC_VERSION<40600)) || \
+     (__INTEL_COMPILER<=1400 && (__TBB_GCC_VERSION>=40400 && __TBB_GCC_VERSION<=40801)))
 /* There is an issue for specific GCC toolchain when C++11 is enabled
    and exceptions are disabled:
    exceprion_ptr.h/nested_exception.h use throw unconditionally.
+   GCC can ignore 'throw' since 4.6; but with ICC the issue still exists.
  */
     #define __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN 1
 #else
     #define __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN 0
 #endif
 
-/*In a PIC mode some versions of GCC 4.1.2 generate incorrect inlined code for 8 byte __sync_val_compare_and_swap intrinisc */
+#if __INTEL_COMPILER==1300 && __TBB_GCC_VERSION>=40700 && defined(__GXX_EXPERIMENTAL_CXX0X__)
+/* Some C++11 features used inside libstdc++ are not supported by Intel compiler.
+ * Checking version of gcc instead of libstdc++ because
+ *  - they are directly connected,
+ *  - for now it is not possible to check version of any standard library in this file
+ */
+    #define __TBB_ICC_13_0_CPP11_STDLIB_SUPPORT_BROKEN 1
+#else
+    #define __TBB_ICC_13_0_CPP11_STDLIB_SUPPORT_BROKEN 0
+#endif
+
+#if (__GNUC__==4 && __GNUC_MINOR__==4 ) && !defined(__INTEL_COMPILER) && !defined(__clang__)
+    /** excessive warnings related to strict aliasing rules in GCC 4.4 **/
+    #define __TBB_GCC_STRICT_ALIASING_BROKEN 1
+    /* topical remedy: #pragma GCC diagnostic ignored "-Wstrict-aliasing" */
+    #if !__TBB_GCC_WARNING_SUPPRESSION_PRESENT
+        #error Warning suppression is not supported, while should.
+    #endif
+#endif
+
+/*In a PIC mode some versions of GCC 4.1.2 generate incorrect inlined code for 8 byte __sync_val_compare_and_swap intrinsic */
 #if __TBB_GCC_VERSION == 40102 && __PIC__ && !defined(__INTEL_COMPILER) && !defined(__clang__)
     #define __TBB_GCC_CAS8_BUILTIN_INLINING_BROKEN 1
 #endif
 
-#if __TBB_x86_32 && (__linux__ || __APPLE__ || _WIN32 || __sun) &&  ((defined(__INTEL_COMPILER) && __INTEL_COMPILER <= 1400) || (__GNUC__==3 && __GNUC_MINOR__==3 ) || defined(__SUNPRO_CC))
+#if __TBB_x86_32 && (__linux__ || __APPLE__ || _WIN32 || __sun || __ANDROID__) &&  (__INTEL_COMPILER || (__GNUC__==3 && __GNUC_MINOR__==3 )||(__MINGW32__ ) && (__GNUC__==4 && __GNUC_MINOR__==5 ) || __SUNPRO_CC)
     // Some compilers for IA-32 fail to provide 8-byte alignment of objects on the stack,
     // even if the object specifies 8-byte alignment.  On such platforms, the IA-32 implementation
     // of 64 bit atomics (e.g. atomic<long long>) use different tactics depending upon
@@ -564,6 +630,30 @@
 #if __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && __TBB_GCC_VERSION < 40700 && !defined(__INTEL_COMPILER) && !defined (__clang__)
     #define __TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN 1
 #endif
+
+#if _MSC_VER && _MSC_VER <= 1800 && !__INTEL_COMPILER
+    // With MSVC, when an array is passed by const reference to a template function,
+    // constness from the function parameter may get propagated to the template parameter.
+    #define __TBB_CONST_REF_TO_ARRAY_TEMPLATE_PARAM_BROKEN 1
+#endif
+
+// A compiler bug: a disabled copy constructor prevents use of the moving constructor
+#define __TBB_IF_NO_COPY_CTOR_MOVE_SEMANTICS_BROKEN (_MSC_VER && (__INTEL_COMPILER >= 1300 && __INTEL_COMPILER <= 1310) && !__INTEL_CXX11_MODE__)
+
+// MSVC 2013 and ICC 15 seems do not generate implicit move constructor for empty derived class while should
+#define __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_FOR_DERIVED_BROKEN  (__TBB_CPP11_RVALUE_REF_PRESENT &&  \
+      ( !__INTEL_COMPILER && _MSC_VER && _MSC_VER <= 1800 || __INTEL_COMPILER && __INTEL_COMPILER <= 1500 ))
+
+#define __TBB_CPP11_DECLVAL_BROKEN (_MSC_VER == 1600 || (__GNUC__ && __TBB_GCC_VERSION < 40500) )
+
+// Intel C++ compiler has difficulties with copying std::pair with VC11 std::reference_wrapper being a const member
+#define __TBB_COPY_FROM_NON_CONST_REF_BROKEN (_MSC_VER == 1700 && __INTEL_COMPILER && __INTEL_COMPILER < 1600)
+//The implicit upcasting of the tuple of a reference of a derived class to a base class fails on icc 13.X 
+//if the system's gcc environment is 4.8
+#if (__INTEL_COMPILER >=1300 && __INTEL_COMPILER <=1310) && __TBB_GCC_VERSION>=40700 && __GXX_EXPERIMENTAL_CXX0X__
+    #define __TBB_UPCAST_OF_TUPLE_OF_REF_BROKEN 1 
+#endif
+
 /** End of __TBB_XXX_BROKEN macro section **/
 
 #if defined(_MSC_VER) && _MSC_VER>=1500 && !defined(__INTEL_COMPILER)
@@ -574,4 +664,10 @@
 #define __TBB_ATOMIC_CTORS     (__TBB_CONSTEXPR_PRESENT && __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && (!__TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN))
 
 #define __TBB_ALLOCATOR_CONSTRUCT_VARIADIC      (__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT)
+
+#define __TBB_VARIADIC_PARALLEL_INVOKE          (TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT)
+#define __TBB_PREVIEW_COMPOSITE_NODE            (TBB_PREVIEW_FLOW_GRAPH_NODES && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT \
+                                                 && __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_AUTO_PRESENT) \
+                                                 && __TBB_CPP11_VARIADIC_TUPLE_PRESENT && !__TBB_UPCAST_OF_TUPLE_OF_REF_BROKEN
+#define __TBB_PREVIEW_ASYNC_NODE TBB_PREVIEW_FLOW_GRAPH_NODES
 #endif /* __TBB_tbb_config_H */
diff --git a/include/tbb/tbb_exception.h b/include/tbb/tbb_exception.h
index e8993c1..75423d0 100644
--- a/include/tbb/tbb_exception.h
+++ b/include/tbb/tbb_exception.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_exception_H
@@ -109,6 +101,7 @@ enum exception_id {
     // So, if we drop the functionality, eid_reserved1 can be safely renamed and reused.
     eid_blocking_sch_init = eid_reserved1,
 #endif
+    eid_bad_tagged_msg_cast,
     //! The last enumerator tracks the number of defined IDs. It must remain the last one.
     /** When adding new IDs, place them immediately _before_ this comment (that is
         _after_ all the existing IDs. NEVER insert new IDs between the existing ones. **/
diff --git a/include/tbb/tbb_machine.h b/include/tbb/tbb_machine.h
index 28e87fb..fb8a80a 100644
--- a/include/tbb/tbb_machine.h
+++ b/include/tbb/tbb_machine.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_machine_H
@@ -177,7 +169,7 @@ template<> struct atomic_selector<8> {
 #define __TBB_MACHINE_DEFINE_STORE8_GENERIC_FENCED(M)                                        \
     inline void __TBB_machine_generic_store8##M(volatile void *ptr, int64_t value) {         \
         for(;;) {                                                                            \
-            int64_t result = *(int64_t *)ptr;                                                \
+            int64_t result = *(volatile int64_t *)ptr;                                       \
             if( __TBB_machine_cmpswp8##M(ptr,value,result)==result ) break;                  \
         }                                                                                    \
     }                                                                                        \
@@ -231,8 +223,11 @@ template<> struct atomic_selector<8> {
 #elif __TBB_DEFINE_MIC
 
     #include "machine/mic_common.h"
-    //TODO: check if ICC atomic intrinsics are available for MIC
-    #include "machine/linux_intel64.h"
+    #if (TBB_USE_ICC_BUILTINS && __TBB_ICC_BUILTIN_ATOMICS_PRESENT)
+        #include "machine/icc_generic.h"
+    #else
+        #include "machine/linux_intel64.h"
+    #endif
 
 #elif __linux__ || __FreeBSD__ || __NetBSD__
 
@@ -412,6 +407,11 @@ void spin_wait_until_eq( const volatile T& location, const U value ) {
     while( location!=value ) backoff.pause();
 }
 
+template <typename predicate_type>
+void spin_wait_while(predicate_type condition){
+    atomic_backoff backoff;
+    while( condition() ) backoff.pause();
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 // Generic compare-and-swap applied to only a part of a machine word.
@@ -479,32 +479,32 @@ template<size_t S, typename T>
 inline T __TBB_CompareAndSwapGeneric (volatile void *ptr, T value, T comparand );
 
 template<>
-inline uint8_t __TBB_CompareAndSwapGeneric <1,uint8_t> (volatile void *ptr, uint8_t value, uint8_t comparand ) {
+inline int8_t __TBB_CompareAndSwapGeneric <1,int8_t> (volatile void *ptr, int8_t value, int8_t comparand ) {
 #if __TBB_USE_GENERIC_PART_WORD_CAS
-    return __TBB_MaskedCompareAndSwap<uint8_t>((volatile uint8_t *)ptr,value,comparand);
+    return __TBB_MaskedCompareAndSwap<int8_t>((volatile int8_t *)ptr,value,comparand);
 #else
     return __TBB_machine_cmpswp1(ptr,value,comparand);
 #endif
 }
 
 template<>
-inline uint16_t __TBB_CompareAndSwapGeneric <2,uint16_t> (volatile void *ptr, uint16_t value, uint16_t comparand ) {
+inline int16_t __TBB_CompareAndSwapGeneric <2,int16_t> (volatile void *ptr, int16_t value, int16_t comparand ) {
 #if __TBB_USE_GENERIC_PART_WORD_CAS
-    return __TBB_MaskedCompareAndSwap<uint16_t>((volatile uint16_t *)ptr,value,comparand);
+    return __TBB_MaskedCompareAndSwap<int16_t>((volatile int16_t *)ptr,value,comparand);
 #else
     return __TBB_machine_cmpswp2(ptr,value,comparand);
 #endif
 }
 
 template<>
-inline uint32_t __TBB_CompareAndSwapGeneric <4,uint32_t> (volatile void *ptr, uint32_t value, uint32_t comparand ) {
+inline int32_t __TBB_CompareAndSwapGeneric <4,int32_t> (volatile void *ptr, int32_t value, int32_t comparand ) {
     // Cast shuts up /Wp64 warning
-    return (uint32_t)__TBB_machine_cmpswp4(ptr,value,comparand);
+    return (int32_t)__TBB_machine_cmpswp4(ptr,value,comparand);
 }
 
 #if __TBB_64BIT_ATOMICS
 template<>
-inline uint64_t __TBB_CompareAndSwapGeneric <8,uint64_t> (volatile void *ptr, uint64_t value, uint64_t comparand ) {
+inline int64_t __TBB_CompareAndSwapGeneric <8,int64_t> (volatile void *ptr, int64_t value, int64_t comparand ) {
     return __TBB_machine_cmpswp8(ptr,value,comparand);
 }
 #endif
@@ -534,34 +534,34 @@ inline T __TBB_FetchAndStoreGeneric (volatile void *ptr, T value) {
 }
 
 #if __TBB_USE_GENERIC_PART_WORD_CAS
-#define __TBB_machine_cmpswp1 tbb::internal::__TBB_CompareAndSwapGeneric<1,uint8_t>
-#define __TBB_machine_cmpswp2 tbb::internal::__TBB_CompareAndSwapGeneric<2,uint16_t>
+#define __TBB_machine_cmpswp1 tbb::internal::__TBB_CompareAndSwapGeneric<1,int8_t>
+#define __TBB_machine_cmpswp2 tbb::internal::__TBB_CompareAndSwapGeneric<2,int16_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_ADD || __TBB_USE_GENERIC_PART_WORD_FETCH_ADD
-#define __TBB_machine_fetchadd1 tbb::internal::__TBB_FetchAndAddGeneric<1,uint8_t>
-#define __TBB_machine_fetchadd2 tbb::internal::__TBB_FetchAndAddGeneric<2,uint16_t>
+#define __TBB_machine_fetchadd1 tbb::internal::__TBB_FetchAndAddGeneric<1,int8_t>
+#define __TBB_machine_fetchadd2 tbb::internal::__TBB_FetchAndAddGeneric<2,int16_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_ADD
-#define __TBB_machine_fetchadd4 tbb::internal::__TBB_FetchAndAddGeneric<4,uint32_t>
+#define __TBB_machine_fetchadd4 tbb::internal::__TBB_FetchAndAddGeneric<4,int32_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_ADD || __TBB_USE_GENERIC_DWORD_FETCH_ADD
-#define __TBB_machine_fetchadd8 tbb::internal::__TBB_FetchAndAddGeneric<8,uint64_t>
+#define __TBB_machine_fetchadd8 tbb::internal::__TBB_FetchAndAddGeneric<8,int64_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_STORE || __TBB_USE_GENERIC_PART_WORD_FETCH_STORE
-#define __TBB_machine_fetchstore1 tbb::internal::__TBB_FetchAndStoreGeneric<1,uint8_t>
-#define __TBB_machine_fetchstore2 tbb::internal::__TBB_FetchAndStoreGeneric<2,uint16_t>
+#define __TBB_machine_fetchstore1 tbb::internal::__TBB_FetchAndStoreGeneric<1,int8_t>
+#define __TBB_machine_fetchstore2 tbb::internal::__TBB_FetchAndStoreGeneric<2,int16_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_STORE
-#define __TBB_machine_fetchstore4 tbb::internal::__TBB_FetchAndStoreGeneric<4,uint32_t>
+#define __TBB_machine_fetchstore4 tbb::internal::__TBB_FetchAndStoreGeneric<4,int32_t>
 #endif
 
 #if __TBB_USE_GENERIC_FETCH_STORE || __TBB_USE_GENERIC_DWORD_FETCH_STORE
-#define __TBB_machine_fetchstore8 tbb::internal::__TBB_FetchAndStoreGeneric<8,uint64_t>
+#define __TBB_machine_fetchstore8 tbb::internal::__TBB_FetchAndStoreGeneric<8,int64_t>
 #endif
 
 #if __TBB_USE_FETCHSTORE_AS_FULL_FENCED_STORE
diff --git a/include/tbb/tbb_profiling.h b/include/tbb/tbb_profiling.h
index 804df3d..63355ec 100644
--- a/include/tbb/tbb_profiling.h
+++ b/include/tbb/tbb_profiling.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_profiling_H
@@ -217,7 +209,7 @@ namespace tbb {
         template <typename T>
         inline void itt_hide_store_word(T& dst, T src) {
 #if TBB_USE_THREADING_TOOLS
-            // This assertion should be replaced with static_assert
+            //TODO: This assertion should be replaced with static_assert
             __TBB_ASSERT(sizeof(T) == sizeof(void *), "Type must be word-sized");
             itt_store_pointer_with_release_v3(&dst, (void *)src);
 #else
@@ -225,10 +217,11 @@ namespace tbb {
 #endif
         }
 
+        //TODO: rename to itt_hide_load_word_relaxed
         template <typename T>
         inline T itt_hide_load_word(const T& src) {
 #if TBB_USE_THREADING_TOOLS
-            // This assertion should be replaced with static_assert
+            //TODO: This assertion should be replaced with static_assert
             __TBB_ASSERT(sizeof(T) == sizeof(void *), "Type must be word-sized.");
             return (T)itt_load_pointer_v3(&src);
 #else
diff --git a/include/tbb/tbb_stddef.h b/include/tbb/tbb_stddef.h
index 24cbd0e..379f6c9 100644
--- a/include/tbb/tbb_stddef.h
+++ b/include/tbb/tbb_stddef.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_stddef_H
@@ -31,10 +23,10 @@
 
 // Marketing-driven product version
 #define TBB_VERSION_MAJOR 4
-#define TBB_VERSION_MINOR 2
+#define TBB_VERSION_MINOR 3
 
 // Engineering-focused interface version
-#define TBB_INTERFACE_VERSION 7003
+#define TBB_INTERFACE_VERSION 8006
 #define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000
 
 // The oldest major interface version still supported
@@ -62,7 +54,7 @@
  * \mainpage Main Page
  *
  * Click the tabs above for information about the
- * - <a href="./modules.html">Modules</a> (groups of functionality) implemented by the library 
+ * - <a href="./modules.html">Modules</a> (groups of functionality) implemented by the library
  * - <a href="./annotated.html">Classes</a> provided by the library
  * - <a href="./files.html">Files</a> constituting the library.
  * .
@@ -77,19 +69,19 @@
  */
 
 /** \page concepts TBB concepts
-    
+
     A concept is a set of requirements to a type, which are necessary and sufficient
-    for the type to model a particular behavior or a set of behaviors. Some concepts 
-    are specific to a particular algorithm (e.g. algorithm body), while other ones 
-    are common to several algorithms (e.g. range concept). 
+    for the type to model a particular behavior or a set of behaviors. Some concepts
+    are specific to a particular algorithm (e.g. algorithm body), while other ones
+    are common to several algorithms (e.g. range concept).
 
     All TBB algorithms make use of different classes implementing various concepts.
-    Implementation classes are supplied by the user as type arguments of template 
-    parameters and/or as objects passed as function call arguments. The library 
-    provides predefined  implementations of some concepts (e.g. several kinds of 
-    \ref range_req "ranges"), while other ones must always be implemented by the user. 
-    
-    TBB defines a set of minimal requirements each concept must conform to. Here is 
+    Implementation classes are supplied by the user as type arguments of template
+    parameters and/or as objects passed as function call arguments. The library
+    provides predefined  implementations of some concepts (e.g. several kinds of
+    \ref range_req "ranges"), while other ones must always be implemented by the user.
+
+    TBB defines a set of minimal requirements each concept must conform to. Here is
     the list of different concepts hyperlinked to the corresponding requirements specifications:
     - \subpage range_req
     - \subpage parallel_do_body_req
@@ -118,6 +110,12 @@
 #define __TBB_NOINLINE(decl) decl
 #endif
 
+#if __TBB_NOEXCEPT_PRESENT
+#define __TBB_NOEXCEPT(expression) noexcept(expression)
+#else
+#define __TBB_NOEXCEPT(expression)
+#endif
+
 #include <cstddef>      /* Need size_t and ptrdiff_t */
 
 #if _MSC_VER
@@ -132,23 +130,14 @@
 //! Type for an assertion handler
 typedef void(*assertion_handler_type)( const char* filename, int line, const char* expression, const char * comment );
 
-#if TBB_USE_ASSERT
-
-     #define __TBB_ASSERT_NS(predicate,message,ns) ((predicate)?((void)0) : ns::assertion_failure(__FILE__,__LINE__,#predicate,message))
-    //! Assert that x is true.
-    /** If x is false, print assertion failure message.  
-        If the comment argument is not NULL, it is printed as part of the failure message.  
-        The comment argument has no other effect. */
 #if __TBBMALLOC_BUILD
 namespace rml { namespace internal {
-    #define __TBB_ASSERT(predicate,message) __TBB_ASSERT_NS(predicate,message,rml::internal)
+ #define __TBB_ASSERT_RELEASE(predicate,message) ((predicate)?((void)0) : rml::internal::assertion_failure(__FILE__,__LINE__,#predicate,message))
 #else
 namespace tbb {
-    #define __TBB_ASSERT(predicate,message) __TBB_ASSERT_NS(predicate,message,tbb)
+ #define __TBB_ASSERT_RELEASE(predicate,message) ((predicate)?((void)0) : tbb::assertion_failure(__FILE__,__LINE__,#predicate,message))
 #endif
 
-    #define __TBB_ASSERT_EX __TBB_ASSERT
-
     //! Set assertion handler and return previous value of it.
     assertion_handler_type __TBB_EXPORTED_FUNC set_assertion_handler( assertion_handler_type new_handler );
 
@@ -163,6 +152,17 @@ namespace tbb {
 #else
 } // namespace tbb
 #endif
+
+#if TBB_USE_ASSERT
+
+    //! Assert that x is true.
+    /** If x is false, print assertion failure message.
+        If the comment argument is not NULL, it is printed as part of the failure message.
+        The comment argument has no other effect. */
+    #define __TBB_ASSERT(predicate,message) __TBB_ASSERT_RELEASE(predicate,message)
+
+    #define __TBB_ASSERT_EX __TBB_ASSERT
+
 #else /* !TBB_USE_ASSERT */
 
     //! No-op version of __TBB_ASSERT.
@@ -209,14 +209,6 @@ namespace tbb {
  */
 extern "C" int __TBB_EXPORTED_FUNC TBB_runtime_interface_version();
 
-//! Dummy type that distinguishes splitting constructor from copy constructor.
-/**
- * See description of parallel_for and parallel_reduce for example usages.
- * @ingroup algorithms
- */
-class split {
-};
-
 /**
  * @cond INTERNAL
  * @brief Identifiers declared inside namespace internal should never be used directly by client code.
@@ -224,14 +216,14 @@ class split {
 namespace internal {
 
 //! Compile-time constant that is upper bound on cache line/sector size.
-/** It should be used only in situations where having a compile-time upper 
+/** It should be used only in situations where having a compile-time upper
     bound is more useful than a run-time exact answer.
     @ingroup memory_allocation */
 const size_t NFS_MaxLineSize = 128;
 
 /** Label for data that may be accessed from different threads, and that may eventually become wrapped
     in a formal atomic type.
-    
+
     Note that no problems have yet been observed relating to the definition currently being empty,
     even if at least "volatile" would seem to be in order to avoid data sometimes temporarily hiding
     in a register (although "volatile" as a "poor man's atomic" lacks several other features of a proper
@@ -241,7 +233,7 @@ const size_t NFS_MaxLineSize = 128;
     both as a way to have the compiler help enforce use of the label and to quickly rule out
     one potential issue.
 
-    Note however that, with some architecture/compiler combinations, e.g. on IA-64 architecture, "volatile" 
+    Note however that, with some architecture/compiler combinations, e.g. on IA-64 architecture, "volatile"
     also has non-portable memory semantics that are needlessly expensive for "relaxed" operations.
 
     Note that this must only be applied to data that will not change bit patterns when cast to/from
@@ -250,15 +242,15 @@ const size_t NFS_MaxLineSize = 128;
     TODO: apply wherever relevant **/
 #define __TBB_atomic // intentionally empty, see above
 
-template<class T, int S>
+template<class T, size_t S, size_t R>
 struct padded_base : T {
-    char pad[NFS_MaxLineSize - sizeof(T) % NFS_MaxLineSize];
+    char pad[S - R];
 };
-template<class T> struct padded_base<T, 0> : T {};
+template<class T, size_t S> struct padded_base<T, S, 0> : T {};
 
 //! Pads type T to fill out to a multiple of cache line size.
-template<class T>
-struct padded : padded_base<T, sizeof(T)> {};
+template<class T, size_t S = NFS_MaxLineSize>
+struct padded : padded_base<T, S, sizeof(T) % S> {};
 
 //! Extended variant of the standard offsetof macro
 /** The standard offsetof macro is not sufficient for TBB as it can be used for
@@ -306,11 +298,11 @@ inline void poison_pointer( T* __TBB_atomic & ) {/*do nothing*/}
 #endif /* !TBB_USE_ASSERT */
 
 //! Cast between unrelated pointer types.
-/** This method should be used sparingly as a last resort for dealing with 
+/** This method should be used sparingly as a last resort for dealing with
     situations that inherently break strict ISO C++ aliasing rules. */
 // T is a pointer type because it will be explicitly provided by the programmer as a template argument;
 // U is a referent type to enable the compiler to check that "ptr" is a pointer, deducing U in the process.
-template<typename T, typename U> 
+template<typename T, typename U>
 inline T punned_cast( U* ptr ) {
     uintptr_t x = reinterpret_cast<uintptr_t>(ptr);
     return reinterpret_cast<T>(x);
@@ -336,28 +328,14 @@ public:
     no_copy() {}
 };
 
-//! Class for determining type of std::allocator<T>::value_type.
-template<typename T>
-struct allocator_type {
-    typedef T value_type;
-};
-
-#if _MSC_VER
-//! Microsoft std::allocator has non-standard extension that strips const from a type. 
-template<typename T>
-struct allocator_type<const T> {
-    typedef T value_type;
-};
+#if TBB_DEPRECATED_MUTEX_COPYING
+class mutex_copy_deprecated_and_disabled {};
+#else
+// By default various implementations of mutexes are not copy constructible
+// and not copy assignable.
+class mutex_copy_deprecated_and_disabled : no_copy {};
 #endif
 
-//! A template to select either 32-bit or 64-bit constant as compile time, depending on machine word size.
-template <unsigned u, unsigned long long ull >
-struct select_size_t_constant {
-    //Explicit cast is needed to avoid compiler warnings about possible truncation.
-    //The value of the right size,   which is selected by ?:, is anyway not truncated or promoted.
-    static const size_t value = (size_t)((sizeof(size_t)==sizeof(u)) ? u : ull);
-};
-
 //! A function to check if passed in pointer is aligned on a specific border
 template<typename T>
 inline bool is_aligned(T* pointer, uintptr_t alignment) {
@@ -390,22 +368,150 @@ inline bool is_power_of_two_factor(argument_integer_type arg, divisor_integer_ty
 }
 
 //! Utility template function to prevent "unused" warnings by various compilers.
-template<typename T>
-void suppress_unused_warning( const T& ) {}
+template<typename T1> void suppress_unused_warning( const T1& ) {}
+template<typename T1, typename T2> void suppress_unused_warning( const T1&, const T2& ) {}
+template<typename T1, typename T2, typename T3> void suppress_unused_warning( const T1&, const T2&, const T3& ) {}
 
 // Struct to be used as a version tag for inline functions.
-/** Version tag can be necessary to prevent loader on Linux from using the wrong 
+/** Version tag can be necessary to prevent loader on Linux from using the wrong
     symbol in debug builds (when inline functions are compiled as out-of-line). **/
 struct version_tag_v3 {};
 
 typedef version_tag_v3 version_tag;
 
 } // internal
-//! @endcond
+
+//! Dummy type that distinguishes splitting constructor from copy constructor.
+/**
+ * See description of parallel_for and parallel_reduce for example usages.
+ * @ingroup algorithms
+ */
+class split {
+};
+
+//! Type enables transmission of splitting proportion from partitioners to range objects
+/**
+ * In order to make use of such facility Range objects must implement
+ * splitting constructor with this type passed and initialize static
+ * constant boolean field 'is_splittable_in_proportion' with the value
+ * of 'true'
+ */
+class proportional_split: internal::no_assign {
+public:
+    proportional_split(size_t _left = 1, size_t _right = 1) : my_left(_left), my_right(_right) { }
+
+    size_t left() const { return my_left; }
+    size_t right() const { return my_right; }
+
+    // used when range does not support proportional split
+    operator split() const { return split(); }
+
+#if __TBB_ENABLE_RANGE_FEEDBACK
+    void set_proportion(size_t _left, size_t _right) {
+        my_left = _left;
+        my_right = _right;
+    }
+#endif
+private:
+    size_t my_left, my_right;
+};
 
 } // tbb
 
-namespace tbb { namespace internal {
+// Following is a set of classes and functions typically used in compile-time "metaprogramming".
+// TODO: move all that to a separate header
+
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+#include <memory> //for allocator_traits
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT || _LIBCPP_VERSION
+#include <utility> // for std::move
+#endif
+
+namespace tbb {
+namespace internal {
+
+//! Class for determining type of std::allocator<T>::value_type.
+template<typename T>
+struct allocator_type {
+    typedef T value_type;
+};
+
+#if _MSC_VER
+//! Microsoft std::allocator has non-standard extension that strips const from a type.
+template<typename T>
+struct allocator_type<const T> {
+    typedef T value_type;
+};
+#endif
+
+// Ad-hoc implementation of true_type & false_type
+// Intended strictly for internal use! For public APIs (traits etc), use C++11 analogues.
+template <bool v>
+struct bool_constant {
+    static /*constexpr*/ const bool value = v;
+};
+typedef bool_constant<true> true_type;
+typedef bool_constant<false> false_type;
+
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+using std::allocator_traits;
+#else
+template<typename allocator>
+struct allocator_traits{
+    typedef tbb::internal::false_type propagate_on_container_move_assignment;
+};
+#endif
+
+//! A template to select either 32-bit or 64-bit constant as compile time, depending on machine word size.
+template <unsigned u, unsigned long long ull >
+struct select_size_t_constant {
+    //Explicit cast is needed to avoid compiler warnings about possible truncation.
+    //The value of the right size,   which is selected by ?:, is anyway not truncated or promoted.
+    static const size_t value = (size_t)((sizeof(size_t)==sizeof(u)) ? u : ull);
+};
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+using std::move;
+using std::forward;
+#elif defined(_LIBCPP_NAMESPACE)
+// libc++ defines "pre-C++11 move and forward" similarly to ours; use it to avoid name conflicts in some cases.
+using std::_LIBCPP_NAMESPACE::move;
+using std::_LIBCPP_NAMESPACE::forward;
+#else
+// It is assumed that cv qualifiers, if any, are part of the deduced type.
+template <typename T>
+T& move( T& x ) { return x; }
+template <typename T>
+T& forward( T& x ) { return x; }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+// Helper macros to simplify writing templates working with both C++03 and C++11.
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#define  __TBB_FORWARDING_REF(A) A&&
+#else
+// It is assumed that cv qualifiers, if any, are part of a deduced type.
+// Thus this macro should not be used in public interfaces.
+#define  __TBB_FORWARDING_REF(A) A&
+#endif
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#define __TBB_PARAMETER_PACK ...
+#define __TBB_PACK_EXPANSION(A) A...
+#else
+#define __TBB_PARAMETER_PACK 
+#define __TBB_PACK_EXPANSION(A) A
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+
+#if __TBB_CPP11_DECLTYPE_PRESENT
+#if __TBB_CPP11_DECLVAL_BROKEN
+// Ad-hoc implementation of std::declval
+template <class T> __TBB_FORWARDING_REF(T) declval() /*noexcept*/;
+#else
+using std::declval;
+#endif
+#endif
+
 template <bool condition>
 struct STATIC_ASSERTION_FAILED;
 
@@ -414,7 +520,9 @@ struct STATIC_ASSERTION_FAILED<false> { enum {value=1};};
 
 template<>
 struct STATIC_ASSERTION_FAILED<true>; //intentionally left undefined to cause compile time error
-}} // namespace tbb { namespace internal {
+
+//! @endcond
+}} // namespace tbb::internal
 
 #if    __TBB_STATIC_ASSERT_PRESENT
 #define __TBB_STATIC_ASSERT(condition,msg) static_assert(condition,msg)
diff --git a/include/tbb/tbb_thread.h b/include/tbb/tbb_thread.h
index b36f99d..10562b3 100644
--- a/include/tbb/tbb_thread.h
+++ b/include/tbb/tbb_thread.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_thread_H
@@ -65,7 +57,7 @@ namespace internal {
     class tbb_thread_v3;
 }
 
-inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ); 
+inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) __TBB_NOEXCEPT(true);
 
 namespace internal {
 
@@ -119,6 +111,12 @@ namespace internal {
 
     //! Versioned thread class.
     class tbb_thread_v3 {
+#if __TBB_IF_NO_COPY_CTOR_MOVE_SEMANTICS_BROKEN
+        // Workaround for a compiler bug: declaring the copy constructor as public
+        // enables use of the moving constructor.
+        // The definition is not provided in order to prohibit copying.
+    public:
+#endif
         tbb_thread_v3(const tbb_thread_v3&); // = delete;   // Deny access
     public:
 #if _WIN32||_WIN64
@@ -129,7 +127,7 @@ namespace internal {
 
         class id;
         //! Constructs a thread object that does not represent a thread of execution. 
-        tbb_thread_v3() : my_handle(0)
+        tbb_thread_v3() __TBB_NOEXCEPT(true) : my_handle(0)
 #if _WIN32||_WIN64
             , my_thread_id(0)
 #endif // _WIN32||_WIN64
@@ -151,24 +149,37 @@ namespace internal {
             internal_start(closure_type::start_routine, new closure_type(f,x,y));
         }
 
-        tbb_thread_v3& operator=(tbb_thread_v3& x) {
-            if (joinable()) detach();
-            my_handle = x.my_handle;
-            x.my_handle = 0;
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        tbb_thread_v3(tbb_thread_v3&& x) __TBB_NOEXCEPT(true)
+            : my_handle(x.my_handle)
 #if _WIN32||_WIN64
-            my_thread_id = x.my_thread_id;
-            x.my_thread_id = 0;
-#endif // _WIN32||_WIN64
+            , my_thread_id(x.my_thread_id)
+#endif
+        {
+            x.internal_wipe();
+        }
+        tbb_thread_v3& operator=(tbb_thread_v3&& x) __TBB_NOEXCEPT(true) {
+            internal_move(x);
+            return *this;
+        }
+    private:
+        tbb_thread_v3& operator=(const tbb_thread_v3& x); // = delete;
+    public:
+#else  // __TBB_CPP11_RVALUE_REF_PRESENT
+        tbb_thread_v3& operator=(tbb_thread_v3& x) {
+            internal_move(x);
             return *this;
         }
-        void swap( tbb_thread_v3& t ) {tbb::swap( *this, t );}
-        bool joinable() const {return my_handle!=0; }
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
+        void swap( tbb_thread_v3& t ) __TBB_NOEXCEPT(true) {tbb::swap( *this, t );}
+        bool joinable() const __TBB_NOEXCEPT(true) {return my_handle!=0; }
         //! The completion of the thread represented by *this happens before join() returns.
         void __TBB_EXPORTED_METHOD join();
         //! When detach() returns, *this no longer represents the possibly continuing thread of execution.
         void __TBB_EXPORTED_METHOD detach();
         ~tbb_thread_v3() {if( joinable() ) detach();}
-        inline id get_id() const;
+        inline id get_id() const __TBB_NOEXCEPT(true);
         native_handle_type native_handle() { return my_handle; }
     
         //! The number of hardware thread contexts.
@@ -181,18 +192,33 @@ namespace internal {
             invocation. This means that changes in the process affinity mask that
             took place after this method was first invoked will not affect the
             number of worker threads in the TBB worker threads pool. **/
-        static unsigned __TBB_EXPORTED_FUNC hardware_concurrency();
+        static unsigned __TBB_EXPORTED_FUNC hardware_concurrency() __TBB_NOEXCEPT(true);
     private:
         native_handle_type my_handle; 
 #if _WIN32||_WIN64
         thread_id_type my_thread_id;
 #endif // _WIN32||_WIN64
 
+        void internal_wipe() __TBB_NOEXCEPT(true) {
+            my_handle = 0;
+#if _WIN32||_WIN64
+            my_thread_id = 0;
+#endif
+        }
+        void internal_move(tbb_thread_v3& x) __TBB_NOEXCEPT(true) {
+            if (joinable()) detach();
+            my_handle = x.my_handle;
+#if _WIN32||_WIN64
+            my_thread_id = x.my_thread_id;
+#endif // _WIN32||_WIN64
+            x.internal_wipe();
+        }
+
         /** Runs start_routine(closure) on another thread and sets my_handle to the handle of the created thread. */
         void __TBB_EXPORTED_METHOD internal_start( __TBB_NATIVE_THREAD_ROUTINE_PTR(start_routine), 
                              void* closure );
         friend void __TBB_EXPORTED_FUNC move_v3( tbb_thread_v3& t1, tbb_thread_v3& t2 );
-        friend void tbb::swap( tbb_thread_v3& t1, tbb_thread_v3& t2 ); 
+        friend void tbb::swap( tbb_thread_v3& t1, tbb_thread_v3& t2 ) __TBB_NOEXCEPT(true);
     };
         
     class tbb_thread_v3::id { 
@@ -205,14 +231,14 @@ namespace internal {
 #endif // _WIN32||_WIN64
         friend class tbb_thread_v3;
     public:
-        id() : my_id(0) {}
-
-        friend bool operator==( tbb_thread_v3::id x, tbb_thread_v3::id y );
-        friend bool operator!=( tbb_thread_v3::id x, tbb_thread_v3::id y );
-        friend bool operator<( tbb_thread_v3::id x, tbb_thread_v3::id y );
-        friend bool operator<=( tbb_thread_v3::id x, tbb_thread_v3::id y );
-        friend bool operator>( tbb_thread_v3::id x, tbb_thread_v3::id y );
-        friend bool operator>=( tbb_thread_v3::id x, tbb_thread_v3::id y );
+        id() __TBB_NOEXCEPT(true) : my_id(0) {}
+
+        friend bool operator==( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
+        friend bool operator!=( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
+        friend bool operator<( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
+        friend bool operator<=( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
+        friend bool operator>( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
+        friend bool operator>=( tbb_thread_v3::id x, tbb_thread_v3::id y ) __TBB_NOEXCEPT(true);
         
         template<class charT, class traits>
         friend std::basic_ostream<charT, traits>&
@@ -225,7 +251,7 @@ namespace internal {
         friend tbb_thread_v3::id __TBB_EXPORTED_FUNC thread_get_id_v3();
     }; // tbb_thread_v3::id
 
-    tbb_thread_v3::id tbb_thread_v3::get_id() const {
+    tbb_thread_v3::id tbb_thread_v3::get_id() const __TBB_NOEXCEPT(true) {
 #if _WIN32||_WIN64
         return id(my_thread_id);
 #else
@@ -237,27 +263,27 @@ namespace internal {
     void __TBB_EXPORTED_FUNC thread_yield_v3();
     void __TBB_EXPORTED_FUNC thread_sleep_v3(const tick_count::interval_t &i);
 
-    inline bool operator==(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator==(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id == y.my_id;
     }
-    inline bool operator!=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator!=(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id != y.my_id;
     }
-    inline bool operator<(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator<(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id < y.my_id;
     }
-    inline bool operator<=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator<=(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id <= y.my_id;
     }
-    inline bool operator>(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator>(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id > y.my_id;
     }
-    inline bool operator>=(tbb_thread_v3::id x, tbb_thread_v3::id y)
+    inline bool operator>=(tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
     {
         return x.my_id >= y.my_id;
     }
@@ -278,7 +304,7 @@ inline void move( tbb_thread& t1, tbb_thread& t2 ) {
     internal::move_v3(t1, t2);
 }
 
-inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 ) {
+inline void swap( internal::tbb_thread_v3& t1, internal::tbb_thread_v3& t2 )  __TBB_NOEXCEPT(true) {
     tbb::tbb_thread::native_handle_type h = t1.my_handle;
     t1.my_handle = t2.my_handle;
     t2.my_handle = h;
diff --git a/include/tbb/tbbmalloc_proxy.h b/include/tbb/tbbmalloc_proxy.h
index 8b01137..81d7a2b 100644
--- a/include/tbb/tbbmalloc_proxy.h
+++ b/include/tbb/tbbmalloc_proxy.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*
diff --git a/include/tbb/tick_count.h b/include/tbb/tick_count.h
index e736a32..10f5390 100644
--- a/include/tbb/tick_count.h
+++ b/include/tbb/tick_count.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tick_count_H
diff --git a/index.html b/index.html
deleted file mode 100644
index 42340e6..0000000
--- a/index.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<HTML>
-<BODY>
-
-<H2>Overview</H2>
-Top level directory for Intel® Threading Building Blocks.
-<P>
-To build Intel TBB, use the <A HREF=Makefile>top-level Makefile</A>; see also the <A HREF=build/index.html#build>build directions</A>.
-To port Intel TBB to a new platform, operating system or architecture, see the <A HREF=build/index.html#port>porting directions</A>.
-</P>
-
-<H2>Files</H2>
-<DL>
-<DT><A HREF="Makefile">Makefile</A>
-<DD>Top-level Makefile for Intel TBB.  See also the <A HREF=build/index.html#build>build directions</A>.
-</DL>
-
-<H2>Directories</H2>
-<DL>
-<DT><A HREF="doc/html/index.html">doc</A>
-<DD>Documentation for the library.
-<DT><A HREF="include/index.html">include</A>
-<DD>Include files required for compiling code that uses the library.
-<DT><A HREF="examples/index.html">examples</A>
-<DD>Examples of how to use the library.
-<DT><A HREF="src/index.html">src</A>
-<DD>Source code for the library.
-<DT><A HREF="build/index.html">build</A>
-<DD>Internal Makefile infrastructure for Intel TBB.  Do not use directly; see the <A HREF=build/index.html#build>build directions</A>.
-</DL>
-
-<HR>
-<p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
-<P></P>
-Intel is a registered trademark or trademark of Intel Corporation
-or its subsidiaries in the United States and other countries.
-<p></p>
-* Other names and brands may be claimed as the property of others.
-</BODY>
-</HTML>
-
diff --git a/index.src.html b/index.src.html
new file mode 100644
index 0000000..1f815e5
--- /dev/null
+++ b/index.src.html
@@ -0,0 +1,41 @@
+<HTML>
+<BODY>
+
+<H2>Overview</H2>
+Top level directory for Intel® Threading Building Blocks.
+<P>
+To build Intel TBB, use the <A HREF=Makefile>top-level Makefile</A>; see also the <A HREF=build/index.html#build>build directions</A>.
+To port Intel TBB to a new platform, operating system or architecture, see the <A HREF=build/index.html#port>porting directions</A>.
+</P>
+
+<H2>Files</H2>
+<DL>
+<DT><A HREF="Makefile">Makefile</A>
+<DD>Top-level Makefile for Intel TBB.  See also the <A HREF=build/index.html#build>build directions</A>.
+</DL>
+
+<H2>Directories</H2>
+<DL>
+<DT><A HREF="doc/html/index.html">doc</A>
+<DD>Documentation for the library.
+<DT><A HREF="include/index.html">include</A>
+<DD>Include files required for compiling code that uses the library.
+<DT><A HREF="examples/index.html">examples</A>
+<DD>Examples of how to use the library.
+<DT><A HREF="src/index.html">src</A>
+<DD>Source code for the library.
+<DT><A HREF="build/index.html">build</A>
+<DD>Internal Makefile infrastructure for Intel TBB.  Do not use directly; see the <A HREF=build/index.html#build>build directions</A>.
+</DL>
+
+<HR>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<P></P>
+Intel is a registered trademark or trademark of Intel Corporation
+or its subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
+</BODY>
+</HTML>
+
diff --git a/jni/Android.mk b/jni/Android.mk
index 0460d61..b5e48b2 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -1,28 +1,22 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
+
+export tbb_root?=$(NDK_PROJECT_PATH)
 
 ifeq (armeabi-v7a,$(APP_ABI))
 	export SYSROOT:=$(NDK_ROOT)/platforms/$(APP_PLATFORM)/arch-arm
diff --git a/jni/Application.mk b/jni/Application.mk
index 547f4db..feee666 100644
--- a/jni/Application.mk
+++ b/jni/Application.mk
@@ -1,38 +1,45 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 export tbb_os?=linux
 export compiler?=gcc
 export arch?=ia32
 export target?=android
 
+ifeq (ia32,$(arch))
+    APP_ABI:=x86
+else 
+ifeq (intel64,$(arch))
+    APP_ABI:=x86_64
+else 
 ifeq (arm,$(arch))
     APP_ABI:=armeabi-v7a
-else
-    APP_ABI:=x86
+else 
+    APP_ABI:=$(arch)
+endif
+endif
+endif
+
+APP_PLATFORM:=android-20
+NDK_TOOLCHAIN_VERSION:=4.9
+
+# Intel(R) C++ Compiler does not support ndk r10 version yet.
+ifeq (icc,$(compiler))
+    APP_PLATFORM:=android-9
+    NDK_TOOLCHAIN_VERSION:=4.8
 endif
-APP_PLATFORM:=android-9
-NDK_TOOLCHAIN_VERSION:=4.6
diff --git a/src/Makefile b/src/Makefile
index 49b94d6..5ea3063 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,28 +1,20 @@
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 tbb_root?=..
 examples_root:=$(tbb_root)/examples
@@ -49,7 +41,7 @@ ifeq (,$(findstring skip,$(target:android=skip) $(offload:mic=skip)))
 test: rml_test_debug rml_test_release
 endif
 
-tbb_test_no_depends: tbbmalloc_test_release_no_depends $(if $(use_proxy),tbbproxy_test_release_no_depends) tbb_test_release_no_depends tbbmalloc_test_debug_no_depends $(if $(use_proxy),tbbproxy_test_debug_no_depends) tbb_test_debug_no_depends
+test_no_depends: tbbmalloc_test_release_no_depends $(if $(use_proxy),tbbproxy_test_release_no_depends) tbb_test_release_no_depends tbbmalloc_test_debug_no_depends $(if $(use_proxy),tbbproxy_test_debug_no_depends) tbb_test_debug_no_depends
 	@echo done
 
 release: tbb_release tbbmalloc_release $(if $(use_proxy),tbbproxy_release)
@@ -76,7 +68,7 @@ endif
 ifeq ($(arch),intel64)
 	$(MAKE) -sir --no-print-directory -f Makefile tbb_root=.. arch=ia32 clean all
 endif
-# it doesn't test compiler=icc arch=ia32 on intel64 systems due to enviroment settings of icc
+# it doesn't test compiler=icc arch=ia32 on intel64 systems due to environment settings of icc
 
 native_examples: tbb tbbmalloc
 	$(MAKE) -C $(examples_root) -r -f Makefile tbb_root=.. compiler=$(native_compiler) debug test
@@ -92,7 +84,7 @@ debug_rml_% test_rml_%:: TESTFILE=rml
 debug_runtime_load% test_runtime_load%:: TESTFILE=tbbproxy
 debug_% test_% stress_% time_% perf_%:: TESTFILE?=test
 debug_% test_% stress_% time_% perf_%::
-	$(MAKE) -C "$(work_dir)_$(cfg)" -r -f $(tbb_root)/build/Makefile.$(TESTFILE) cfg=$(cfg) $@
+	$(MAKE) -C "$(work_dir)_$(cfg)" -r -f $(tbb_root)/build/Makefile.$(TESTFILE) cfg=$(cfg) $(subst .cpp,,$@)
 
 clean_%::
 ifeq ($(origin cfg),file)
@@ -111,6 +103,8 @@ tbb_release: mkdir_release
 tbb_debug: mkdir_debug
 	$(MAKE) -C "$(work_dir)_debug"  -r -f $(tbb_root)/build/Makefile.tbb cfg=debug
 
+tbb_test: tbb_test_release tbb_test_debug
+
 tbb_test_release: $(call cross_cfg,tbb_release) $(if $(use_proxy),$(call cross_cfg,tbbproxy_release)) tbb_test_release_no_depends
 tbb_test_release_no_depends:$(call cross_cfg,mkdir_release)
 	$(MAKE) -C "$(call cross_cfg,$(work_dir)_release)"  -r -f $(tbb_root)/build/Makefile.test cfg=release
@@ -184,6 +178,8 @@ rml_release: mkdir_release
 rml_debug: mkdir_debug
 	$(MAKE) -C "$(work_dir)_debug"  -r -f $(tbb_root)/build/Makefile.rml cfg=debug rml
 
+rml_test: rml_test_release rml_test_debug
+
 rml_test_release: $(call cross_cfg,rml_release) rml_test_release_no_depends
 rml_test_release_no_depends: $(call cross_cfg,mkdir_release)
 	$(MAKE) -C "$(call cross_cfg,$(work_dir)_release)"  -r -f $(tbb_root)/build/Makefile.rml cfg=release rml_test
@@ -196,11 +192,11 @@ rml_test_debug_no_depends: $(call cross_cfg,mkdir_debug)
 
 examples_release: tbb_release tbbmalloc_release examples_release_no_depends
 examples_release_no_depends:
-	$(MAKE) -C $(examples_root) -r -f Makefile tbb_root=.. release test
+	$(MAKE) -C $(examples_root) -r -f Makefile tbb_root=.. release test UI=con
 
 examples_debug: tbb_debug tbbmalloc_debug examples_debug_no_depends
 examples_debug_no_depends:
-	$(MAKE) -C $(examples_root) -r -f Makefile tbb_root=.. debug test
+	$(MAKE) -C $(examples_root) -r -f Makefile tbb_root=.. debug test UI=con
 
 .PHONY: clean_release clean_debug clean_examples
 
diff --git a/src/index.html b/src/index.html
index 7605b5d..9ace483 100644
--- a/src/index.html
+++ b/src/index.html
@@ -66,7 +66,7 @@ This directory contains the source code and unit tests for Intel® Threading
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/old/concurrent_queue_v2.cpp b/src/old/concurrent_queue_v2.cpp
index df48449..e019494 100644
--- a/src/old/concurrent_queue_v2.cpp
+++ b/src/old/concurrent_queue_v2.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "concurrent_queue_v2.h"
diff --git a/src/old/concurrent_queue_v2.h b/src/old/concurrent_queue_v2.h
index b63379c..662c066 100644
--- a/src/old/concurrent_queue_v2.h
+++ b/src/old/concurrent_queue_v2.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_queue_H
diff --git a/src/old/concurrent_vector_v2.cpp b/src/old/concurrent_vector_v2.cpp
index b3c2cb1..e65f4f4 100644
--- a/src/old/concurrent_vector_v2.cpp
+++ b/src/old/concurrent_vector_v2.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "concurrent_vector_v2.h"
diff --git a/src/old/concurrent_vector_v2.h b/src/old/concurrent_vector_v2.h
index e0b758c..5ea35cd 100644
--- a/src/old/concurrent_vector_v2.h
+++ b/src/old/concurrent_vector_v2.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_vector_H
diff --git a/src/old/spin_rw_mutex_v2.cpp b/src/old/spin_rw_mutex_v2.cpp
index e000e1c..4be6cfd 100644
--- a/src/old/spin_rw_mutex_v2.cpp
+++ b/src/old/spin_rw_mutex_v2.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "spin_rw_mutex_v2.h"
diff --git a/src/old/spin_rw_mutex_v2.h b/src/old/spin_rw_mutex_v2.h
index 43f5ccb..ff0657c 100644
--- a/src/old/spin_rw_mutex_v2.h
+++ b/src/old/spin_rw_mutex_v2.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_spin_rw_mutex_H
diff --git a/src/old/task_v2.cpp b/src/old/task_v2.cpp
index 6abbac0..92f8bad 100644
--- a/src/old/task_v2.cpp
+++ b/src/old/task_v2.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*  This compilation unit provides definition of task::destroy( task& )
diff --git a/src/old/test_concurrent_queue_v2.cpp b/src/old/test_concurrent_queue_v2.cpp
index 42e0633..7e8cc96 100644
--- a/src/old/test_concurrent_queue_v2.cpp
+++ b/src/old/test_concurrent_queue_v2.cpp
@@ -1,32 +1,24 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-#include "tbb/concurrent_queue.h"
+#include "old/concurrent_queue_v2.h"
 #include "tbb/atomic.h"
 #include "tbb/tick_count.h"
 
diff --git a/src/old/test_concurrent_vector_v2.cpp b/src/old/test_concurrent_vector_v2.cpp
index ac5cd5a..a473874 100644
--- a/src/old/test_concurrent_vector_v2.cpp
+++ b/src/old/test_concurrent_vector_v2.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "concurrent_vector_v2.h"
diff --git a/src/old/test_mutex_v2.cpp b/src/old/test_mutex_v2.cpp
index a891280..3f6a010 100644
--- a/src/old/test_mutex_v2.cpp
+++ b/src/old/test_mutex_v2.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 1
+#define HARNESS_DEFAULT_MAX_THREADS 3
+
 //------------------------------------------------------------------------
 // Test TBB mutexes when used with parallel_for.h
 //
diff --git a/src/old/test_task_scheduler_observer_v3.cpp b/src/old/test_task_scheduler_observer_v3.cpp
index af1bac9..7867d9f 100644
--- a/src/old/test_task_scheduler_observer_v3.cpp
+++ b/src/old/test_task_scheduler_observer_v3.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //TODO: when removing TBB_PREVIEW_LOCAL_OBSERVER, change the header or defines here
diff --git a/src/perf/coarse_grained_raii_lru_cache.h b/src/perf/coarse_grained_raii_lru_cache.h
index 953af16..cce4d58 100644
--- a/src/perf/coarse_grained_raii_lru_cache.h
+++ b/src/perf/coarse_grained_raii_lru_cache.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef coarse_grained_raii_lru_cache_H
diff --git a/src/perf/cpq_pdes.cpp b/src/perf/cpq_pdes.cpp
index f148876..2d84ce0 100644
--- a/src/perf/cpq_pdes.cpp
+++ b/src/perf/cpq_pdes.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstdlib>
diff --git a/src/perf/cpq_throughput_test.cpp b/src/perf/cpq_throughput_test.cpp
deleted file mode 100644
index 39f1764..0000000
--- a/src/perf/cpq_throughput_test.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-#define HARNESS_CUSTOM_MAIN 1
-#define HARNESS_NO_PARSE_COMMAND_LINE 1
-
-#include <cstdlib>
-#include <cmath>
-#include <queue>
-#include "tbb/tbb_stddef.h"
-#include "tbb/spin_mutex.h"
-#include "tbb/task_scheduler_init.h"
-#include "tbb/tick_count.h"
-#include "tbb/cache_aligned_allocator.h"
-#include "tbb/concurrent_priority_queue.h"
-#include "../test/harness.h"
-#pragma warning(disable: 4996)
-
-#define IMPL_SERIAL 0
-#define IMPL_STL 1
-#define IMPL_CPQ 2
-
-using namespace tbb;
-
-// test parameters & defaults
-int impl; // which implementation to test
-int contention = 1; // busywork between operations in us
-int preload = 0; // # elements to pre-load queue with
-double throughput_window = 30.0; // in seconds
-int ops_per_iteration = 20; // minimum: 2 (1 push, 1 pop)
-const int sample_operations = 1000; // for timing checks
-int min_threads = 1;
-int max_threads;
-
-// global data & types
-int pushes_per_iter;
-int pops_per_iter;
-tbb::atomic<unsigned int> operation_count;
-tbb::tick_count start;
-
-// a non-trivial data element to use in the priority queue
-const int padding_size = 15;  // change to get cache line size for test machine
-class padding_type {
-public:
-    int p[padding_size];
-    padding_type& operator=(const padding_type& other) {
-        if (this != &other) {
-            for (int i=0; i<padding_size; ++i) {
-                p[i] = other.p[i];
-            }
-        }
-        return *this;
-    }
-};
-
-class my_data_type {
-public:
-    int priority;
-    padding_type padding;
-    my_data_type() : priority(0) {}
-};
-
-class my_less {
-public:
-    bool operator()(my_data_type d1, my_data_type d2) {
-        return d1.priority<d2.priority;
-    }
-};
-
-// arrays to get/put data from/to to generate non-trivial accesses during busywork
-my_data_type *input_data;
-my_data_type *output_data;
-size_t arrsz;
-
-// Serial priority queue
-std::priority_queue<my_data_type, std::vector<my_data_type>, my_less > *serial_cpq;
-
-// Coarse-locked priority queue
-spin_mutex *my_mutex;
-std::priority_queue<my_data_type, std::vector<my_data_type>, my_less > *stl_cpq;
-
-// TBB concurrent_priority_queue
-concurrent_priority_queue<my_data_type, my_less > *agg_cpq;
-
-// Busy work and calibration helpers
-unsigned int one_us_iters = 345; // default value
-
-// if user wants to calibrate to microseconds on particular machine, call 
-// this at beginning of program; sets one_us_iters to number of iters to 
-// busy_wait for approx. 1 us
-void calibrate_busy_wait() {
-    tbb::tick_count t0, t1;
-
-    t0 = tbb::tick_count::now();
-    for (volatile unsigned int i=0; i<1000000; ++i) continue;
-    t1 = tbb::tick_count::now();
-    
-    one_us_iters = (unsigned int)((1000000.0/(t1-t0).seconds())*0.000001);
-    printf("one_us_iters: %d\n", one_us_iters);
-}
-
-void busy_wait(int us)
-{
-    unsigned int iter = us*one_us_iters;
-    for (volatile unsigned int i=0; i<iter; ++i) continue;
-}
-
-// Push to priority queue, depending on implementation
-void do_push(my_data_type elem, int nThr, int impl) {
-    if (impl == IMPL_SERIAL) {
-        serial_cpq->push(elem);
-    }
-    else if (impl == IMPL_STL) {
-        tbb::spin_mutex::scoped_lock myLock(*my_mutex);
-        stl_cpq->push(elem);
-    }
-    else if (impl == IMPL_CPQ) {
-        agg_cpq->push(elem);
-    }
-}
-
-// Pop from priority queue, depending on implementation
-my_data_type do_pop(int nThr, int impl) {
-    my_data_type elem;
-    if (impl == IMPL_SERIAL) {
-        if (!serial_cpq->empty()) {
-            elem = serial_cpq->top();
-            serial_cpq->pop();
-            return elem;
-        }
-    }
-    else if (impl == IMPL_STL) {
-        tbb::spin_mutex::scoped_lock myLock(*my_mutex);
-        if (!stl_cpq->empty()) {
-            elem = stl_cpq->top();
-            stl_cpq->pop();
-            return elem;
-        }
-    }
-    else if (impl == IMPL_CPQ) {
-        if (agg_cpq->try_pop(elem)) {
-            return elem;
-        }
-    }
-    return elem;
-}
-
-
-struct TestThroughputBody : NoAssign {
-    int nThread;
-    int implementation;
-
-    TestThroughputBody(int nThread_, int implementation_) : 
-        nThread(nThread_), implementation(implementation_) {}
-    
-    void operator()(const int threadID) const {
-        tbb::tick_count now;
-        int pos_in = threadID, pos_out = threadID;
-        my_data_type elem;
-        while (1) {
-            for (int i=0; i<sample_operations; i+=ops_per_iteration) {
-                // do pushes
-                for (int j=0; j<pushes_per_iter; ++j) {
-                    elem = input_data[pos_in];
-                    do_push(elem, nThread, implementation);
-                    busy_wait(contention);
-                    pos_in += nThread;
-                    if (pos_in >= arrsz) pos_in = pos_in % arrsz;
-                }
-                // do pops
-                for (int j=0; j<pops_per_iter; ++j) {
-                    output_data[pos_out] = do_pop(nThread, implementation);
-                    busy_wait(contention);
-                    pos_out += nThread;
-                    if (pos_out >= arrsz) pos_out = pos_out % arrsz;
-                }
-            }
-            now = tbb::tick_count::now();
-            operation_count += sample_operations;
-            if ((now-start).seconds() >= throughput_window) break;
-        }
-    }
-};
-
-void TestSerialThroughput() {
-    tbb::tick_count now;
-
-    serial_cpq = new std::priority_queue<my_data_type, std::vector<my_data_type>, my_less >;        
-    for (int i=0; i<preload; ++i) do_push(input_data[i], 1, IMPL_SERIAL);
-
-    TestThroughputBody my_serial_test(1, IMPL_SERIAL);
-    start = tbb::tick_count::now();
-    NativeParallelFor(1, my_serial_test);
-    now = tbb::tick_count::now();
-    delete serial_cpq;
-
-    printf("SERIAL 1 %10d\n", int(operation_count/(now-start).seconds()));
-}
-
-void TestThroughputCpqOnNThreads(int nThreads) {
-    tbb::tick_count now;
-
-    if (impl == IMPL_STL) {
-        stl_cpq = new std::priority_queue<my_data_type, std::vector<my_data_type>, my_less >;
-        for (int i=0; i<preload; ++i) do_push(input_data[i], nThreads, IMPL_STL);
-
-        TestThroughputBody my_stl_test(nThreads, IMPL_STL);
-        start = tbb::tick_count::now();
-        NativeParallelFor(nThreads, my_stl_test);
-        now = tbb::tick_count::now();
-        delete stl_cpq;
-        
-        printf("STL  %3d %10d\n", nThreads, int(operation_count/(now-start).seconds()));
-    }
-    else if (impl == IMPL_CPQ) {
-        agg_cpq = new concurrent_priority_queue<my_data_type, my_less >;
-        for (int i=0; i<preload; ++i) do_push(input_data[i], nThreads, IMPL_CPQ);
-
-        TestThroughputBody my_cpq_test(nThreads, IMPL_CPQ);
-        start = tbb::tick_count::now();
-        NativeParallelFor(nThreads, my_cpq_test);
-        now = tbb::tick_count::now();
-        delete agg_cpq;
-        
-        printf("CPQ  %3d %10d\n", nThreads, int(operation_count/(now-start).seconds()));
-    }
-}
-
-void printCommandLineErrorMsg() {
-    fprintf(stderr,
-            "Usage: a.out <min_threads>[:<max_threads>] "
-            "contention(us) queue_type pre-load batch duration"
-            "\n   where queue_type is one of 0(SERIAL), 1(STL), 2(CPQ).\n");
-}
-
-void ParseCommandLine(int argc, char *argv[]) {
-    // Initialize defaults
-    max_threads = 1;
-    impl = IMPL_SERIAL;
-    int i = 1;
-    if (argc > 1) {
-        // read n_thread range
-        char* endptr;
-        min_threads = strtol( argv[i], &endptr, 0 );
-        if (*endptr == ':')
-            max_threads = strtol( endptr+1, &endptr, 0 );
-        else if (*endptr == '\0')
-            max_threads = min_threads;
-        if (*endptr != '\0') {
-            printCommandLineErrorMsg();
-            exit(1);
-        }
-        if (min_threads < 1) {
-            printf("ERROR: min_threads must be at least one.\n");
-            exit(1);
-        }
-        if (max_threads < min_threads) {
-            printf("ERROR: max_threads should not be less than min_threads\n");
-            exit(1);
-        }
-        ++i;
-        if (argc > 2) {
-            // read contention
-            contention = strtol( argv[i], &endptr, 0 );
-            if( *endptr!='\0' ) {
-                printf("ERROR: contention is garbled\n");
-                printCommandLineErrorMsg();
-                exit(1);
-            }
-            ++i;
-            if (argc > 3) {
-                // read impl
-                impl = strtol( argv[i], &endptr, 0 );
-                if( *endptr!='\0' ) {
-                    printf("ERROR: impl is garbled\n");
-                    printCommandLineErrorMsg();
-                    exit(1);
-                }
-                if ((impl != IMPL_SERIAL) && (impl != IMPL_STL) && (impl != IMPL_CPQ)) {
-                    
-                    printf("ERROR: impl of %d is invalid\n", impl);
-                    printCommandLineErrorMsg();
-                    exit(1);
-                }
-                ++i;
-                if (argc > 4) {
-                    // read pre-load
-                    preload = strtol( argv[i], &endptr, 0 );
-                    if( *endptr!='\0' ) {
-                        printf("ERROR: pre-load is garbled\n");
-                        printCommandLineErrorMsg();
-                        exit(1);
-                    }
-                    ++i;
-                    if (argc > 5) {
-                        //read batch
-                        ops_per_iteration = strtol( argv[i], &endptr, 0 );
-                        if( *endptr!='\0' ) {
-                            printf("ERROR: batch size is garbled\n");
-                            printCommandLineErrorMsg();
-                            exit(1);
-                        }
-                        ++i;
-                        if (argc > 6) {
-                            // read duration
-                            if (argc != 7)  {
-                                printf("ERROR: maximum of six args\n");
-                                printCommandLineErrorMsg();
-                                exit(1);
-                            }
-                            throughput_window = strtol( argv[i], &endptr, 0 );
-                            if( *endptr!='\0' ) {
-                                printf("ERROR: duration is garbled\n");
-                                printCommandLineErrorMsg();
-                                exit(1);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-    printf("Priority queue performance test %d will run with %dus contention "
-           "using %d:%d threads, %d batch size, %d pre-loaded elements, for %d seconds.\n",
-           (int)impl, (int)contention, (int)min_threads, (int)max_threads, 
-           (int)ops_per_iteration, (int) preload, (int)throughput_window);
-}
-
-int main(int argc, char *argv[]) {
-    ParseCommandLine(argc, argv);
-    srand(42);
-    arrsz = 100000;
-    input_data = new my_data_type[arrsz];
-    output_data = new my_data_type[arrsz];
-    for (int i=0; i<arrsz; ++i) {
-       input_data[i].priority = rand()%100;
-    }
-    //calibrate_busy_wait();
-    pushes_per_iter = ops_per_iteration/2;
-    pops_per_iter = ops_per_iteration/2;
-    operation_count = 0;
-
-    // Initialize mutex for Coarse-locked priority_queue
-    cache_aligned_allocator<spin_mutex> my_mutex_allocator;
-    my_mutex = (spin_mutex *)my_mutex_allocator.allocate(1);
-
-    if (impl == IMPL_SERIAL) {
-        TestSerialThroughput();
-    }
-    else {
-        for (int p = min_threads; p <= max_threads; ++p) {
-            TestThroughputCpqOnNThreads(p);
-        }
-    }
-    return Harness::Done;
-}
diff --git a/src/perf/fibonacci_impl_tbb.cpp b/src/perf/fibonacci_impl_tbb.cpp
index 45c777a..41643f6 100644
--- a/src/perf/fibonacci_impl_tbb.cpp
+++ b/src/perf/fibonacci_impl_tbb.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstdio>
diff --git a/src/perf/perf.cpp b/src/perf/perf.cpp
index fac9c3d..f239639 100644
--- a/src/perf/perf.cpp
+++ b/src/perf/perf.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "perf.h"
diff --git a/src/perf/perf.h b/src/perf/perf.h
index 60750d5..5a9fb25 100644
--- a/src/perf/perf.h
+++ b/src/perf/perf.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __tbb_perf_h__
diff --git a/src/perf/perf_sched.cpp b/src/perf/perf_sched.cpp
index b6c17a0..29a58b4 100644
--- a/src/perf/perf_sched.cpp
+++ b/src/perf/perf_sched.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "perf.h"
diff --git a/src/perf/run_statistics.sh b/src/perf/run_statistics.sh
index 1640685..f17124e 100644
--- a/src/perf/run_statistics.sh
+++ b/src/perf/run_statistics.sh
@@ -1,30 +1,22 @@
 #!/bin/bash
 #
-# Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+# Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 #
-# This file is part of Threading Building Blocks.
+# This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General Public License
+# version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See  the GNU General Public License for more details.   You should have received a copy of
+# the  GNU General Public License along with Threading Building Blocks; if not, write to the
+# Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 #
-# Threading Building Blocks is free software; you can redistribute it
-# and/or modify it under the terms of the GNU General Public License
-# version 2 as published by the Free Software Foundation.
-#
-# Threading Building Blocks is distributed in the hope that it will be
-# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Threading Building Blocks; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction.  Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License.  This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
+# As a special exception,  you may use this file  as part of a free software library without
+# restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+# functions from this file, or you compile this file and link it with other files to produce
+# an executable,  this file does not by itself cause the resulting executable to be covered
+# by the GNU General Public License. This exception does not however invalidate any other
+# reasons why the executable file might be covered by the GNU General Public License.
 
 export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
 #setting output format .csv, 'pivot' - is pivot table mode, ++ means append
diff --git a/src/perf/statistics.cpp b/src/perf/statistics.cpp
index 82b285b..3c4159b 100644
--- a/src/perf/statistics.cpp
+++ b/src/perf/statistics.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "statistics.h"
diff --git a/src/perf/statistics.h b/src/perf/statistics.h
index f8901ed..6e93575 100644
--- a/src/perf/statistics.h
+++ b/src/perf/statistics.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Internal Intel tool
@@ -148,7 +140,7 @@ public:
     TestCase SetTestCase(const char *name, const char *mode, int threads);
     //! Specify next test key
     void SetTestCase(const TestCase &t) { SetTestCase(t.getName(), t.getMode(), t.getThreads()); }
-    //! Reserve specified number of rounds. Use for effeciency. Used mostly internally
+    //! Reserve specified number of rounds. Use for efficiency. Used mostly internally
     void ReserveRounds(size_t index);
     //! Add result of the measure
     void AddRoundResult(const TestCase &, value_t v);
diff --git a/src/perf/statistics_xml.h b/src/perf/statistics_xml.h
index 75a2e49..017b674 100644
--- a/src/perf/statistics_xml.h
+++ b/src/perf/statistics_xml.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 const char XMLBRow[]=
diff --git a/src/perf/time_cpq_throughput_test.cpp b/src/perf/time_cpq_throughput_test.cpp
new file mode 100644
index 0000000..0e8a650
--- /dev/null
+++ b/src/perf/time_cpq_throughput_test.cpp
@@ -0,0 +1,295 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define HARNESS_CUSTOM_MAIN 1
+#define HARNESS_NO_PARSE_COMMAND_LINE 1
+
+#include <cstdlib>
+#include <cmath>
+#include <queue>
+#include "tbb/tbb_stddef.h"
+#include "tbb/spin_mutex.h"
+#include "tbb/task_scheduler_init.h"
+#include "tbb/tick_count.h"
+#include "tbb/cache_aligned_allocator.h"
+#include "tbb/concurrent_priority_queue.h"
+#include "../test/harness.h"
+#include "../examples/common/utility/utility.h"
+#if _MSC_VER
+#pragma warning(disable: 4996)
+#endif
+
+#define IMPL_SERIAL 0
+#define IMPL_STL 1
+#define IMPL_CPQ 2
+
+using namespace tbb;
+
+// test parameters & defaults
+int impl = IMPL_CPQ; // which implementation to test
+int contention = 1; // busywork between operations in us
+int preload = 0; // # elements to pre-load queue with
+double throughput_window = 30.0; // in seconds
+int ops_per_iteration = 20; // minimum: 2 (1 push, 1 pop)
+const int sample_operations = 1000; // for timing checks
+
+// global data & types
+int pushes_per_iter;
+int pops_per_iter;
+tbb::atomic<unsigned int> operation_count;
+tbb::tick_count start;
+
+// a non-trivial data element to use in the priority queue
+const int padding_size = 15;  // change to get cache line size for test machine
+class padding_type {
+public:
+    int p[padding_size];
+    padding_type& operator=(const padding_type& other) {
+        if (this != &other) {
+            for (int i=0; i<padding_size; ++i) {
+                p[i] = other.p[i];
+            }
+        }
+        return *this;
+    }
+};
+
+class my_data_type {
+public:
+    int priority;
+    padding_type padding;
+    my_data_type() : priority(0) {}
+};
+
+class my_less {
+public:
+    bool operator()(my_data_type d1, my_data_type d2) {
+        return d1.priority<d2.priority;
+    }
+};
+
+// arrays to get/put data from/to to generate non-trivial accesses during busywork
+my_data_type *input_data;
+my_data_type *output_data;
+size_t arrsz;
+
+// Serial priority queue
+std::priority_queue<my_data_type, std::vector<my_data_type>, my_less > *serial_cpq;
+
+// Coarse-locked priority queue
+spin_mutex *my_mutex;
+std::priority_queue<my_data_type, std::vector<my_data_type>, my_less > *stl_cpq;
+
+// TBB concurrent_priority_queue
+concurrent_priority_queue<my_data_type, my_less > *agg_cpq;
+
+// Busy work and calibration helpers
+unsigned int one_us_iters = 345; // default value
+
+// if user wants to calibrate to microseconds on particular machine, call 
+// this at beginning of program; sets one_us_iters to number of iters to 
+// busy_wait for approx. 1 us
+void calibrate_busy_wait() {
+    tbb::tick_count t0, t1;
+
+    t0 = tbb::tick_count::now();
+    for (volatile unsigned int i=0; i<1000000; ++i) continue;
+    t1 = tbb::tick_count::now();
+    
+    one_us_iters = (unsigned int)((1000000.0/(t1-t0).seconds())*0.000001);
+    printf("one_us_iters: %d\n", one_us_iters);
+}
+
+void busy_wait(int us)
+{
+    unsigned int iter = us*one_us_iters;
+    for (volatile unsigned int i=0; i<iter; ++i) continue;
+}
+
+// Push to priority queue, depending on implementation
+void do_push(my_data_type elem, int nThr, int impl) {
+    if (impl == IMPL_SERIAL) {
+        serial_cpq->push(elem);
+    }
+    else if (impl == IMPL_STL) {
+        tbb::spin_mutex::scoped_lock myLock(*my_mutex);
+        stl_cpq->push(elem);
+    }
+    else if (impl == IMPL_CPQ) {
+        agg_cpq->push(elem);
+    }
+}
+
+// Pop from priority queue, depending on implementation
+my_data_type do_pop(int nThr, int impl) {
+    my_data_type elem;
+    if (impl == IMPL_SERIAL) {
+        if (!serial_cpq->empty()) {
+            elem = serial_cpq->top();
+            serial_cpq->pop();
+            return elem;
+        }
+    }
+    else if (impl == IMPL_STL) {
+        tbb::spin_mutex::scoped_lock myLock(*my_mutex);
+        if (!stl_cpq->empty()) {
+            elem = stl_cpq->top();
+            stl_cpq->pop();
+            return elem;
+        }
+    }
+    else if (impl == IMPL_CPQ) {
+        if (agg_cpq->try_pop(elem)) {
+            return elem;
+        }
+    }
+    return elem;
+}
+
+
+struct TestThroughputBody : NoAssign {
+    int nThread;
+    int implementation;
+
+    TestThroughputBody(int nThread_, int implementation_) : 
+        nThread(nThread_), implementation(implementation_) {}
+    
+    void operator()(const int threadID) const {
+        tbb::tick_count now;
+        size_t pos_in = threadID, pos_out = threadID;
+        my_data_type elem;
+        while (1) {
+            for (int i=0; i<sample_operations; i+=ops_per_iteration) {
+                // do pushes
+                for (int j=0; j<pushes_per_iter; ++j) {
+                    elem = input_data[pos_in];
+                    do_push(elem, nThread, implementation);
+                    busy_wait(contention);
+                    pos_in += nThread;
+                    if (pos_in >= arrsz) pos_in = pos_in % arrsz;
+                }
+                // do pops
+                for (int j=0; j<pops_per_iter; ++j) {
+                    output_data[pos_out] = do_pop(nThread, implementation);
+                    busy_wait(contention);
+                    pos_out += nThread;
+                    if (pos_out >= arrsz) pos_out = pos_out % arrsz;
+                }
+            }
+            now = tbb::tick_count::now();
+            operation_count += sample_operations;
+            if ((now-start).seconds() >= throughput_window) break;
+        }
+    }
+};
+
+void TestSerialThroughput() {
+    tbb::tick_count now;
+
+    serial_cpq = new std::priority_queue<my_data_type, std::vector<my_data_type>, my_less >;        
+    for (int i=0; i<preload; ++i) do_push(input_data[i], 1, IMPL_SERIAL);
+
+    TestThroughputBody my_serial_test(1, IMPL_SERIAL);
+    start = tbb::tick_count::now();
+    NativeParallelFor(1, my_serial_test);
+    now = tbb::tick_count::now();
+    delete serial_cpq;
+
+    printf("SERIAL 1 %10d\n", int(operation_count/(now-start).seconds()));
+}
+
+void TestThroughputCpqOnNThreads(int nThreads) {
+    tbb::tick_count now;
+
+    if (impl == IMPL_STL) {
+        stl_cpq = new std::priority_queue<my_data_type, std::vector<my_data_type>, my_less >;
+        for (int i=0; i<preload; ++i) do_push(input_data[i], nThreads, IMPL_STL);
+
+        TestThroughputBody my_stl_test(nThreads, IMPL_STL);
+        start = tbb::tick_count::now();
+        NativeParallelFor(nThreads, my_stl_test);
+        now = tbb::tick_count::now();
+        delete stl_cpq;
+        
+        printf("STL  %3d %10d\n", nThreads, int(operation_count/(now-start).seconds()));
+    }
+    else if (impl == IMPL_CPQ) {
+        agg_cpq = new concurrent_priority_queue<my_data_type, my_less >;
+        for (int i=0; i<preload; ++i) do_push(input_data[i], nThreads, IMPL_CPQ);
+
+        TestThroughputBody my_cpq_test(nThreads, IMPL_CPQ);
+        start = tbb::tick_count::now();
+        NativeParallelFor(nThreads, my_cpq_test);
+        now = tbb::tick_count::now();
+        delete agg_cpq;
+        
+        printf("CPQ  %3d %10d\n", nThreads, int(operation_count/(now-start).seconds()));
+    }
+}
+
+
+int main(int argc, char *argv[]) {
+    utility::thread_number_range threads(tbb::task_scheduler_init::default_num_threads);
+    struct select_impl{
+        static bool validate(const int & impl){
+            return  ((impl == IMPL_SERIAL) || (impl == IMPL_STL) || (impl == IMPL_CPQ));
+        }
+    };
+    utility::parse_cli_arguments(argc,argv,utility::cli_argument_pack()
+            .positional_arg(threads,"n-of-threads",utility::thread_number_range_desc)
+            .positional_arg(contention,"contention"," busywork between operations, in us")
+            .positional_arg(impl,"queue_type", "which implementation to test. One of 0(SERIAL), 1(STL), 2(CPQ) ", select_impl::validate)
+            .positional_arg(preload,"preload","number of elements to pre-load queue with")
+            .positional_arg(ops_per_iteration, "batch size" ,"minimum: 2 (1 push, 1 pop)")
+            .positional_arg(throughput_window, "duration", "in seconds")
+            );
+
+    std::cout<< "Priority queue performance test "<<impl<<" will run with "<<contention<<"us contention "
+           "using "<<threads<<" threads, "<<ops_per_iteration<<" batch size, "<<preload<<" pre-loaded elements,"
+           " for "<<throughput_window<<" seconds.\n"
+           <<std::flush
+    ;
+
+    srand(42);
+    arrsz = 100000;
+    input_data = new my_data_type[arrsz];
+    output_data = new my_data_type[arrsz];
+    for (size_t i=0; i<arrsz; ++i) {
+       input_data[i].priority = rand()%100;
+    }
+    //calibrate_busy_wait();
+    pushes_per_iter = ops_per_iteration/2;
+    pops_per_iter = ops_per_iteration/2;
+    operation_count = 0;
+
+    // Initialize mutex for Coarse-locked priority_queue
+    cache_aligned_allocator<spin_mutex> my_mutex_allocator;
+    my_mutex = (spin_mutex *)my_mutex_allocator.allocate(1);
+
+    if (impl == IMPL_SERIAL) {
+        TestSerialThroughput();
+    }
+    else {
+        for( int p=threads.first; p<=threads.last; p = threads.step(p) ) {
+            TestThroughputCpqOnNThreads(p);
+        }
+    }
+    return Harness::Done;
+}
diff --git a/src/perf/time_fibonacci_cutoff.cpp b/src/perf/time_fibonacci_cutoff.cpp
index 9f13538..9874b3c 100644
--- a/src/perf/time_fibonacci_cutoff.cpp
+++ b/src/perf/time_fibonacci_cutoff.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstdio>
diff --git a/src/perf/time_framework.h b/src/perf/time_framework.h
index 30a0963..d5e340d 100644
--- a/src/perf/time_framework.h
+++ b/src/perf/time_framework.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TIME_FRAMEWORK_H__
@@ -83,7 +75,7 @@ protected:
     char pad[128 - sizeof(arg_t) - sizeof(int)*2 - sizeof(void*)*2 ];
 
 public:
-    //! init tester base. @arg ntests is number of embeded tests in this tester.
+    //! init tester base. @arg ntests is number of embedded tests in this tester.
     TesterBase(int ntests)
         : barrier(NULL), tests_count(ntests)
     {}
diff --git a/src/perf/time_hash_map.cpp b/src/perf/time_hash_map.cpp
index 0a710ab..851e2fc 100644
--- a/src/perf/time_hash_map.cpp
+++ b/src/perf/time_hash_map.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // configuration:
diff --git a/src/perf/time_hash_map_fill.cpp b/src/perf/time_hash_map_fill.cpp
index b14c348..13efc41 100644
--- a/src/perf/time_hash_map_fill.cpp
+++ b/src/perf/time_hash_map_fill.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // configuration:
diff --git a/src/perf/time_hash_map_fill.html b/src/perf/time_hash_map_fill.html
index 954a20b..fda62d1 100644
--- a/src/perf/time_hash_map_fill.html
+++ b/src/perf/time_hash_map_fill.html
@@ -110,7 +110,7 @@ In addition, a size of the source array correlates with input rates in order to
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/perf/time_locked_work.cpp b/src/perf/time_locked_work.cpp
index 967776a..42db238 100644
--- a/src/perf/time_locked_work.cpp
+++ b/src/perf/time_locked_work.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 ////// Test configuration ////////////////////////////////////////////////////
diff --git a/src/perf/time_lru_cache_throughput.cpp b/src/perf/time_lru_cache_throughput.cpp
index 7b8aa4d..c310ff9 100644
--- a/src/perf/time_lru_cache_throughput.cpp
+++ b/src/perf/time_lru_cache_throughput.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "../examples/common/utility/utility.h"
@@ -169,7 +161,7 @@ struct throughput {
                         (std::min)(p.time_check_granularity_ops, _this->per_thread_sample_size - part_of_the_sample_so_far);
 
                 for (access_sequence_type::iterator it = iteration_begin_it; it < iteration_end_it; ++it){
-                    typename cache_type::handle h = _this->m_cache(*it);
+                    typename cache_type::handle h = _this->m_cache[*it];
                     micro_benchmarking::utils::busy_wait(p.time_of_item_use_usec);
                     micro_benchmarking::utils::disable_elimination(h.value());
                 }
diff --git a/src/perf/time_sandbox.h b/src/perf/time_sandbox.h
index 4134de6..8e2cc76 100644
--- a/src/perf/time_sandbox.h
+++ b/src/perf/time_sandbox.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TIME_FRAMEWORK_H__
diff --git a/src/perf/time_vector.cpp b/src/perf/time_vector.cpp
index ab6a36a..9642f78 100644
--- a/src/perf/time_vector.cpp
+++ b/src/perf/time_vector.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //#define DO_SCALABLEALLOC
diff --git a/src/rml/client/index.html b/src/rml/client/index.html
index c147cd7..582cd19 100644
--- a/src/rml/client/index.html
+++ b/src/rml/client/index.html
@@ -31,7 +31,7 @@ This directory has source code that must be statically linked into an RML client
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/rml/client/library_assert.h b/src/rml/client/library_assert.h
index fea9056..b626bbe 100644
--- a/src/rml/client/library_assert.h
+++ b/src/rml/client/library_assert.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef LIBRARY_ASSERT_H
diff --git a/src/rml/client/omp_dynamic_link.cpp b/src/rml/client/omp_dynamic_link.cpp
index 1bfd85f..2c0d7ca 100644
--- a/src/rml/client/omp_dynamic_link.cpp
+++ b/src/rml/client/omp_dynamic_link.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "omp_dynamic_link.h"
diff --git a/src/rml/client/omp_dynamic_link.h b/src/rml/client/omp_dynamic_link.h
index a8482cc..0c491e7 100644
--- a/src/rml/client/omp_dynamic_link.h
+++ b/src/rml/client/omp_dynamic_link.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __KMP_omp_dynamic_link_H
diff --git a/src/rml/client/rml_factory.h b/src/rml/client/rml_factory.h
index 94effdc..4dd421c 100644
--- a/src/rml/client/rml_factory.h
+++ b/src/rml/client/rml_factory.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // No ifndef guard because this file is not a normal include file.
diff --git a/src/rml/client/rml_omp.cpp b/src/rml/client/rml_omp.cpp
index c7aaa32..e80afc7 100644
--- a/src/rml/client/rml_omp.cpp
+++ b/src/rml/client/rml_omp.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "rml_omp.h"
diff --git a/src/rml/client/rml_tbb.cpp b/src/rml/client/rml_tbb.cpp
index c07e8d1..fa71ff9 100644
--- a/src/rml/client/rml_tbb.cpp
+++ b/src/rml/client/rml_tbb.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "../include/rml_tbb.h"
diff --git a/src/rml/include/index.html b/src/rml/include/index.html
index 3b6716d..f740c66 100644
--- a/src/rml/include/index.html
+++ b/src/rml/include/index.html
@@ -18,7 +18,7 @@ This directory has the include files for the Resource Management Layer (RML).
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/rml/include/rml_base.h b/src/rml/include/rml_base.h
index f4d51ab..7cee52e 100644
--- a/src/rml/include/rml_base.h
+++ b/src/rml/include/rml_base.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Header guard and namespace names follow rml conventions.
diff --git a/src/rml/include/rml_omp.h b/src/rml/include/rml_omp.h
index aac55bd..51757d7 100644
--- a/src/rml/include/rml_omp.h
+++ b/src/rml/include/rml_omp.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Header guard and namespace names follow OpenMP runtime conventions.
diff --git a/src/rml/include/rml_tbb.h b/src/rml/include/rml_tbb.h
index 15f47d7..e1cac10 100644
--- a/src/rml/include/rml_tbb.h
+++ b/src/rml/include/rml_tbb.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Header guard and namespace names follow TBB conventions.
diff --git a/src/rml/index.html b/src/rml/index.html
index 18d9699..77aa70b 100644
--- a/src/rml/index.html
+++ b/src/rml/index.html
@@ -20,7 +20,7 @@ The subdirectories pertain to the Resource Management Layer (RML).
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/rml/perfor/omp_nested.cpp b/src/rml/perfor/omp_nested.cpp
index 5227128..9d5cbc0 100644
--- a/src/rml/perfor/omp_nested.cpp
+++ b/src/rml/perfor/omp_nested.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstddef>
diff --git a/src/rml/perfor/omp_simple.cpp b/src/rml/perfor/omp_simple.cpp
index 180f1c3..f28db5a 100644
--- a/src/rml/perfor/omp_simple.cpp
+++ b/src/rml/perfor/omp_simple.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstddef>
diff --git a/src/rml/perfor/tbb_multi_omp.cpp b/src/rml/perfor/tbb_multi_omp.cpp
index aa967f1..656c7bb 100644
--- a/src/rml/perfor/tbb_multi_omp.cpp
+++ b/src/rml/perfor/tbb_multi_omp.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstddef>
diff --git a/src/rml/perfor/tbb_simple.cpp b/src/rml/perfor/tbb_simple.cpp
index c97eaed..5a42df8 100644
--- a/src/rml/perfor/tbb_simple.cpp
+++ b/src/rml/perfor/tbb_simple.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <cstddef>
diff --git a/src/rml/perfor/thread_level.h b/src/rml/perfor/thread_level.h
index f080fb4..333b03e 100644
--- a/src/rml/perfor/thread_level.h
+++ b/src/rml/perfor/thread_level.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Thread level recorder
diff --git a/src/rml/server/index.html b/src/rml/server/index.html
index 3f32a7f..932974b 100644
--- a/src/rml/server/index.html
+++ b/src/rml/server/index.html
@@ -7,7 +7,7 @@ This directory has source code internal to the server.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/rml/server/irml.rc b/src/rml/server/irml.rc
index 575f539..7b4a71f 100644
--- a/src/rml/server/irml.rc
+++ b/src/rml/server/irml.rc
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 // Microsoft Visual C++ generated resource script.
 //
@@ -89,7 +81,7 @@ BEGIN
             VALUE "CompanyName", "Intel Corporation\0"
             VALUE "FileDescription", "Intel(R) Threading Building Blocks resource manager library\0"
             VALUE "FileVersion", TBB_VERSION "\0"
-            VALUE "LegalCopyright", "Copyright 2005-2014 Intel Corporation.  All Rights Reserved.\0"
+            VALUE "LegalCopyright", "Copyright 2005-2015 Intel Corporation.  All Rights Reserved.\0"
             VALUE "LegalTrademarks", "\0"
 #ifndef TBB_USE_DEBUG
             VALUE "OriginalFilename", "irml.dll\0"
diff --git a/src/rml/server/job_automaton.h b/src/rml/server/job_automaton.h
index aa65adb..f359c31 100644
--- a/src/rml/server/job_automaton.h
+++ b/src/rml/server/job_automaton.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __RML_job_automaton_H
diff --git a/src/rml/server/lin-rml-export.def b/src/rml/server/lin-rml-export.def
index 9396f7a..a493ca3 100644
--- a/src/rml/server/lin-rml-export.def
+++ b/src/rml/server/lin-rml-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
diff --git a/src/rml/server/rml_server.cpp b/src/rml/server/rml_server.cpp
index 5a749ef..77f8dc0 100644
--- a/src/rml/server/rml_server.cpp
+++ b/src/rml/server/rml_server.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "rml_tbb.h"
@@ -569,7 +561,7 @@ struct thread_map_base {
 #endif /* !RML_USE_WCRM */
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
-    // Suppress overzealous compiler warnings about uninstantiatble class
+    // Suppress overzealous compiler warnings about uninstantiable class
     #pragma warning(push)
     #pragma warning(disable:4510 4610)
 #endif
@@ -996,7 +988,7 @@ public:
     void mark_virtual_processors_as_returned( IVirtualProcessorRoot** vprocs, unsigned int count, tbb::spin_mutex& mtx );
     inline void addto_original_exec_resources( IExecutionResource* r, ::tbb::spin_mutex& mtx ) {
         ::tbb::spin_mutex::scoped_lock lck(mtx);
-        __TBB_ASSERT( !is_closing(), "try to regster master while connection is being shutdown?" );
+        __TBB_ASSERT( !is_closing(), "trying to register master while connection is being shutdown?" );
         original_exec_resources.push_back( r );
     }
 #if !__RML_REMOVE_VIRTUAL_PROCESSORS_DISABLED
@@ -1640,7 +1632,7 @@ activate_threads:
     if( index==request_size )
         return;
 
-    // If we come to this point, it must be becuase dynamic==false
+    // If we come to this point, it must be because dynamic==false
     // Create Oversubscribers..
 
     // Note that our policy is such that MinConcurrency==MaxConcurrency.
@@ -2764,7 +2756,7 @@ void thread_map::create_oversubscribers( unsigned n, std::vector<server_thread*>
                 my_map.insert( *vi );
             } else {
                 // the vproc has not been added to the map in mark_virtual_processors_as_returned();
-                unsigned lent = (unsigned) (*i).second;
+                uintptr_t lent = (uintptr_t) (*i).second;
                 __TBB_ASSERT( lent<=1, "vproc map entry added incorrectly?");
                 (*i).second = thr_vec[c];
                 if( lent )
diff --git a/src/rml/server/thread_monitor.h b/src/rml/server/thread_monitor.h
index 211a57d..699f809 100644
--- a/src/rml/server/thread_monitor.h
+++ b/src/rml/server/thread_monitor.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // All platform-specific threading support is encapsulated here. */
@@ -227,6 +219,7 @@ inline thread_monitor::handle_type thread_monitor::launch( void* (*thread_routin
         check(pthread_attr_setstacksize( &s, stack_size ), "pthread_attr_setstack_size" );
     pthread_t handle;
     check( pthread_create( &handle, &s, thread_routine, arg ), "pthread_create" );
+    check( pthread_attr_destroy( &s ), "pthread_attr_destroy" );
     return handle;
 }
 
diff --git a/src/rml/server/wait_counter.h b/src/rml/server/wait_counter.h
index 8f10a88..7c700e9 100644
--- a/src/rml/server/wait_counter.h
+++ b/src/rml/server/wait_counter.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __RML_wait_counter_H
diff --git a/src/rml/server/win32-rml-export.def b/src/rml/server/win32-rml-export.def
index 597724c..7fc36c4 100644
--- a/src/rml/server/win32-rml-export.def
+++ b/src/rml/server/win32-rml-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
diff --git a/src/rml/server/win64-rml-export.def b/src/rml/server/win64-rml-export.def
index 597724c..7fc36c4 100644
--- a/src/rml/server/win64-rml-export.def
+++ b/src/rml/server/win64-rml-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
diff --git a/src/rml/test/rml_omp_stub.cpp b/src/rml/test/rml_omp_stub.cpp
index 92b20b9..c105e31 100644
--- a/src/rml/test/rml_omp_stub.cpp
+++ b/src/rml/test/rml_omp_stub.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // This file is compiled with C++, but linked with a program written in C.
diff --git a/src/rml/test/test_job_automaton.cpp b/src/rml/test/test_job_automaton.cpp
index d4f3b42..1cc38f0 100644
--- a/src/rml/test/test_job_automaton.cpp
+++ b/src/rml/test/test_job_automaton.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
diff --git a/src/rml/test/test_rml_mixed.cpp b/src/rml/test/test_rml_mixed.cpp
index 3dfc653..8636c3e 100644
--- a/src/rml/test/test_rml_mixed.cpp
+++ b/src/rml/test/test_rml_mixed.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <tbb/tbb_config.h>
@@ -44,9 +36,9 @@ int TestMain () {
 // dynamic_link initializes its data structures in a static constructor. But
 // the initialization order of static constructors in different modules is
 // non-deterministic. Thus dynamic_link fails on some systems when the
-// applicaton changes its current directory after the library (TBB/OpenMP/...)
+// application changes its current directory after the library (TBB/OpenMP/...)
 // is loaded but before the static constructors in the library are executed.
-#define CHDIR_SUPPORT_BROKEN ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8 )
+#define CHDIR_SUPPORT_BROKEN ( ( __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 9 ) || (__linux__ && __clang_major__ == 3 && __clang_minor__ == 5) )
 
 const int OMP_ParallelRegionSize = 16;
 int TBB_MaxThread = 4;           // Includes master
diff --git a/src/rml/test/test_rml_omp.cpp b/src/rml/test/test_rml_omp.cpp
index f1c23d1..34c2e60 100644
--- a/src/rml/test/test_rml_omp.cpp
+++ b/src/rml/test/test_rml_omp.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <tbb/tbb_config.h>
diff --git a/src/rml/test/test_rml_omp_c_linkage.c b/src/rml/test/test_rml_omp_c_linkage.c
index bba4ded..26475a2 100644
--- a/src/rml/test/test_rml_omp_c_linkage.c
+++ b/src/rml/test/test_rml_omp_c_linkage.c
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 void Cplusplus();
diff --git a/src/rml/test/test_rml_tbb.cpp b/src/rml/test/test_rml_tbb.cpp
index 7bbed7f..530c0fb 100644
--- a/src/rml/test/test_rml_tbb.cpp
+++ b/src/rml/test/test_rml_tbb.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <tbb/tbb_config.h>
diff --git a/src/rml/test/test_server.h b/src/rml/test/test_server.h
index 5004f6b..dc936c8 100644
--- a/src/rml/test/test_server.h
+++ b/src/rml/test/test_server.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* This header contains code shared by test_omp_server.cpp and test_tbb_server.cpp 
diff --git a/src/rml/test/test_thread_monitor.cpp b/src/rml/test/test_thread_monitor.cpp
index 6b3a5bb..b780264 100644
--- a/src/rml/test/test_thread_monitor.cpp
+++ b/src/rml/test/test_thread_monitor.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
diff --git a/src/tbb/arena.cpp b/src/tbb/arena.cpp
index 7a18261..fe2c0d9 100644
--- a/src/tbb/arena.cpp
+++ b/src/tbb/arena.cpp
@@ -1,42 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "tbb/global_control.h" // thread_stack_size
+
 #include "scheduler.h"
 #include "governor.h"
 #include "arena.h"
 #include "itt_notify.h"
 #include "semaphore.h"
 
-#if !__TBB_CPU_CTL_ENV_PRESENT
-inline void __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* ctl ) { fegetenv(ctl); }
-inline void __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* ctl ) { fesetenv(ctl); }
-#endif /* !__TBB_CPU_CTL_ENV_PRESENT */
-
 #include <functional>
 
 #if __TBB_STATISTICS_STDOUT
@@ -75,14 +64,16 @@ void arena::process( generic_scheduler& s ) {
     s.my_arena_index = index;
     s.my_arena_slot = my_slots + index;
 #if __TBB_TASK_PRIORITY
-    s.my_local_reload_epoch = my_reload_epoch;
+    s.my_local_reload_epoch = *s.my_ref_reload_epoch;
     __TBB_ASSERT( !s.my_offloaded_tasks, NULL );
 #endif /* __TBB_TASK_PRIORITY */
     s.attach_mailbox( affinity_id(index+1) );
 
     s.my_arena_slot->hint_for_pop  = index; // initial value for round-robin
 
-    __TBB_set_cpu_ctl_env(&my_cpu_ctl_env);
+#if !__TBB_FP_CONTEXT
+    my_cpu_ctl_env.set_env();
+#endif
 
 #if __TBB_SCHEDULER_OBSERVER
     __TBB_ASSERT( !s.my_last_local_observer, "There cannot be notified local observers when entering arena" );
@@ -96,7 +87,7 @@ void arena::process( generic_scheduler& s ) {
         // Passing reference count is technically unnecessary in this context,
         // but omitting it here would add checks inside the function.
         __TBB_ASSERT( is_alive(my_guard), NULL );
-        task* t = s.receive_or_steal_task( s.my_dummy_task->prefix().ref_count, /*return_if_no_work=*/true );
+        task* t = s.receive_or_steal_task( s.my_dummy_task->prefix().ref_count );
         if (t) {
             // A side effect of receive_or_steal_task is that my_innermost_running_task can be set.
             // But for the outermost dispatch loop of a worker it has to be NULL.
@@ -109,34 +100,16 @@ void arena::process( generic_scheduler& s ) {
         __TBB_ASSERT( s.my_arena_slot->task_pool == EmptyTaskPool, "Empty task pool is not marked appropriately" );
         // This check prevents relinquishing more than necessary workers because
         // of the non-atomicity of the decision making procedure
-        unsigned allotted = my_num_workers_allotted;
-        if (((num_workers_active() > allotted)
-#if __TBB_SCHEDULER_OBSERVER && __TBB_CPF_BUILD
-                && allotted > 0) || (allotted == 0 && my_observers.ask_permission_to_leave()
-                // TODO: my_num_workers_allotted > 0 makes bug 1967 even worse, rework with accounting of demand by other arenas
-                // TODO: add monitoring of my_pool_state when not allowed to leave
-#endif /* __TBB_SCHEDULER_OBSERVER && __TBB_TASK_ARENA */
-                )) break;
+        if (num_workers_active() > my_num_workers_allotted)
+            break;
     }
 #if __TBB_SCHEDULER_OBSERVER
     my_observers.notify_exit_observers( s.my_last_local_observer, /*worker=*/true );
     s.my_last_local_observer = NULL;
 #endif /* __TBB_SCHEDULER_OBSERVER */
 #if __TBB_TASK_PRIORITY
-    if ( s.my_offloaded_tasks ) {
-        GATHER_STATISTIC( ++s.my_counters.prio_orphanings );
-        ++my_abandonment_epoch;
-        __TBB_ASSERT( s.my_offloaded_task_list_tail_link && !*s.my_offloaded_task_list_tail_link, NULL );
-        task* orphans;
-        do {
-            orphans = const_cast<task*>(my_orphaned_tasks);
-            *s.my_offloaded_task_list_tail_link = orphans;
-        } while ( as_atomic(my_orphaned_tasks).compare_and_swap(s.my_offloaded_tasks, orphans) != orphans );
-        s.my_offloaded_tasks = NULL;
-#if TBB_USE_ASSERT
-        s.my_offloaded_task_list_tail_link = NULL;
-#endif /* TBB_USE_ASSERT */
-    }
+    if ( s.my_offloaded_tasks )
+        orphan_offloaded_tasks( s );
 #endif /* __TBB_TASK_PRIORITY */
 #if __TBB_STATISTICS
     ++s.my_counters.arena_roundtrips;
@@ -154,12 +127,10 @@ quit:
     // In contrast to earlier versions of TBB (before 3.0 U5) now it is possible
     // that arena may be temporarily left unpopulated by threads. See comments in
     // arena::on_thread_leaving() for more details.
-#if !__TBB_TRACK_PRIORITY_LEVEL_SATURATION
     on_thread_leaving</*is_master*/false>();
-#endif /* !__TBB_TRACK_PRIORITY_LEVEL_SATURATION */
 }
 
-arena::arena ( market& m, unsigned max_num_workers ) {
+arena::arena ( market& m, unsigned num_slots ) {
     __TBB_ASSERT( !my_guard, "improperly allocated arena?" );
     __TBB_ASSERT( sizeof(my_slots[0]) % NFS_GetLineSize()==0, "arena::slot size not multiple of cache line size" );
     __TBB_ASSERT( (uintptr_t)this % NFS_GetLineSize()==0, "arena misaligned" );
@@ -169,10 +140,9 @@ arena::arena ( market& m, unsigned max_num_workers ) {
     my_market = &m;
     my_limit = 1;
     // Two slots are mandatory: for the master, and for 1 worker (required to support starvation resistant tasks).
-    my_num_slots = num_slots_to_reserve(max_num_workers);
-    my_max_num_workers = max_num_workers;
+    my_num_slots = num_slots_to_reserve(num_slots);
+    my_max_num_workers = num_slots-1;
     my_references = 1; // accounts for the master
-    __TBB_get_cpu_ctl_env(&my_cpu_ctl_env);
 #if __TBB_TASK_PRIORITY
     my_bottom_priority = my_top_priority = normalized_normal_priority;
 #endif /* __TBB_TASK_PRIORITY */
@@ -194,32 +164,31 @@ arena::arena ( market& m, unsigned max_num_workers ) {
         my_slots[i].my_counters = new ( NFS_Allocate(1, sizeof(statistics_counters), NULL) ) statistics_counters;
 #endif /* __TBB_STATISTICS */
     }
-#if __TBB_TASK_PRIORITY
-    for ( intptr_t i = 0; i < num_priority_levels; ++i ) {
-        my_task_stream[i].initialize(my_num_slots);
-        ITT_SYNC_CREATE(my_task_stream + i, SyncType_Scheduler, SyncObj_TaskStream);
-    }
-#else /* !__TBB_TASK_PRIORITY */
     my_task_stream.initialize(my_num_slots);
     ITT_SYNC_CREATE(&my_task_stream, SyncType_Scheduler, SyncObj_TaskStream);
-#endif /* !__TBB_TASK_PRIORITY */
     my_mandatory_concurrency = false;
 #if __TBB_TASK_GROUP_CONTEXT
     // Context to be used by root tasks by default (if the user has not specified one).
+    // The arena's context should not capture fp settings for the sake of backward compatibility.
     my_default_ctx =
-            new ( NFS_Allocate(1, sizeof(task_group_context), NULL) ) task_group_context(task_group_context::isolated);
+            new ( NFS_Allocate(1, sizeof(task_group_context), NULL) ) task_group_context(task_group_context::isolated, task_group_context::default_traits);
 #endif /* __TBB_TASK_GROUP_CONTEXT */
+#if __TBB_FP_CONTEXT
+    my_default_ctx->capture_fp_settings();
+#else
+    my_cpu_ctl_env.get_env();
+#endif
 }
 
-arena& arena::allocate_arena( market& m, unsigned max_num_workers ) {
+arena& arena::allocate_arena( market& m, unsigned num_slots ) {
     __TBB_ASSERT( sizeof(base_type) + sizeof(arena_slot) == sizeof(arena), "All arena data fields must go to arena_base" );
     __TBB_ASSERT( sizeof(base_type) % NFS_GetLineSize() == 0, "arena slots area misaligned: wrong padding" );
     __TBB_ASSERT( sizeof(mail_outbox) == NFS_MaxLineSize, "Mailbox padding is wrong" );
-    size_t n = allocation_size(max_num_workers);
+    size_t n = allocation_size(num_slots);
     unsigned char* storage = (unsigned char*)NFS_Allocate( 1, n, NULL );
     // Zero all slots to indicate that they are empty
     memset( storage, 0, n );
-    return *new( storage + num_slots_to_reserve(max_num_workers) * sizeof(mail_outbox) ) arena(m, max_num_workers);
+    return *new( storage + num_slots_to_reserve(num_slots) * sizeof(mail_outbox) ) arena(m, num_slots);
 }
 
 void arena::free_arena () {
@@ -246,12 +215,7 @@ void arena::free_arena () {
 #endif /* __TBB_STATISTICS */
         drained += mailbox(i+1).drain();
     }
-#if __TBB_TASK_PRIORITY && TBB_USE_ASSERT
-    for ( intptr_t i = 0; i < num_priority_levels; ++i )
-        __TBB_ASSERT(my_task_stream[i].empty() && my_task_stream[i].drain()==0, "Not all enqueued tasks were executed");
-#elif !__TBB_TASK_PRIORITY
-    __TBB_ASSERT(my_task_stream.empty() && my_task_stream.drain()==0, "Not all enqueued tasks were executed");
-#endif /* !__TBB_TASK_PRIORITY */
+    __TBB_ASSERT( my_task_stream.drain()==0, "Not all enqueued tasks were executed");
 #if __TBB_COUNT_TASK_NODES
     my_market->update_task_node_count( -drained );
 #endif /* __TBB_COUNT_TASK_NODES */
@@ -307,15 +271,16 @@ void arena::dump_arena_statistics () {
 #endif /* __TBB_STATISTICS */
 
 #if __TBB_TASK_PRIORITY
-// TODO: This function seems deserving refactoring, e.g. get rid of 's'
-inline bool arena::may_have_tasks ( generic_scheduler* s, arena_slot& slot, bool& tasks_present, bool& dequeuing_possible ) {
-    suppress_unused_warning(slot);
-    if ( !s ) {
-        // This slot is vacant
-        __TBB_ASSERT( slot.task_pool == EmptyTaskPool, NULL );
-        __TBB_ASSERT( slot.tail == slot.head, "Someone is tinkering with a vacant arena slot" );
-        return false;
-    }
+// The method inspects a scheduler to determine:
+// 1. if it has tasks that can be retrieved and executed (via the return value);
+// 2. if it has any tasks at all, including those of lower priority (via tasks_present);
+// 3. if it is able to work with enqueued tasks (via dequeuing_possible).
+inline bool arena::may_have_tasks ( generic_scheduler* s, bool& tasks_present, bool& dequeuing_possible ) {
+    if ( !s
+#if __TBB_TASK_ARENA
+            || s->my_arena != this
+#endif
+            ) return false;
     dequeuing_possible |= s->worker_outermost_level();
     if ( s->my_pool_reshuffling_pending ) {
         // This primary task pool is nonempty and may contain tasks at the current
@@ -333,6 +298,22 @@ inline bool arena::may_have_tasks ( generic_scheduler* s, arena_slot& slot, bool
     }
     return false;
 }
+
+void arena::orphan_offloaded_tasks(generic_scheduler& s) {
+    __TBB_ASSERT( s.my_offloaded_tasks, NULL );
+    GATHER_STATISTIC( ++s.my_counters.prio_orphanings );
+    ++my_abandonment_epoch;
+    __TBB_ASSERT( s.my_offloaded_task_list_tail_link && !*s.my_offloaded_task_list_tail_link, NULL );
+    task* orphans;
+    do {
+        orphans = const_cast<task*>(my_orphaned_tasks);
+        *s.my_offloaded_task_list_tail_link = orphans;
+    } while ( as_atomic(my_orphaned_tasks).compare_and_swap(s.my_offloaded_tasks, orphans) != orphans );
+    s.my_offloaded_tasks = NULL;
+#if TBB_USE_ASSERT
+    s.my_offloaded_task_list_tail_link = NULL;
+#endif /* TBB_USE_ASSERT */
+}
 #endif /* __TBB_TASK_PRIORITY */
 
 bool arena::is_out_of_work() {
@@ -367,6 +348,8 @@ bool arena::is_out_of_work() {
                             // k-th primary task pool is nonempty and does contain tasks.
                             break;
                         }
+                        if( my_pool_state!=busy )
+                            return false; // the work was published
                     }
                     __TBB_ASSERT( k <= n, NULL );
                     bool work_absent = k == n;
@@ -389,7 +372,7 @@ bool arena::is_out_of_work() {
                         generic_scheduler *s = my_slots[0].my_scheduler;
                         if ( s && as_atomic(my_slots[0].my_scheduler).compare_and_swap(LockedMaster, s) == s ) { //TODO: remove need to lock
                             __TBB_ASSERT( my_slots[0].my_scheduler == LockedMaster && s != LockedMaster, NULL );
-                            work_absent = !may_have_tasks( s, my_slots[0], tasks_present, dequeuing_possible );
+                            work_absent = !may_have_tasks( s, tasks_present, dequeuing_possible );
                             __TBB_store_with_release( my_slots[0].my_scheduler, s );
                         }
                         my_market->my_arenas_list_mutex.unlock();
@@ -405,8 +388,11 @@ bool arena::is_out_of_work() {
                         // flow does not seem to make sense because it both is unlikely to
                         // ever have any observable performance effect, and will require
                         // additional synchronization code on the hotter paths.
-                        for( k = 1; work_absent && k < n; ++k )
-                            work_absent = !may_have_tasks( my_slots[k].my_scheduler, my_slots[k], tasks_present, dequeuing_possible );
+                        for( k = 1; work_absent && k < n; ++k ) {
+                            if( my_pool_state!=busy )
+                                return false; // the work was published
+                            work_absent = !may_have_tasks( my_slots[k].my_scheduler, tasks_present, dequeuing_possible );
+                        }
                         // Preclude premature switching arena off because of a race in the previous loop.
                         work_absent = work_absent
                                       && !__TBB_load_with_acquire(my_orphaned_tasks)
@@ -416,18 +402,18 @@ bool arena::is_out_of_work() {
                     // Test and test-and-set.
                     if( my_pool_state==busy ) {
 #if __TBB_TASK_PRIORITY
-                        bool no_fifo_tasks = my_task_stream[top_priority].empty();
+                        bool no_fifo_tasks = my_task_stream.empty(top_priority);
                         work_absent = work_absent && (!dequeuing_possible || no_fifo_tasks)
                                       && top_priority == my_top_priority && reload_epoch == my_reload_epoch;
 #else
-                        bool no_fifo_tasks = my_task_stream.empty();
+                        bool no_fifo_tasks = my_task_stream.empty(0);
                         work_absent = work_absent && no_fifo_tasks;
 #endif /* __TBB_TASK_PRIORITY */
                         if( work_absent ) {
 #if __TBB_TASK_PRIORITY
                             if ( top_priority > my_bottom_priority ) {
                                 if ( my_market->lower_arena_priority(*this, top_priority - 1, reload_epoch)
-                                     && !my_task_stream[top_priority].empty() )
+                                     && !my_task_stream.empty(top_priority) )
                                 {
                                     atomic_update( my_skipped_fifo_priority, top_priority, std::less<intptr_t>());
                                 }
@@ -449,7 +435,7 @@ bool arena::is_out_of_work() {
                                     // which is unacceptable.
                                     bool switch_back = false;
                                     for ( int p = 0; p < num_priority_levels; ++p ) {
-                                        if ( !my_task_stream[p].empty() ) {
+                                        if ( !my_task_stream.empty(p) ) {
                                             switch_back = true;
                                             if ( p < my_bottom_priority || p > my_top_priority )
                                                 my_market->update_arena_priority(*this, p);
@@ -510,20 +496,17 @@ void arena::enqueue_task( task& t, intptr_t prio, FastRandom &random )
     __TBB_ASSERT(t.prefix().affinity==affinity_id(0), "affinity is ignored for enqueued tasks");
 #endif /* TBB_USE_ASSERT */
 
+    ITT_NOTIFY(sync_releasing, &my_task_stream);
 #if __TBB_TASK_PRIORITY
     intptr_t p = prio ? normalize_priority(priority_t(prio)) : normalized_normal_priority;
     assert_priority_valid(p);
-    task_stream &ts = my_task_stream[p];
+    my_task_stream.push( &t, p, random );
+    if ( p != my_top_priority )
+        my_market->update_arena_priority( *this, p );
 #else /* !__TBB_TASK_PRIORITY */
     __TBB_ASSERT_EX(prio == 0, "the library is not configured to respect the task priority");
-    task_stream &ts = my_task_stream;
+    my_task_stream.push( &t, 0, random );
 #endif /* !__TBB_TASK_PRIORITY */
-    ITT_NOTIFY(sync_releasing, &ts);
-    ts.push( &t, random );
-#if __TBB_TASK_PRIORITY
-    if ( p != my_top_priority )
-        my_market->update_arena_priority( *this, p );
-#endif /* __TBB_TASK_PRIORITY */
     advertise_new_work< /*Spawned=*/ false >();
 #if __TBB_TASK_PRIORITY
     if ( p != my_top_priority )
@@ -532,44 +515,96 @@ void arena::enqueue_task( task& t, intptr_t prio, FastRandom &random )
 }
 
 #if __TBB_TASK_ARENA
-template<typename Body>
-void generic_scheduler::nested_arena_execute(arena* arena, task* t, bool needs_adjusting, Body &b) {
-    // TODO: is it safe to assign slot to a scheduler which is not yet switched
-    // save current arena settings
-    scheduler_state state = *this;
+struct nested_arena_context : no_copy {
+    generic_scheduler &my_scheduler;
+    scheduler_state const my_orig_state;
+    void *my_orig_ptr;
+    bool my_adjusting;
+    nested_arena_context(generic_scheduler *s, arena* a, bool needs_adjusting, bool as_worker = false)
+        : my_scheduler(*s), my_orig_state(*s), my_orig_ptr(NULL), my_adjusting(needs_adjusting) {
+        s->nested_arena_entry(a, *this, as_worker);
+    }
+    ~nested_arena_context() {
+        my_scheduler.nested_arena_exit(*this);
+        (scheduler_state&)my_scheduler = my_orig_state; // restore arena settings
+    }
+};
+
+void generic_scheduler::nested_arena_entry(arena* a, nested_arena_context& c, bool as_worker) {
+    if( a == my_arena ) {
+#if __TBB_TASK_GROUP_CONTEXT
+        c.my_orig_ptr = my_innermost_running_task =
+                new(&allocate_task(sizeof(empty_task), NULL, a->my_default_ctx)) empty_task;
+#endif
+        return;
+    }
+    __TBB_ASSERT( is_alive(a->my_guard), NULL );
     // overwrite arena settings
-    my_arena = arena;
+#if __TBB_TASK_PRIORITY
+    if ( my_offloaded_tasks )
+        my_arena->orphan_offloaded_tasks( *this );
+    my_ref_top_priority = &a->my_top_priority;
+    my_ref_reload_epoch = &a->my_reload_epoch;
+    my_local_reload_epoch = a->my_reload_epoch;
+#endif /* __TBB_TASK_PRIORITY */
+    my_arena = a;
     my_arena_index = 0;
     my_arena_slot = my_arena->my_slots + my_arena_index;
     my_inbox.detach(); // TODO: mailboxes were not designed for switching, add copy constructor?
     attach_mailbox( affinity_id(my_arena_index+1) );
-    my_innermost_running_task = my_dispatching_task = t;
-
-#if __TBB_SCHEDULER_OBSERVER
-    my_last_local_observer = 0;
+    my_innermost_running_task = my_dispatching_task = as_worker? NULL : my_dummy_task;
+#if __TBB_TASK_GROUP_CONTEXT
+    // save dummy's context and replace it by arena's context
+    c.my_orig_ptr = my_dummy_task->prefix().context;
+    my_dummy_task->prefix().context = a->my_default_ctx;
+#endif
+#if __TBB_ARENA_OBSERVER
+    my_last_local_observer = 0; // TODO: try optimize number of calls
     my_arena->my_observers.notify_entry_observers( my_last_local_observer, /*worker=*/false );
 #endif
+    // TODO? ITT_NOTIFY(sync_acquired, a->my_slots + index);
     // TODO: it requires market to have P workers (not P-1)
     // TODO: it still allows temporary oversubscription by 1 worker (due to my_max_num_workers)
     // TODO: a preempted worker should be excluded from assignment to other arenas e.g. my_slack--
-    if( needs_adjusting ) my_arena->my_market->adjust_demand(*my_arena, -1);
-    b();
-    if( needs_adjusting ) my_arena->my_market->adjust_demand(*my_arena, 1);
-#if __TBB_SCHEDULER_OBSERVER
+    if( c.my_adjusting ) my_arena->my_market->adjust_demand(*my_arena, -1);
+}
+
+void generic_scheduler::nested_arena_exit(nested_arena_context& c) {
+    if( my_arena == c.my_orig_state.my_arena ) {
+#if __TBB_TASK_GROUP_CONTEXT
+        free_task<small_local_task>(*(task*)c.my_orig_ptr); // TODO: use scoped_task instead?
+#endif
+        return;
+    }
+    if( c.my_adjusting ) my_arena->my_market->adjust_demand(*my_arena, 1);
+#if __TBB_ARENA_OBSERVER
     my_arena->my_observers.notify_exit_observers( my_last_local_observer, /*worker=*/false );
 #endif /* __TBB_SCHEDULER_OBSERVER */
 
-    // Free the master slot. TODO: support multiple masters
 #if __TBB_TASK_PRIORITY
+    if ( my_offloaded_tasks )
+        my_arena->orphan_offloaded_tasks( *this );
+    my_local_reload_epoch = *c.my_orig_state.my_ref_reload_epoch;
     while ( as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap( NULL, this) != this )
-        __TBB_Yield(); // task priority can use master slot for locking while accessing the scheduler
+        __TBB_Yield(); // TODO: task priority can use master slot for locking while accessing the scheduler
 #else
+    // Free the master slot. TODO: support multiple masters
     __TBB_store_with_release(my_arena->my_slots[0].my_scheduler, (generic_scheduler*)NULL);
 #endif
-    my_arena->my_exit_monitors.notify_one_relaxed();
-    // restore arena settings
-    *(scheduler_state*)this = state;
+    my_arena->my_exit_monitors.notify_all_relaxed(); // TODO: fix concurrent monitor to use notify_one (test MultipleMastersPart4 fails)
+#if __TBB_TASK_GROUP_CONTEXT
+    // restore context of dummy task
+    my_dummy_task->prefix().context = (task_group_context*)c.my_orig_ptr;
+#endif
 }
+
+void generic_scheduler::wait_until_empty() {
+    my_dummy_task->prefix().ref_count++; // prevents exit from local_wait_for_all when local work is done enforcing the stealing
+    while( my_arena->my_pool_state != arena::SNAPSHOT_EMPTY )
+        local_wait_for_all(*my_dummy_task, NULL);
+    my_dummy_task->prefix().ref_count--;
+}
+
 #endif /* __TBB_TASK_ARENA */
 
 } // namespace internal
@@ -583,27 +618,37 @@ namespace interface7 {
 namespace internal {
 
 void task_arena_base::internal_initialize( ) {
+    governor::one_time_init();
     __TBB_ASSERT( my_master_slots <= 1, "Number of slots reserved for master can be only [0,1]");
     if( my_master_slots > 1 ) my_master_slots = 1; // TODO: make more masters
-    if( my_max_concurrency < 1 )
+    bool default_concurrency_requested = false;
+    if( my_max_concurrency < 1 ) {
         my_max_concurrency = (int)governor::default_num_threads();
+        default_concurrency_requested = true;
+    }
+    arena* new_arena = &market::create_arena( my_max_concurrency + 1-my_master_slots/*it's +1 slot for num_masters=0*/,
+                                              global_control::active_value(global_control::thread_stack_size),
+                                              default_concurrency_requested );
+    // increases market's ref count for task_arena
+    market::global_market();
     // TODO: reimplement in an efficient way. We need a scheduler instance in this thread
     // but the scheduler is only required for task allocation and fifo random seeds until
     // master wants to join the arena. (Idea - to create a restricted specialization)
     // It is excessive to create an implicit arena for master here anyway. But scheduler
     // instance implies master thread to be always connected with arena.
-    // browse recursively into init_scheduler and arena::process for details
-    if( !governor::local_scheduler_if_initialized() )
-        governor::init_scheduler( (unsigned)my_max_concurrency - my_master_slots + 1/*TODO: address in market instead*/, 0, true );
-    // TODO: we will need to introduce a mechanism for global settings, including stack size, used by all arenas
-    arena* new_arena = &market::create_arena( my_max_concurrency - my_master_slots/*it's +1 slot for num_masters=0*/, ThreadStackSize );
+    governor::local_scheduler();
+    //TODO: if( !governor::local_scheduler_if_initialized() ) generic_scheduler::create_master( the_dummy_arena )->my_auto_initialized = true;
+
     if(as_atomic(my_arena).compare_and_swap(new_arena, NULL) != NULL) { // there is a race possible on my_initialized
         __TBB_ASSERT(my_arena, NULL);                             // other thread was the first
         new_arena->on_thread_leaving</*is_master*/true>(); // deallocate new arena
-    }
 #if __TBB_TASK_GROUP_CONTEXT
-    else my_context = new_arena->my_default_ctx;
+        spin_wait_while_eq(my_context, (task_group_context*)NULL);
+    } else {
+        new_arena->my_default_ctx->my_version_and_traits |= my_version_and_traits & exact_exception_flag;
+        as_atomic(my_context) = new_arena->my_default_ctx;
 #endif
+    }
 }
 
 void task_arena_base::internal_terminate( ) {
@@ -611,6 +656,7 @@ void task_arena_base::internal_terminate( ) {
 #if __TBB_STATISTICS_EARLY_DUMP
         GATHER_STATISTIC( my_arena->dump_arena_statistics() );
 #endif
+        my_arena->my_market->release( /*is_public*/true ); // remove market's public reference for task_arena
         my_arena->on_thread_leaving</*is_master*/true>();
         my_arena = 0;
 #if __TBB_TASK_GROUP_CONTEXT
@@ -625,7 +671,8 @@ void task_arena_base::internal_enqueue( task& t, intptr_t prio ) const {
     __TBB_ASSERT(s, "Scheduler is not initialized"); // we allocated a task so can expect the scheduler
 #if __TBB_TASK_GROUP_CONTEXT
     __TBB_ASSERT(my_arena->my_default_ctx == t.prefix().context, NULL);
-    ITT_STACK_CREATE(my_arena->my_default_ctx->itt_caller);
+    __TBB_ASSERT(!my_arena->my_default_ctx->is_group_execution_cancelled(), // TODO: any better idea?
+                 "The task will not be executed because default task_group_context of task_arena is cancelled. Has previously enqueued task thrown an exception?");
 #endif
     my_arena->enqueue_task( t, prio, s->my_random );
 }
@@ -647,45 +694,86 @@ class delegated_task : public task {
             recycle_to_enqueue();
             return NULL;
         }
-        task * old_dummy = s.my_dummy_task;
-        s.my_dummy_task = this; // mimics outermost master
-        __TBB_ASSERT(s.my_innermost_running_task == this, 0);
+        struct outermost_context : internal::no_copy {
+            delegated_task * t;
+            generic_scheduler & s;
+            task * orig_dummy;
+            task_group_context * orig_ctx;
+            outermost_context(delegated_task *_t, generic_scheduler &_s) : t(_t), s(_s) {
+                orig_dummy = s.my_dummy_task;
+#if __TBB_TASK_GROUP_CONTEXT
+                orig_ctx = t->prefix().context;
+                t->prefix().context = s.my_arena->my_default_ctx;
+#endif
+                s.my_dummy_task = t; // mimics outermost master
+                __TBB_ASSERT(s.my_innermost_running_task == t, NULL);
+            }
+            ~outermost_context() {
+                s.my_dummy_task = orig_dummy;
+#if TBB_USE_EXCEPTIONS
+                // restore context for sake of registering potential exception
+                t->prefix().context = orig_ctx;
+#endif
+            }
+        } scope(this, s);
         my_delegate();
-        s.my_dummy_task = old_dummy;
+        return NULL;
+    }
+    ~delegated_task() {
+        // potential exception was already registered. It must happen before the notification
         __TBB_ASSERT(my_root->ref_count()==2, NULL);
         __TBB_store_with_release(my_root->prefix().ref_count, 1); // must precede the wakeup
         my_monitor.notify_relaxed(*this);
-        return NULL;
     }
 public:
-    delegated_task ( internal::delegate_base & d, concurrent_monitor & s, task * t )
+    delegated_task( internal::delegate_base & d, concurrent_monitor & s, task * t )
         : my_delegate(d), my_monitor(s), my_root(t) {}
+    // predicate for concurrent_monitor notification
     bool operator()(uintptr_t ctx) const { return (void*)ctx == (void*)&my_delegate; }
 };
 
-struct arena_join_body : internal::delegate_base {
-    generic_scheduler *my_scheduler;
-    task * my_root;
-    arena_join_body(generic_scheduler *s, task * t) : my_scheduler(s), my_root(t) {}
-    /*override*/ void operator()() const {
-        my_scheduler->local_wait_for_all(*my_root, NULL);
-    }
-};
-
 void task_arena_base::internal_execute( internal::delegate_base& d) const {
     __TBB_ASSERT(my_arena, NULL);
     generic_scheduler* s = governor::local_scheduler();
     __TBB_ASSERT(s, "Scheduler is not initialized");
-    if( s->my_arena == my_arena )
+    // TODO: is it safe to assign slot to a scheduler which is not yet switched?
+    // TODO TEMP: one master, make more masters
+    if( s->my_arena == my_arena || (!__TBB_load_with_acquire(my_arena->my_slots[0].my_scheduler)
+            && as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap(s, NULL ) == NULL) ) {
+        cpu_ctl_env_helper cpu_ctl_helper;
+        cpu_ctl_helper.set_env( __TBB_CONTEXT_ARG1(my_context) );
+#if TBB_USE_EXCEPTIONS
+        try {
+#endif
+        //TODO: replace dummy tasks for workers as well to avoid using of the_dummy_context
+        nested_arena_context scope(s, my_arena, !my_master_slots);
         d();
-    else if( !__TBB_load_with_acquire(my_arena->my_slots[0].my_scheduler) // TODO TEMP: one master, make more masters
-         &&   as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap(s, NULL ) == NULL ) {
-            s->nested_arena_execute<const internal::delegate_base>(my_arena, s->my_dummy_task, !my_master_slots, d);
+#if TBB_USE_EXCEPTIONS
+        } catch(...) {
+            cpu_ctl_helper.restore_default(); // TODO: is it needed on Windows?
+            if( my_version_and_traits & exact_exception_flag ) throw;
+            else {
+                task_group_context exception_container( task_group_context::isolated,
+                    task_group_context::default_traits & ~task_group_context::exact_exception );
+                exception_container.register_pending_exception();
+                __TBB_ASSERT(exception_container.my_exception, NULL);
+                exception_container.my_exception->throw_self();
+            }
+        }
+#endif
     } else {
         concurrent_monitor::thread_context waiter;
-        auto_empty_task root(__TBB_CONTEXT_ARG(s, s->my_dummy_task->prefix().context));
+#if __TBB_TASK_GROUP_CONTEXT
+        task_group_context exec_context( task_group_context::isolated, my_version_and_traits & exact_exception_flag );
+#if __TBB_FP_CONTEXT
+        exec_context.copy_fp_settings( *my_context );
+#endif
+#endif
+        auto_empty_task root(__TBB_CONTEXT_ARG(s, &exec_context));
         root.prefix().ref_count = 2;
-        internal_enqueue( *new( task::allocate_root(__TBB_CONTEXT_ARG1(*my_context)) ) delegated_task(d, my_arena->my_exit_monitors, &root), 0 ); // TODO: priority?
+        my_arena->enqueue_task( *new( task::allocate_root(__TBB_CONTEXT_ARG1(exec_context)) )
+                                delegated_task(d, my_arena->my_exit_monitors, &root),
+                                0, s->my_random ); // TODO: priority?
         do {
             my_arena->my_exit_monitors.prepare_wait(waiter, (uintptr_t)&d);
             if( __TBB_load_with_acquire(root.prefix().ref_count) < 2 ) {
@@ -693,14 +781,24 @@ void task_arena_base::internal_execute( internal::delegate_base& d) const {
                 break;
             }
             else if( !__TBB_load_with_acquire(my_arena->my_slots[0].my_scheduler) // TODO: refactor into a function?
-            &&   as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap(s, NULL ) == NULL ) {
+                    && as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap(s, NULL ) == NULL ) {
                 my_arena->my_exit_monitors.cancel_wait(waiter);
-                s->nested_arena_execute<const internal::delegate_base>(my_arena, s->my_dummy_task, !my_master_slots, arena_join_body(s, &root));
+                nested_arena_context scope(s, my_arena, !my_master_slots);
+                s->local_wait_for_all(root, NULL);
+#if TBB_USE_EXCEPTIONS
+                __TBB_ASSERT( !exec_context.my_exception, NULL ); // exception can be thrown above, not deferred
+#endif
                 __TBB_ASSERT( root.prefix().ref_count == 0, NULL );
+                break;
             } else {
                 my_arena->my_exit_monitors.commit_wait(waiter);
             }
         } while( __TBB_load_with_acquire(root.prefix().ref_count) == 2 );
+#if TBB_USE_EXCEPTIONS
+        // process possible exception
+        if( task_group_context::exception_container_type *pe = exec_context.my_exception )
+            pe->throw_self();
+#endif
     }
 }
 
@@ -709,30 +807,18 @@ void task_arena_base::internal_execute( internal::delegate_base& d) const {
 class wait_task : public task {
     binary_semaphore & my_signal;
     /*override*/ task* execute() {
-        generic_scheduler& s = *governor::local_scheduler_if_initialized();
-        if( s.my_arena_index && s.worker_outermost_level() ) {// on outermost level of workers only
-            s.local_wait_for_all( *s.my_dummy_task, NULL ); // run remaining tasks
-        }
-        else s.my_arena->is_out_of_work(); // avoids starvation of internal_wait: issuing this task makes arena full
+        generic_scheduler* s = governor::local_scheduler_if_initialized();
+        __TBB_ASSERT( s, NULL );
+        if( s->my_arena_index && s->worker_outermost_level() ) {
+            s->local_wait_for_all( *s->my_dummy_task, NULL ); // run remaining tasks
+        } else s->my_arena->is_out_of_work(); // avoids starvation of internal_wait: issuing this task makes arena full
         my_signal.V();
         return NULL;
     }
 public:
-    wait_task ( binary_semaphore & s ) : my_signal(s) {}
-};
-
-struct wait_body : internal::delegate_base {
-    generic_scheduler *my_scheduler;
-    wait_body(generic_scheduler *s) : my_scheduler(s) {}
-    /*override*/ void operator()() const {
-        my_scheduler->my_dummy_task->prefix().ref_count++; // force stealing
-        while( my_scheduler->my_arena->my_pool_state != arena::SNAPSHOT_EMPTY )
-            my_scheduler->local_wait_for_all(*my_scheduler->my_dummy_task, NULL);
-        my_scheduler->my_dummy_task->prefix().ref_count--;
-    }
+    wait_task ( binary_semaphore & sema ) : my_signal(sema) {}
 };
 
-// todo: merge with internal_execute()
 void task_arena_base::internal_wait() const {
     __TBB_ASSERT(my_arena, NULL);
     generic_scheduler* s = governor::local_scheduler();
@@ -743,12 +829,13 @@ void task_arena_base::internal_wait() const {
         __TBB_ASSERT(s->master_outermost_level(), "unsupported");
         if( !s->my_arena_index )
             while( my_arena->num_workers_active() )
-                (wait_body(s))();
+                s->wait_until_empty();
     } else for(;;) {
         while( my_arena->my_pool_state != arena::SNAPSHOT_EMPTY ) {
             if( !__TBB_load_with_acquire(my_arena->my_slots[0].my_scheduler) // TODO TEMP: one master, make more masters
                 && as_atomic(my_arena->my_slots[0].my_scheduler).compare_and_swap(s, NULL) == NULL ) {
-                s->nested_arena_execute<const internal::delegate_base>(my_arena, NULL, !my_master_slots, wait_body(s));
+                nested_arena_context a(s, my_arena, !my_master_slots, true);
+                s->wait_until_empty();
             } else {
                 binary_semaphore waiter; // TODO: replace by a single event notification from is_out_of_work
                 internal_enqueue( *new( task::allocate_root(__TBB_CONTEXT_ARG1(*my_context)) ) wait_task(waiter), 0 ); // TODO: priority?
diff --git a/src/tbb/arena.h b/src/tbb/arena.h
index 4a3c673..d316d78 100644
--- a/src/tbb/arena.h
+++ b/src/tbb/arena.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_arena_H
@@ -34,11 +26,6 @@
 
 #include "tbb/tbb_machine.h"
 
-#if !__TBB_CPU_CTL_ENV_PRESENT
-    #include <fenv.h>
-    typedef fenv_t __TBB_cpu_ctl_env_t;
-#endif /* !__TBB_CPU_CTL_ENV_PRESENT */
-
 #include "scheduler_common.h"
 #include "intrusive_list.h"
 #include "task_stream.h"
@@ -58,12 +45,6 @@ class allocate_root_with_context_proxy;
 
 namespace internal {
 
-class task_scheduler_observer_v3;
-class arena;
-template<typename SchedulerTraits> class custom_scheduler;
-
-class market;
-
 //! arena data except the array of slots
 /** Separated in order to simplify padding. 
     Intrusive list node base class is used by market to form a list of arenas. **/
@@ -79,6 +60,7 @@ struct arena_base : padded<intrusive_list_node> {
 #if __TBB_TASK_PRIORITY
     //! Highest priority of recently spawned or enqueued tasks.
     volatile intptr_t my_top_priority;  // heavy use in stealing loop
+#endif /* !__TBB_TASK_PRIORITY */
 
     //! Maximal currently busy slot.
     atomic<unsigned> my_limit;          // heavy use in stealing loop
@@ -88,41 +70,18 @@ struct arena_base : padded<intrusive_list_node> {
         - new tasks are constantly coming (by extracting scheduled tasks in
           relaxed FIFO order);
         - the enqueuing thread does not call any of wait_for_all methods. **/
-    task_stream my_task_stream[num_priority_levels]; // heavy use in stealing loop
+#if __TBB_TASK_PRIORITY
+    task_stream<num_priority_levels> my_task_stream; // heavy use in stealing loop
 #else /* !__TBB_TASK_PRIORITY */
-    //! Task pool for the tasks scheduled via task::enqueue() method
-    /** Such scheduling guarantees eventual execution even if
-        - new tasks are constantly coming (by extracting scheduled tasks in
-          relaxed FIFO order);
-        - the enqueuing thread does not call any of wait_for_all methods. **/
-    task_stream my_task_stream;         // heavy use in stealing loop
-
-    //! Maximal currently busy slot.
-    atomic<unsigned> my_limit;          // heavy use in stealing loop
+    task_stream<1>                   my_task_stream; // heavy use in stealing loop
 #endif /* !__TBB_TASK_PRIORITY */
 
     //! Number of workers that are currently requested from the resource manager
     int my_num_workers_requested;
 
-    //! Number of slots in the arena
-    unsigned my_num_slots;
-
     //! Number of workers requested by the master thread owning the arena
     unsigned my_max_num_workers;
 
-    //! Market owning this arena
-    market* my_market;
-
-    //! ABA prevention marker
-    uintptr_t my_aba_epoch;
-
-    //! FPU control settings of arena's master thread captured at the moment of arena instantiation.
-    __TBB_cpu_ctl_env_t my_cpu_ctl_env;
-
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    int my_num_workers_present;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-
     //! Current task pool state and estimate of available tasks amount.
     /** The estimate is either 0 (SNAPSHOT_EMPTY) or infinity (SNAPSHOT_FULL). 
         Special state is "busy" (any other unsigned value). 
@@ -130,13 +89,6 @@ struct arena_base : padded<intrusive_list_node> {
         my_pool_state to be unsigned. */
     tbb::atomic<uintptr_t> my_pool_state;
 
-#if __TBB_TASK_GROUP_CONTEXT
-    //! Default task group context.
-    /** Used by root tasks allocated directly by the master thread (not from inside
-        a TBB task) without explicit context specification. **/
-    task_group_context* my_default_ctx;
-#endif /* __TBB_TASK_GROUP_CONTEXT */
-
 #if __TBB_SCHEDULER_OBSERVER
     //! List of local observers attached to this arena.
     observer_list my_observers;
@@ -164,6 +116,29 @@ struct arena_base : padded<intrusive_list_node> {
     tbb::atomic<intptr_t> my_skipped_fifo_priority;
 #endif /* !__TBB_TASK_PRIORITY */
 
+    // Below are rarely modified members
+
+    //! Market owning this arena
+    market* my_market;
+
+    //! ABA prevention marker
+    uintptr_t my_aba_epoch;
+
+#if !__TBB_FP_CONTEXT
+    //! FPU control settings of arena's master thread captured at the moment of arena instantiation.
+    cpu_ctl_env my_cpu_ctl_env;
+#endif
+
+#if __TBB_TASK_GROUP_CONTEXT
+    //! Default task group context.
+    /** Used by root tasks allocated directly by the master thread (not from inside
+        a TBB task) without explicit context specification. **/
+    task_group_context* my_default_ctx;
+#endif /* __TBB_TASK_GROUP_CONTEXT */
+
+    //! Number of slots in the arena
+    unsigned my_num_slots;
+
     //! Indicates if there is an oversubscribing worker created to service enqueued tasks.
     bool my_mandatory_concurrency;
 
@@ -191,13 +166,13 @@ private:
     friend class governor;
     friend class task_scheduler_observer_v3;
     friend class market;
+    friend class tbb::task;
     friend class tbb::task_group_context;
     friend class allocate_root_with_context_proxy;
     friend class intrusive_list<arena>;
     friend class interface7::internal::task_arena_base; // declared in scheduler_common.h
     friend class interface7::internal::delegated_task;
     friend class interface7::internal::wait_task;
-    friend struct interface7::internal::wait_body;
 
     typedef padded<arena_base> base_type;
 
@@ -205,10 +180,10 @@ private:
     arena ( market&, unsigned max_num_workers );
 
     //! Allocate an instance of arena.
-    static arena& allocate_arena( market&, unsigned max_num_workers );
+    static arena& allocate_arena( market&, unsigned num_slots );
 
-    static int unsigned num_slots_to_reserve ( unsigned max_num_workers ) {
-        return max(2u, max_num_workers + 1);
+    static int unsigned num_slots_to_reserve ( unsigned num_slots ) {
+        return max(2u, num_slots);
     }
 
     static int allocation_size ( unsigned max_num_workers ) {
@@ -277,7 +252,10 @@ private:
 #if __TBB_TASK_PRIORITY
     //! Check if recent priority changes may bring some tasks to the current priority level soon
     /** /param tasks_present indicates presence of tasks at any priority level. **/
-    inline bool may_have_tasks ( generic_scheduler*, arena_slot&, bool& tasks_present, bool& dequeuing_possible );
+    inline bool may_have_tasks ( generic_scheduler*, bool& tasks_present, bool& dequeuing_possible );
+
+    //! Puts offloaded tasks into global list of orphaned tasks
+    void orphan_offloaded_tasks ( generic_scheduler& s );
 #endif /* __TBB_TASK_PRIORITY */
 
 #if __TBB_COUNT_TASK_NODES
@@ -332,7 +310,7 @@ inline void arena::on_thread_leaving ( ) {
     // In both cases we cannot dereference arena pointer after the refcount is
     // decremented, as our arena may already be destroyed.
     //
-    // If this is the master thread, market can be concurrently destroyed.
+    // If this is the master thread, the market is protected by refcount to it.
     // In case of workers market's liveness is ensured by the RML connection
     // rundown protocol, according to which the client (i.e. the market) lives
     // until RML server notifies it about connection termination, and this
@@ -345,7 +323,7 @@ inline void arena::on_thread_leaving ( ) {
     market* m = my_market;
     __TBB_ASSERT(my_references > int(!is_master), "broken arena reference counter");
     if ( (my_references -= is_master? 1:2 ) == 0 ) // worker's counter starts from bit 1
-        market::try_destroy_arena( m, this, aba_epoch, is_master );
+        m->try_destroy_arena( this, aba_epoch );
 }
 
 template<bool Spawned> void arena::advertise_new_work() {
diff --git a/src/tbb/cache_aligned_allocator.cpp b/src/tbb/cache_aligned_allocator.cpp
index df90029..2a45cfb 100644
--- a/src/tbb/cache_aligned_allocator.cpp
+++ b/src/tbb/cache_aligned_allocator.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -154,7 +146,7 @@ static void* DummyMalloc( size_t size ) {
     return (*MallocHandler)( size );
 }
 
-//! Executed on very first call throught FreeHandler
+//! Executed on very first call through FreeHandler
 static void DummyFree( void * ptr ) {
     initialize_cache_aligned_allocator();
     __TBB_ASSERT( FreeHandler!=&DummyFree, NULL );
@@ -168,13 +160,14 @@ static void* dummy_padded_allocate( size_t bytes, size_t alignment ) {
     return (*padded_allocate_handler)(bytes, alignment);
 }
 
-//! Executed on very first call throught padded_free_handler
+//! Executed on very first call through padded_free_handler
 static void dummy_padded_free( void * ptr ) {
     initialize_cache_aligned_allocator();
     __TBB_ASSERT( padded_free_handler!=&dummy_padded_free, NULL );
     (*padded_free_handler)( ptr );
-}    
+}
 
+// TODO: use CPUID to find actual line size, though consider backward compatibility
 static size_t NFS_LineSize = 128;
 
 size_t NFS_GetLineSize() {
diff --git a/src/tbb/cilk-tbb-interop.h b/src/tbb/cilk-tbb-interop.h
index 1b1498d..5ac8453 100644
--- a/src/tbb/cilk-tbb-interop.h
+++ b/src/tbb/cilk-tbb-interop.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* The API to enable interoperability between Intel(R) Cilk(TM) Plus and 
@@ -79,10 +71,10 @@ typedef __cilk_tbb_retcode (*__cilk_tbb_pfn_unwatch_stacks)(void *data);
       The thunk must be invoked on the thread doing the releasing,
       Must "happen before" the stack is used elsewhere.
 
-   When a non-empty stack is transfered between threads, the first thread must orphan it 
+   When a non-empty stack is transferred between threads, the first thread must orphan it 
    and the second thread must adopt it.
 
-   An empty stack can be transfered similarly, or simply released by the first thread.
+   An empty stack can be transferred similarly, or simply released by the first thread.
 
    Here is a summary of the actions as transitions on a state machine.
 
diff --git a/src/tbb/concurrent_hash_map.cpp b/src/tbb/concurrent_hash_map.cpp
index fc28c6a..2ca8833 100644
--- a/src/tbb/concurrent_hash_map.cpp
+++ b/src/tbb/concurrent_hash_map.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/concurrent_hash_map.h"
diff --git a/src/tbb/concurrent_monitor.cpp b/src/tbb/concurrent_monitor.cpp
index 830a722..f185d92 100644
--- a/src/tbb/concurrent_monitor.cpp
+++ b/src/tbb/concurrent_monitor.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "concurrent_monitor.h"
diff --git a/src/tbb/concurrent_monitor.h b/src/tbb/concurrent_monitor.h
index 838c25a..32afe3d 100644
--- a/src/tbb/concurrent_monitor.h
+++ b/src/tbb/concurrent_monitor.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_concurrent_monitor_H
@@ -124,7 +116,7 @@ public:
         //  Inlining of the method is undesirable, due to extra instructions for
         //  exception support added at caller side.
         __TBB_NOINLINE( void init() );
-        tbb::aligned_space<binary_semaphore, 1> sema;
+        tbb::aligned_space<binary_semaphore> sema;
         __TBB_atomic unsigned epoch;
         tbb::atomic<bool> in_waitset;
         bool  spurious;
@@ -139,7 +131,7 @@ public:
     //! dtor
     ~concurrent_monitor() ; 
 
-    //! prepare wait by inserting 'thr' into the wailt queue
+    //! prepare wait by inserting 'thr' into the wait queue
     void prepare_wait( thread_context& thr, uintptr_t ctx = 0 );
 
     //! Commit wait if event count has not changed; otherwise, cancel wait.
diff --git a/src/tbb/concurrent_queue.cpp b/src/tbb/concurrent_queue.cpp
index 238caab..a380d9f 100644
--- a/src/tbb/concurrent_queue.cpp
+++ b/src/tbb/concurrent_queue.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_stddef.h"
@@ -82,14 +74,18 @@ struct micro_queue {
 
     spin_mutex page_mutex;
 
-    void push( const void* item, ticket k, concurrent_queue_base& base );
+    void push( const void* item, ticket k, concurrent_queue_base& base,
+               concurrent_queue_base::copy_specifics op_type );
+
     void abort_push( ticket k, concurrent_queue_base& base );
 
     bool pop( void* dst, ticket k, concurrent_queue_base& base );
 
-    micro_queue& assign( const micro_queue& src, concurrent_queue_base& base );
+    micro_queue& assign( const micro_queue& src, concurrent_queue_base& base,
+                         concurrent_queue_base::copy_specifics op_type );
 
-    page* make_copy ( concurrent_queue_base& base, const page* src_page, size_t begin_in_page, size_t end_in_page, ticket& g_index ) ;
+    page* make_copy ( concurrent_queue_base& base, const page* src_page, size_t begin_in_page,
+                      size_t end_in_page, ticket& g_index, concurrent_queue_base::copy_specifics op_type ) ;
 
     void make_invalid( ticket k );
 };
@@ -177,7 +173,8 @@ static void* invalid_page;
 //------------------------------------------------------------------------
 // micro_queue
 //------------------------------------------------------------------------
-void micro_queue::push( const void* item, ticket k, concurrent_queue_base& base ) {
+void micro_queue::push( const void* item, ticket k, concurrent_queue_base& base,
+                        concurrent_queue_base::copy_specifics op_type ) {
     k &= -concurrent_queue_rep::n_queue;
     page* p = NULL;
     // find index on page where we would put the data
@@ -218,10 +215,15 @@ void micro_queue::push( const void* item, ticket k, concurrent_queue_base& base
         p = tail_page;
         ITT_NOTIFY( sync_acquired, p );
         __TBB_TRY {
-            base.copy_item( *p, index, item );
+            if( concurrent_queue_base::copy == op_type ) {
+                base.copy_item( *p, index, item );
+            } else {
+                __TBB_ASSERT( concurrent_queue_base::move == op_type, NULL );
+                static_cast<concurrent_queue_base_v8&>(base).move_item( *p, index, item );
+            }
         }  __TBB_CATCH(...) {
             ++base.my_rep->n_invalid_entries;
-            tail_counter += concurrent_queue_rep::n_queue; 
+            tail_counter += concurrent_queue_rep::n_queue;
             __TBB_RETHROW();
         }
         ITT_NOTIFY( sync_releasing, p );
@@ -231,13 +233,13 @@ void micro_queue::push( const void* item, ticket k, concurrent_queue_base& base
     else // no item; this was called from abort_push
         ++base.my_rep->n_invalid_entries;
 
-    tail_counter += concurrent_queue_rep::n_queue; 
+    tail_counter += concurrent_queue_rep::n_queue;
 }
 
 
 void micro_queue::abort_push( ticket k, concurrent_queue_base& base ) {
-    push(NULL, k, base);
-} 
+    push(NULL, k, base, concurrent_queue_base::copy);
+}
 
 bool micro_queue::pop( void* dst, ticket k, concurrent_queue_base& base ) {
     k &= -concurrent_queue_rep::n_queue;
@@ -262,11 +264,11 @@ bool micro_queue::pop( void* dst, ticket k, concurrent_queue_base& base ) {
     return success;
 }
 
-micro_queue& micro_queue::assign( const micro_queue& src, concurrent_queue_base& base )
+micro_queue& micro_queue::assign( const micro_queue& src, concurrent_queue_base& base,
+                                  concurrent_queue_base::copy_specifics op_type )
 {
     head_counter = src.head_counter;
     tail_counter = src.tail_counter;
-    page_mutex   = src.page_mutex;
 
     const page* srcp = src.head_page;
     if( srcp ) {
@@ -276,12 +278,12 @@ micro_queue& micro_queue::assign( const micro_queue& src, concurrent_queue_base&
             size_t index = modulo_power_of_two( head_counter/concurrent_queue_rep::n_queue, base.items_per_page );
             size_t end_in_first_page = (index+n_items<base.items_per_page)?(index+n_items):base.items_per_page;
 
-            head_page = make_copy( base, srcp, index, end_in_first_page, g_index );
+            head_page = make_copy( base, srcp, index, end_in_first_page, g_index, op_type );
             page* cur_page = head_page;
 
             if( srcp != src.tail_page ) {
                 for( srcp = srcp->next; srcp!=src.tail_page; srcp=srcp->next ) {
-                    cur_page->next = make_copy( base, srcp, 0, base.items_per_page, g_index );
+                    cur_page->next = make_copy( base, srcp, 0, base.items_per_page, g_index, op_type );
                     cur_page = cur_page->next;
                 }
 
@@ -290,7 +292,7 @@ micro_queue& micro_queue::assign( const micro_queue& src, concurrent_queue_base&
                 size_t last_index = modulo_power_of_two( tail_counter/concurrent_queue_rep::n_queue, base.items_per_page );
                 if( last_index==0 ) last_index = base.items_per_page;
 
-                cur_page->next = make_copy( base, srcp, 0, last_index, g_index );
+                cur_page->next = make_copy( base, srcp, 0, last_index, g_index, op_type );
                 cur_page = cur_page->next;
             }
             tail_page = cur_page;
@@ -303,14 +305,22 @@ micro_queue& micro_queue::assign( const micro_queue& src, concurrent_queue_base&
     return *this;
 }
 
-concurrent_queue_base::page* micro_queue::make_copy( concurrent_queue_base& base, const concurrent_queue_base::page* src_page, size_t begin_in_page, size_t end_in_page, ticket& g_index )
+concurrent_queue_base::page* micro_queue::make_copy( concurrent_queue_base& base,
+    const concurrent_queue_base::page* src_page, size_t begin_in_page, size_t end_in_page,
+    ticket& g_index, concurrent_queue_base::copy_specifics op_type )
 {
     page* new_page = base.allocate_page();
     new_page->next = NULL;
     new_page->mask = src_page->mask;
     for( ; begin_in_page!=end_in_page; ++begin_in_page, ++g_index )
-        if( new_page->mask & uintptr_t(1)<<begin_in_page )
-            base.copy_page_item( *new_page, begin_in_page, *src_page, begin_in_page );
+        if( new_page->mask & uintptr_t(1)<<begin_in_page ) {
+            if( concurrent_queue_base::copy == op_type ) {
+                base.copy_page_item( *new_page, begin_in_page, *src_page, begin_in_page );
+            } else {
+                __TBB_ASSERT( concurrent_queue_base::move == op_type, NULL );
+                static_cast<concurrent_queue_base_v8&>(base).move_page_item( *new_page, begin_in_page, *src_page, begin_in_page );
+            }
+        }
     return new_page;
 }
 
@@ -365,6 +375,14 @@ concurrent_queue_base_v3::~concurrent_queue_base_v3() {
 }
 
 void concurrent_queue_base_v3::internal_push( const void* src ) {
+    internal_insert_item( src, copy );
+}
+
+void concurrent_queue_base_v8::internal_push_move( const void* src ) {
+   internal_insert_item( src, move );
+}
+
+void concurrent_queue_base_v3::internal_insert_item( const void* src, copy_specifics op_type ) {
     concurrent_queue_rep& r = *my_rep;
     ticket k = r.tail_counter++;
     ptrdiff_t e = my_capacity;
@@ -398,7 +416,7 @@ void concurrent_queue_base_v3::internal_push( const void* src ) {
     }
     ITT_NOTIFY( sync_acquired, &sync_prepare_done );
     __TBB_ASSERT( (ptrdiff_t)(k-r.head_counter)<my_capacity, NULL);
-    r.choose( k ).push( src, k, *this );
+    r.choose( k ).push( src, k, *this, op_type );
     r.items_avail.notify( predicate_leq(k) );
 }
 
@@ -473,6 +491,14 @@ bool concurrent_queue_base_v3::internal_pop_if_present( void* dst ) {
 }
 
 bool concurrent_queue_base_v3::internal_push_if_not_full( const void* src ) {
+    return internal_insert_if_not_full( src, copy );
+}
+
+bool concurrent_queue_base_v8::internal_push_move_if_not_full( const void* src ) {
+    return internal_insert_if_not_full( src, move );
+}
+
+bool concurrent_queue_base_v3::internal_insert_if_not_full( const void* src, copy_specifics op_type ) {
     concurrent_queue_rep& r = *my_rep;
     ticket k = r.tail_counter;
     for(;;) {
@@ -487,8 +513,7 @@ bool concurrent_queue_base_v3::internal_push_if_not_full( const void* src ) {
             break;
         // Another thread claimed the slot, so retry.
     }
-    r.choose(k).push(src,k,*this);
-
+    r.choose(k).push(src, k, *this, op_type);
     r.items_avail.notify( predicate_leq(k) );
     return true;
 }
@@ -525,7 +550,7 @@ void concurrent_queue_base_v3::internal_throw_exception() const {
     throw_exception( eid_bad_alloc );
 }
 
-void concurrent_queue_base_v3::assign( const concurrent_queue_base& src ) {
+void concurrent_queue_base_v3::internal_assign( const concurrent_queue_base& src, copy_specifics op_type ) {
     items_per_page = src.items_per_page;
     my_capacity = src.my_capacity;
 
@@ -536,12 +561,20 @@ void concurrent_queue_base_v3::assign( const concurrent_queue_base& src ) {
 
     // copy micro_queues
     for( size_t i = 0; i<my_rep->n_queue; ++i )
-        my_rep->array[i].assign( src.my_rep->array[i], *this);
+        my_rep->array[i].assign( src.my_rep->array[i], *this, op_type );
 
     __TBB_ASSERT( my_rep->head_counter==src.my_rep->head_counter && my_rep->tail_counter==src.my_rep->tail_counter,
             "the source concurrent queue should not be concurrently modified." );
 }
 
+void concurrent_queue_base_v3::assign( const concurrent_queue_base& src ) {
+    internal_assign( src, copy );
+}
+
+void concurrent_queue_base_v8::move_content( concurrent_queue_base_v8& src ) {
+    internal_assign( src, move );
+}
+
 //------------------------------------------------------------------------
 // concurrent_queue_iterator_rep
 //------------------------------------------------------------------------
diff --git a/src/tbb/concurrent_vector.cpp b/src/tbb/concurrent_vector.cpp
index 93dae9a..587f08a 100644
--- a/src/tbb/concurrent_vector.cpp
+++ b/src/tbb/concurrent_vector.cpp
@@ -1,32 +1,29 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-//this is  the change
+#if (_MSC_VER)
+    //MSVC 10 "deprecated" application of some std:: algorithms to raw pointers as not safe.
+    //The reason is that destination is not checked against bounds/having enough place.
+    #define _SCL_SECURE_NO_WARNINGS
+#endif
+
 #include "tbb/concurrent_vector.h"
 #include "tbb/cache_aligned_allocator.h"
 #include "tbb/tbb_exception.h"
@@ -40,6 +37,7 @@
 #endif
 
 #include <cstring>
+#include <memory> //for uninitialized_fill_n
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     #pragma warning (pop)
@@ -68,14 +66,14 @@ public:
         segment_t *s = v.my_segment;
         segment_index_t u = s==v.my_storage? pointers_per_short_table : pointers_per_long_table;
         segment_index_t k = 0;
-        while( k < u && s[k].array > internal::vector_allocation_error_flag )
+        while( k < u && (s[k].load<relaxed>()==segment_allocated() ))
             ++k;
         return k;
     }
 
     // TODO: optimize accesses to my_first_block
     //! assign first segment size. k - is index of last segment to be allocated, not a count of segments
-    inline static void assign_first_segment_if_neccessary(concurrent_vector_base_v3 &v, segment_index_t k) {
+    inline static void assign_first_segment_if_necessary(concurrent_vector_base_v3 &v, segment_index_t k) {
         if( !v.my_first_block ) {
             /* There was a suggestion to set first segment according to incompact_predicate:
             while( k && !helper::incompact_predicate(segment_size( k ) * element_size) )
@@ -97,13 +95,14 @@ public:
     }
 
     //! Publish segment so other threads can see it.
-    inline static void publish_segment( segment_t& s, void* rhs ) {
+    template<typename argument_type>
+    inline static void publish_segment( segment_t& s, argument_type rhs ) {
         // see also itt_store_pointer_with_release_v3()
-        ITT_NOTIFY( sync_releasing, &s.array );
-        __TBB_store_with_release( s.array, rhs );
+        ITT_NOTIFY( sync_releasing, &s );
+        s.store<release>(rhs);
     }
 
-    static size_type enable_segment(concurrent_vector_base_v3 &v, size_type k, size_type element_size);
+    static size_type enable_segment(concurrent_vector_base_v3 &v, size_type k, size_type element_size, bool mark_as_not_used_on_failure = false);
 
     // TODO: rename as get_segments_table() and return segment pointer
     inline static void extend_table_if_necessary(concurrent_vector_base_v3 &v, size_type k, size_type start ) {
@@ -113,21 +112,26 @@ public:
 
     static void extend_segment_table(concurrent_vector_base_v3 &v, size_type start);
 
-    inline static segment_t &acquire_segment(concurrent_vector_base_v3 &v, size_type index, size_type element_size, bool owner) {
+    struct segment_not_used_predicate: no_assign {
+        segment_t &s;
+        segment_not_used_predicate(segment_t &segment) : s(segment) {}
+        bool operator()() const { return s.load<relaxed>() == segment_not_used ();}
+    };
+    inline static segment_t& acquire_segment(concurrent_vector_base_v3 &v, size_type index, size_type element_size, bool owner) {
         segment_t &s = v.my_segment[index]; // TODO: pass v.my_segment as argument
-        if( !__TBB_load_with_acquire(s.array) ) { // do not check for internal::vector_allocation_error_flag 
+        if( s.load<acquire>() == segment_not_used() ) { // do not check for segment_allocation_failed state
             if( owner ) {
                 enable_segment( v, index, element_size );
             } else {
-                ITT_NOTIFY(sync_prepare, &s.array);
-                spin_wait_while_eq( s.array, (void*)0 );
-                ITT_NOTIFY(sync_acquired, &s.array);
+                ITT_NOTIFY(sync_prepare, &s);
+                spin_wait_while(segment_not_used_predicate(s));
+                ITT_NOTIFY(sync_acquired, &s);
             }
         } else {
-            ITT_NOTIFY(sync_acquired, &s.array);
+            ITT_NOTIFY(sync_acquired, &s);
         }
-        if( s.array <= internal::vector_allocation_error_flag ) // check for internal::vector_allocation_error_flag
-            throw_exception(eid_bad_last_alloc); // throw custom exception, because it's hard to recover after internal::vector_allocation_error_flag correctly
+        if(s.load<relaxed>() != segment_allocated())
+            throw_exception(eid_bad_last_alloc); // throw custom exception, because it's hard to recover correctly after segment_allocation_failed state
         return s;
     }
 
@@ -148,26 +152,27 @@ public:
     inline void next_segment() throw() {
         finish -= sz; start = 0; // offsets from next segment
         if( !k ) k = first_block;
-        else { ++k; sz <<= 1; }
+        else { ++k; sz = segment_size( k ); }
     }
     template<typename F>
     inline size_type apply(const F &func) {
         first_segment();
         while( sz < finish ) { // work for more than one segment
-            func( table[k], static_cast<char*>(table[k].array)+element_size*start, sz-start );
+            //TODO: remove extra load() of table[k] inside func
+            func( table[k], table[k].load<relaxed>().pointer<char>() + element_size*start, sz - start );
             next_segment();
         }
-        func( table[k], static_cast<char*>(table[k].array)+element_size*start, finish-start );
+        func( table[k], table[k].load<relaxed>().pointer<char>() + element_size*start, finish - start );
         return k;
     }
-    inline void *get_segment_ptr(size_type index, bool wait) {
+    inline segment_value_t get_segment_value(size_type index, bool wait) {
         segment_t &s = table[index];
-        if( !__TBB_load_with_acquire(s.array) && wait ) {
-            ITT_NOTIFY(sync_prepare, &s.array);
-            spin_wait_while_eq( s.array, (void*)0 );
-            ITT_NOTIFY(sync_acquired, &s.array);
+        if( wait && (s.load<acquire>() == segment_not_used()) ) {
+            ITT_NOTIFY(sync_prepare, &s);
+            spin_wait_while(segment_not_used_predicate(s));
+            ITT_NOTIFY(sync_acquired, &s);
         }
-        return s.array;
+        return s.load<relaxed>();
     }
     ~helper() {
         if( sz >= finish ) return; // the work is done correctly
@@ -191,7 +196,7 @@ public:
         const void *arg;
         safe_init_body(internal_array_op2 init, const void *src) : func(init), arg(src) {}
         void operator()(segment_t &s, void *begin, size_type n) const {
-            if( s.array <= internal::vector_allocation_error_flag )
+            if(s.load<relaxed>() != segment_allocated())
                 throw_exception(eid_bad_last_alloc); // throw custom exception
             func( begin, arg, n );
         }
@@ -200,7 +205,7 @@ public:
         internal_array_op1 func;
         destroy_body(internal_array_op1 destroy) : func(destroy) {}
         void operator()(segment_t &s, void *begin, size_type n) const {
-            if( s.array > internal::vector_allocation_error_flag )
+            if(s.load<relaxed>() == segment_allocated())
                 func( begin, n );
         }
     };
@@ -211,87 +216,103 @@ void concurrent_vector_base_v3::helper::extend_segment_table(concurrent_vector_b
     // If other threads are trying to set pointers in the short segment, wait for them to finish their
     // assignments before we copy the short segment to the long segment. Note: grow_to_at_least depends on it
     for( segment_index_t i = 0; segment_base(i) < start && v.my_segment == v.my_storage; i++ ){
-        if(!v.my_storage[i].array) {
-            ITT_NOTIFY(sync_prepare, &v.my_storage[i].array);
-            atomic_backoff backoff;
-            do backoff.pause(); while( v.my_segment == v.my_storage && !v.my_storage[i].array );
-            ITT_NOTIFY(sync_acquired, &v.my_storage[i].array);
+        if(v.my_storage[i].load<relaxed>() == segment_not_used()) {
+            ITT_NOTIFY(sync_prepare, &v.my_storage[i]);
+            atomic_backoff backoff(true);
+            while( v.my_segment == v.my_storage && (v.my_storage[i].load<relaxed>() == segment_not_used()) )
+                backoff.pause();
+            ITT_NOTIFY(sync_acquired, &v.my_storage[i]);
         }
     }
     if( v.my_segment != v.my_storage ) return;
 
-    segment_t* s = (segment_t*)NFS_Allocate( pointers_per_long_table, sizeof(segment_t), NULL );
-    // No need to check !s here, because NFS_Allocate throws exception if it cannot allocate the requested storage.
-    std::memset( s, 0, pointers_per_long_table*sizeof(segment_t) );
-    for( segment_index_t i = 0; i < pointers_per_short_table; i++)
-        s[i] = v.my_storage[i];
-    if( v.my_segment.compare_and_swap( s, v.my_storage ) != v.my_storage )
-        NFS_Free( s );
+    segment_t* new_segment_table = (segment_t*)NFS_Allocate( pointers_per_long_table, sizeof(segment_t), NULL );
+    __TBB_ASSERT(new_segment_table, "NFS_Allocate should throws exception if it cannot allocate the requested storage, and not returns zero pointer" );
+    std::uninitialized_fill_n(new_segment_table,size_t(pointers_per_long_table),segment_t()); //init newly allocated table
+   //TODO: replace with static assert
+    __TBB_STATIC_ASSERT(pointers_per_long_table >= pointers_per_short_table, "size of the big table should be not lesser than of the small one, as we copy values to it" );
+    std::copy(v.my_storage, v.my_storage+pointers_per_short_table, new_segment_table);//copy values from old table, here operator= of segment_t is used
+    if( v.my_segment.compare_and_swap( new_segment_table, v.my_storage ) != v.my_storage )
+        NFS_Free( new_segment_table );
     // else TODO: add ITT_NOTIFY signals for v.my_segment?
 }
 
-concurrent_vector_base_v3::size_type concurrent_vector_base_v3::helper::enable_segment(concurrent_vector_base_v3 &v, concurrent_vector_base_v3::size_type k, concurrent_vector_base_v3::size_type element_size) {
+concurrent_vector_base_v3::size_type concurrent_vector_base_v3::helper::enable_segment(concurrent_vector_base_v3 &v, concurrent_vector_base_v3::size_type k, concurrent_vector_base_v3::size_type element_size,
+        bool mark_as_not_used_on_failure ) {
+
+    struct segment_scope_guard : no_copy{
+        segment_t* my_segment_ptr;
+        bool my_mark_as_not_used;
+        segment_scope_guard(segment_t& segment, bool mark_as_not_used) : my_segment_ptr(&segment), my_mark_as_not_used(mark_as_not_used){}
+        void dismiss(){ my_segment_ptr = 0;}
+        ~segment_scope_guard(){
+            if (my_segment_ptr){
+                if (!my_mark_as_not_used){
+                    publish_segment(*my_segment_ptr, segment_allocation_failed());
+                }else{
+                    publish_segment(*my_segment_ptr, segment_not_used());
+                }
+            }
+        }
+    };
+
     segment_t* s = v.my_segment; // TODO: optimize out as argument? Optimize accesses to my_first_block
-    __TBB_ASSERT( s[k].array <= internal::vector_allocation_error_flag, "concurrent operation during growth?" );
+    __TBB_ASSERT(s[k].load<relaxed>() != segment_allocated(), "concurrent operation during growth?");
+
+    size_type size_of_enabled_segment =  segment_size(k);
+    size_type size_to_allocate = size_of_enabled_segment;
     if( !k ) {
-        assign_first_segment_if_neccessary(v, default_initial_segments-1);
-        __TBB_TRY {
-            publish_segment(s[0], allocate_segment(v, segment_size(v.my_first_block) ) );
-        } __TBB_CATCH(...) { // intercept exception here, assign internal::vector_allocation_error_flag value, re-throw exception
-            publish_segment(s[0], internal::vector_allocation_error_flag);
-            __TBB_RETHROW();
-        }
-        return 2;
-    }
-    size_type m = segment_size(k);
-    if( !v.my_first_block ) // push_back only
+        assign_first_segment_if_necessary(v, default_initial_segments-1);
+        size_of_enabled_segment =  2 ;
+        size_to_allocate = segment_size(v.my_first_block);
+
+    } else  {
         spin_wait_while_eq( v.my_first_block, segment_index_t(0) );
-    if( k < v.my_first_block ) {
+    }
+
+    if( k && (k < v.my_first_block)){ //no need to allocate anything
         // s[0].array is changed only once ( 0 -> !0 ) and points to uninitialized memory
-        void *array0 = __TBB_load_with_acquire(s[0].array);
-        if( !array0 ) {
+        segment_value_t array0 = s[0].load<acquire>();
+        if(array0 == segment_not_used()){
             // sync_prepare called only if there is a wait
-            ITT_NOTIFY(sync_prepare, &s[0].array );
-            spin_wait_while_eq( s[0].array, (void*)0 );
-            array0 = __TBB_load_with_acquire(s[0].array);
+            ITT_NOTIFY(sync_prepare, &s[0]);
+            spin_wait_while( segment_not_used_predicate(s[0]));
+            array0 = s[0].load<acquire>();
         }
-        ITT_NOTIFY(sync_acquired, &s[0].array);
-        if( array0 <= internal::vector_allocation_error_flag ) { // check for internal::vector_allocation_error_flag of initial segment
-            publish_segment(s[k], internal::vector_allocation_error_flag); // and assign internal::vector_allocation_error_flag here
+        ITT_NOTIFY(sync_acquired, &s[0]);
+        if(array0 != segment_allocated()) { // check for segment_allocation_failed state of initial segment
+            publish_segment(s[k], segment_allocation_failed()); // and assign segment_allocation_failed state here
             throw_exception(eid_bad_last_alloc); // throw custom exception
         }
         publish_segment( s[k],
-                static_cast<void*>( static_cast<char*>(array0) + segment_base(k)*element_size )
+            static_cast<void*>(array0.pointer<char>() + segment_base(k)*element_size )
         );
     } else {
-        __TBB_TRY {
-            publish_segment(s[k], allocate_segment(v, m));
-        } __TBB_CATCH(...) { // intercept exception here, assign internal::vector_allocation_error_flag value, re-throw exception
-            publish_segment(s[k], internal::vector_allocation_error_flag);
-            __TBB_RETHROW();
-        }
+        segment_scope_guard k_segment_guard(s[k], mark_as_not_used_on_failure);
+        publish_segment(s[k], allocate_segment(v, size_to_allocate));
+        k_segment_guard.dismiss();
     }
-    return m;
+    return size_of_enabled_segment;
 }
 
 void concurrent_vector_base_v3::helper::cleanup() {
     if( !sz ) { // allocation failed, restore the table
         segment_index_t k_start = k, k_end = segment_index_of(finish-1);
         if( segment_base( k_start ) < start )
-            get_segment_ptr(k_start++, true); // wait
+            get_segment_value(k_start++, true); // wait
         if( k_start < first_block ) {
-            void *array0 = get_segment_ptr(0, start>0); // wait if necessary
-            if( array0 && !k_start ) ++k_start;
-            if( array0 <= internal::vector_allocation_error_flag )
+            segment_value_t segment0 = get_segment_value(0, start>0); // wait if necessary
+            if((segment0 != segment_not_used()) && !k_start ) ++k_start;
+            if(segment0 != segment_allocated())
                 for(; k_start < first_block && k_start <= k_end; ++k_start )
-                    publish_segment(table[k_start], internal::vector_allocation_error_flag);
+                    publish_segment(table[k_start], segment_allocation_failed());
             else for(; k_start < first_block && k_start <= k_end; ++k_start )
                     publish_segment(table[k_start], static_cast<void*>(
-                        static_cast<char*>(array0) + segment_base(k_start)*element_size) );
+                        (segment0.pointer<char>()) + segment_base(k_start)*element_size) );
         }
         for(; k_start <= k_end; ++k_start ) // not in first block
-            if( !__TBB_load_with_acquire(table[k_start].array) )
-                publish_segment(table[k_start], internal::vector_allocation_error_flag);
+            if(table[k_start].load<acquire>() == segment_not_used())
+                publish_segment(table[k_start], segment_allocation_failed());
         // fill allocated items
         first_segment();
         goto recover;
@@ -299,22 +320,23 @@ void concurrent_vector_base_v3::helper::cleanup() {
     while( sz <= finish ) { // there is still work for at least one segment
         next_segment();
 recover:
-        void *array = table[k].array;
-        if( array > internal::vector_allocation_error_flag )
-            std::memset( static_cast<char*>(array)+element_size*start, 0, ((sz<finish?sz:finish) - start)*element_size );
-        else __TBB_ASSERT( array == internal::vector_allocation_error_flag, NULL );
+        segment_value_t array = table[k].load<relaxed>();
+        if(array == segment_allocated())
+            std::memset( (array.pointer<char>()) + element_size*start, 0, ((sz<finish?sz:finish) - start)*element_size );
+        else __TBB_ASSERT( array == segment_allocation_failed(), NULL );
     }
 }
 
 concurrent_vector_base_v3::~concurrent_vector_base_v3() {
     segment_t* s = my_segment;
     if( s != my_storage ) {
-        // Clear short segment.
-        for( segment_index_t i = 0; i < pointers_per_short_table; i++)
-            my_storage[i].array = NULL;
+#if TBB_USE_ASSERT
+        //to please assert in segment_t destructor
+        std::fill_n(my_storage,size_t(pointers_per_short_table),segment_t());
+#endif /* TBB_USE_ASSERT */
 #if TBB_USE_DEBUG
         for( segment_index_t i = 0; i < pointers_per_long_table; i++)
-            __TBB_ASSERT( my_segment[i].array <= internal::vector_allocation_error_flag, "Segment should have been freed. Please recompile with new TBB before using exceptions.");
+            __TBB_ASSERT( my_segment[i].load<relaxed>() != segment_allocated(), "Segment should have been freed. Please recompile with new TBB before using exceptions.");
 #endif
         my_segment = my_storage;
         NFS_Free( s );
@@ -337,36 +359,35 @@ void concurrent_vector_base_v3::internal_reserve( size_type n, size_type element
     if( n>max_size )
         throw_exception(eid_reservation_length_error);
     __TBB_ASSERT( n, NULL );
-    helper::assign_first_segment_if_neccessary(*this, segment_index_of(n-1));
+    helper::assign_first_segment_if_necessary(*this, segment_index_of(n-1));
     segment_index_t k = helper::find_segment_end(*this);
-    __TBB_TRY {
-        for( ; segment_base(k)<n; ++k ) {
-            helper::extend_table_if_necessary(*this, k, 0);
-            if(my_segment[k].array <= internal::vector_allocation_error_flag)
-                helper::enable_segment(*this, k, element_size);
-        }
-    } __TBB_CATCH(...) {
-        my_segment[k].array = NULL;
-        __TBB_RETHROW(); // repair and rethrow
+
+    for( ; segment_base(k)<n; ++k ) {
+        helper::extend_table_if_necessary(*this, k, 0);
+        if(my_segment[k].load<relaxed>() != segment_allocated())
+            helper::enable_segment(*this, k, element_size, true ); //in case of failure mark segments as not used
     }
 }
 
+//TODO: Looks like atomic loads can be done relaxed here, as the only place this method is called from
+//is the constructor, which does not require synchronization (for more details see comment in the
+// concurrent_vector_base constructor).
 void concurrent_vector_base_v3::internal_copy( const concurrent_vector_base_v3& src, size_type element_size, internal_array_op2 copy ) {
     size_type n = src.my_early_size;
     __TBB_ASSERT( my_segment == my_storage, NULL);
     if( n ) {
-        helper::assign_first_segment_if_neccessary(*this, segment_index_of(n-1));
+        helper::assign_first_segment_if_necessary(*this, segment_index_of(n-1));
         size_type b;
         for( segment_index_t k=0; (b=segment_base(k))<n; ++k ) {
-            if( (src.my_segment == (segment_t*)src.my_storage && k >= pointers_per_short_table)
-                || src.my_segment[k].array <= internal::vector_allocation_error_flag ) {
+            if( (src.my_segment.load<acquire>() == src.my_storage && k >= pointers_per_short_table)
+                || (src.my_segment[k].load<relaxed>() != segment_allocated())) {
                 my_early_size = b; break;
             }
             helper::extend_table_if_necessary(*this, k, 0);
             size_type m = helper::enable_segment(*this, k, element_size);
             if( m > n-b ) m = n-b;
             my_early_size = b+m;
-            copy( my_segment[k].array, src.my_segment[k].array, m );
+            copy( my_segment[k].load<relaxed>().pointer<void>(), src.my_segment[k].load<relaxed>().pointer<void>(), m );
         }
     }
 }
@@ -378,25 +399,25 @@ void concurrent_vector_base_v3::internal_assign( const concurrent_vector_base_v3
         size_type b=segment_base(k);
         size_type new_end = b>=n ? b : n;
         __TBB_ASSERT( my_early_size>new_end, NULL );
-        if( my_segment[k].array <= internal::vector_allocation_error_flag) // check vector was broken before
+        if( my_segment[k].load<relaxed>() != segment_allocated()) // check vector was broken before
             throw_exception(eid_bad_last_alloc); // throw custom exception
         // destructors are supposed to not throw any exceptions
-        destroy( (char*)my_segment[k].array+element_size*(new_end-b), my_early_size-new_end );
+        destroy( my_segment[k].load<relaxed>().pointer<char>() + element_size*(new_end-b), my_early_size-new_end );
         my_early_size = new_end;
     }
     size_type dst_initialized_size = my_early_size;
     my_early_size = n;
-    helper::assign_first_segment_if_neccessary(*this, segment_index_of(n));
+    helper::assign_first_segment_if_necessary(*this, segment_index_of(n));
     size_type b;
     for( segment_index_t k=0; (b=segment_base(k))<n; ++k ) {
-        if( (src.my_segment == (segment_t*)src.my_storage && k >= pointers_per_short_table)
-            || src.my_segment[k].array <= internal::vector_allocation_error_flag ) { // if source is damaged
+        if( (src.my_segment.load<acquire>() == src.my_storage && k >= pointers_per_short_table)
+            || src.my_segment[k].load<relaxed>() != segment_allocated() ) { // if source is damaged
                 my_early_size = b; break; // TODO: it may cause undestructed items
         }
         helper::extend_table_if_necessary(*this, k, 0);
-        if( !my_segment[k].array )
+        if( my_segment[k].load<relaxed>() == segment_not_used())
             helper::enable_segment(*this, k, element_size);
-        else if( my_segment[k].array <= internal::vector_allocation_error_flag )
+        else if( my_segment[k].load<relaxed>() != segment_allocated() )
             throw_exception(eid_bad_last_alloc); // throw custom exception
         size_type m = k? segment_size(k) : 2;
         if( m > n-b ) m = n-b;
@@ -404,26 +425,26 @@ void concurrent_vector_base_v3::internal_assign( const concurrent_vector_base_v3
         if( dst_initialized_size>b ) {
             a = dst_initialized_size-b;
             if( a>m ) a = m;
-            assign( my_segment[k].array, src.my_segment[k].array, a );
+            assign( my_segment[k].load<relaxed>().pointer<void>(), src.my_segment[k].load<relaxed>().pointer<void>(), a );
             m -= a;
             a *= element_size;
         }
         if( m>0 )
-            copy( (char*)my_segment[k].array+a, (char*)src.my_segment[k].array+a, m );
+            copy( my_segment[k].load<relaxed>().pointer<char>() + a, src.my_segment[k].load<relaxed>().pointer<char>() + a, m );
     }
     __TBB_ASSERT( src.my_early_size==n, "detected use of concurrent_vector::operator= with right side that was concurrently modified" );
 }
 
 void* concurrent_vector_base_v3::internal_push_back( size_type element_size, size_type& index ) {
     __TBB_ASSERT( sizeof(my_early_size)==sizeof(uintptr_t), NULL );
-    size_type tmp = __TBB_FetchAndIncrementWacquire(&my_early_size);
+    size_type tmp = my_early_size.fetch_and_increment<acquire>();
     index = tmp;
     segment_index_t k_old = segment_index_of( tmp );
     size_type base = segment_base(k_old);
     helper::extend_table_if_necessary(*this, k_old, tmp);
     segment_t& s = helper::acquire_segment(*this, k_old, element_size, base==tmp);
     size_type j_begin = tmp-base;
-    return (void*)((char*)s.array+element_size*j_begin);
+    return (void*)(s.load<relaxed>().pointer<char>() + element_size*j_begin);
 }
 
 void concurrent_vector_base_v3::internal_grow_to_at_least( size_type new_size, size_type element_size, internal_array_op2 init, const void *src ) {
@@ -447,14 +468,14 @@ concurrent_vector_base_v3::size_type concurrent_vector_base_v3::internal_grow_to
     }
     for( i = 0; i <= k_old; ++i ) {
         segment_t &s = my_segment[i];
-        if(!s.array) {
-            ITT_NOTIFY(sync_prepare, &s.array);
-            atomic_backoff backoff;
-            do backoff.pause();
-            while( !__TBB_load_with_acquire(my_segment[i].array) ); // my_segment may change concurrently
-            ITT_NOTIFY(sync_acquired, &s.array);
+        if(s.load<relaxed>() == segment_not_used()) {
+            ITT_NOTIFY(sync_prepare, &s);
+            atomic_backoff backoff(true);
+            while( my_segment[i].load<acquire>() == segment_not_used() ) // my_segment may change concurrently
+                backoff.pause();
+            ITT_NOTIFY(sync_acquired, &s);
         }
-        if( my_segment[i].array <= internal::vector_allocation_error_flag )
+        if( my_segment[i].load<relaxed>() != segment_allocated() )
             throw_exception(eid_bad_last_alloc);
     }
 #if TBB_USE_DEBUG
@@ -473,7 +494,7 @@ concurrent_vector_base_v3::size_type concurrent_vector_base_v3::internal_grow_by
 void concurrent_vector_base_v3::internal_grow( const size_type start, size_type finish, size_type element_size, internal_array_op2 init, const void *src ) {
     __TBB_ASSERT( start<finish, "start must be less than finish" );
     segment_index_t k_start = segment_index_of(start), k_end = segment_index_of(finish-1);
-    helper::assign_first_segment_if_neccessary(*this, k_end);
+    helper::assign_first_segment_if_necessary(*this, k_end);
     helper::extend_table_if_necessary(*this, k_end, start);
     helper range(my_segment, my_first_block, element_size, k_start, start, finish);
     for(; k_end > k_start && k_end >= range.first_block; --k_end ) // allocate segments in reverse order
@@ -525,35 +546,39 @@ void *concurrent_vector_base_v3::internal_compact( size_type element_size, void
 
     segment_t *const segment_table = my_segment;
     internal_segments_table &old = *static_cast<internal_segments_table*>( table );
-    std::memset(&old, 0, sizeof(old));
+    //this call is left here for sake of backward compatibility, and as a placeholder for table initialization
+    std::fill_n(old.table,sizeof(old.table)/sizeof(old.table[0]),segment_t());
+    old.first_block=0;
 
     if ( k != first_block && k ) // first segment optimization
     {
         // exception can occur here
-        void *seg = old.table[0] = helper::allocate_segment( *this, segment_size(k) );
+        void *seg = helper::allocate_segment(*this, segment_size(k));
+        old.table[0].store<relaxed>(seg);
         old.first_block = k; // fill info for freeing new segment if exception occurs
         // copy items to the new segment
         size_type my_segment_size = segment_size( first_block );
         for (segment_index_t i = 0, j = 0; i < k && j < my_size; j = my_segment_size) {
-            __TBB_ASSERT( segment_table[i].array > internal::vector_allocation_error_flag, NULL);
+            __TBB_ASSERT( segment_table[i].load<relaxed>() == segment_allocated(), NULL);
             void *s = static_cast<void*>(
                 static_cast<char*>(seg) + segment_base(i)*element_size );
+            //TODO: refactor to use std::min
             if(j + my_segment_size >= my_size) my_segment_size = my_size - j;
             __TBB_TRY { // exception can occur here
-                copy( s, segment_table[i].array, my_segment_size );
+                copy( s, segment_table[i].load<relaxed>().pointer<void>(), my_segment_size );
             } __TBB_CATCH(...) { // destroy all the already copied items
-                helper for_each(reinterpret_cast<segment_t*>(&old.table[0]), old.first_block, element_size,
-                    0, 0, segment_base(i)+my_segment_size);
+                helper for_each(&old.table[0], old.first_block, element_size,
+                    0, 0, segment_base(i)+ my_segment_size);
                 for_each.apply( helper::destroy_body(destroy) );
                 __TBB_RETHROW();
             }
             my_segment_size = i? segment_size( ++i ) : segment_size( i = first_block );
         }
         // commit the changes
-        memcpy(old.table, segment_table, k * sizeof(segment_t));
+        std::copy(segment_table,segment_table + k,old.table);
         for (segment_index_t i = 0; i < k; i++) {
-            segment_table[i].array = static_cast<void*>(
-                static_cast<char*>(seg) + segment_base(i)*element_size );
+            segment_table[i].store<relaxed>(static_cast<void*>(
+                static_cast<char*>(seg) + segment_base(i)*element_size ));
         }
         old.first_block = first_block; my_first_block = k; // now, first_block != my_first_block
         // destroy original copies
@@ -561,15 +586,15 @@ void *concurrent_vector_base_v3::internal_compact( size_type element_size, void
         for (segment_index_t i = 0, j = 0; i < k && j < my_size; j = my_segment_size) {
             if(j + my_segment_size >= my_size) my_segment_size = my_size - j;
             // destructors are supposed to not throw any exceptions
-            destroy( old.table[i], my_segment_size );
+            destroy( old.table[i].load<relaxed>().pointer<void>(), my_segment_size );
             my_segment_size = i? segment_size( ++i ) : segment_size( i = first_block );
         }
     }
     // free unnecessary segments allocated by reserve() call
     if ( k_stop < k_end ) {
         old.first_block = first_block;
-        memcpy(old.table+k_stop, segment_table+k_stop, (k_end-k_stop) * sizeof(segment_t));
-        std::memset(segment_table+k_stop, 0, (k_end-k_stop) * sizeof(segment_t));
+        std::copy(segment_table+k_stop, segment_table+k_end, old.table+k_stop );
+        std::fill_n(segment_table+k_stop, (k_end-k_stop), segment_t());
         if( !k ) my_first_block = 0;
     }
     return table;
@@ -577,27 +602,28 @@ void *concurrent_vector_base_v3::internal_compact( size_type element_size, void
 
 void concurrent_vector_base_v3::internal_swap(concurrent_vector_base_v3& v)
 {
-    size_type my_sz = my_early_size, v_sz = v.my_early_size;
+    size_type my_sz = my_early_size.load<acquire>();
+    size_type v_sz = v.my_early_size.load<relaxed>();
     if(!my_sz && !v_sz) return;
-    size_type tmp = my_first_block; my_first_block = v.my_first_block; v.my_first_block = tmp;
-    bool my_short = (my_segment == my_storage), v_short  = (v.my_segment == v.my_storage);
-    if ( my_short && v_short ) { // swap both tables
-        char tbl[pointers_per_short_table * sizeof(segment_t)];
-        memcpy(tbl, my_storage, pointers_per_short_table * sizeof(segment_t));
-        memcpy(my_storage, v.my_storage, pointers_per_short_table * sizeof(segment_t));
-        memcpy(v.my_storage, tbl, pointers_per_short_table * sizeof(segment_t));
-    }
-    else if ( my_short ) { // my -> v
-        memcpy(v.my_storage, my_storage, pointers_per_short_table * sizeof(segment_t));
-        my_segment = v.my_segment; v.my_segment = v.my_storage;
-    }
-    else if ( v_short ) { // v -> my
-        memcpy(my_storage, v.my_storage, pointers_per_short_table * sizeof(segment_t));
-        v.my_segment = my_segment; my_segment = my_storage;
-    } else {
-        segment_t *ptr = my_segment; my_segment = v.my_segment; v.my_segment = ptr;
+
+    bool my_was_short = (my_segment.load<relaxed>() == my_storage);
+    bool v_was_short  = (v.my_segment.load<relaxed>() == v.my_storage);
+
+    //In C++11, this would be: swap(my_storage, v.my_storage);
+    for (int i=0; i < pointers_per_short_table; ++i){
+        swap(my_storage[i], v.my_storage[i]);
     }
-    my_early_size = v_sz; v.my_early_size = my_sz;
+    tbb::internal::swap<relaxed>(my_first_block, v.my_first_block);
+    tbb::internal::swap<relaxed>(my_segment, v.my_segment);
+    if (my_was_short){
+        v.my_segment.store<relaxed>(v.my_storage);
+    }
+    if(v_was_short){
+        my_segment.store<relaxed>(my_storage);
+    }
+
+    my_early_size.store<relaxed>(v_sz);
+    v.my_early_size.store<release>(my_sz);
 }
 
 } // namespace internal
diff --git a/src/tbb/condition_variable.cpp b/src/tbb/condition_variable.cpp
index 86a0a00..70a0ec3 100644
--- a/src/tbb/condition_variable.cpp
+++ b/src/tbb/condition_variable.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
diff --git a/src/tbb/critical_section.cpp b/src/tbb/critical_section.cpp
index eff882f..9d4fd91 100644
--- a/src/tbb/critical_section.cpp
+++ b/src/tbb/critical_section.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/critical_section.h"
diff --git a/src/tbb/custom_scheduler.h b/src/tbb/custom_scheduler.h
index 9927642..4ed0854 100644
--- a/src/tbb/custom_scheduler.h
+++ b/src/tbb/custom_scheduler.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_custom_scheduler_H
@@ -139,36 +131,36 @@ public:
 
     //! Try getting a task from the mailbox or stealing from another scheduler.
     /** Returns the stolen task or NULL if all attempts fail. */
-    /* override */ task* receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count, bool return_if_no_work );
+    /* override */ task* receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count );
 
 }; // class custom_scheduler<>
 
 //------------------------------------------------------------------------
 // custom_scheduler methods
 //------------------------------------------------------------------------
-
 template<typename SchedulerTraits>
-task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count,
-                                                                bool return_if_no_work ) {
+task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count ) {
     task* t = NULL;
-    bool outermost_dispatch_level = return_if_no_work || master_outermost_level();
+    bool outermost_worker_level = worker_outermost_level();
+    bool outermost_dispatch_level = outermost_worker_level || master_outermost_level();
     bool can_steal_here = can_steal();
     my_inbox.set_is_idle( true );
+#if __TBB_HOARD_NONLOCAL_TASKS
+    __TBB_ASSERT(!my_nonlocal_free_list, NULL);
+#endif
 #if __TBB_TASK_PRIORITY
-    if ( return_if_no_work && my_arena->my_skipped_fifo_priority ) {
-        // This thread can dequeue FIFO tasks, and some priority levels of
-        // FIFO tasks have been bypassed (to prevent deadlock caused by
-        // dynamic priority changes in nested task group hierarchy).
-        intptr_t skipped_priority = my_arena->my_skipped_fifo_priority;
-        if ( my_arena->my_skipped_fifo_priority.compare_and_swap(0, skipped_priority) == skipped_priority &&
-             skipped_priority > my_arena->my_top_priority )
-        {
-            my_market->update_arena_priority( *my_arena, skipped_priority );
+    if ( outermost_dispatch_level ) {
+        if ( intptr_t skipped_priority = my_arena->my_skipped_fifo_priority ) {
+            // This thread can dequeue FIFO tasks, and some priority levels of
+            // FIFO tasks have been bypassed (to prevent deadlock caused by
+            // dynamic priority changes in nested task group hierarchy).
+            if ( my_arena->my_skipped_fifo_priority.compare_and_swap(0, skipped_priority) == skipped_priority
+                 && skipped_priority > my_arena->my_top_priority )
+            {
+                my_market->update_arena_priority( *my_arena, skipped_priority );
+            }
         }
     }
-    task_stream *ts;
-#else /* !__TBB_TASK_PRIORITY */
-    task_stream *ts = &my_arena->my_task_stream;
 #endif /* !__TBB_TASK_PRIORITY */
     // TODO: Try to find a place to reset my_limit (under market's lock)
     // The number of slots potentially used in the arena. Updated once in a while, as my_limit changes rarely.
@@ -193,7 +185,7 @@ task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic ref
             break; // exit stealing loop and return;
         }
         // Check if the resource manager requires our arena to relinquish some threads
-        if ( return_if_no_work && my_arena->my_num_workers_allotted < my_arena->num_workers_active() ) {
+        if ( outermost_worker_level && my_arena->my_num_workers_allotted < my_arena->num_workers_active() ) {
 #if !__TBB_TASK_ARENA
             __TBB_ASSERT( is_worker(), NULL );
 #endif
@@ -202,7 +194,9 @@ task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic ref
             return NULL;
         }
 #if __TBB_TASK_PRIORITY
-        ts = &my_arena->my_task_stream[my_arena->my_top_priority];
+        const int p = int(my_arena->my_top_priority);
+#else /* !__TBB_TASK_PRIORITY */
+        static const int p = 0;
 #endif
         // Check if there are tasks mailed to this thread via task-to-thread affinity mechanism.
         __TBB_ASSERT(my_affinity_id, NULL);
@@ -210,9 +204,10 @@ task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic ref
             GATHER_STATISTIC( ++my_counters.mails_received );
         }
         // Check if there are tasks in starvation-resistant stream.
-        // Only allowed for workers with empty stack, which is identified by return_if_no_work.
-        else if ( outermost_dispatch_level && !ts->empty() && (t = ts->pop( my_arena_slot->hint_for_pop)) ) {
-            ITT_NOTIFY(sync_acquired, ts);
+        // Only allowed at the outermost dispatch level.
+        else if ( outermost_dispatch_level && !my_arena->my_task_stream.empty(p)
+                  && (t = my_arena->my_task_stream.pop( p, my_arena_slot->hint_for_pop)) ) {
+            ITT_NOTIFY(sync_acquired, &my_arena->my_task_stream);
             // just proceed with the obtained task
         }
 #if __TBB_TASK_PRIORITY
@@ -240,7 +235,7 @@ task* custom_scheduler<SchedulerTraits>::receive_or_steal_task( __TBB_atomic ref
                 t = tp.extract_task<task_proxy::pool_bit>();
                 if ( !t ) {
                     // Proxy was empty, so it's our responsibility to free it
-                    free_task<small_task>(tp);
+                    free_task<no_cache_small_task>(tp);
                     goto fail;
                 }
                 GATHER_STATISTIC( ++my_counters.proxies_stolen );
@@ -296,7 +291,7 @@ fail:
                 if ( orphans ) {
                     task** link = NULL;
                     // Get local counter out of the way (we've just brought in external tasks)
-                    my_local_reload_epoch = 0;
+                    my_local_reload_epoch--;
                     t = reload_tasks( orphans, link, effective_reference_priority() );
                     if ( orphans ) {
                         *link = my_offloaded_tasks;
@@ -318,10 +313,10 @@ fail:
                 // When a worker thread has nothing to do, return it to RML.
                 // For purposes of affinity support, the thread is considered idle while in RML.
 #if __TBB_TASK_PRIORITY
-                if( return_if_no_work || my_arena->my_top_priority > my_arena->my_bottom_priority ) {
-                    if ( my_arena->is_out_of_work() && return_if_no_work ) {
+                if( outermost_worker_level || my_arena->my_top_priority > my_arena->my_bottom_priority ) {
+                    if ( my_arena->is_out_of_work() && outermost_worker_level ) {
 #else /* !__TBB_TASK_PRIORITY */
-                    if ( return_if_no_work && my_arena->is_out_of_work() ) {
+                    if ( outermost_worker_level && my_arena->is_out_of_work() ) {
 #endif /* !__TBB_TASK_PRIORITY */
                         if( SchedulerTraits::itt_possible )
                             ITT_NOTIFY(sync_cancel, this);
@@ -331,16 +326,17 @@ fail:
                 }
                 if ( my_offloaded_tasks ) {
                     // Safeguard against any sloppiness in managing reload epoch
-                    // counter (e.g. on the hot path bacause of performance reasons).
-                    my_local_reload_epoch = 0;
+                    // counter (e.g. on the hot path because of performance reasons).
+                    my_local_reload_epoch--;
                     // Break the deadlock caused by a higher priority dispatch loop
                     // stealing and offloading a lower priority task. Priority check
                     // at the stealing moment cannot completely preclude such cases
                     // because priorities can changes dynamically.
-                    if ( !return_if_no_work && *my_ref_top_priority > my_arena->my_top_priority ) {
+                    if ( !outermost_worker_level && *my_ref_top_priority > my_arena->my_top_priority ) {
                         GATHER_STATISTIC( ++my_counters.prio_ref_fixups );
                         my_ref_top_priority = &my_arena->my_top_priority;
-                        my_ref_reload_epoch = &my_arena->my_reload_epoch;
+                        // it's expected that only outermost workers can use global reload epoch
+                        __TBB_ASSERT(my_ref_reload_epoch == &my_arena->my_reload_epoch, NULL);
                     }
                 }
 #endif /* __TBB_TASK_PRIORITY */
@@ -366,7 +362,7 @@ void custom_scheduler<SchedulerTraits>::local_wait_for_all( task& parent, task*
     __TBB_ASSERT( parent.prefix().context || (is_worker() && &parent == my_dummy_task), "parent task does not have context" );
 #endif /* __TBB_TASK_GROUP_CONTEXT */
     task* t = child;
-    // Constant all_local_work_done is an unreacheable refcount value that prevents
+    // Constant all_local_work_done is an unreachable refcount value that prevents
     // early quitting the dispatch loop. It is defined to be in the middle of the range
     // of negative values representable by the reference_count type.
     static const reference_count
@@ -397,20 +393,27 @@ void custom_scheduler<SchedulerTraits>::local_wait_for_all( task& parent, task*
             // executed so that dynamic priority changes did not cause deadlock.
             my_ref_top_priority = &parent.prefix().context->my_priority;
             my_ref_reload_epoch = &my_arena->my_reload_epoch;
+            if(my_ref_reload_epoch != old_ref_reload_epoch)
+                my_local_reload_epoch = *my_ref_reload_epoch-1;
         }
 #endif /* __TBB_TASK_PRIORITY */
     }
-#if __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS
+
+    cpu_ctl_env_helper cpu_ctl_helper;
+    if ( t )
+        cpu_ctl_helper.set_env( __TBB_CONTEXT_ARG1(t->prefix().context) );
+
+#if TBB_USE_EXCEPTIONS
     // Infinite safeguard EH loop
     for (;;) {
     try {
-#endif /* __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS */
+#endif /* TBB_USE_EXCEPTIONS */
     // Outer loop receives tasks from global environment (via mailbox, FIFO queue(s),
     // and by  stealing from other threads' task pools).
     // All exit points from the dispatch loop are located in its immediate scope.
     for(;;) {
         // Middle loop retrieves tasks from the local task pool.
-        do {
+        for(;;) {
             // Inner loop evaluates tasks coming from nesting loops and those returned
             // by just executed tasks (bypassing spawn or enqueue calls).
             while(t) {
@@ -419,6 +422,7 @@ void custom_scheduler<SchedulerTraits>::local_wait_for_all( task& parent, task*
                 __TBB_ASSERT( t->prefix().owner, NULL );
                 assert_task_valid(*t);
 #if __TBB_TASK_GROUP_CONTEXT && TBB_USE_ASSERT
+                assert_context_valid(t->prefix().context);
                 if ( !t->prefix().context->my_cancellation_requested )
 #endif
                 __TBB_ASSERT( 1L<<t->state() & (1L<<task::allocated|1L<<task::ready|1L<<task::reexecute), NULL );
@@ -548,7 +552,11 @@ void custom_scheduler<SchedulerTraits>::local_wait_for_all( task& parent, task*
             }
             __TBB_ASSERT(!t || !is_proxy(*t),"unexpected proxy");
             assert_task_pool_valid();
-        } while( t ); // end of local task pool retrieval loop
+
+            if ( !t ) break;
+
+            cpu_ctl_helper.set_env( __TBB_CONTEXT_ARG1(t->prefix().context) );
+        }; // end of local task pool retrieval loop
 
 #if __TBB_TASK_PRIORITY
 stealing_ground:
@@ -562,10 +570,13 @@ stealing_ground:
 #endif
         if ( quit_point == all_local_work_done ) {
             __TBB_ASSERT( !in_arena() && is_quiescent_local_task_pool_reset(), NULL );
+            __TBB_ASSERT( !worker_outermost_level(), NULL );
             my_innermost_running_task = my_dispatching_task;
             my_dispatching_task = old_dispatching_task;
 #if __TBB_TASK_PRIORITY
             my_ref_top_priority = old_ref_top_priority;
+            if(my_ref_reload_epoch != old_ref_reload_epoch)
+                my_local_reload_epoch = *old_ref_reload_epoch-1;
             my_ref_reload_epoch = old_ref_reload_epoch;
 #endif /* __TBB_TASK_PRIORITY */
             return;
@@ -577,12 +588,18 @@ stealing_ground:
         // Dispatching task pointer is NULL *iff* this is a worker thread in its outermost
         // dispatch loop (i.e. its execution stack is empty). In this case it should exit it
         // either when there is no more work in the current arena, or when revoked by the market.
-        t = receive_or_steal_task( parent.prefix().ref_count, worker_outermost_level() );
+        
+        t = receive_or_steal_task( parent.prefix().ref_count );
         if ( !t )
             goto done;
         __TBB_ASSERT(!is_proxy(*t),"unexpected proxy");
+
+        // The user can capture another the FPU settings to the context so the
+        // cached data in the helper can be out-of-date and we cannot do fast
+        // check.
+        cpu_ctl_helper.set_env( __TBB_CONTEXT_ARG1(t->prefix().context) );
     } // end of infinite stealing loop
-#if __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS
+#if TBB_USE_EXCEPTIONS
     __TBB_ASSERT( false, "Must never get here" );
     } // end of try-block
     TbbCatchAll( t->prefix().context );
@@ -606,12 +623,14 @@ stealing_ground:
     }
     } // end of infinite EH loop
     __TBB_ASSERT( false, "Must never get here too" );
-#endif /* __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS */
+#endif /* TBB_USE_EXCEPTIONS */
 done:
     my_innermost_running_task = my_dispatching_task;
     my_dispatching_task = old_dispatching_task;
 #if __TBB_TASK_PRIORITY
     my_ref_top_priority = old_ref_top_priority;
+    if(my_ref_reload_epoch != old_ref_reload_epoch)
+        my_local_reload_epoch = *old_ref_reload_epoch-1;
     my_ref_reload_epoch = old_ref_reload_epoch;
 #endif /* __TBB_TASK_PRIORITY */
     if ( !ConcurrentWaitsEnabled(parent) ) {
@@ -643,8 +662,13 @@ done:
             // TODO: Add assertion that master's dummy task context does not have children
             parent_ctx->my_state &= ~(uintptr_t)task_group_context::may_have_children;
         }
-        if ( pe )
+        if ( pe ) {
+            // On Windows, FPU control settings changed in the helper destructor are not visible
+            // outside a catch block. So restore the default settings manually before rethrowing
+            // the exception.
+            cpu_ctl_helper.restore_default();
             pe->throw_self();
+        }
     }
     __TBB_ASSERT(!is_worker() || !CancellationInfoPresent(*my_dummy_task),
         "Worker's dummy task context modified");
diff --git a/src/tbb/dynamic_link.cpp b/src/tbb/dynamic_link.cpp
index e48da26..555802e 100644
--- a/src/tbb/dynamic_link.cpp
+++ b/src/tbb/dynamic_link.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "dynamic_link.h"
@@ -55,19 +47,16 @@
     #include <stdlib.h>
 #endif /* _WIN32 */
 
-#if __TBB_WEAK_SYMBOLS_PRESENT
+#if __TBB_WEAK_SYMBOLS_PRESENT && !__TBB_DYNAMIC_LOAD_ENABLED
     //TODO: use function attribute for weak symbols instead of the pragma.
     #pragma weak dlopen
     #pragma weak dlsym
-    #pragma weak dlclose
-    #pragma weak dlerror
-    #pragma weak dladdr
-#endif /* __TBB_WEAK_SYMBOLS_PRESENT */
+#endif /* __TBB_WEAK_SYMBOLS_PRESENT && !__TBB_DYNAMIC_LOAD_ENABLED */
 
 #include "tbb/tbb_misc.h"
 
 #define __USE_TBB_ATOMICS       ( !(__linux__&&__ia64__) || __TBB_BUILD )
-#define __USE_STATIC_DL_INIT    (!__ANDROID__)
+#define __USE_STATIC_DL_INIT    ( !__ANDROID__ )
 
 #if !__USE_TBB_ATOMICS
 #include <pthread.h>
@@ -119,22 +108,21 @@ OPEN_INTERNAL_NAMESPACE
 
 #if __TBB_WEAK_SYMBOLS_PRESENT || __TBB_DYNAMIC_LOAD_ENABLED
 
-#if !defined(DYNAMIC_LINK_WARNING) && !__TBB_WIN8UI_SUPPORT
+#if !defined(DYNAMIC_LINK_WARNING) && !__TBB_WIN8UI_SUPPORT && __TBB_DYNAMIC_LOAD_ENABLED
     // Report runtime errors and continue.
     #define DYNAMIC_LINK_WARNING dynamic_link_warning
     static void dynamic_link_warning( dynamic_link_error_t code, ... ) {
         (void) code;
     } // library_warning
-#endif /* DYNAMIC_LINK_WARNING */
+#endif /* !defined(DYNAMIC_LINK_WARNING) && !__TBB_WIN8UI_SUPPORT && __TBB_DYNAMIC_LOAD_ENABLED */
     static bool resolve_symbols( dynamic_link_handle module, const dynamic_link_descriptor descriptors[], size_t required )
     {
-        LIBRARY_ASSERT( module != NULL, "Module handle is NULL" );
-        if ( module == NULL )
+        if ( !module )
             return false;
 
-        #if __TBB_WEAK_SYMBOLS_PRESENT
+        #if !__TBB_DYNAMIC_LOAD_ENABLED /* only __TBB_WEAK_SYMBOLS_PRESENT is defined */
             if ( !dlsym ) return false;
-        #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
+        #endif /* !__TBB_DYNAMIC_LOAD_ENABLED */
 
         const size_t n_desc=20; // Usually we don't have more than 20 descriptors per library
         LIBRARY_ASSERT( required <= n_desc, "Too many descriptors is required" );
@@ -175,6 +163,7 @@ OPEN_INTERNAL_NAMESPACE
     void dynamic_unlink_all() {
     }
 #else
+    #if __TBB_DYNAMIC_LOAD_ENABLED
 /*
     There is a security issue on Windows: LoadLibrary() may load and execute malicious code.
     See http://www.microsoft.com/technet/security/advisory/2269637.mspx for details.
@@ -199,53 +188,78 @@ OPEN_INTERNAL_NAMESPACE
     // the constructor is called.
     #define MAX_LOADED_MODULES 8 // The number of maximum possible modules which can be loaded
 
-    struct handle_storage {
-    #if __USE_TBB_ATOMICS
-        ::tbb::atomic<size_t> my_size;
-    #else
-        size_t my_size;
+#if __USE_TBB_ATOMICS
+    typedef ::tbb::atomic<size_t> atomic_incrementer;
+    void init_atomic_incrementer( atomic_incrementer & ) {}
+
+    static void atomic_once( void( *func ) (void), tbb::atomic< tbb::internal::do_once_state > &once_state ) {
+        tbb::internal::atomic_do_once( func, once_state );
+    }
+#define ATOMIC_ONCE_DECL( var ) tbb::atomic< tbb::internal::do_once_state > var
+#else
+    static void pthread_assert( int error_code, const char* msg ) {
+        LIBRARY_ASSERT( error_code == 0, msg );
+    }
+
+    class atomic_incrementer {
+        size_t my_val;
         pthread_spinlock_t my_lock;
-    #endif
+    public:
+        void init() {
+            my_val = 0;
+            pthread_assert( pthread_spin_init( &my_lock, PTHREAD_PROCESS_PRIVATE ), "pthread_spin_init failed" );
+        }
+        size_t operator++(int) {
+            pthread_assert( pthread_spin_lock( &my_lock ), "pthread_spin_lock failed" );
+            size_t prev_val = my_val++;
+            pthread_assert( pthread_spin_unlock( &my_lock ), "pthread_spin_unlock failed" );
+            return prev_val;
+        }
+        operator size_t() {
+            pthread_assert( pthread_spin_lock( &my_lock ), "pthread_spin_lock failed" );
+            size_t val = my_val;
+            pthread_assert( pthread_spin_unlock( &my_lock ), "pthread_spin_unlock failed" );
+            return val;
+        }
+        ~atomic_incrementer() {
+            pthread_assert( pthread_spin_destroy( &my_lock ), "pthread_spin_destroy failed" );
+        }
+    };
+
+    void init_atomic_incrementer( atomic_incrementer &r ) {
+        r.init();
+    }
+
+    static void atomic_once( void( *func ) (), pthread_once_t &once_state ) {
+        pthread_assert( pthread_once( &once_state, func ), "pthread_once failed" );
+    }
+#define ATOMIC_ONCE_DECL( var ) pthread_once_t var = PTHREAD_ONCE_INIT
+#endif /* __USE_TBB_ATOMICS */
+
+    struct handles_t {
+        atomic_incrementer my_size;
         dynamic_link_handle my_handles[MAX_LOADED_MODULES];
 
-        void add_handle(const dynamic_link_handle &handle) {
-        #if !__USE_TBB_ATOMICS
-            int res = pthread_spin_lock( &my_lock );
-            LIBRARY_ASSERT( res==0, "pthread_spin_lock failed" );
-        #endif
+        void init() {
+            init_atomic_incrementer( my_size );
+        }
+
+        void add(const dynamic_link_handle &handle) {
             const size_t ind = my_size++;
-        #if !__USE_TBB_ATOMICS
-            res = pthread_spin_unlock( &my_lock );
-            LIBRARY_ASSERT( res==0, "pthread_spin_unlock failed" );
-        #endif
             LIBRARY_ASSERT( ind < MAX_LOADED_MODULES, "Too many modules are loaded" );
             my_handles[ind] = handle;
         }
 
-        void free_handles() {
+        void free() {
             const size_t size = my_size;
             for (size_t i=0; i<size; ++i)
                 dynamic_unlink( my_handles[i] );
         }
-    };
-
-    handle_storage handles;
-
-#if __USE_TBB_ATOMICS
-    static void atomic_once ( void (*func) (void), tbb::atomic< tbb::internal::do_once_state > &once_state ) {
-        tbb::internal::atomic_do_once( func, once_state );
-    }
-#define ATOMIC_ONCE_DECL( var ) tbb::atomic< tbb::internal::do_once_state > var
-#else
-    static void atomic_once ( void (*func) (), pthread_once_t &once_state ) {
-        pthread_once( &once_state, func );
-    }
-#define ATOMIC_ONCE_DECL( var ) pthread_once_t var = PTHREAD_ONCE_INIT
-#endif
+    } handles;
 
     ATOMIC_ONCE_DECL( init_dl_data_state );
 
-    static struct _ap_data {
+    static struct ap_data_t {
         char _path[PATH_MAX+1];
         size_t _len;
     } ap_data;
@@ -287,9 +301,6 @@ OPEN_INTERNAL_NAMESPACE
         *(backslash+1) = 0;
     #else
         // Get the library path
-        #if __TBB_WEAK_SYMBOLS_PRESENT
-            if ( !dladdr || !dlerror ) return;
-        #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
         Dl_info dlinfo;
         int res = dladdr( (void*)&dynamic_link, &dlinfo ); // any function inside the library can be used for the address
         if ( !res ) {
@@ -337,33 +348,10 @@ OPEN_INTERNAL_NAMESPACE
     }
 
     static void init_dl_data() {
+        handles.init();
         init_ap_data();
-    #if !__USE_TBB_ATOMICS
-        int res;
-        res = pthread_spin_init( &handles.my_lock, PTHREAD_PROCESS_SHARED );
-        LIBRARY_ASSERT( res==0, "pthread_spin_init failed" );
-    #endif
     }
 
-    // ap_data structure is initialized with current directory on Linux.
-    // So it should be initialized as soon as possible since the current directory may be changed.
-    // static_init_ap_data object provides this initialization during library loading.
-    static class _static_init_dl_data {
-    public:
-        _static_init_dl_data() {
-    #if __USE_STATIC_DL_INIT
-            atomic_once( &init_dl_data, init_dl_data_state );
-    #endif
-        }
-    #if !__USE_TBB_ATOMICS
-        ~_static_init_dl_data() {
-            int res;
-            res = pthread_spin_destroy( &handles.my_lock );
-            LIBRARY_ASSERT( res==0, "pthread_spin_destroy failed" );
-        }
-    #endif
-    } static_init_dl_data;
-
     /*
         The function constructs absolute path for given relative path. Important: Base directory is not
         current one, it is the directory libtbb.so loaded from.
@@ -377,10 +365,7 @@ OPEN_INTERNAL_NAMESPACE
                     otherwise -- Ok, number of characters (not counting terminating null) written to
                     buffer.
     */
-    #if __TBB_DYNAMIC_LOAD_ENABLED
     static size_t abs_path( char const * name, char * path, size_t len ) {
-        atomic_once( &init_dl_data, init_dl_data_state );
-
         if ( !ap_data._len )
             return 0;
 
@@ -395,6 +380,23 @@ OPEN_INTERNAL_NAMESPACE
     }
     #endif  // __TBB_DYNAMIC_LOAD_ENABLED
 
+    void init_dynamic_link_data() {
+    #if __TBB_DYNAMIC_LOAD_ENABLED
+        atomic_once( &init_dl_data, init_dl_data_state );
+    #endif
+    }
+
+    #if __USE_STATIC_DL_INIT
+    // ap_data structure is initialized with current directory on Linux.
+    // So it should be initialized as soon as possible since the current directory may be changed.
+    // static_init_ap_data object provides this initialization during library loading.
+    static struct static_init_dl_data_t {
+        static_init_dl_data_t() {
+            init_dynamic_link_data();
+        }
+    } static_init_dl_data;
+    #endif
+
     #if __TBB_WEAK_SYMBOLS_PRESENT
     static bool weak_symbol_link( const dynamic_link_descriptor descriptors[], size_t required )
     {
@@ -414,38 +416,28 @@ OPEN_INTERNAL_NAMESPACE
     #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
 
     void dynamic_unlink( dynamic_link_handle handle ) {
-        if ( handle ) {
-    #if __TBB_WEAK_SYMBOLS_PRESENT
-        LIBRARY_ASSERT( dlclose != NULL, "dlopen is present but dlclose is NOT present!?" );
-    #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
+        ::tbb::internal::suppress_unused_warning( handle );
     #if __TBB_DYNAMIC_LOAD_ENABLED
+        if ( handle ) {
             dlclose( handle );
-    #endif /* __TBB_DYNAMIC_LOAD_ENABLED */
         }
+    #endif /* __TBB_DYNAMIC_LOAD_ENABLED */
     }
 
     void dynamic_unlink_all() {
-        handles.free_handles();
+    #if __TBB_DYNAMIC_LOAD_ENABLED
+        handles.free();
+    #endif /* __TBB_DYNAMIC_LOAD_ENABLED */
     }
 
-    #if _WIN32
-    static dynamic_link_handle global_symbols_link( const char* library, const dynamic_link_descriptor descriptors[], size_t required ) {
-        dynamic_link_handle library_handle;
-        if ( GetModuleHandleEx( 0, library, &library_handle ) ) {
-            if ( resolve_symbols( library_handle, descriptors, required ) )
-                return library_handle;
-            else
-                FreeLibrary( library_handle );
-        }
-        return 0;
-    }
-    #else /* _WIN32 */
-    // It is supposed that all symbols are from the only one library
-    static dynamic_link_handle pin_symbols( dynamic_link_descriptor desc, const dynamic_link_descriptor descriptors[], size_t required ) {
+#if !_WIN32
+    static dynamic_link_handle pin_symbols( dynamic_link_handle library_handle, dynamic_link_descriptor desc, const dynamic_link_descriptor* descriptors, size_t required ) {
+        ::tbb::internal::suppress_unused_warning( desc, descriptors, required );
+#if __TBB_DYNAMIC_LOAD_ENABLED
+        // It is supposed that all symbols are from the only one library
         // The library has been loaded by another module and contains at least one requested symbol.
         // But after we obtained the symbol the library can be unloaded by another thread
         // invalidating our symbol. Therefore we need to pin the library in memory.
-        dynamic_link_handle library_handle;
         Dl_info info;
         // Get library's name from earlier found symbol
         if ( dladdr( (void*)*desc.handler, &info ) ) {
@@ -469,36 +461,52 @@ OPEN_INTERNAL_NAMESPACE
             // The library have been unloaded by another thread
             library_handle = 0;
         }
+#endif /* __TBB_DYNAMIC_LOAD_ENABLED */
         return library_handle;
     }
+#endif /* !_WIN32 */
 
-    static dynamic_link_handle global_symbols_link( const char*, const dynamic_link_descriptor descriptors[], size_t required ) {
-    #if __TBB_WEAK_SYMBOLS_PRESENT
+    static dynamic_link_handle global_symbols_link( const char* library, const dynamic_link_descriptor descriptors[], size_t required ) {
+        ::tbb::internal::suppress_unused_warning( library );
+        dynamic_link_handle library_handle;
+#if _WIN32
+        if ( GetModuleHandleEx( 0, library, &library_handle ) ) {
+            if ( resolve_symbols( library_handle, descriptors, required ) )
+                return library_handle;
+            else
+                FreeLibrary( library_handle );
+        }
+#else /* _WIN32 */
+    #if !__TBB_DYNAMIC_LOAD_ENABLED /* only __TBB_WEAK_SYMBOLS_PRESENT is defined */
         if ( !dlopen ) return 0;
-    #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
-        dynamic_link_handle library_handle = dlopen( NULL, RTLD_LAZY );
-    #if __ANDROID__
+    #endif /* !__TBB_DYNAMIC_LOAD_ENABLED */
+        library_handle = dlopen( NULL, RTLD_LAZY );
+    #if !__ANDROID__
         // On Android dlopen( NULL ) returns NULL if it is called during dynamic module initialization.
-        if ( !library_handle )
-            return 0;
+        LIBRARY_ASSERT( library_handle, "The handle for the main program is NULL" );
     #endif
-        // Check existence of only the first symbol, then use it to find the library and load all necessary symbols
+        // Check existence of the first symbol only, then use it to find the library and load all necessary symbols.
         pointer_to_handler handler;
-        dynamic_link_descriptor desc = { descriptors[0].name, &handler };
+        dynamic_link_descriptor desc;
+        desc.name = descriptors[0].name;
+        desc.handler = &handler;
         if ( resolve_symbols( library_handle, &desc, 1 ) )
-                return pin_symbols( desc, descriptors, required );
+            return pin_symbols( library_handle, desc, descriptors, required );
+#endif /* _WIN32 */
         return 0;
     }
-    #endif /* _WIN32 */
 
     static void save_library_handle( dynamic_link_handle src, dynamic_link_handle *dst ) {
         if ( dst )
             *dst = src;
+    #if __TBB_DYNAMIC_LOAD_ENABLED
         else
-            handles.add_handle( src );
+            handles.add( src );
+    #endif /* __TBB_DYNAMIC_LOAD_ENABLED */
     }
 
     dynamic_link_handle dynamic_load( const char* library, const dynamic_link_descriptor descriptors[], size_t required ) {
+    ::tbb::internal::suppress_unused_warning( library, descriptors, required );
     #if __TBB_DYNAMIC_LOAD_ENABLED
     #if _XBOX
         return LoadLibrary (library);
@@ -512,9 +520,6 @@ OPEN_INTERNAL_NAMESPACE
             // (e.g. because of MS runtime problems - one of those crazy manifest related ones)
             UINT prev_mode = SetErrorMode (SEM_FAILCRITICALERRORS);
     #endif /* _WIN32 */
-    #if __TBB_WEAK_SYMBOLS_PRESENT
-        if ( !dlopen ) return 0;
-    #endif /* __TBB_WEAK_SYMBOLS_PRESENT */
             dynamic_link_handle library_handle = dlopen( path, RTLD_LAZY );
     #if _WIN32
             SetErrorMode (prev_mode);
@@ -537,6 +542,8 @@ OPEN_INTERNAL_NAMESPACE
     }
 
     bool dynamic_link( const char* library, const dynamic_link_descriptor descriptors[], size_t required, dynamic_link_handle *handle, int flags ) {
+        init_dynamic_link_data();
+
         // TODO: May global_symbols_link find weak symbols?
         dynamic_link_handle library_handle = ( flags & DYNAMIC_LINK_GLOBAL ) ? global_symbols_link( library, descriptors, required ) : 0;
 
diff --git a/src/tbb/dynamic_link.h b/src/tbb/dynamic_link.h
index c1ec426..526e923 100644
--- a/src/tbb/dynamic_link.h
+++ b/src/tbb/dynamic_link.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_dynamic_link
diff --git a/src/tbb/governor.cpp b/src/tbb/governor.cpp
index 71dd71f..a833986 100644
--- a/src/tbb/governor.cpp
+++ b/src/tbb/governor.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <stdio.h>
@@ -84,9 +76,7 @@ void governor::acquire_resources () {
 #endif
     if( status )
         handle_perror(status, "TBB failed to initialize task scheduler TLS\n");
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
     is_speculation_enabled = cpu_has_speculation();
-#endif
 }
 
 void governor::release_resources () {
@@ -150,27 +140,32 @@ void governor::sign_off(generic_scheduler* s) {
 }
 
 void governor::setBlockingTerminate(const task_scheduler_init *tsi) {
-    __TBB_ASSERT(!IsBlockingTermiantionInProgress, "It's impossible to create task_scheduler_init while blocking termination is in progress.");
+    __TBB_ASSERT(!IsBlockingTerminationInProgress, "It's impossible to create task_scheduler_init while blocking termination is in progress.");
     if (BlockingTSI)
         throw_exception(eid_blocking_sch_init);
     BlockingTSI = tsi;
 }
 
-generic_scheduler* governor::init_scheduler( unsigned num_threads, stack_size_type stack_size, bool auto_init ) {
+void governor::one_time_init() {
     if( !__TBB_InitOnce::initialization_done() )
         DoOneTimeInitializations();
+#if __TBB_SURVIVE_THREAD_SWITCH
+    atomic_do_once( &initialize_cilk_interop, cilkrts_load_state );
+#endif /* __TBB_SURVIVE_THREAD_SWITCH */
+}
+
+generic_scheduler* governor::init_scheduler( int num_threads, stack_size_type stack_size, bool auto_init ) {
+    one_time_init();
     generic_scheduler* s = theTLS.get();
     if( s ) {
         s->my_ref_count += 1;
         return s;
     }
-#if __TBB_SURVIVE_THREAD_SWITCH
-    atomic_do_once( &initialize_cilk_interop, cilkrts_load_state );
-#endif /* __TBB_SURVIVE_THREAD_SWITCH */
-    if( (int)num_threads == task_scheduler_init::automatic )
+    bool default_concurrency_requested = num_threads == task_scheduler_init::automatic;
+    if( default_concurrency_requested )
         num_threads = default_num_threads();
-    s = generic_scheduler::create_master( 
-            market::create_arena( num_threads - 1, stack_size ? stack_size : ThreadStackSize ) );
+    arena &a = market::create_arena( num_threads, stack_size, default_concurrency_requested );
+    s = generic_scheduler::create_master( a );
     __TBB_ASSERT(s, "Somehow a local scheduler creation for a master thread failed");
     s->my_auto_initialized = auto_init;
     return s;
@@ -179,22 +174,20 @@ generic_scheduler* governor::init_scheduler( unsigned num_threads, stack_size_ty
 void governor::terminate_scheduler( generic_scheduler* s, const task_scheduler_init* tsi_ptr ) {
     __TBB_ASSERT( s == theTLS.get(), "Attempt to terminate non-local scheduler instance" );
     if (--(s->my_ref_count)) {
-        if (BlockingTSI && BlockingTSI==tsi_ptr) {
-            // can't throw exception, because this is on dtor's call chain
-            fprintf(stderr, "Attempt to terminate nested scheduler in blocking mode\n");
-            exit(1);
-        }
+        // can't throw exception, because this is on dtor's call chain
+        __TBB_ASSERT_RELEASE( !BlockingTSI || BlockingTSI!=tsi_ptr,
+                              "Attempt to terminate nested scheduler in blocking mode" );
     } else {
 #if TBB_USE_ASSERT
         if (BlockingTSI) {
-            __TBB_ASSERT( BlockingTSI == tsi_ptr, "For blocking termiantion last terminate_scheduler must be blocking." );
-            IsBlockingTermiantionInProgress = true;
+            __TBB_ASSERT( BlockingTSI == tsi_ptr, "For blocking termination last terminate_scheduler must be blocking." );
+            IsBlockingTerminationInProgress = true;
         }
 #endif
         s->cleanup_master();
         BlockingTSI = NULL;
 #if TBB_USE_ASSERT
-        IsBlockingTermiantionInProgress = false;
+        IsBlockingTerminationInProgress = false;
 #endif
     }
 }
@@ -203,7 +196,7 @@ void governor::auto_terminate(void* arg){
     generic_scheduler* s = static_cast<generic_scheduler*>(arg);
     if( s && s->my_auto_initialized ) {
         if( !--(s->my_ref_count) ) {
-            __TBB_ASSERT( !BlockingTSI, "Blocking auto-termiante is not supported." );
+            __TBB_ASSERT( !BlockingTSI, "Blocking auto-terminate is not supported." );
             // If the TLS slot is already cleared by OS or underlying concurrency
             // runtime, restore its value.
             if ( !theTLS.get() )
@@ -306,9 +299,9 @@ void task_scheduler_init::initialize( int number_of_threads, stack_size_type thr
             blocking_terminate = true;
             my_scheduler = NULL;
         }
-        __TBB_ASSERT( !my_scheduler, "task_scheduler_init already initialized" );
-        __TBB_ASSERT( number_of_threads==-1 || number_of_threads>=1,
-                    "number_of_threads for task_scheduler_init must be -1 or positive" );
+        __TBB_ASSERT_RELEASE( !my_scheduler, "task_scheduler_init already initialized" );
+        __TBB_ASSERT_RELEASE( number_of_threads==automatic || number_of_threads > 0,
+                    "number_of_threads for task_scheduler_init must be automatic or positive" );
         if (blocking_terminate)
             governor::setBlockingTerminate(this);
         internal::generic_scheduler *s = governor::init_scheduler( number_of_threads, thread_stack_size, /*auto_init=*/false );
@@ -327,7 +320,7 @@ void task_scheduler_init::initialize( int number_of_threads, stack_size_type thr
 #endif /* __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS */
             my_scheduler = s;
     } else {
-        __TBB_ASSERT( !thread_stack_size, "deferred initialization ignores stack size setting" );
+        __TBB_ASSERT_RELEASE( !thread_stack_size, "deferred initialization ignores stack size setting" );
     }
 }
 
@@ -338,7 +331,7 @@ void task_scheduler_init::terminate() {
 #endif /* __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS */
     generic_scheduler* s = static_cast<generic_scheduler*>(my_scheduler);
     my_scheduler = NULL;
-    __TBB_ASSERT( s, "task_scheduler_init::terminate without corresponding task_scheduler_init::initialize()");
+    __TBB_ASSERT_RELEASE( s, "task_scheduler_init::terminate without corresponding task_scheduler_init::initialize()");
 #if __TBB_TASK_GROUP_CONTEXT && TBB_USE_EXCEPTIONS
     if ( s->master_outermost_level() ) {
         uintptr_t &vt = s->default_context()->my_version_and_traits;
diff --git a/src/tbb/governor.h b/src/tbb/governor.h
index 3b3d49d..30951fc 100644
--- a/src/tbb/governor.h
+++ b/src/tbb/governor.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_governor_H
@@ -32,7 +24,7 @@
 #include "tbb/task_scheduler_init.h"
 #include "../rml/include/rml_tbb.h"
 
-#include "tbb_misc.h" // for AvailableHwConcurrency and ThreadStackSize
+#include "tbb_misc.h" // for AvailableHwConcurrency
 #include "tls.h"
 
 #if __TBB_SURVIVE_THREAD_SWITCH
@@ -46,6 +38,10 @@ class market;
 class generic_scheduler;
 class __TBB_InitOnce;
 
+namespace rml {
+class tbb_client;
+}
+
 //------------------------------------------------------------------------
 // Class governor
 //------------------------------------------------------------------------
@@ -54,6 +50,7 @@ class __TBB_InitOnce;
 /** It also supports automatic on-demand initialization of the TBB scheduler.
     The class contains only static data members and methods.*/
 class governor {
+private:
     friend class __TBB_InitOnce;
     friend class market;
 
@@ -71,12 +68,10 @@ class governor {
     static const task_scheduler_init *BlockingTSI;
 
 #if TBB_USE_ASSERT
-    static bool IsBlockingTermiantionInProgress;
+    static bool IsBlockingTerminationInProgress;
 #endif
 
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
     static bool is_speculation_enabled;
-#endif
 
     //! Create key for thread-local storage and initialize RML.
     static void acquire_resources ();
@@ -97,10 +92,11 @@ public:
         return DefaultNumberOfThreads ? DefaultNumberOfThreads :
                                         DefaultNumberOfThreads = AvailableHwConcurrency();
     }
+    static void one_time_init();
     //! Processes scheduler initialization request (possibly nested) in a master thread
     /** If necessary creates new instance of arena and/or local scheduler.
         The auto_init argument specifies if the call is due to automatic initialization. **/
-    static generic_scheduler* init_scheduler( unsigned num_threads, stack_size_type stack_size, bool auto_init = false );
+    static generic_scheduler* init_scheduler( int num_threads, stack_size_type stack_size, bool auto_init = false );
 
     //! Processes scheduler termination request (possibly nested) in a master thread
     static void terminate_scheduler( generic_scheduler* s, const task_scheduler_init *tsi_ptr );
@@ -122,7 +118,7 @@ public:
         Note that auto-initialized scheduler instance is destroyed only when its thread terminates. **/
     static generic_scheduler* local_scheduler () {
         generic_scheduler* s = theTLS.get();
-        return s ? s : init_scheduler( (unsigned)task_scheduler_init::automatic, 0, true );
+        return s ? s : init_scheduler( task_scheduler_init::automatic, 0, true );
     }
 
     static generic_scheduler* local_scheduler_if_initialized () {
@@ -140,15 +136,15 @@ public:
 
     static bool needsWaitWorkers () { return BlockingTSI!=NULL; }
 
+    static bool does_client_join_workers (const tbb::internal::rml::tbb_client &client);
+
     //! Must be called before init_scheduler
     static void setBlockingTerminate(const task_scheduler_init *tsi);
 
 #if __TBB_SURVIVE_THREAD_SWITCH
     static __cilk_tbb_retcode stack_op_handler( __cilk_tbb_stack_op op, void* );
 #endif /* __TBB_SURVIVE_THREAD_SWITCH */
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
     static bool speculation_enabled() { return is_speculation_enabled; }
-#endif
 
 }; // class governor
 
diff --git a/src/tbb/ia32-masm/atomic_support.asm b/src/tbb/ia32-masm/atomic_support.asm
index 5bfc395..5b2bcba 100644
--- a/src/tbb/ia32-masm/atomic_support.asm
+++ b/src/tbb/ia32-masm/atomic_support.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 .686
 .model flat,c
diff --git a/src/tbb/ia32-masm/itsx.asm b/src/tbb/ia32-masm/itsx.asm
index e11eae8..58c999b 100644
--- a/src/tbb/ia32-masm/itsx.asm
+++ b/src/tbb/ia32-masm/itsx.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 .686
 .model flat,c
diff --git a/src/tbb/ia32-masm/lock_byte.asm b/src/tbb/ia32-masm/lock_byte.asm
index a88b9a2..c96fe5b 100644
--- a/src/tbb/ia32-masm/lock_byte.asm
+++ b/src/tbb/ia32-masm/lock_byte.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 ; DO NOT EDIT - AUTOMATICALLY GENERATED FROM .s FILE
 .686
diff --git a/src/tbb/ia64-gas/atomic_support.s b/src/tbb/ia64-gas/atomic_support.s
index 626ef3c..9b3af7d 100644
--- a/src/tbb/ia64-gas/atomic_support.s
+++ b/src/tbb/ia64-gas/atomic_support.s
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 // DO NOT EDIT - AUTOMATICALLY GENERATED FROM tools/generate_atomic/ipf_generate.sh
 # 1 "<stdin>"
diff --git a/src/tbb/ia64-gas/ia64_misc.s b/src/tbb/ia64-gas/ia64_misc.s
index 640aca4..839536d 100644
--- a/src/tbb/ia64-gas/ia64_misc.s
+++ b/src/tbb/ia64-gas/ia64_misc.s
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 	// RSE backing store pointer retrieval
     .section .text
diff --git a/src/tbb/ia64-gas/lock_byte.s b/src/tbb/ia64-gas/lock_byte.s
index 0aa15e2..19b2234 100644
--- a/src/tbb/ia64-gas/lock_byte.s
+++ b/src/tbb/ia64-gas/lock_byte.s
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 	// Support for class TinyLock
 	.section .text
diff --git a/src/tbb/ia64-gas/log2.s b/src/tbb/ia64-gas/log2.s
index 18ec650..4acac8e 100644
--- a/src/tbb/ia64-gas/log2.s
+++ b/src/tbb/ia64-gas/log2.s
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 	.section .text
 	.align 16
diff --git a/src/tbb/ia64-gas/pause.s b/src/tbb/ia64-gas/pause.s
index 047a17e..5296d7f 100644
--- a/src/tbb/ia64-gas/pause.s
+++ b/src/tbb/ia64-gas/pause.s
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 	.section .text
 	.align 16
diff --git a/src/tbb/ibm_aix51/atomic_support.c b/src/tbb/ibm_aix51/atomic_support.c
index 467c373..10700e2 100644
--- a/src/tbb/ibm_aix51/atomic_support.c
+++ b/src/tbb/ibm_aix51/atomic_support.c
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <stdint.h>
diff --git a/src/tbb/index.html b/src/tbb/index.html
index 2280d6e..c559d6b 100644
--- a/src/tbb/index.html
+++ b/src/tbb/index.html
@@ -21,7 +21,7 @@ This directory contains the source code of the TBB core components.
 <HR>
 <A HREF="../index.html">Up to parent directory</A>
 <p></p>
-Copyright © 2005-2014 Intel Corporation.  All Rights Reserved.
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
 <P></P>
 Intel is a registered trademark or trademark of Intel Corporation
 or its subsidiaries in the United States and other countries.
diff --git a/src/tbb/intel64-masm/atomic_support.asm b/src/tbb/intel64-masm/atomic_support.asm
index 5a07686..e19dafb 100644
--- a/src/tbb/intel64-masm/atomic_support.asm
+++ b/src/tbb/intel64-masm/atomic_support.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 ; DO NOT EDIT - AUTOMATICALLY GENERATED FROM .s FILE
 .code 
diff --git a/src/tbb/intel64-masm/intel64_misc.asm b/src/tbb/intel64-masm/intel64_misc.asm
index 06d43d6..0712bfd 100644
--- a/src/tbb/intel64-masm/intel64_misc.asm
+++ b/src/tbb/intel64-masm/intel64_misc.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 .code
 	ALIGN 8
diff --git a/src/tbb/intel64-masm/itsx.asm b/src/tbb/intel64-masm/itsx.asm
index f0a3696..c20cff2 100644
--- a/src/tbb/intel64-masm/itsx.asm
+++ b/src/tbb/intel64-masm/itsx.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 .code
         ALIGN 8
diff --git a/src/tbb/intrusive_list.h b/src/tbb/intrusive_list.h
index 4c9dec5..f131c8e 100644
--- a/src/tbb/intrusive_list.h
+++ b/src/tbb/intrusive_list.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_intrusive_list_H
@@ -79,7 +71,15 @@ class intrusive_list_base {
 
     public:
         iterator_impl () :  my_pos(NULL) {}
-        
+
+        Iterator& operator = ( const Iterator& it ) {
+            return my_pos = it.my_pos;
+        }
+
+        Iterator& operator = ( const T& val ) {
+            return my_pos = &node(val);
+        }
+
         bool operator == ( const Iterator& it ) const {
             return my_pos == it.my_pos;
         }
@@ -125,13 +125,12 @@ class intrusive_list_base {
 public:
     class iterator : public iterator_impl<iterator> {
         template <class U, class V> friend class intrusive_list_base;
-
+    public:
         iterator (intrusive_list_node* pos )
             : iterator_impl<iterator>(pos )
         {}
-    public:
         iterator () {}
-        
+
         T* operator-> () const { return &this->item(); }
 
         T& operator* () const { return this->item(); }
@@ -139,13 +138,12 @@ public:
 
     class const_iterator : public iterator_impl<const_iterator> {
         template <class U, class V> friend class intrusive_list_base;
-
+    public:
         const_iterator (const intrusive_list_node* pos )
             : iterator_impl<const_iterator>(const_cast<intrusive_list_node*>(pos) )
         {}
-    public:
         const_iterator () {}
-        
+
         const T* operator-> () const { return &this->item(); }
 
         const T& operator* () const { return this->item(); }
@@ -219,10 +217,10 @@ class memptr_intrusive_list : public intrusive_list_base<memptr_intrusive_list<T
     static intrusive_list_node& node ( T& val ) { return val.*NodePtr; }
 
     static T& item ( intrusive_list_node* node ) {
-        // Cannot use __TBB_offestof (and consequently __TBB_get_object_ref) macro 
+        // Cannot use __TBB_offsetof (and consequently __TBB_get_object_ref) macro 
         // with *NodePtr argument because gcc refuses to interpret pasted "->" and "*"
         // as member pointer dereferencing operator, and explicit usage of ## in 
-        // __TBB_offestof implementation breaks operations with normal member names.
+        // __TBB_offsetof implementation breaks operations with normal member names.
         return *reinterpret_cast<T*>((char*)node - ((ptrdiff_t)&(reinterpret_cast<T*>(0x1000)->*NodePtr) - 0x1000));
     }
 }; // intrusive_list<T, U, NodePtr>
diff --git a/src/tbb/itt_notify.cpp b/src/tbb/itt_notify.cpp
index 59fa42d..ca34fe3 100644
--- a/src/tbb/itt_notify.cpp
+++ b/src/tbb/itt_notify.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if DO_ITT_NOTIFY
diff --git a/src/tbb/itt_notify.h b/src/tbb/itt_notify.h
index ba93763..ca84394 100644
--- a/src/tbb/itt_notify.h
+++ b/src/tbb/itt_notify.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_ITT_NOTIFY
@@ -45,6 +37,7 @@
 
 #include "tools_api/ittnotify.h"
 #include "tools_api/legacy/ittnotify.h"
+extern "C" void __itt_fini_ittlib(void);
 
 #if _WIN32||_WIN64
     #undef _T
@@ -105,6 +98,7 @@ namespace tbb {
 // const_cast<void*>() is necessary to cast off volatility
 #define ITT_NOTIFY(name,obj)            __itt_notify_##name(const_cast<void*>(static_cast<volatile void*>(obj)))
 #define ITT_THREAD_SET_NAME(name)       __itt_thread_set_name(name)
+#define ITT_FINI_ITTLIB()               __itt_fini_ittlib()
 #define ITT_SYNC_CREATE(obj, type, name) __itt_sync_create((void*)(obj), type, name, 2)
 #define ITT_SYNC_RENAME(obj, name)      __itt_sync_rename(obj, name)
 #define ITT_STACK_CREATE(obj)           obj = __itt_stack_caller_create()
@@ -118,6 +112,7 @@ namespace tbb {
 
 #define ITT_NOTIFY(name,obj)            ((void)0)
 #define ITT_THREAD_SET_NAME(name)       ((void)0)
+#define ITT_FINI_ITTLIB()               ((void)0)
 #define ITT_SYNC_CREATE(obj, type, name) ((void)0)
 #define ITT_SYNC_RENAME(obj, name)      ((void)0)
 #define ITT_STACK_CREATE(obj)           ((void)0)
diff --git a/src/tbb/lin32-tbb-export.def b/src/tbb/lin32-tbb-export.def
index 193680f..a083e30 100644
--- a/src/tbb/lin32-tbb-export.def
+++ b/src/tbb/lin32-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
diff --git a/src/tbb/lin32-tbb-export.lst b/src/tbb/lin32-tbb-export.lst
index 9a61024..7ad50f5 100644
--- a/src/tbb/lin32-tbb-export.lst
+++ b/src/tbb/lin32-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -94,6 +86,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -251,14 +244,15 @@ __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v323internal_release_writerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_readerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_writerEv )
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex11scoped_lock7releaseEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_constructEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
+// x86_rtm_rw_mutex.cpp
+#if __TBB_TSX_AVAILABLE
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_releaseERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_constructEv )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
 #endif
 
 /* spin_mutex.cpp */
@@ -329,7 +323,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -339,6 +335,7 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v321internal_finish_clearEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
 
 #if !TBB_NO_LEGACY
 /* concurrent_vector.cpp v2 */
@@ -393,4 +390,9 @@ __TBB_SYMBOL( _ZN3tbb10interface58internal38internal_condition_variable_notify_o
 __TBB_SYMBOL( _ZN3tbb10interface58internal38internal_initialize_condition_variableERNS1_14condvar_impl_tE )
 #endif
 
+// global parameter
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/lin64-tbb-export.def b/src/tbb/lin64-tbb-export.def
index bcb666c..ea58c90 100644
--- a/src/tbb/lin64-tbb-export.def
+++ b/src/tbb/lin64-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
diff --git a/src/tbb/lin64-tbb-export.lst b/src/tbb/lin64-tbb-export.lst
index 3992715..227b992 100644
--- a/src/tbb/lin64-tbb-export.lst
+++ b/src/tbb/lin64-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -94,6 +86,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -235,14 +228,15 @@ __TBB_SYMBOL( _ZN3tbb13spin_rw_mutex27internal_try_acquire_readerEPS0_ )
 __TBB_SYMBOL( _ZN3tbb13spin_rw_mutex27internal_try_acquire_writerEPS0_ )
 #endif
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_constructEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex11scoped_lock7releaseEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
+// x86_rtm_rw_mutex.cpp
+#if __TBB_TSX_AVAILABLE
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_constructEv )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_releaseERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
 #endif
 
 /* spin_rw_mutex v3 */
@@ -324,7 +318,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -334,6 +330,7 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v313internal_sizeEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
 
 #if !TBB_NO_LEGACY
 /* concurrent_vector.cpp v2 */
@@ -375,4 +372,8 @@ __TBB_SYMBOL( _ZN3tbb8internal7move_v3ERNS0_13tbb_thread_v3ES2_ )
 __TBB_SYMBOL( _ZN3tbb8internal15thread_yield_v3Ev )
 __TBB_SYMBOL( _ZN3tbb8internal15thread_sleep_v3ERKNS_10tick_count10interval_tE )
 
+/* global_parameter */
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
 #undef __TBB_SYMBOL
diff --git a/src/tbb/lin64ipf-tbb-export.def b/src/tbb/lin64ipf-tbb-export.def
index c54ac56..71441cd 100644
--- a/src/tbb/lin64ipf-tbb-export.def
+++ b/src/tbb/lin64ipf-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
diff --git a/src/tbb/lin64ipf-tbb-export.lst b/src/tbb/lin64ipf-tbb-export.lst
index 2726b92..bb4af15 100644
--- a/src/tbb/lin64ipf-tbb-export.lst
+++ b/src/tbb/lin64ipf-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -94,6 +86,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -308,7 +301,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -318,6 +313,7 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v313internal_sizeEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
 
 #if !TBB_NO_LEGACY
 /* concurrent_vector.cpp v2 */
@@ -409,4 +405,9 @@ __TBB_SYMBOL( __TBB_machine_store2_relaxed )
 __TBB_SYMBOL( __TBB_machine_load1_relaxed )
 __TBB_SYMBOL( __TBB_machine_store1_relaxed )
 
+/* global parameter */
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/mac32-tbb-export.def b/src/tbb/mac32-tbb-export.def
index d4b334e..ed53e79 100644
--- a/src/tbb/mac32-tbb-export.def
+++ b/src/tbb/mac32-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define __TBB_SYMBOL( sym ) _##sym
diff --git a/src/tbb/mac32-tbb-export.lst b/src/tbb/mac32-tbb-export.lst
index a4eceb1..a000f16 100644
--- a/src/tbb/mac32-tbb-export.lst
+++ b/src/tbb/mac32-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -102,6 +94,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -265,15 +258,15 @@ __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_readerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_writerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v318internal_constructEv )
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 // x86_rtm_rw_mutex.cpp
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex11scoped_lock7releaseEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_constructEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
+#if __TBB_TSX_AVAILABLE
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_releaseERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_constructEv )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
 #endif
 
 // spin_mutex.cpp
@@ -344,7 +337,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -354,6 +349,7 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v321internal_finish_clearEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
 
 #if !TBB_NO_LEGACY
 // concurrent_vector.cpp v2
@@ -395,4 +391,9 @@ __TBB_SYMBOL( _ZN3tbb8internal16thread_get_id_v3Ev )
 __TBB_SYMBOL( _ZN3tbb8internal19allocate_closure_v3Em )
 __TBB_SYMBOL( _ZN3tbb8internal7move_v3ERNS0_13tbb_thread_v3ES2_ )
 
+// global parameter
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/mac64-tbb-export.def b/src/tbb/mac64-tbb-export.def
index a64f8a9..71e8f5e 100644
--- a/src/tbb/mac64-tbb-export.def
+++ b/src/tbb/mac64-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define __TBB_SYMBOL( sym ) _##sym
diff --git a/src/tbb/mac64-tbb-export.lst b/src/tbb/mac64-tbb-export.lst
index f37b715..9b6ef26 100644
--- a/src/tbb/mac64-tbb-export.lst
+++ b/src/tbb/mac64-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -102,6 +94,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -262,15 +255,15 @@ __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_readerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v327internal_try_acquire_writerEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v318internal_constructEv )
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 // x86_rtm_rw_mutex.cpp
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex11scoped_lock7releaseEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_constructEv )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
-__TBB_SYMBOL( _ZN3tbb10interface78internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
+#if __TBB_TSX_AVAILABLE
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_releaseERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_constructEv )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
 #endif
 
 // spin_mutex.cpp
@@ -341,7 +334,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -351,6 +346,7 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v313internal_sizeEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
 
 #if !TBB_NO_LEGACY
 // concurrent_vector.cpp v2
@@ -392,4 +388,9 @@ __TBB_SYMBOL( _ZN3tbb8internal7move_v3ERNS0_13tbb_thread_v3ES2_ )
 __TBB_SYMBOL( _ZN3tbb8internal15thread_yield_v3Ev )
 __TBB_SYMBOL( _ZN3tbb8internal15thread_sleep_v3ERKNS_10tick_count10interval_tE )
 
+// global parameter
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/mailbox.h b/src/tbb/mailbox.h
index 592a2bb..c1d13c3 100644
--- a/src/tbb/mailbox.h
+++ b/src/tbb/mailbox.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_mailbox_H
@@ -38,9 +30,6 @@
 namespace tbb {
 namespace internal {
 
-class generic_scheduler;
-class mail_outbox;
-
 struct task_proxy : public task {
     static const intptr_t      pool_bit = 1<<0;
     static const intptr_t   mailbox_bit = 1<<1;
diff --git a/src/tbb/market.cpp b/src/tbb/market.cpp
index fc90d4d..fe20a55 100644
--- a/src/tbb/market.cpp
+++ b/src/tbb/market.cpp
@@ -1,32 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_stddef.h"
+#include "tbb/global_control.h" // global_control::active_value
 
 #include "market.h"
 #include "tbb_main.h"
@@ -40,28 +33,31 @@ namespace internal {
 void market::insert_arena_into_list ( arena& a ) {
 #if __TBB_TASK_PRIORITY
     arena_list_type &arenas = my_priority_levels[a.my_top_priority].arenas;
-    arena_list_type::iterator &next = my_priority_levels[a.my_top_priority].next_arena;
+    arena *&next = my_priority_levels[a.my_top_priority].next_arena;
 #else /* !__TBB_TASK_PRIORITY */
     arena_list_type &arenas = my_arenas;
-    arena_list_type::iterator &next = my_next_arena;
+    arena *&next = my_next_arena;
 #endif /* !__TBB_TASK_PRIORITY */
     arenas.push_front( a );
     if ( arenas.size() == 1 )
-        next = arenas.begin();
+        next = &*arenas.begin();
 }
 
 void market::remove_arena_from_list ( arena& a ) {
 #if __TBB_TASK_PRIORITY
     arena_list_type &arenas = my_priority_levels[a.my_top_priority].arenas;
-    arena_list_type::iterator &next = my_priority_levels[a.my_top_priority].next_arena;
+    arena *&next = my_priority_levels[a.my_top_priority].next_arena;
 #else /* !__TBB_TASK_PRIORITY */
     arena_list_type &arenas = my_arenas;
-    arena_list_type::iterator &next = my_next_arena;
+    arena *&next = my_next_arena;
 #endif /* !__TBB_TASK_PRIORITY */
-    __TBB_ASSERT( next != arenas.end(), NULL );
-    if ( &*next == &a )
-        if ( ++next == arenas.end() && arenas.size() > 1 )
-            next = arenas.begin();
+    arena_list_type::iterator it = next;
+    __TBB_ASSERT( it != arenas.end(), NULL );
+    if ( next == &a ) {
+        if ( ++it == arenas.end() && arenas.size() > 1 )
+            it = arenas.begin();
+        next = &*it;
+    }
     arenas.remove( a );
 }
 
@@ -69,21 +65,19 @@ void market::remove_arena_from_list ( arena& a ) {
 // market
 //------------------------------------------------------------------------
 
-market::market ( unsigned max_num_workers, size_t stack_size )
-    : my_ref_count(1)
-    , my_stack_size(stack_size)
-    , my_max_num_workers(max_num_workers)
+market::market ( unsigned workers_soft_limit, unsigned workers_hard_limit, size_t stack_size )
+    : my_num_workers_hard_limit(workers_hard_limit)
+    , my_num_workers_soft_limit(workers_soft_limit)
 #if __TBB_TASK_PRIORITY
     , my_global_top_priority(normalized_normal_priority)
     , my_global_bottom_priority(normalized_normal_priority)
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    , my_lowest_populated_level(normalized_normal_priority)
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
 #endif /* __TBB_TASK_PRIORITY */
+    , my_ref_count(1)
+    , my_stack_size(stack_size)
 {
 #if __TBB_TASK_PRIORITY
     __TBB_ASSERT( my_global_reload_epoch == 0, NULL );
-    my_priority_levels[normalized_normal_priority].workers_available = max_num_workers;
+    my_priority_levels[normalized_normal_priority].workers_available = my_num_workers_soft_limit;
 #endif /* __TBB_TASK_PRIORITY */
 
     // Once created RML server will start initializing workers that will need 
@@ -92,32 +86,64 @@ market::market ( unsigned max_num_workers, size_t stack_size )
     __TBB_ASSERT( my_server, "Failed to create RML server" );
 }
 
+static unsigned calc_workers_soft_limit(unsigned workers_soft_limit, unsigned workers_hard_limit) {
+    if( int soft_limit = market::app_parallelism_limit() )
+        workers_soft_limit = soft_limit-1;
+    else // if user set no limits (yet), use market's parameter
+        workers_soft_limit = max( governor::default_num_threads() - 1, workers_soft_limit );
+    // at least 1 worker is required to support starvation resistant tasks
+    if( workers_soft_limit == 0 )
+        workers_soft_limit = 1;
+    else if( workers_soft_limit >= workers_hard_limit )
+        workers_soft_limit = workers_hard_limit-1;
+    return workers_soft_limit;
+}
 
-market& market::global_market ( unsigned max_num_workers, size_t stack_size ) {
+market& market::global_market ( unsigned workers_soft_limit, size_t stack_size,
+                                bool default_concurrency_requested, bool is_public ) {
     global_market_mutex_type::scoped_lock lock( theMarketMutex );
     market *m = theMarket;
-    if ( m ) {
+    if( m ) {
         ++m->my_ref_count;
-        if ( m->my_stack_size < stack_size )
+        if( is_public && 0==m->my_public_ref_count++ ) {
+            lock.release();
+            workers_soft_limit = calc_workers_soft_limit(workers_soft_limit, m->my_num_workers_hard_limit);
+            set_active_num_workers( workers_soft_limit );
+        }
+        if( m->my_num_workers_soft_limit < workers_soft_limit && !default_concurrency_requested )
+            runtime_warning( "Max number of workers has been already set to %u. Newer request is for %u workers, public:%u.\n"
+                    , m->my_num_workers_soft_limit, workers_soft_limit, m->my_public_ref_count );
+        if( m->my_stack_size < stack_size )
             runtime_warning( "Newer master request for larger stack cannot be satisfied\n" );
     }
     else {
-        max_num_workers = max( governor::default_num_threads() - 1, max_num_workers );
-        // at least 1 worker is required to support starvation resistant tasks
-        if( max_num_workers==0 ) max_num_workers = 1;
+        if( stack_size == 0 )
+            stack_size = global_control::active_value(global_control::thread_stack_size);
+        // Expecting that 4P is suitable for most applications.
+        // Limit to 2P for large thread number.
+        // TODO: ask RML for max concurrency and possibly correct hard_limit
+        const unsigned factor = governor::default_num_threads()<=128? 4 : 2;
+        unsigned workers_hard_limit = max(factor*governor::default_num_threads(), app_parallelism_limit());
+        workers_soft_limit = calc_workers_soft_limit(workers_soft_limit, workers_hard_limit);
         // Create the global market instance
         size_t size = sizeof(market);
 #if __TBB_TASK_GROUP_CONTEXT
         __TBB_ASSERT( __TBB_offsetof(market, my_workers) + sizeof(generic_scheduler*) == sizeof(market),
                       "my_workers must be the last data field of the market class");
-        size += sizeof(generic_scheduler*) * (max_num_workers - 1);
+        size += sizeof(generic_scheduler*) * (workers_hard_limit - 1);
 #endif /* __TBB_TASK_GROUP_CONTEXT */
         __TBB_InitOnce::add_ref();
         void* storage = NFS_Allocate(1, size, NULL);
         memset( storage, 0, size );
         // Initialize and publish global market
-        m = new (storage) market( max_num_workers, stack_size );
+        m = new (storage) market( workers_soft_limit, workers_hard_limit, stack_size );
+        if( is_public )
+            m->my_public_ref_count = 1;
         theMarket = m;
+        // This check relies on the fact that for shared RML default_concurrency==max_concurrency
+        if ( !governor::UsePrivateRML && m->my_server->default_concurrency() < workers_soft_limit )
+            runtime_warning( "RML might limit the number of workers to %u while %u is requested.\n"
+                    , m->my_server->default_concurrency(), workers_soft_limit );
     }
     return *m;
 }
@@ -132,11 +158,15 @@ void market::destroy () {
     __TBB_InitOnce::remove_ref();
 }
 
-void market::release () {
+void market::release ( bool is_public ) {
     __TBB_ASSERT( theMarket == this, "Global market instance was destroyed prematurely?" );
     bool do_release = false;
     {
         global_market_mutex_type::scoped_lock lock(theMarketMutex);
+        if ( is_public ) {
+            __TBB_ASSERT( my_public_ref_count, NULL );
+            --my_public_ref_count;
+        }
         if ( --my_ref_count == 0 ) {
             do_release = true;
             theMarket = NULL;
@@ -148,23 +178,60 @@ void market::release () {
 
 void market::wait_workers () {
     // usable for this kind of scheduler only
-    __TBB_ASSERT(governor::needsWaitWorkers(), NULL);
+    __TBB_ASSERT(join_workers, NULL);
+    // to guarantee that request_close_connection() is called by master,
     // wait till terminating last worker decresed my_ref_count
     while (__TBB_load_with_acquire(my_ref_count) > 1)
         __TBB_Yield();
     __TBB_ASSERT(1 == my_ref_count, NULL);
-    release();
 }
 
-arena& market::create_arena ( unsigned max_num_workers, size_t stack_size ) {
-    market &m = global_market( max_num_workers, stack_size ); // increases market's ref count
-#if __TBB_TASK_ARENA
-    // Prevent cutting an extra slot for task_arena(p,0) with default market (p-1 worketrs).
-    // This is a temporary workaround for 1968 until (TODO:) master slot reservation is reworked
-    arena& a = arena::allocate_arena( m, min(max_num_workers, m.my_max_num_workers+1) );
-#else
-    arena& a = arena::allocate_arena( m, min(max_num_workers, m.my_max_num_workers) );
+void market::set_active_num_workers ( unsigned soft_limit ) {
+    int old_requested, requested;
+    market *m;
+    // at least 1 worker is required to support starvation resistant tasks
+    if( soft_limit == 0 )
+        soft_limit = 1;
+
+    {
+        global_market_mutex_type::scoped_lock lock( theMarketMutex );
+        if ( !theMarket )
+            return; // actual value will be used at market creation
+        m = theMarket;
+        ++m->my_ref_count;
+    }
+    // have my_ref_count for market, use it safely
+    {
+        arenas_list_mutex_type::scoped_lock lock(m->my_arenas_list_mutex);
+        __TBB_ASSERT(soft_limit <= m->my_num_workers_hard_limit, NULL);
+        m->my_num_workers_soft_limit = soft_limit;
+        requested = min(m->my_total_demand, (int)soft_limit);
+        old_requested = m->my_num_workers_requested;
+        m->my_num_workers_requested = requested;
+        m->my_priority_levels[m->my_global_top_priority].workers_available = soft_limit;
+        m->update_allotment(
+#if __TBB_TASK_PRIORITY
+            m->my_global_top_priority
 #endif
+            );
+    }
+    // Must be called outside of any locks
+    if ( requested != old_requested )
+        m->my_server->adjust_job_count_estimate( requested - old_requested );
+    // release my_ref_count for market, match ++m->my_ref_count above
+    m->release();
+}
+
+bool governor::does_client_join_workers (const tbb::internal::rml::tbb_client &client) {
+    return ((const market&)client).must_join_workers();
+}
+
+arena& market::create_arena ( int num_slots, size_t stack_size, bool default_concurrency_requested ) {
+    __TBB_ASSERT( num_slots > 0, NULL );
+    market &m = global_market( num_slots-1, stack_size, default_concurrency_requested,
+                               /*is_public*/ true ); // increases market's public ref count
+
+    arena& a = arena::allocate_arena( m, min(num_slots, (int)m.my_num_workers_hard_limit) );
     // Add newly created arena into the existing market's list.
     arenas_list_mutex_type::scoped_lock lock(m.my_arenas_list_mutex);
     m.insert_arena_into_list(a);
@@ -174,9 +241,6 @@ arena& market::create_arena ( unsigned max_num_workers, size_t stack_size ) {
 /** This method must be invoked under my_arenas_list_mutex. **/
 void market::detach_arena ( arena& a ) {
     __TBB_ASSERT( theMarket == this, "Global market instance was destroyed prematurely?" );
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    __TBB_ASSERT( !a.my_num_workers_present, NULL );
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
     __TBB_ASSERT( !a.my_slots[0].my_scheduler, NULL );
     remove_arena_from_list(a);
     if ( a.my_aba_epoch == my_arenas_aba_epoch )
@@ -184,7 +248,9 @@ void market::detach_arena ( arena& a ) {
 }
 
 void market::try_destroy_arena ( arena* a, uintptr_t aba_epoch ) {
-    __TBB_ASSERT ( a, NULL );
+    // master thread holds reference to the market, so it cannot be destroyed at any moment here
+    __TBB_ASSERT( this == theMarket, NULL );
+    __TBB_ASSERT( a, NULL );
     arenas_list_mutex_type::scoped_lock lock(my_arenas_list_mutex);
     assert_market_valid();
 #if __TBB_TASK_PRIORITY
@@ -213,45 +279,20 @@ void market::try_destroy_arena ( arena* a, uintptr_t aba_epoch ) {
 #endif /* __TBB_TASK_PRIORITY */
 }
 
-void market::try_destroy_arena ( market* m, arena* a, uintptr_t aba_epoch, bool master ) {
-    // Arena may have been orphaned. Or it may have been destroyed.
-    // Thus we cannot dereference the pointer to it until its liveness is verified.
-    // Arena is alive if it is found in the market's list.
-
-    if ( m != theMarket ) {
-        // The market has already been emptied.
-        return;
-    }
-    else if ( master ) {
-        // If this is a master thread, market can be destroyed at any moment.
-        // So protect it with an extra refcount.
-        global_market_mutex_type::scoped_lock lock(theMarketMutex);
-        if ( m != theMarket )
-            return;
-        ++m->my_ref_count;
-    }
-    m->try_destroy_arena( a, aba_epoch );
-    if ( master )
-        m->release();
-}
-
 /** This method must be invoked under my_arenas_list_mutex. **/
-arena* market::arena_in_need ( arena_list_type &arenas, arena_list_type::iterator& next ) {
+arena* market::arena_in_need ( arena_list_type &arenas, arena *&next ) {
     if ( arenas.empty() )
         return NULL;
-    __TBB_ASSERT( next != arenas.end(), NULL );
     arena_list_type::iterator it = next;
+    __TBB_ASSERT( it != arenas.end(), NULL );
     do {
         arena& a = *it;
         if ( ++it == arenas.end() )
             it = arenas.begin();
         if ( a.num_workers_active() < a.my_num_workers_allotted ) {
-            a.my_references+=2; // add a worker
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-            ++a.my_num_workers_present;
-            ++my_priority_levels[a.my_top_priority].workers_present;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-            next = it;
+            a.my_references += 2; // add a worker
+            as_atomic(next) = &*it; // a subject for innocent data race under the reader lock
+            // TODO: rework global round robin policy to local or random to avoid this write
             return &a;
         }
     } while ( it != next );
@@ -288,49 +329,29 @@ void market::update_allotment ( arena_list_type& arenas, int workers_demand, int
 inline void market::update_global_top_priority ( intptr_t newPriority ) {
     GATHER_STATISTIC( ++governor::local_scheduler_if_initialized()->my_counters.market_prio_switches );
     my_global_top_priority = newPriority;
-    my_priority_levels[newPriority].workers_available = my_max_num_workers;
+    my_priority_levels[newPriority].workers_available = my_num_workers_soft_limit;
     advance_global_reload_epoch();
 }
 
 inline void market::reset_global_priority () {
     my_global_bottom_priority = normalized_normal_priority;
     update_global_top_priority(normalized_normal_priority);
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    my_lowest_populated_level = normalized_normal_priority;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
 }
 
-arena* market::arena_in_need (
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-                              arena* prev_arena
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-                             )
+arena* market::arena_in_need ( arena* prev_arena )
 {
-    arenas_list_mutex_type::scoped_lock lock(my_arenas_list_mutex);
+    suppress_unused_warning(prev_arena);
+    if( as_atomic(my_total_demand) <= 0 )
+        return NULL;
+    arenas_list_mutex_type::scoped_lock lock(my_arenas_list_mutex, /*is_writer=*/false);
     assert_market_valid();
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    if ( prev_arena ) {
-        priority_level_info &pl = my_priority_levels[prev_arena->my_top_priority];
-        --prev_arena->my_num_workers_present;
-        --pl.workers_present;
-        if ( !--prev_arena->my_references && !prev_arena->my_num_workers_requested ) {
-            detach_arena( *a );
-            lock.release();
-            a->free_arena();
-            lock.acquire();
-        }
-    }
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
     int p = my_global_top_priority;
     arena *a = NULL;
     do {
         priority_level_info &pl = my_priority_levels[p];
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-        __TBB_ASSERT( p >= my_lowest_populated_level, NULL );
-        if ( pl.workers_present >= pl.workers_requested )
-            continue;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
         a = arena_in_need( pl.arenas, pl.next_arena );
+        // TODO: When refactoring task priority code, take into consideration the
+        // __TBB_TRACK_PRIORITY_LEVEL_SATURATION sections from earlier versions of TBB
     } while ( !a && --p >= my_global_bottom_priority );
     return a;
 }
@@ -338,9 +359,6 @@ arena* market::arena_in_need (
 void market::update_allotment ( intptr_t highest_affected_priority ) {
     intptr_t i = highest_affected_priority;
     int available = my_priority_levels[i].workers_available;
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    my_lowest_populated_level = my_global_bottom_priority;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
     for ( ; i >= my_global_bottom_priority; --i ) {
         priority_level_info &pl = my_priority_levels[i];
         pl.workers_available = available;
@@ -349,9 +367,6 @@ void market::update_allotment ( intptr_t highest_affected_priority ) {
             available -= pl.workers_requested;
             if ( available < 0 ) {
                 available = 0;
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-                my_lowest_populated_level = i;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
                 break;
             }
         }
@@ -384,23 +399,18 @@ void market::adjust_demand ( arena& a, int delta ) {
         }
         delta = -prev_req;
     }
-#if __TBB_TASK_ARENA
     else if ( prev_req < 0 ) {
         delta = a.my_num_workers_requested;
     }
-#else  /* __TBB_TASK_ARENA */
-    __TBB_ASSERT( prev_req >= 0, "Part-size request to RML?" );
-#endif /* __TBB_TASK_ARENA */
-#if __TBB_TASK_PRIORITY
+    my_total_demand += delta;
+#if !__TBB_TASK_PRIORITY
+    update_allotment();
+#else /* !__TBB_TASK_PRIORITY */
     intptr_t p = a.my_top_priority;
     priority_level_info &pl = my_priority_levels[p];
     pl.workers_requested += delta;
     __TBB_ASSERT( pl.workers_requested >= 0, NULL );
-#if !__TBB_TASK_ARENA
     __TBB_ASSERT( a.my_num_workers_requested >= 0, NULL );
-#else
-    //TODO: understand the assertion and modify
-#endif
     if ( a.my_num_workers_requested <= 0 ) {
         if ( a.my_top_priority != normalized_normal_priority ) {
             GATHER_STATISTIC( ++governor::local_scheduler_if_initialized()->my_counters.arena_prio_resets );
@@ -420,14 +430,10 @@ void market::adjust_demand ( arena& a, int delta ) {
         update_allotment( my_global_top_priority );
     }
     else if ( p > my_global_top_priority ) {
-#if !__TBB_TASK_ARENA
         __TBB_ASSERT( pl.workers_requested > 0, NULL );
-#else
-        //TODO: understand the assertion and modify
-#endif
         update_global_top_priority(p);
-        a.my_num_workers_allotted = min( (int)my_max_num_workers, a.my_num_workers_requested );
-        my_priority_levels[p - 1].workers_available = my_max_num_workers - a.my_num_workers_allotted;
+        a.my_num_workers_allotted = min( (int)my_num_workers_soft_limit, a.my_num_workers_requested );
+        my_priority_levels[p - 1].workers_available = my_num_workers_soft_limit - a.my_num_workers_allotted;
         update_allotment( p - 1 );
     }
     else if ( p == my_global_bottom_priority ) {
@@ -436,12 +442,8 @@ void market::adjust_demand ( arena& a, int delta ) {
                 continue;
             if ( p > my_global_top_priority )
                 reset_global_priority();
-            else {
+            else
                 my_global_bottom_priority = p;
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-                my_lowest_populated_level = max( my_lowest_populated_level, p );
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-            }
         }
         else
             update_allotment( p );
@@ -458,10 +460,20 @@ void market::adjust_demand ( arena& a, int delta ) {
     }
     __TBB_ASSERT( my_global_top_priority >= a.my_top_priority || a.my_num_workers_requested<=0, NULL );
     assert_market_valid();
-#else /* !__TBB_TASK_PRIORITY */
-    my_total_demand += delta;
-    update_allotment();
 #endif /* !__TBB_TASK_PRIORITY */
+    if ( delta > 0 ) {
+        // can't overflow soft_limit, but remember values request by arenas in
+        // my_total_demand to not prematurely release workers to RML
+        if ( my_num_workers_requested+delta > (int)my_num_workers_soft_limit ) {
+            delta = my_num_workers_soft_limit - my_num_workers_requested;
+        }
+    } else
+        // the number of workers should not be decreased below my_total_demand
+        if ( my_num_workers_requested+delta < my_total_demand )
+            delta = min(my_total_demand, (int)my_num_workers_soft_limit) - my_num_workers_requested;
+    my_num_workers_requested += delta;
+    __TBB_ASSERT( my_num_workers_requested <= (int)my_num_workers_soft_limit, NULL );
+
     my_arenas_list_mutex.unlock();
     // Must be called outside of any locks
     my_server->adjust_job_count_estimate( delta );
@@ -470,14 +482,44 @@ void market::adjust_demand ( arena& a, int delta ) {
 
 void market::process( job& j ) {
     generic_scheduler& s = static_cast<generic_scheduler&>(j);
-    __TBB_ASSERT( governor::is_set(&s), NULL );
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
     arena *a = NULL;
-    while ( (a = arena_in_need(a)) )
+    __TBB_ASSERT( governor::is_set(&s), NULL );
+    enum {
+        query_interval = 1000,
+        first_interval = 1,
+        pause_time = 100 // similar to PauseTime used for the stealing loop
+    };
+    for(int i = first_interval; ; i--) {
+        while ( (a = arena_in_need(a)) )
+        {
+            a->process(s);
+            i = first_interval;
+        }
+        // Workers leave market because there is no arena in need. It can happen earlier than
+        // adjust_job_count_estimate() decreases my_slack and RML can put this thread to sleep.
+        // It might result in a busy-loop checking for my_slack<0 and calling this method instantly.
+        // first_interval>0 and the pause refines this spinning.
+        if( i > 0 )
+            __TBB_Pause(pause_time);
+        else
+#if !__TBB_SLEEP_PERMISSION
+            break;
 #else
-    while ( arena *a = arena_in_need() )
-#endif
-        a->process(s);
+        { // i == 0
+#if __TBB_TASK_PRIORITY
+            arena_list_type &al = my_priority_levels[my_global_top_priority].arenas;
+#else /* __TBB_TASK_PRIORITY */
+            arena_list_type &al = my_arenas;
+#endif /* __TBB_TASK_PRIORITY */
+            if( al.empty() ) // races if any are innocent TODO: replace by an RML query interface
+                break; // no arenas left, perhaps going to shut down
+            if( the_global_observer_list.ask_permission_to_leave() )
+                break; // go sleep
+            __TBB_Yield();
+            i = query_interval;
+        }
+#endif// !__TBB_SLEEP_PERMISSION
+    }
     GATHER_STATISTIC( ++s.my_counters.market_roundtrips );
 }
 
@@ -500,12 +542,13 @@ void market::acknowledge_close_connection() {
 }
 
 ::rml::job* market::create_one_job() {
-    unsigned index = ++my_num_workers;
+    unsigned index = ++my_first_unused_worker_idx;
     __TBB_ASSERT( index > 0, NULL );
     ITT_THREAD_SET_NAME(_T("TBB Worker Thread"));
     // index serves as a hint decreasing conflicts between workers when they migrate between arenas
     generic_scheduler* s = generic_scheduler::create_worker( *this, index );
 #if __TBB_TASK_GROUP_CONTEXT
+    __TBB_ASSERT( index <= my_num_workers_hard_limit, NULL );
     __TBB_ASSERT( !my_workers[index - 1], NULL );
     my_workers[index - 1] = s;
 #endif /* __TBB_TASK_GROUP_CONTEXT */
@@ -522,14 +565,7 @@ void market::update_arena_top_priority ( arena& a, intptr_t new_priority ) {
     remove_arena_from_list(a);
     a.my_top_priority = new_priority;
     insert_arena_into_list(a);
-    ++a.my_reload_epoch;
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    // Arena's my_num_workers_present may remain positive for some time after its
-    // my_num_workers_requested becomes zero. Thus the following two lines are
-    // executed unconditionally.
-    prev_level.workers_present -= a.my_num_workers_present;
-    new_level.workers_present += a.my_num_workers_present;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
+    ++a.my_reload_epoch; // TODO: synch with global reload epoch in order to optimize usage of local reload epoch
     prev_level.workers_requested -= a.my_num_workers_requested;
     new_level.workers_requested += a.my_num_workers_requested;
     __TBB_ASSERT( prev_level.workers_requested >= 0 && new_level.workers_requested >= 0, NULL );
diff --git a/src/tbb/market.h b/src/tbb/market.h
index 093e15a..986c565 100644
--- a/src/tbb/market.h
+++ b/src/tbb/market.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_market_H
@@ -33,7 +25,7 @@
 
 #include "scheduler_common.h"
 #include "tbb/atomic.h"
-#include "tbb/spin_mutex.h"
+#include "tbb/spin_rw_mutex.h"
 #include "../rml/include/rml_tbb.h"
 
 #include "intrusive_list.h"
@@ -50,10 +42,6 @@ class task_group_context;
 
 namespace internal {
 
-class arena;
-class generic_scheduler;
-template<typename SchedulerTraits> class custom_scheduler;
-
 //------------------------------------------------------------------------
 // Class market
 //------------------------------------------------------------------------
@@ -61,6 +49,7 @@ template<typename SchedulerTraits> class custom_scheduler;
 class market : no_copy, rml::tbb_client {
     friend class generic_scheduler;
     friend class arena;
+    friend class tbb::interface7::internal::task_arena_base;
     template<typename SchedulerTraits> friend class custom_scheduler;
     friend class tbb::task_group_context;
 private:
@@ -76,26 +65,31 @@ private:
     //! Mutex guarding creation/destruction of theMarket, insertions/deletions in my_arenas, and cancellation propagation
     static global_market_mutex_type  theMarketMutex;
 
-    //! Reference count controlling market object lifetime
-    intptr_t my_ref_count;
-
     //! Lightweight mutex guarding accounting operations with arenas list
-    typedef scheduler_mutex_type arenas_list_mutex_type;
+    typedef spin_rw_mutex arenas_list_mutex_type;
     arenas_list_mutex_type my_arenas_list_mutex;
 
     //! Pointer to the RML server object that services this TBB instance.
     rml::tbb_server* my_server;
 
-    //! Stack size of worker threads
-    size_t my_stack_size;
+    //! Maximal number of workers allowed for use by the underlying resource manager
+    /** It can't be changed after market creation. **/
+    unsigned my_num_workers_hard_limit;
+
+    //! Current application-imposed limit on the number of workers (see set_active_num_workers())
+    /** It can't be more than my_num_workers_hard_limit. **/
+    unsigned my_num_workers_soft_limit;
 
-    //! Number of workers requested from the underlying resource manager
-    unsigned my_max_num_workers;
+    //! Number of workers currently requested from RML
+    int my_num_workers_requested;
 
-    //! Number of workers that have been delivered by RML
+    //! First unused index of worker
     /** Used to assign indices to the new workers coming from RML, and busy part
         of my_workers array. **/
-    atomic<unsigned> my_num_workers;
+    atomic<unsigned> my_first_unused_worker_idx;
+
+    //! Number of workers that were requested by all arenas
+    int my_total_demand;
 
 #if __TBB_TASK_PRIORITY
     //! Highest priority among active arenas in the market.
@@ -121,28 +115,18 @@ private:
 
         //! The first arena to be checked when idle worker seeks for an arena to enter
         /** The check happens in round-robin fashion. **/
-        arena_list_type::iterator next_arena;
+        arena *next_arena;
 
         //! Total amount of workers requested by arenas at this priority level.
         int workers_requested;
 
         //! Maximal amount of workers the market can tell off to this priority level.
         int workers_available;
-
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-        //! Total amount of workers that are in arenas at this priority level.
-        int workers_present;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
     }; // struct priority_level_info
 
     //! Information about arenas at different priority levels
     priority_level_info my_priority_levels[num_priority_levels];
 
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-    //! Lowest priority level having workers available.
-    intptr_t my_lowest_populated_level;
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-
 #else /* !__TBB_TASK_PRIORITY */
 
     //! List of registered arenas
@@ -150,15 +134,24 @@ private:
 
     //! The first arena to be checked when idle worker seeks for an arena to enter
     /** The check happens in round-robin fashion. **/
-    arena_list_type::iterator my_next_arena;
-
-    //! Number of workers that were requested by all arenas
-    int my_total_demand;
+    arena *my_next_arena;
 #endif /* !__TBB_TASK_PRIORITY */
 
     //! ABA prevention marker to assign to newly created arenas
     uintptr_t my_arenas_aba_epoch;
 
+    //! Reference count controlling market object lifetime
+    unsigned my_ref_count;
+
+    //! Count of master threads attached
+    unsigned my_public_ref_count;
+
+    //! Stack size of worker threads
+    size_t my_stack_size;
+
+    //! Shutdown mode
+    bool join_workers;
+
 #if __TBB_COUNT_TASK_NODES
     //! Net number of nodes that have been allocated from heap.
     /** Updated each time a scheduler or arena is destroyed. */
@@ -166,23 +159,18 @@ private:
 #endif /* __TBB_COUNT_TASK_NODES */
 
     //! Constructor
-    market ( unsigned max_num_workers, size_t stack_size );
+    market ( unsigned workers_soft_limit, unsigned workers_hard_limit, size_t stack_size );
 
     //! Factory method creating new market object
-    static market& global_market ( unsigned max_num_workers, size_t stack_size );
+    static market& global_market ( unsigned max_num_workers = 0, size_t stack_size = 0,
+                                   bool default_concurrency_requested = false, bool is_public = false );
 
     //! Destroys and deallocates market object created by market::create()
     void destroy ();
 
-    void try_destroy_arena ( arena*, uintptr_t aba_epoch );
-
 #if __TBB_TASK_PRIORITY
     //! Returns next arena that needs more workers, or NULL.
-    arena* arena_in_need (
-#if __TBB_TRACK_PRIORITY_LEVEL_SATURATION
-                           arena* prev_arena
-#endif /* __TBB_TRACK_PRIORITY_LEVEL_SATURATION */
-                         );
+    arena* arena_in_need ( arena* prev_arena );
 
     //! Recalculates the number of workers assigned to each arena at and below the specified priority.
     /** The actual number of workers servicing a particular arena may temporarily 
@@ -220,8 +208,10 @@ private:
     }
 
     //! Returns next arena that needs more workers, or NULL.
-    arena* arena_in_need () {
-        spin_mutex::scoped_lock lock(my_arenas_list_mutex);
+    arena* arena_in_need (arena*) {
+        if(__TBB_load_with_acquire(my_total_demand) <= 0)
+            return NULL;
+        arenas_list_mutex_type::scoped_lock lock(my_arenas_list_mutex, /*is_writer=*/false);
         return arena_in_need(my_arenas, my_next_arena);
     }
     void assert_market_valid () const {}
@@ -230,7 +220,6 @@ private:
     //! Returns number of masters doing computational (CPU-intensive) work
     int num_active_masters () { return 1; }  // APM TODO: replace with a real mechanism
 
-
     ////////////////////////////////////////////////////////////////////////////////
     // Helpers to unify code branches dependent on priority feature presence
 
@@ -238,7 +227,7 @@ private:
 
     void remove_arena_from_list ( arena& a );
 
-    arena* arena_in_need ( arena_list_type &arenas, arena_list_type::iterator& next );
+    arena* arena_in_need ( arena_list_type &arenas, arena *&next );
 
     static void update_allotment ( arena_list_type& arenas, int total_demand, int max_workers );
 
@@ -248,7 +237,7 @@ private:
 
     /*override*/ version_type version () const { return 0; }
 
-    /*override*/ unsigned max_job_count () const { return my_max_num_workers; }
+    /*override*/ unsigned max_job_count () const { return my_num_workers_hard_limit; }
 
     /*override*/ size_t min_stack_size () const { return worker_stack_size(); }
 
@@ -266,31 +255,35 @@ public:
     //! Creates an arena object
     /** If necessary, also creates global market instance, and boosts its ref count.
         Each call to create_arena() must be matched by the call to arena::free_arena(). **/
-    static arena& create_arena ( unsigned max_num_workers, size_t stack_size );
+    static arena& create_arena ( int num_slots, size_t stack_size, bool default_concurrency_requested );
 
     //! Removes the arena from the market's list
-    static void try_destroy_arena ( market*, arena*, uintptr_t aba_epoch, bool master );
+    void try_destroy_arena ( arena*, uintptr_t aba_epoch );
 
     //! Removes the arena from the market's list
     void detach_arena ( arena& );
 
     //! Decrements market's refcount and destroys it in the end
-    void release ();
+    void release ( bool is_public = false );
 
     //! Request that arena's need in workers should be adjusted.
     /** Concurrent invocations are possible only on behalf of different arenas. **/
     void adjust_demand ( arena&, int delta );
 
-    //! Guarantee that request_close_connection() is called by master, not some worker
-    /** Must be called before arena::on_thread_leaving() **/
-    void prepare_wait_workers() { ++my_ref_count; }
-
-    //! Wait workers termiantion
+    //! Wait workers termination
     void wait_workers ();
 
+    bool must_join_workers () const { return join_workers; }
+
     //! Returns the requested stack size of worker threads.
     size_t worker_stack_size () const { return my_stack_size; }
 
+    //! Set number of active workers
+    static void set_active_num_workers( unsigned w );
+
+    //! Reports active parallelism level according to user's settings
+    static unsigned app_parallelism_limit();
+
 #if _WIN32||_WIN64
     //! register master with the resource manager
     void register_master( ::rml::server::execution_resource_t& rsc_handle ) {
@@ -342,6 +335,10 @@ public:
     generic_scheduler* my_workers[1];
 #endif /* __TBB_TASK_GROUP_CONTEXT */
 
+    static unsigned max_num_workers() {
+        global_market_mutex_type::scoped_lock lock( theMarketMutex );
+        return theMarket? theMarket->my_num_workers_hard_limit : 0;
+    }
 }; // class market
 
 #if __TBB_TASK_PRIORITY
diff --git a/src/tbb/mutex.cpp b/src/tbb/mutex.cpp
index 266e876..6b15072 100644
--- a/src/tbb/mutex.cpp
+++ b/src/tbb/mutex.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#if _WIN32||_WIN64
+#include <errno.h> // EDEADLK
+#endif
 #include "tbb/mutex.h"
 #include "itt_notify.h"
 
@@ -40,20 +35,22 @@ namespace tbb {
             // If a thread comes here, and another thread holds the lock, it will block
             // in EnterCriticalSection.  When it returns from EnterCriticalSection,
             // m.state must be set to INITIALIZED.  If the same thread tries to acquire a lock it
-            // aleady holds, the the lock is in HELD state, thus will cause the assertion to fail.
-            __TBB_ASSERT(m.state!=HELD, "mutex::scoped_lock: deadlock caused by attempt to reacquire held mutex");
+            // aleady holds, the lock is in HELD state, thus will cause throwing the exception.
+            if (m.state==HELD)
+                tbb::internal::handle_perror(EDEADLK,"mutex::scoped_lock: deadlock caused by attempt to reacquire held mutex");
             m.state = HELD;
             break;
-        case DESTROYED: 
-            __TBB_ASSERT(false,"mutex::scoped_lock: mutex already destroyed"); 
+        case DESTROYED:
+            __TBB_ASSERT(false,"mutex::scoped_lock: mutex already destroyed");
             break;
-        default: 
+        default:
             __TBB_ASSERT(false,"mutex::scoped_lock: illegal mutex state");
             break;
         }
 #else
         int error_code = pthread_mutex_lock(&m.impl);
-        __TBB_ASSERT_EX(!error_code,"mutex::scoped_lock: pthread_mutex_lock failed");
+        if( error_code )
+            tbb::internal::handle_perror(error_code,"mutex::scoped_lock: pthread_mutex_lock failed");
 #endif /* _WIN32||_WIN64 */
         my_mutex = &m;
     }
diff --git a/src/tbb/observer_proxy.cpp b/src/tbb/observer_proxy.cpp
index 3c44704..07544ec 100644
--- a/src/tbb/observer_proxy.cpp
+++ b/src/tbb/observer_proxy.cpp
@@ -1,34 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
-#if !TBB_PREVIEW_LOCAL_OBSERVER
-    #error TBB_PREVIEW_LOCAL_OBSERVER must be defined
+#if !__TBB_ARENA_OBSERVER
+    #error __TBB_ARENA_OBSERVER must be defined
 #endif
 
 #if __TBB_SCHEDULER_OBSERVER
@@ -42,7 +34,7 @@
 namespace tbb {
 namespace internal {
 
-observer_list the_global_observer_list;
+padded<observer_list> the_global_observer_list;
 
 #if TBB_USE_ASSERT
 static atomic<int> observer_proxy_count;
@@ -59,12 +51,12 @@ static check_observer_proxy_count the_check_observer_proxy_count;
 #endif /* TBB_USE_ASSERT */
 
 interface6::task_scheduler_observer* observer_proxy::get_v6_observer() {
-    __TBB_ASSERT(my_version == 6, NULL);
+    if(my_version != 6) return NULL;
     return static_cast<interface6::task_scheduler_observer*>(my_observer);
 }
 
 bool observer_proxy::is_global() {
-    return my_version < 6 || get_v6_observer()->my_context_tag == interface6::task_scheduler_observer::global_tag;
+    return !get_v6_observer() || get_v6_observer()->my_context_tag == interface6::task_scheduler_observer::global_tag;
 }
 
 observer_proxy::observer_proxy( task_scheduler_observer_v3& tso )
@@ -113,11 +105,10 @@ void observer_list::clear () {
             // conflict with the proxy list cleanup.
             if ( !obs || !(p = (observer_proxy*)__TBB_FetchAndStoreW(&obs->my_proxy, 0)) )
                 continue;
+            // accessing 'obs' after detaching of obs->my_proxy leads to the race with observer destruction
             __TBB_ASSERT( !next || p == next->my_prev, NULL );
             __TBB_ASSERT( is_alive(p->my_ref_count), "Observer's proxy died prematurely" );
             __TBB_ASSERT( p->my_ref_count == 1, "Reference for observer is missing" );
-            __TBB_ASSERT( !obs->my_busy_count, "Local observer in an empty arena cannot be marked as busy" );
-            store<relaxed>( obs->my_busy_count, interface6::task_scheduler_observer::v6_trait );
 #if TBB_USE_ASSERT
             p->my_observer = NULL;
             p->my_ref_count = 0;
@@ -184,6 +175,7 @@ void observer_list::remove_ref( observer_proxy* p ) {
         if( !r )
             remove(p);
     }
+    __TBB_ASSERT( r || !p->my_ref_count, NULL );
     if( !r )
         delete p;
 }
@@ -208,8 +200,10 @@ void observer_list::do_notify_entry_observers( observer_proxy*& last, bool worke
                         // Reached the end of the list.
                         if( p == prev ) {
                             // Keep the reference as we store the 'last' pointer in scheduler
+                            __TBB_ASSERT(p->my_ref_count >= 1 + (p->my_observer?1:0), NULL);
                         } else {
                             // The last few proxies were empty
+                            __TBB_ASSERT(p->my_ref_count, NULL);
                             ++p->my_ref_count;
                             if( prev ) {
                                 lock.release();
@@ -238,6 +232,7 @@ void observer_list::do_notify_entry_observers( observer_proxy*& last, bool worke
         // Do not intercept any exceptions that may escape the callback so that
         // they are either handled by the TBB scheduler or passed to the debugger.
         tso->on_scheduler_entry(worker);
+        __TBB_ASSERT(p->my_ref_count, NULL);
         intptr_t bc = --tso->my_busy_count;
         __TBB_ASSERT_EX( bc>=0, "my_busy_count underflowed" );
         prev = p;
@@ -256,7 +251,7 @@ void observer_list::do_notify_exit_observers( observer_proxy* last, bool worker
                 if( p ) {
                     // We were already processing the list.
                     if( p != last ) {
-                        __TBB_ASSERT( p->my_next, "List items before 'prev' must have valid my_next pointer" );
+                        __TBB_ASSERT( p->my_next, "List items before 'last' must have valid my_next pointer" );
                         if( p == prev )
                             remove_ref_fast(prev); // sets prev to NULL if successful
                         p = p->my_next;
@@ -288,16 +283,16 @@ void observer_list::do_notify_exit_observers( observer_proxy* last, bool worker
         // Do not intercept any exceptions that may escape the callback so that
         // they are either handled by the TBB scheduler or passed to the debugger.
         tso->on_scheduler_exit(worker);
+        __TBB_ASSERT(p->my_ref_count || p == last, NULL);
         intptr_t bc = --tso->my_busy_count;
         __TBB_ASSERT_EX( bc>=0, "my_busy_count underflowed" );
         prev = p;
     }
 }
 
-#if __TBB_CPF_BUILD
-// TODO: merge with do_notify_.. methods
+#if __TBB_SLEEP_PERMISSION
 bool observer_list::ask_permission_to_leave() {
-    __TBB_ASSERT( this != &the_global_observer_list, "This method cannot be used on the list of global observers" );
+    __TBB_ASSERT( this == &the_global_observer_list, "This method cannot be used on lists of arena observers" );
     if( !my_head ) return true;
     // Pointer p marches though the list
     observer_proxy *p = NULL, *prev = NULL;
@@ -319,7 +314,7 @@ bool observer_list::ask_permission_to_leave() {
                         // Reached the end of the list.
                         if( prev ) {
                             lock.release();
-                            remove_ref(p);
+                            remove_ref(prev);
                         }
                         return result;
                     }
@@ -329,7 +324,7 @@ bool observer_list::ask_permission_to_leave() {
                     if( !p )
                         return result;
                 }
-                tso = p->get_v6_observer(); // all local observers are v6
+                tso = p->get_v6_observer();
             } while( !tso );
             ++p->my_ref_count;
             ++tso->my_busy_count;
@@ -341,7 +336,8 @@ bool observer_list::ask_permission_to_leave() {
         // Do not hold any locks on the list while calling user's code.
         // Do not intercept any exceptions that may escape the callback so that
         // they are either handled by the TBB scheduler or passed to the debugger.
-        result = tso->on_scheduler_leaving();
+        result = tso->may_sleep();
+        __TBB_ASSERT(p->my_ref_count, NULL);
         intptr_t bc = --tso->my_busy_count;
         __TBB_ASSERT_EX( bc>=0, "my_busy_count underflowed" );
         prev = p;
@@ -350,16 +346,18 @@ bool observer_list::ask_permission_to_leave() {
         remove_ref(prev);
     return result;
 }
-#endif //CPF
+#endif//__TBB_SLEEP_PERMISSION
 
 void task_scheduler_observer_v3::observe( bool enable ) {
     if( enable ) {
         if( !my_proxy ) {
             my_proxy = new observer_proxy( *this );
+            my_busy_count = 0; // proxy stores versioning information, clear it
             if ( !my_proxy->is_global() ) {
                 // Local observer activation
                 generic_scheduler* s = governor::local_scheduler_if_initialized();
 #if __TBB_TASK_ARENA
+                __TBB_ASSERT( my_proxy->get_v6_observer(), NULL );
                 intptr_t tag = my_proxy->get_v6_observer()->my_context_tag;
                 if( tag != interface6::task_scheduler_observer::implicit_tag ) { // explicit arena
                     task_arena *a = reinterpret_cast<task_arena*>(tag);
@@ -368,13 +366,12 @@ void task_scheduler_observer_v3::observe( bool enable ) {
                 } else
 #endif
                 {
-                    if( !s ) s = governor::init_scheduler( (unsigned)task_scheduler_init::automatic, 0, true );
+                    if( !s ) s = governor::init_scheduler( task_scheduler_init::automatic, 0, true );
                     __TBB_ASSERT( __TBB_InitOnce::initialization_done(), NULL );
                     __TBB_ASSERT( s && s->my_arena, NULL );
                     my_proxy->my_list = &s->my_arena->my_observers;
                 }
                 my_proxy->my_list->insert(my_proxy);
-                my_busy_count = 0;
                 // Notify newly activated observer and other pending ones if it belongs to current arena
                 if(s && &s->my_arena->my_observers == my_proxy->my_list )
                     my_proxy->my_list->notify_entry_observers( s->my_last_local_observer, s->is_worker() );
@@ -382,7 +379,6 @@ void task_scheduler_observer_v3::observe( bool enable ) {
                 // Obsolete. Global observer activation
                 if( !__TBB_InitOnce::initialization_done() )
                     DoOneTimeInitializations();
-                my_busy_count = 0;
                 my_proxy->my_list = &the_global_observer_list;
                 my_proxy->my_list->insert(my_proxy);
                 if( generic_scheduler* s = governor::local_scheduler_if_initialized() ) {
@@ -405,13 +401,15 @@ void task_scheduler_observer_v3::observe( bool enable ) {
                 // Ensure that none of the list walkers relies on observer pointer validity
                 observer_list::scoped_lock lock(list.mutex(), /*is_writer=*/true);
                 proxy->my_observer = NULL;
+                // Proxy may still be held by other threads (to track the last notified observer)
+                if( !--proxy->my_ref_count ) {// nobody can increase it under exclusive lock
+                    list.remove(proxy);
+                    __TBB_ASSERT( !proxy->my_ref_count, NULL );
+                    delete proxy;
+                }
             }
-            intptr_t trait = proxy->my_version == 6 ? interface6::task_scheduler_observer::v6_trait : 0;
-            // Proxy may still be held by other threads (to track the last notified observer)
-            list.remove_ref(proxy);
-            while( my_busy_count )
+            while( my_busy_count ) // other threads are still accessing the callback
                 __TBB_Yield();
-            store<relaxed>( my_busy_count, trait );
         }
     }
 }
diff --git a/src/tbb/observer_proxy.h b/src/tbb/observer_proxy.h
index 4ba5c84..1855884 100644
--- a/src/tbb/observer_proxy.h
+++ b/src/tbb/observer_proxy.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_observer_proxy_H
@@ -39,15 +31,12 @@
 namespace tbb {
 namespace internal {
 
-class arena;
-class observer_proxy;
-
 class observer_list {
     friend class arena;
 
     // Mutex is wrapped with aligned_space to shut up warnings when its destructor
     // is called while threads are still using it.
-    typedef aligned_space<spin_rw_mutex,1>  my_mutex_type;
+    typedef aligned_space<spin_rw_mutex>  my_mutex_type;
 
     //! Pointer to the head of this list.
     observer_proxy* my_head;
@@ -102,9 +91,9 @@ public:
     inline void notify_entry_observers( observer_proxy*& last, bool worker );
 
     //! Call exit notifications on last and observers added before it.
-    inline void notify_exit_observers( observer_proxy* last, bool worker );
+    inline void notify_exit_observers( observer_proxy*& last, bool worker );
 
-    //! Call on_scheduler_leaving callbacks to ask for permission for a worker thread to leave an arena
+    //! Call may_sleep callbacks to ask for permission for a worker thread to leave market
     bool ask_permission_to_leave();
 }; // class observer_list
 
@@ -149,10 +138,9 @@ class observer_proxy {
 
 inline void observer_list::remove_ref_fast( observer_proxy*& p ) {
     if( p->my_observer ) {
-        // 2 = 1 for observer and 1 for last
-        __TBB_ASSERT( p->my_ref_count>=2, NULL );
         // Can decrement refcount quickly, as it cannot drop to zero while under the lock.
-        --p->my_ref_count;
+        int r = --p->my_ref_count;
+        __TBB_ASSERT_EX( r, NULL );
         p = NULL;
     } else {
         // Use slow form of refcount decrementing, after the lock is released.
@@ -165,13 +153,16 @@ inline void observer_list::notify_entry_observers( observer_proxy*& last, bool w
     do_notify_entry_observers( last, worker );
 }
 
-inline void observer_list::notify_exit_observers( observer_proxy* last, bool worker ) {
+inline void observer_list::notify_exit_observers( observer_proxy*& last, bool worker ) {
     if ( !last )
         return;
+    __TBB_ASSERT(is_alive((uintptr_t)last), NULL);
     do_notify_exit_observers( last, worker );
+    __TBB_ASSERT(last, NULL);
+    poison_value(last);
 }
 
-extern observer_list the_global_observer_list;
+extern padded<observer_list> the_global_observer_list;
 
 } // namespace internal
 } // namespace tbb
diff --git a/src/tbb/pipeline.cpp b/src/tbb/pipeline.cpp
index 1c338df..d469029 100644
--- a/src/tbb/pipeline.cpp
+++ b/src/tbb/pipeline.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/pipeline.h"
@@ -367,8 +359,6 @@ task* stage_task::execute() {
     my_filter = my_filter->next_filter_in_pipeline;
     if( my_filter ) {
         // There is another filter to execute.
-        // Crank up priority a notch.
-        add_to_depth(1);
         if( my_filter->is_serial() ) {
             // The next filter must execute tokens in order
             if( my_filter->my_input_buffer->put_token(*this) ){
@@ -512,7 +502,7 @@ public:
 } // namespace internal
 
 void pipeline::inject_token( task& ) {
-    __TBB_ASSERT(0,"illegal call to inject_token");
+    __TBB_ASSERT(false,"illegal call to inject_token");
 }
 
 #if __TBB_TASK_GROUP_CONTEXT
@@ -732,13 +722,13 @@ thread_bound_filter::result_type thread_bound_filter::internal_process_item(bool
     internal::task_info info;
     info.reset();
 
-    if(my_pipeline && my_pipeline->end_of_input && !has_more_work())
+    if( my_pipeline->end_of_input && !has_more_work() )
         return end_of_stream;
 
     if( !prev_filter_in_pipeline ) {
         if( my_pipeline->end_of_input )
             return end_of_stream;
-        while(my_pipeline->input_tokens == 0) {
+        while( my_pipeline->input_tokens == 0 ) {
             if( !is_blocking )
                 return item_not_available;
             my_input_buffer->sema_P();
@@ -757,28 +747,28 @@ thread_bound_filter::result_type thread_bound_filter::internal_process_item(bool
             return end_of_stream;
         }
     } else { /* this is not an input filter */
-        while(!my_input_buffer->has_item()) {
-            if(!is_blocking) {
+        while( !my_input_buffer->has_item() ) {
+            if( !is_blocking ) {
                 return item_not_available;
             }
             my_input_buffer->sema_P();
-            if( my_pipeline->end_of_input && !has_more_work()) {
+            if( my_pipeline->end_of_input && !has_more_work() ) {
                 return end_of_stream;
             }
         }
-        if(!my_input_buffer->return_item(info, /*advance*/true)) {
-            __TBB_ASSERT(0,"return_item failed");
+        if( !my_input_buffer->return_item(info, /*advance*/true) ) {
+            __TBB_ASSERT(false,"return_item failed");
         }
         info.my_object = (*this)(info.my_object);
     }
     if( next_filter_in_pipeline ) {
-        if (!next_filter_in_pipeline->my_input_buffer->put_token(info,/*force_put=*/true) ) {
-            __TBB_ASSERT(0, "Couldn't put token after thread-bound buffer");
+        if ( !next_filter_in_pipeline->my_input_buffer->put_token(info,/*force_put=*/true) ) {
+            __TBB_ASSERT(false, "Couldn't put token after thread-bound buffer");
         }
     } else {
         size_t ntokens_avail = ++(my_pipeline->input_tokens);
-        if(my_pipeline->filter_list->is_bound()) {
-            if(ntokens_avail == 1) {
+        if( my_pipeline->filter_list->is_bound() ) {
+            if( ntokens_avail == 1 ) {
                 my_pipeline->filter_list->my_input_buffer->sema_V();
             }
         }
diff --git a/src/tbb/private_server.cpp b/src/tbb/private_server.cpp
index 2dbf046..73f12ea 100644
--- a/src/tbb/private_server.cpp
+++ b/src/tbb/private_server.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "rml_tbb.h"
@@ -45,16 +37,14 @@ typedef thread_monitor::handle_type thread_handle;
 class private_server;
 
 class private_worker: no_copy {
+private:
     //! State in finite-state machine that controls the worker.
     /** State diagram:
-        init --------------------\ 
-          |                      | 
-          V                      V
-        starting --> normal --> quit
-          |
-          V
-        plugged
-      */ 
+        init --> starting --> normal
+          |         |           |
+          |         V           |
+          \------> quit <------/
+      */
     enum state_t {
         //! *this is initialized
         st_init,
@@ -63,9 +53,7 @@ class private_worker: no_copy {
         //! Associated thread is doing normal life sequence.
         st_normal,
         //! Associated thread has ended normal life sequence and promises to never touch *this again.
-        st_quit,
-        //! Associated thread should skip normal life sequence, because private_server is shutting down.
-        st_plugged
+        st_quit
     };
     atomic<state_t> my_state;
     
@@ -84,11 +72,8 @@ class private_worker: no_copy {
     thread_monitor my_thread_monitor;
 
     //! Handle of the OS thread associated with this worker
-    /** my_handle and my_handle_ready are used only in needsWaitWorkers() mode */
     thread_handle my_handle;
 
-    atomic<bool> my_handle_ready; // make atomic to add fences
-
     //! Link for list of workers that are sleeping or have no associated thread.
     private_worker* my_next;
 
@@ -105,13 +90,14 @@ class private_worker: no_copy {
 
     static __RML_DECL_THREAD_ROUTINE thread_routine( void* arg );
 
+    static void release_handle(thread_handle my_handle, bool join);
+
 protected:
     private_worker( private_server& server, tbb_client& client, const size_t i ) : 
         my_server(server),
         my_client(client),
         my_index(i)
     {
-        my_handle_ready = false;
         my_state = st_init;
     }
 };
@@ -120,7 +106,7 @@ static const size_t cache_line_size = tbb::internal::NFS_MaxLineSize;
 
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
-    // Suppress overzealous compiler warnings about uninstantiatble class
+    // Suppress overzealous compiler warnings about uninstantiable class
     #pragma warning(push)
     #pragma warning(disable:4510 4610)
 #endif
@@ -135,6 +121,7 @@ public:
 #endif
 
 class private_server: public tbb_server, no_copy {
+private:
     tbb_client& my_client;
     //! Maximum number of threads to be created.
     /** Threads are created lazily, so maximum might not actually be reached. */
@@ -245,81 +232,88 @@ __RML_DECL_THREAD_ROUTINE private_worker::thread_routine( void* arg ) {
     #pragma warning(pop)
 #endif
 
+void private_worker::release_handle(thread_handle handle, bool join) {
+    if (join)
+        thread_monitor::join(handle);
+    else
+        thread_monitor::detach_thread(handle);
+}
+
 void private_worker::start_shutdown() {
     state_t s;
-    // Transition from st_starting or st_normal to st_plugged or st_quit
+
     do {
         s = my_state;
-        __TBB_ASSERT( s==st_init||s==st_starting||s==st_normal, NULL );
-    } while( my_state.compare_and_swap( s==st_starting? st_plugged : st_quit, s )!=s );
-    if( s==st_normal ) {
+        __TBB_ASSERT( s!=st_quit, NULL );
+    } while( my_state.compare_and_swap( st_quit, s )!=s );
+    if( s==st_normal || s==st_starting ) {
         // May have invalidated invariant for sleeping, so wake up the thread.
         // Note that the notify() here occurs without maintaining invariants for my_slack.
         // It does not matter, because my_state==st_quit overrides checking of my_slack.
         my_thread_monitor.notify();
+        // Do not need release handle in st_init state,
+        // because in this case the thread wasn't started yet.
+        // For st_starting release is done at launch site.
+        if (s==st_normal)
+            release_handle(my_handle, governor::does_client_join_workers(my_client));
     } else if( s==st_init ) {
         // Perform action that otherwise would be performed by associated thread when it quits.
         my_server.remove_server_ref();
     }
-    // Do not need join for st_init state,
-    // because in this case the thread wasn't started yet.
-    if (governor::needsWaitWorkers() && s!=st_init) {
-        while (!my_handle_ready)
-            __TBB_Yield();
-        // my_handle is valid at this point
-        thread_monitor::join(my_handle);
-    }
 }
 
 void private_worker::run() {
     my_server.propagate_chain_reaction();
-    state_t s = my_state.compare_and_swap( st_normal, st_starting );
-    if( s==st_starting ) {
-        ::rml::job& j = *my_client.create_one_job();
-        while( my_state==st_normal ) {
-            if( my_server.my_slack>=0 ) {
-                my_client.process(j);
+
+    // Transiting to st_normal here would require setting my_handle,
+    // which would create race with the launching thread and 
+    // complications in handle management on Windows.
+
+    ::rml::job& j = *my_client.create_one_job();
+    while( my_state!=st_quit ) {
+        if( my_server.my_slack>=0 ) {
+            my_client.process(j);
+        } else {
+            thread_monitor::cookie c;
+            // Prepare to wait
+            my_thread_monitor.prepare_wait(c);
+            // Check/set the invariant for sleeping
+            if( my_state!=st_quit && my_server.try_insert_in_asleep_list(*this) ) {
+                my_thread_monitor.commit_wait(c);
+                my_server.propagate_chain_reaction();
             } else {
-                thread_monitor::cookie c;
-                // Prepare to wait
-                my_thread_monitor.prepare_wait(c);
-                // Check/set the invariant for sleeping
-                if( my_state==st_normal && my_server.try_insert_in_asleep_list(*this) ) {
-                    my_thread_monitor.commit_wait(c);
-                    my_server.propagate_chain_reaction();
-                } else {
-                    // Invariant broken
-                    my_thread_monitor.cancel_wait();
-                }
+                // Invariant broken
+                my_thread_monitor.cancel_wait();
             }
         }
-        my_client.cleanup(j);
-    } else {
-        // Server is already shutting down.
-        __TBB_ASSERT( s==st_plugged, NULL );
     }
+    my_client.cleanup(j);
+
     ++my_server.my_slack;
     my_server.remove_server_ref();
 }
 
 inline void private_worker::wake_or_launch() {
     if( my_state==st_init && my_state.compare_and_swap( st_starting, st_init )==st_init ) {
-        thread_handle handle;
+        // after this point, remove_server_ref() must be done by created thread
 #if USE_WINTHREAD
-        handle = thread_monitor::launch( thread_routine, this, my_server.my_stack_size, &this->my_index );
+        my_handle = thread_monitor::launch( thread_routine, this, my_server.my_stack_size, &this->my_index );
 #elif USE_PTHREAD
         {
         affinity_helper fpa;
         fpa.protect_affinity_mask();
-        handle = thread_monitor::launch( thread_routine, this, my_server.my_stack_size );
+        my_handle = thread_monitor::launch( thread_routine, this, my_server.my_stack_size );
         // Implicit destruction of fpa resets original affinity mask.
         }
 #endif /* USE_PTHREAD */
-        if (governor::needsWaitWorkers()) {
-            my_handle = handle;
-            my_handle_ready = true; // do visible that my_handle is valid
-        } else
-            thread_monitor::detach_thread(handle);
+        state_t s = my_state.compare_and_swap( st_normal, st_starting );
+        if (st_starting != s) {
+            // Do shutdown during startup. my_handle can't be released
+            // by start_shutdown, because my_handle value might be not set yet
+            // at time of transition from st_starting to st_quit.
+            __TBB_ASSERT( s==st_quit, NULL );
+            release_handle(my_handle, governor::does_client_join_workers(my_client));
+        }
     }
     else
         my_thread_monitor.notify();
@@ -358,7 +352,9 @@ private_server::~private_server() {
 }
 
 inline bool private_server::try_insert_in_asleep_list( private_worker& t ) {
-    asleep_list_mutex_type::scoped_lock lock(my_asleep_list_mutex);
+    asleep_list_mutex_type::scoped_lock lock;
+    if( !lock.try_acquire(my_asleep_list_mutex) )
+        return false;
     // Contribute to slack under lock so that if another takes that unit of slack,
     // it sees us sleeping on the list and wakes us up.
     int k = ++my_slack;
@@ -419,7 +415,7 @@ void private_server::adjust_job_count_estimate( int delta ) {
 tbb_server* make_private_server( tbb_client& client ) {
     return new( tbb::cache_aligned_allocator<private_server>().allocate(1) ) private_server(client);
 }
-        
+
 } // namespace rml
 } // namespace internal
 
diff --git a/src/tbb/queuing_mutex.cpp b/src/tbb/queuing_mutex.cpp
index 70f711a..7650a79 100644
--- a/src/tbb/queuing_mutex.cpp
+++ b/src/tbb/queuing_mutex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/queuing_mutex.h"
diff --git a/src/tbb/queuing_rw_mutex.cpp b/src/tbb/queuing_rw_mutex.cpp
index e84689b..e693b04 100644
--- a/src/tbb/queuing_rw_mutex.cpp
+++ b/src/tbb/queuing_rw_mutex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /** Before making any changes in the implementation, please emulate algorithmic changes
@@ -343,7 +335,7 @@ retry:
                 __TBB_ASSERT(__TBB_load_relaxed(my_prev)==pred, NULL);
                 __TBB_store_with_release(pred->my_next, my_next);
             }
-            // Safe to release in the order opposite to acquiring which makes the code simplier
+            // Safe to release in the order opposite to acquiring which makes the code simpler
             pred->release_internal_lock();
 
         } else { // No predecessor when we looked
diff --git a/src/tbb/reader_writer_lock.cpp b/src/tbb/reader_writer_lock.cpp
index 3696743..87ecbe4 100644
--- a/src/tbb/reader_writer_lock.cpp
+++ b/src/tbb/reader_writer_lock.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/reader_writer_lock.h"
diff --git a/src/tbb/recursive_mutex.cpp b/src/tbb/recursive_mutex.cpp
index 2428488..ff5b582 100644
--- a/src/tbb/recursive_mutex.cpp
+++ b/src/tbb/recursive_mutex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/recursive_mutex.h"
@@ -34,7 +26,7 @@ namespace tbb {
 void recursive_mutex::scoped_lock::internal_acquire( recursive_mutex& m ) {
 #if _WIN32||_WIN64
     switch( m.state ) {
-      case INITIALIZED: 
+      case INITIALIZED:
         // since we cannot look into the internal of the CriticalSection object
         // we won't know how many times the lock has been acquired, and thus
         // we won't know when we may safely set the state back to INITIALIZED
@@ -42,16 +34,17 @@ void recursive_mutex::scoped_lock::internal_acquire( recursive_mutex& m ) {
         // the state for recursive_mutex
         EnterCriticalSection( &m.impl );
         break;
-      case DESTROYED: 
-        __TBB_ASSERT(false,"recursive_mutex::scoped_lock: mutex already destroyed"); 
+      case DESTROYED:
+        __TBB_ASSERT(false,"recursive_mutex::scoped_lock: mutex already destroyed");
         break;
-      default: 
+      default:
         __TBB_ASSERT(false,"recursive_mutex::scoped_lock: illegal mutex state");
         break;
     }
 #else
     int error_code = pthread_mutex_lock(&m.impl);
-    __TBB_ASSERT_EX(!error_code,"recursive_mutex::scoped_lock: pthread_mutex_lock failed");
+    if( error_code )
+        tbb::internal::handle_perror(error_code,"recursive_mutex::scoped_lock: pthread_mutex_lock failed");
 #endif /* _WIN32||_WIN64 */
     my_mutex = &m;
 }
@@ -130,8 +123,8 @@ void recursive_mutex::internal_destroy() {
         __TBB_ASSERT(false,"recursive_mutex: already destroyed");
         break;
       default: 
-         __TBB_ASSERT(false,"recursive_mutex: illegal state for destruction");
-         break;
+        __TBB_ASSERT(false,"recursive_mutex: illegal state for destruction");
+        break;
     }
     state = DESTROYED;
 #else
diff --git a/src/tbb/scheduler.cpp b/src/tbb/scheduler.cpp
index 9877bd6..8b085cd 100644
--- a/src/tbb/scheduler.cpp
+++ b/src/tbb/scheduler.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "custom_scheduler.h"
@@ -64,11 +56,15 @@ static task_group_context the_dummy_context(task_group_context::isolated);
 void Scheduler_OneTimeInitialization ( bool itt_present ) {
     AllocateSchedulerPtr = itt_present ? &custom_scheduler<DefaultSchedulerTraits>::allocate_scheduler :
                                       &custom_scheduler<IntelSchedulerTraits>::allocate_scheduler;
-#if __TBB_TASK_GROUP_CONTEXT && __TBB_TASK_PRIORITY
-    // There are no tasks belonging to this fake task group. So it should never
-    // prevent tasks from being passed to execution.
+#if __TBB_TASK_GROUP_CONTEXT
+    // There must be no tasks belonging to this fake task group. Mark invalid for the assert
+    __TBB_ASSERT(!(task_group_context::low_unused_state_bit & (task_group_context::low_unused_state_bit-1)), NULL);
+    the_dummy_context.my_state = task_group_context::low_unused_state_bit;
+#if __TBB_TASK_PRIORITY
+    // It should never prevent tasks from being passed to execution.
     the_dummy_context.my_priority = num_priority_levels - 1;
-#endif /* __TBB_TASK_GROUP_CONTEXT && __TBB_TASK_PRIORITY */
+#endif /* __TBB_TASK_PRIORITY */
+#endif /* __TBB_TASK_GROUP_CONTEXT */
 }
 
 //------------------------------------------------------------------------
@@ -109,10 +105,8 @@ generic_scheduler::generic_scheduler( arena* a, size_t index )
     , my_local_ctx_list_update(make_atomic(uintptr_t(0)))
 #endif /* __TBB_TASK_GROUP_CONTEXT */
 #if __TBB_TASK_PRIORITY
-    , my_ref_top_priority(NULL)
     , my_offloaded_tasks(NULL)
     , my_offloaded_task_list_tail_link(NULL)
-    , my_ref_reload_epoch(NULL)
     , my_local_reload_epoch(0)
     , my_pool_reshuffling_pending(false)
 #endif /* __TBB_TASK_PRIORITY */
@@ -133,6 +127,10 @@ generic_scheduler::generic_scheduler( arena* a, size_t index )
     my_last_global_observer = NULL;
     my_last_local_observer = NULL;
 #endif /* __TBB_SCHEDULER_OBSERVER */
+#if __TBB_TASK_PRIORITY
+    my_ref_top_priority = NULL;
+    my_ref_reload_epoch = NULL;
+#endif /* __TBB_TASK_PRIORITY */
 
     my_dummy_task = &allocate_task( sizeof(task), __TBB_CONTEXT_ARG(NULL, NULL) );
 #if __TBB_TASK_GROUP_CONTEXT
@@ -608,14 +606,35 @@ inline task* generic_scheduler::prepare_for_spawning( task* t ) {
     But doing so would force us to publish class scheduler in the headers. */
 void generic_scheduler::local_spawn( task& first, task*& next ) {
     __TBB_ASSERT( governor::is_set(this), NULL );
+#if __TBB_TODO
+    // We need to consider capping the max task pool size and switching
+    // to in-place task execution whenever it is reached.
+#endif
     if ( &first.prefix().next == &next ) {
         // Single task is being spawned
+#if __TBB_TODO
+        // TODO: 
+        // In the future we need to add overloaded spawn method for a single task,
+        // and a method accepting an array of task pointers (we may also want to
+        // change the implementation of the task_list class). But since such changes 
+        // may affect the binary compatibility, we postpone them for a while.
+#endif
         size_t T = prepare_task_pool( 1 );
         my_arena_slot->task_pool_ptr[T] = prepare_for_spawning( &first );
         commit_spawned_tasks( T + 1 );
     }
     else {
         // Task list is being spawned
+#if __TBB_TODO
+        // TODO: add task_list::front() and implement&document the local execution ordering which is
+        // opposite to the current implementation. The idea is to remove hackish fast_reverse_vector
+        // and use push_back/push_front when accordingly LIFO and FIFO order of local execution is
+        // desired. It also requires refactoring of the reload_tasks method and my_offloaded_tasks list.
+        // Additional benefit may come from adding counter to the task_list so that it can reserve enough
+        // space in the task pool in advance and move all the tasks directly without any intermediate
+        // storages. But it requires dealing with backward compatibility issues and still supporting
+        // counter-less variant (though not necessarily fast implementation).
+#endif
         task *arr[min_task_pool_size];
         fast_reverse_vector<task*> tasks(arr, min_task_pool_size);
         task *t_next = NULL;
@@ -689,14 +708,22 @@ task* generic_scheduler::winnow_task_pool () {
     __TBB_ASSERT( in_arena(), NULL );
     __TBB_ASSERT( my_offloaded_tasks, "At least one task is expected to be already offloaded" );
     // To eliminate possible sinking of the store to the indicator below the subsequent
-    // store to my_arena_slot->tail, the stores should've either been separated
-    // by full fence or both use release fences. And resetting indicator should've
+    // store to my_arena_slot->tail, the stores should have either been separated
+    // by full fence or both use release fences. And resetting indicator should have
     // been done with release fence. But since this is just an optimization, and
     // the corresponding checking sequence in arena::is_out_of_work() is not atomic
     // anyway, fences aren't used, so that not to penalize warmer path.
     auto_indicator indicator(my_pool_reshuffling_pending);
     // The purpose of the synchronization algorithm here is for the owner thread
     // to avoid locking task pool most of the time.
+#if __TBB_TODO
+    // Just locking the task pool unconditionally would produce simpler code, 
+    // scalability of which should not suffer unless priority jitter takes place. 
+    // Since priority jitter is nocuous by itself, we may want to evaluate 
+    // applicability of the simpler variant...
+    // Non-blocking variant also prevent us from relocating remaining tasks to
+    // the beginning of the task pool, not sure if it makes much sense.
+#endif
     size_t T0 = __TBB_load_relaxed(my_arena_slot->tail);
     __TBB_store_relaxed( my_arena_slot->tail, __TBB_load_relaxed(my_arena_slot->head) - 1 );
     atomic_fence();
@@ -826,6 +853,9 @@ task* generic_scheduler::reload_tasks ( task*& offloaded_tasks, task**& offloade
 task* generic_scheduler::reload_tasks () {
     uintptr_t reload_epoch = *my_ref_reload_epoch;
     __TBB_ASSERT( my_offloaded_tasks, NULL );
+    __TBB_ASSERT( my_local_reload_epoch <= reload_epoch
+                  || my_local_reload_epoch - reload_epoch > uintptr_t(-1)/2,
+                  "Reload epoch counter overflow?" );
     if ( my_local_reload_epoch == reload_epoch )
         return NULL;
     __TBB_ASSERT( my_offloaded_tasks, NULL );
@@ -839,6 +869,8 @@ task* generic_scheduler::reload_tasks () {
         // are still present. This results in both bottom and top priority bounds
         // becoming 'normal', which makes offloaded low priority tasks unreachable.
         // Update arena's bottom priority to accommodate them.
+        // NOTE:    If the number of priority levels is increased, we may want 
+        //          to calculate minimum of priorities in my_offloaded_tasks.
 
         // First indicate the presence of lower-priority tasks
         my_market->update_arena_priority( *my_arena, priority(*my_offloaded_tasks) );
@@ -985,7 +1017,7 @@ task* generic_scheduler::get_mailbox_task() {
             return result;
         }
         // We have exclusive access to the proxy, and can destroy it.
-        free_task<small_task>(*tp);
+        free_task<no_cache_small_task>(*tp);
     }
     return NULL;
 }
@@ -1035,6 +1067,8 @@ generic_scheduler* generic_scheduler::create_worker( market& m, size_t index ) {
 // TODO: make it a member method
 generic_scheduler* generic_scheduler::create_master( arena& a ) {
     generic_scheduler* s = allocate_scheduler( &a, 0 /*Master thread always occupies the first slot*/ );
+    s->my_market = &market::global_market(); // increases market's ref count
+
     task& t = *s->my_dummy_task;
     s->my_innermost_running_task = &t;
     s->my_dispatching_task = &t;
@@ -1047,7 +1081,6 @@ generic_scheduler* generic_scheduler::create_master( arena& a ) {
     // for task objects since the free list is empty at the moment.
     t.prefix().context = a.my_default_ctx;
 #endif /* __TBB_TASK_GROUP_CONTEXT */
-    s->my_market = a.my_market;
     __TBB_ASSERT( s->my_arena_index == 0, "Master thread must occupy the first slot in its arena" );
     s->attach_mailbox(1);
     s->my_arena_slot = a.my_slots + 0;
@@ -1143,11 +1176,14 @@ void generic_scheduler::cleanup_master() {
 #if __TBB_STATISTICS_EARLY_DUMP
     GATHER_STATISTIC( a->dump_arena_statistics() );
 #endif
-    if (governor::needsWaitWorkers())
-        my_market->prepare_wait_workers();
+    // TODO: read global settings for the parameter at that point
+    // if workers are not joining, market can be released from on_thread_leaving(),
+    // so keep copy the state on local stack
+    bool must_join = my_market->join_workers = governor::needsWaitWorkers();
     a->on_thread_leaving</*is_master*/true>();
-    if (governor::needsWaitWorkers())
+    if( must_join )
         my_market->wait_workers();
+    my_market->release( /*is_public*/true );
 }
 
 } // namespace internal
diff --git a/src/tbb/scheduler.h b/src/tbb/scheduler.h
index 60e60e3..9276f87 100644
--- a/src/tbb/scheduler.h
+++ b/src/tbb/scheduler.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_scheduler_H
@@ -44,6 +36,7 @@ namespace tbb {
 namespace internal {
 
 template<typename SchedulerTraits> class custom_scheduler;
+struct nested_arena_context;
 
 //------------------------------------------------------------------------
 // generic_scheduler
@@ -61,18 +54,9 @@ struct scheduler_list_node_t {
 
 #define LockedMaster ((generic_scheduler*)~(intptr_t)0)
 
-class governor;
-class market;
-class arena;
-
-#if __TBB_SCHEDULER_OBSERVER
-class task_scheduler_observer_v3;
-class observer_proxy;
-#endif /* __TBB_SCHEDULER_OBSERVER */
-
 struct scheduler_state {
     //! Index of the arena slot the scheduler occupies now, or occupied last time.
-    size_t my_arena_index;
+    size_t my_arena_index; // TODO: make it unsigned and pair with my_affinity_id to fit into cache line
 
     //! Pointer to the slot in the arena we own at the moment.
     arena_slot* my_arena_slot;
@@ -105,6 +89,15 @@ struct scheduler_state {
     //! Last observer in the local observers list processed by this scheduler
     observer_proxy* my_last_local_observer;
 #endif /* __TBB_SCHEDULER_OBSERVER */
+#if __TBB_TASK_PRIORITY
+    //! Latest known highest priority of tasks in the market or arena.
+    /** Master threads currently tracks only tasks in their arenas, while workers
+        take into account global top priority (among all arenas in the market). **/
+    volatile intptr_t *my_ref_top_priority;
+
+    //! Pointer to market's (for workers) or current arena's (for the master) reload epoch counter.
+    volatile uintptr_t *my_ref_reload_epoch;
+#endif /* __TBB_TASK_PRIORITY */
 };
 
 //! Work stealing task scheduler.
@@ -114,25 +107,8 @@ struct scheduler_state {
     Class generic_scheduler is an abstract base class that contains most of the scheduler,
     except for tweaks specific to processors and tools (e.g. VTune).
     The derived template class custom_scheduler<SchedulerTraits> fills in the tweaks. */
-class generic_scheduler: public scheduler, public ::rml::job, private scheduler_state {
-    friend class tbb::task;
-    friend class market;
-    friend class arena;
-    friend class interface7::internal::task_arena_base;
-    friend class interface7::internal::delegated_task;
-    friend class interface7::internal::wait_task;
-    friend struct interface7::internal::wait_body;
-    friend class allocate_root_proxy;
-    friend class governor;
-#if __TBB_TASK_GROUP_CONTEXT
-    friend class allocate_root_with_context_proxy;
-    friend class tbb::task_group_context;
-#endif /* __TBB_TASK_GROUP_CONTEXT */
-#if __TBB_SCHEDULER_OBSERVER
-    friend class task_scheduler_observer_v3;
-#endif /* __TBB_SCHEDULER_OBSERVER */
-    friend class scheduler;
-    template<typename SchedulerTraits> friend class custom_scheduler;
+class generic_scheduler: public scheduler, public ::rml::job, public scheduler_state {
+public: // almost every class in TBB uses generic_scheduler
 
     //! If sizeof(task) is <=quick_task_size, it is handled on a free list instead of malloc'd.
     static const size_t quick_task_size = 256-task_prefix_reservation_size;
@@ -296,8 +272,10 @@ class generic_scheduler: public scheduler, public ::rml::job, private scheduler_
     static void cleanup_worker( void* arg, bool worker );
 
 protected:
+    template<typename SchedulerTraits> friend class custom_scheduler;
     generic_scheduler( arena*, size_t index );
 
+public:
 #if TBB_USE_ASSERT > 1
     //! Check that internal data structures are in consistent state.
     /** Raises __TBB_ASSERT failure if inconsistency is found. */
@@ -306,10 +284,10 @@ protected:
     void assert_task_pool_valid() const {}
 #endif /* TBB_USE_ASSERT <= 1 */
 
-public:
 #if __TBB_TASK_ARENA
-    template<typename Body>
-    void nested_arena_execute(arena*, task*, bool, Body&);
+    void nested_arena_entry(arena*, nested_arena_context &, bool);
+    void nested_arena_exit(nested_arena_context &);
+    void wait_until_empty();
 #endif
 
     /*override*/ 
@@ -374,15 +352,14 @@ public:
     static task* plugged_return_list() {return (task*)(intptr_t)(-1);}
 
     //! Number of small tasks that have been allocated by this scheduler. 
-    intptr_t my_small_task_count;
+    __TBB_atomic intptr_t my_small_task_count;
 
     //! List of small tasks that have been returned to this scheduler by other schedulers.
     task* my_return_list;
 
     //! Try getting a task from other threads (via mailbox, stealing, FIFO queue, orphans adoption).
     /** Returns obtained task or NULL if all attempts fail. */
-    virtual task* receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count,
-                                         bool return_if_no_work ) = 0;
+    virtual task* receive_or_steal_task( __TBB_atomic reference_count& completion_ref_count ) = 0;
 
     //! Free a small task t that that was allocated by a different scheduler 
     void free_nonlocal_small_task( task& t ); 
@@ -417,11 +394,6 @@ public:
     //! Returns reference priority used to decide whether a task should be offloaded.
     inline intptr_t effective_reference_priority () const;
 
-    //! Latest known highest priority of tasks in the market or arena.
-    /** Master threads currently tracks only tasks in their arenas, while workers
-        take into account global top priority (among all arenas in the market). **/
-    volatile intptr_t *my_ref_top_priority;
-
     // TODO: move into slots and fix is_out_of_work
     //! Task pool for offloading tasks with priorities lower than the current top priority.
     task* my_offloaded_tasks;
@@ -429,9 +401,6 @@ public:
     //! Points to the last offloaded task in the my_offloaded_tasks list.
     task** my_offloaded_task_list_tail_link;
 
-    //! Pointer to market's (for workers) or current arena's (for the master) reload epoch counter.
-    volatile uintptr_t *my_ref_reload_epoch;
-
     //! Indicator of how recently the offload area was checked for the presence of top priority tasks.
     uintptr_t my_local_reload_epoch;
 
@@ -460,12 +429,41 @@ public:
     //! and propagates the new state to them.
     template <typename T>
     void propagate_task_group_state ( T task_group_context::*mptr_state, task_group_context& src, T new_state );
+
+    // check consistency
+    static void assert_context_valid(const task_group_context *tgc) {
+        suppress_unused_warning(tgc);
+#if TBB_USE_ASSERT
+        __TBB_ASSERT(tgc, NULL);
+        uintptr_t ctx = tgc->my_version_and_traits;
+        __TBB_ASSERT(is_alive(ctx), "referenced task_group_context was destroyed");
+        static const char *msg = "task_group_context is invalid";
+        __TBB_ASSERT(!(ctx&~(3|(7<<task_group_context::traits_offset))), msg); // the value fits known values of versions and traits
+        __TBB_ASSERT(tgc->my_kind < task_group_context::dying, msg);
+        __TBB_ASSERT(tgc->my_cancellation_requested == 0 || tgc->my_cancellation_requested == 1, msg);
+        __TBB_ASSERT(tgc->my_state < task_group_context::low_unused_state_bit, msg);
+        if(tgc->my_kind != task_group_context::isolated) {
+            __TBB_ASSERT(tgc->my_owner, msg);
+            __TBB_ASSERT(tgc->my_node.my_next && tgc->my_node.my_prev, msg);
+        }
+#if __TBB_TASK_PRIORITY
+        assert_priority_valid(tgc->my_priority);
+#endif
+        if(tgc->my_parent)
+#if TBB_USE_ASSERT > 1
+            assert_context_valid(tgc->my_parent);
+#else
+            __TBB_ASSERT(is_alive(tgc->my_parent->my_version_and_traits), msg);
+#endif
+#endif
+    }
 #endif /* __TBB_TASK_GROUP_CONTEXT */
 
 #if _WIN32||_WIN64
 private:
     //! Handle returned by RML when registering a master with RML
     ::rml::server::execution_resource_t master_exec_resource;
+public:
 #endif /* _WIN32||_WIN64 */
 
 #if __TBB_TASK_GROUP_CONTEXT
@@ -608,8 +606,7 @@ void generic_scheduler::commit_relocated_tasks ( size_t new_tail ) {
 template<free_task_hint hint>
 void generic_scheduler::free_task( task& t ) {
 #if __TBB_HOARD_NONLOCAL_TASKS
-    // TODO: remove the whole free_task_hint stuff when enabled permanently
-    static const free_task_hint h = no_hint;
+    static const int h = hint&(~local_task);
 #else
     static const free_task_hint h = hint;
 #endif
@@ -618,6 +615,7 @@ void generic_scheduler::free_task( task& t ) {
     // Verify that optimization hints are correct.
     __TBB_ASSERT( h!=small_local_task || p.origin==this, NULL );
     __TBB_ASSERT( !(h&small_task) || p.origin, NULL );
+    __TBB_ASSERT( !(h&local_task) || (!p.origin || uintptr_t(p.origin) > uintptr_t(4096)), "local_task means allocated");
     poison_value(p.depth);
     poison_value(p.ref_count);
     poison_pointer(p.owner);
@@ -627,17 +625,18 @@ void generic_scheduler::free_task( task& t ) {
         GATHER_STATISTIC(++my_counters.free_list_length);
         p.next = my_free_list;
         my_free_list = &t;
-    } else if( p.origin && uintptr_t(p.origin) < uintptr_t(4096) ) {
+    } else if( !(h&local_task) && p.origin && uintptr_t(p.origin) < uintptr_t(4096) ) {
         // a special value reserved for future use, do nothing since
         // origin is not pointing to a scheduler instance
     } else if( !(h&local_task) && p.origin ) {
         GATHER_STATISTIC(++my_counters.free_list_length);
 #if __TBB_HOARD_NONLOCAL_TASKS
-        p.next = my_nonlocal_free_list;
-        my_nonlocal_free_list = &t;
-#else
-        free_nonlocal_small_task(t);
+        if( !(h&no_cache) ) {
+            p.next = my_nonlocal_free_list;
+            my_nonlocal_free_list = &t;
+        } else
 #endif
+        free_nonlocal_small_task(t);
     } else {
         GATHER_STATISTIC(--my_counters.big_tasks);
         deallocate_task(t);
@@ -668,6 +667,41 @@ inline void generic_scheduler::offload_task ( task& t, intptr_t /*priority*/ ) {
 }
 #endif /* __TBB_TASK_PRIORITY */
 
+#if __TBB_FP_CONTEXT
+class cpu_ctl_env_helper {
+    cpu_ctl_env guard_cpu_ctl_env;
+    cpu_ctl_env curr_cpu_ctl_env;
+public:
+    cpu_ctl_env_helper() {
+        guard_cpu_ctl_env.get_env();
+        curr_cpu_ctl_env = guard_cpu_ctl_env;
+    }
+    ~cpu_ctl_env_helper() {
+        if ( curr_cpu_ctl_env != guard_cpu_ctl_env )
+            guard_cpu_ctl_env.set_env();
+    }
+    void set_env( const task_group_context *ctx ) {
+        generic_scheduler::assert_context_valid(ctx);
+        const cpu_ctl_env &ctl = *punned_cast<cpu_ctl_env*>(&ctx->my_cpu_ctl_env);
+        if ( ctl != curr_cpu_ctl_env ) {
+            curr_cpu_ctl_env = ctl;
+            curr_cpu_ctl_env.set_env();
+        }
+    }
+    void restore_default() {
+        if ( curr_cpu_ctl_env != guard_cpu_ctl_env ) {
+            guard_cpu_ctl_env.set_env();
+            curr_cpu_ctl_env = guard_cpu_ctl_env;
+        }
+    }
+};
+#else
+struct cpu_ctl_env_helper {
+    void set_env( __TBB_CONTEXT_ARG1(task_group_context *) ) {}
+    void restore_default() {}
+};
+#endif /* __TBB_FP_CONTEXT */
+
 } // namespace internal
 } // namespace tbb
 
diff --git a/src/tbb/scheduler_common.h b/src/tbb/scheduler_common.h
index 6a6a6a3..d5ee8e4 100644
--- a/src/tbb/scheduler_common.h
+++ b/src/tbb/scheduler_common.h
@@ -1,35 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_scheduler_common_H
 #define _TBB_scheduler_common_H
 
-#include "tbb/tbb_stddef.h"
+#include "tbb/tbb_machine.h"
 #include "tbb/cache_aligned_allocator.h"
 
 #include <string.h>  // for memset, memcpy, memmove
@@ -79,6 +71,10 @@
 #define TBB_TRACE(x) ((void)(0))
 #endif /* DO_TBB_TRACE */
 
+#if !__TBB_CPU_CTL_ENV_PRESENT
+#include <fenv.h>
+#endif
+
 #if _MSC_VER && !defined(__INTEL_COMPILER)
     // Workaround for overzealous compiler warnings
     // These particular warnings are so ubiquitous that no attempt is made to narrow
@@ -92,12 +88,18 @@ namespace internal {
 class task_arena_base;
 class delegated_task;
 class wait_task;
-struct wait_body;
 }}
 namespace internal {
 using namespace interface7::internal;
 
+class arena;
+template<typename SchedulerTraits> class custom_scheduler;
 class generic_scheduler;
+class governor;
+class mail_outbox;
+class market;
+class observer_proxy;
+class task_scheduler_observer_v3;
 
 #if __TBB_TASK_PRIORITY
 static const intptr_t num_priority_levels = 3;
@@ -111,7 +113,7 @@ static const priority_t priority_from_normalized_rep[num_priority_levels] = {
     priority_low, priority_normal, priority_high
 };
 
-inline void assert_priority_valid ( intptr_t& p ) {
+inline void assert_priority_valid ( intptr_t p ) {
     __TBB_ASSERT_EX( p >= 0 && p < num_priority_levels, NULL );
 }
 
@@ -180,7 +182,11 @@ enum free_task_hint {
     small_task=2,
     //! Bitwise-OR of local_task and small_task.
     /** Task should be returned to free list of this scheduler. */
-    small_local_task=3
+    small_local_task=3,
+    //! Disable caching for a small task.
+    no_cache = 4,
+    //! Task is known to be a small task and must not be cached.
+    no_cache_small_task = no_cache | small_task
 };
 
 //------------------------------------------------------------------------
@@ -235,7 +241,11 @@ inline bool CancellationInfoPresent ( task& t ) {
 
 #if TBB_USE_CAPTURED_EXCEPTION
     inline tbb_exception* TbbCurrentException( task_group_context*, tbb_exception* src) { return src->move(); }
-    inline tbb_exception* TbbCurrentException( task_group_context*, captured_exception* src) { return src; }
+    inline tbb_exception* TbbCurrentException( task_group_context* c, captured_exception* src) {
+        if( c->my_version_and_traits & task_group_context::exact_exception )
+            runtime_warning( "Exact exception propagation is requested by application but the linked library is built without support for it");
+        return src;
+    }
 #else
     // Using macro instead of an inline function here allows to avoid evaluation of the
     // TbbCapturedException expression when exact propagation is enabled for the context.
@@ -342,6 +352,49 @@ struct arena_slot : padded<arena_slot_line1>, padded<arena_slot_line2> {
     }
 };
 
+#if !__TBB_CPU_CTL_ENV_PRESENT
+class cpu_ctl_env {
+    fenv_t *my_fenv_ptr;
+public:
+    cpu_ctl_env() : my_fenv_ptr(NULL) {}
+    ~cpu_ctl_env() {
+        if ( my_fenv_ptr )
+            tbb::internal::NFS_Free( (void*)my_fenv_ptr );
+    }
+    // It is possible not to copy memory but just to copy pointers but the following issues should be addressed:
+    //   1. The arena lifetime and the context lifetime are independent;
+    //   2. The user is allowed to recapture different FPU settings to context so 'current FPU settings' inside
+    //   dispatch loop may become invalid.
+    // But do we really want to improve the fenv implementation? It seems to be better to replace the fenv implementation
+    // with a platform specific implementation.
+    cpu_ctl_env( const cpu_ctl_env &src ) : my_fenv_ptr(NULL) {
+        *this = src;
+    }
+    cpu_ctl_env& operator=( const cpu_ctl_env &src ) {
+        __TBB_ASSERT( src.my_fenv_ptr, NULL );
+        if ( !my_fenv_ptr )
+            my_fenv_ptr = (fenv_t*)tbb::internal::NFS_Allocate(1, sizeof(fenv_t), NULL);
+        *my_fenv_ptr = *src.my_fenv_ptr;
+        return *this;
+    }
+    bool operator!=( const cpu_ctl_env &ctl ) const {
+        __TBB_ASSERT( my_fenv_ptr, "cpu_ctl_env is not initialized." );
+        __TBB_ASSERT( ctl.my_fenv_ptr, "cpu_ctl_env is not initialized." );
+        return memcmp( (void*)my_fenv_ptr, (void*)ctl.my_fenv_ptr, sizeof(fenv_t) );
+    }
+    void get_env () {
+        if ( !my_fenv_ptr )
+            my_fenv_ptr = (fenv_t*)tbb::internal::NFS_Allocate(1, sizeof(fenv_t), NULL);
+        fegetenv( my_fenv_ptr );
+    }
+    const cpu_ctl_env& set_env () const {
+        __TBB_ASSERT( my_fenv_ptr, "cpu_ctl_env is not initialized." );
+        fesetenv( my_fenv_ptr );
+        return *this;
+    }
+};
+#endif /* !__TBB_CPU_CTL_ENV_PRESENT */
+
 } // namespace internal
 } // namespace tbb
 
diff --git a/src/tbb/scheduler_utility.h b/src/tbb/scheduler_utility.h
index 3aaef4a..fc268a0 100644
--- a/src/tbb/scheduler_utility.h
+++ b/src/tbb/scheduler_utility.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_scheduler_utility_H
diff --git a/src/tbb/semaphore.cpp b/src/tbb/semaphore.cpp
index 12be8f3..8c5a531 100644
--- a/src/tbb/semaphore.cpp
+++ b/src/tbb/semaphore.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "semaphore.h"
diff --git a/src/tbb/semaphore.h b/src/tbb/semaphore.h
index daa9664..57628aa 100644
--- a/src/tbb/semaphore.h
+++ b/src/tbb/semaphore.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbb_semaphore_H
@@ -129,7 +121,7 @@ private:
 #endif /* _WIN32||_WIN64 */
 
 
-//! for performance reasons, we want specialied binary_semaphore
+//! for performance reasons, we want specialized binary_semaphore
 #if _WIN32||_WIN64
 #if !__TBB_USE_SRWLOCK
 //! binary_semaphore for concurrent_monitor
diff --git a/src/tbb/spin_mutex.cpp b/src/tbb/spin_mutex.cpp
index 9d10874..759194d 100644
--- a/src/tbb/spin_mutex.cpp
+++ b/src/tbb/spin_mutex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_machine.h"
diff --git a/src/tbb/spin_rw_mutex.cpp b/src/tbb/spin_rw_mutex.cpp
index 2366b07..f21bb61 100644
--- a/src/tbb/spin_rw_mutex.cpp
+++ b/src/tbb/spin_rw_mutex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/spin_rw_mutex.h"
diff --git a/src/tbb/task.cpp b/src/tbb/task.cpp
index 7fa5e16..d093540 100644
--- a/src/tbb/task.cpp
+++ b/src/tbb/task.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Do not include task.h directly. Use scheduler_common.h instead
@@ -74,6 +66,7 @@ void allocate_root_proxy::free( task& task ) {
 task& allocate_root_with_context_proxy::allocate( size_t size ) const {
     internal::generic_scheduler* s = governor::local_scheduler();
     __TBB_ASSERT( s, "Scheduler auto-initialization failed?" );
+    __TBB_ASSERT( &my_context, "allocate_root(context) argument is a dereferenced NULL pointer" );
     task& t = s->allocate_task( size, NULL, &my_context );
     // Supported usage model prohibits concurrent initial binding. Thus we do not
     // need interlocked operations or fences to manipulate with my_context.my_kind
@@ -81,11 +74,16 @@ task& allocate_root_with_context_proxy::allocate( size_t size ) const {
         // If we are in the outermost task dispatch loop of a master thread, then
         // there is nothing to bind this context to, and we skip the binding part
         // treating the context as isolated.
-        if ( s->my_innermost_running_task == s->my_dummy_task )
+        if ( s->master_outermost_level() )
             __TBB_store_relaxed(my_context.my_kind, task_group_context::isolated);
         else
             my_context.bind_to( s );
     }
+#if __TBB_FP_CONTEXT
+    if ( __TBB_load_relaxed(my_context.my_kind) == task_group_context::isolated &&
+            !(my_context.my_version_and_traits & task_group_context::fp_settings) )
+        my_context.copy_fp_settings( *s->my_arena->my_default_ctx );
+#endif
     ITT_STACK_CREATE(my_context.itt_caller);
     return t;
 }
@@ -233,7 +231,7 @@ void interface5::internal::task_base::destroy( task& victim ) {
         parent->internal_decrement_ref_count();
         // Even if the last reference to *parent is removed, it should not be spawned (documented behavior).
     }
-    governor::local_scheduler()->free_task<no_hint>( victim );
+    governor::local_scheduler()->free_task<no_cache>( victim );
 }
 
 void task::spawn_and_wait_for_all( task_list& list ) {
@@ -256,16 +254,21 @@ void task::note_affinity( affinity_id ) {
 #if __TBB_TASK_GROUP_CONTEXT
 void task::change_group ( task_group_context& ctx ) {
     prefix().context = &ctx;
+    internal::generic_scheduler* s = governor::local_scheduler();
     if ( __TBB_load_relaxed(ctx.my_kind) == task_group_context::binding_required ) {
-        internal::generic_scheduler* s = governor::local_scheduler();
         // If we are in the outermost task dispatch loop of a master thread, then
         // there is nothing to bind this context to, and we skip the binding part
         // treating the context as isolated.
-        if ( s->my_innermost_running_task == s->my_dummy_task )
+        if ( s->master_outermost_level() )
             __TBB_store_relaxed(ctx.my_kind, task_group_context::isolated);
         else
             ctx.bind_to( s );
     }
+#if __TBB_FP_CONTEXT
+    if ( __TBB_load_relaxed(ctx.my_kind) == task_group_context::isolated &&
+            !(ctx.my_version_and_traits & task_group_context::fp_settings) )
+        ctx.copy_fp_settings( *s->my_arena->my_default_ctx );
+#endif
     ITT_STACK_CREATE(ctx.itt_caller);
 }
 #endif /* __TBB_TASK_GROUP_CONTEXT */
diff --git a/src/tbb/task_group_context.cpp b/src/tbb/task_group_context.cpp
index 72e1f08..73265ca 100644
--- a/src/tbb/task_group_context.cpp
+++ b/src/tbb/task_group_context.cpp
@@ -1,36 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "scheduler.h"
 
-#include "tbb/task.h"
-#include "tbb/tbb_exception.h"
-#include "tbb/cache_aligned_allocator.h"
 #include "itt_notify.h"
 
 namespace tbb {
@@ -151,7 +140,7 @@ void tbb_exception_ptr::destroy () throw() {
 task_group_context::~task_group_context () {
     if ( __TBB_load_relaxed(my_kind) == binding_completed ) {
         if ( governor::is_set(my_owner) ) {
-            // Local update of the context list 
+            // Local update of the context list
             uintptr_t local_count_snapshot = my_owner->my_context_state_propagation_epoch;
             my_owner->my_local_ctx_list_update.store<relaxed>(1);
             // Prevent load of nonlocal update flag from being hoisted before the
@@ -166,14 +155,14 @@ task_group_context::~task_group_context () {
             else {
                 my_node.my_prev->my_next = my_node.my_next;
                 my_node.my_next->my_prev = my_node.my_prev;
-                // Release fence is necessary so that update of our neighbors in 
+                // Release fence is necessary so that update of our neighbors in
                 // the context list was committed when possible concurrent destroyer
                 // proceeds after local update flag is reset by the following store.
                 my_owner->my_local_ctx_list_update.store<release>(0);
                 if ( local_count_snapshot != the_context_state_propagation_epoch ) {
                     // Another thread was propagating cancellation request when we removed
-                    // ourselves from the list. We must ensure that it is not accessing us 
-                    // when this destructor finishes. We'll be able to acquire the lock 
+                    // ourselves from the list. We must ensure that it is not accessing us
+                    // when this destructor finishes. We'll be able to acquire the lock
                     // below only after the other thread finishes with us.
                     spin_mutex::scoped_lock lock(my_owner->my_context_list_mutex);
                 }
@@ -201,6 +190,9 @@ task_group_context::~task_group_context () {
             }
         }
     }
+#if __TBB_FP_CONTEXT
+    internal::punned_cast<cpu_ctl_env*>(&my_cpu_ctl_env)->~cpu_ctl_env();
+#endif
     poison_value(my_version_and_traits);
     if ( my_exception )
         my_exception->destroy();
@@ -208,8 +200,8 @@ task_group_context::~task_group_context () {
 }
 
 void task_group_context::init () {
-    __TBB_ASSERT ( sizeof(uintptr_t) < 32, "Layout of my_version_and_traits must be reconsidered on this platform" );
-    __TBB_ASSERT ( sizeof(task_group_context) == 2 * NFS_MaxLineSize, "Context class has wrong size - check padding and members alignment" );
+    __TBB_STATIC_ASSERT ( sizeof(my_version_and_traits) >= 4, "Layout of my_version_and_traits must be reconsidered on this platform" );
+    __TBB_STATIC_ASSERT ( sizeof(task_group_context) == 2 * NFS_MaxLineSize, "Context class has wrong size - check padding and members alignment" );
     __TBB_ASSERT ( (uintptr_t(this) & (sizeof(my_cancellation_requested) - 1)) == 0, "Context is improperly aligned" );
     __TBB_ASSERT ( __TBB_load_relaxed(my_kind) == isolated || __TBB_load_relaxed(my_kind) == bound, "Context can be created only as isolated or bound" );
     my_parent = NULL;
@@ -221,6 +213,16 @@ void task_group_context::init () {
 #if __TBB_TASK_PRIORITY
     my_priority = normalized_normal_priority;
 #endif /* __TBB_TASK_PRIORITY */
+#if __TBB_FP_CONTEXT
+    __TBB_STATIC_ASSERT( sizeof(my_cpu_ctl_env) == sizeof(internal::uint64_t), "The reserved space for FPU settings are not equal sizeof(uint64_t)" );
+    __TBB_STATIC_ASSERT( sizeof(cpu_ctl_env) <= sizeof(my_cpu_ctl_env), "FPU settings storage does not fit to uint64_t" );
+    suppress_unused_warning( my_cpu_ctl_env.space );
+
+    cpu_ctl_env &ctl = *internal::punned_cast<cpu_ctl_env*>(&my_cpu_ctl_env);
+    new ( &ctl ) cpu_ctl_env;
+    if ( my_version_and_traits & fp_settings )
+        ctl.get_env();
+#endif
 }
 
 void task_group_context::register_with ( generic_scheduler *local_sched ) {
@@ -231,7 +233,7 @@ void task_group_context::register_with ( generic_scheduler *local_sched ) {
     // Notify threads that may be concurrently destroying contexts registered
     // in this scheduler's list that local list update is underway.
     local_sched->my_local_ctx_list_update.store<relaxed>(1);
-    // Prevent load of global propagation epoch counter from being hoisted before 
+    // Prevent load of global propagation epoch counter from being hoisted before
     // speculative stores above, as well as load of nonlocal update flag from
     // being hoisted before the store to local update flag.
     atomic_fence();
@@ -259,6 +261,11 @@ void task_group_context::bind_to ( generic_scheduler *local_sched ) {
     __TBB_ASSERT ( __TBB_load_relaxed(my_kind) == binding_required, "Already bound or isolated?" );
     __TBB_ASSERT ( !my_parent, "Parent is set before initial binding" );
     my_parent = local_sched->my_innermost_running_task->prefix().context;
+#if __TBB_FP_CONTEXT
+    // Inherit FPU settings only if the context has not captured FPU settings yet.
+    if ( !(my_version_and_traits & fp_settings) )
+        copy_fp_settings(*my_parent);
+#endif
 
     // Condition below prevents unnecessary thrashing parent context's cache line
     if ( !(my_parent->my_state & may_have_children) )
@@ -268,7 +275,7 @@ void task_group_context::bind_to ( generic_scheduler *local_sched ) {
         // (by placing __TBB_store_with_release(s->my_context_list_head.my_next, &my_node)
         // above), it still could be missed if state propagation from a grand-ancestor
         // was underway concurrently with binding.
-        // Speculative propagation from the parent together with epoch counters 
+        // Speculative propagation from the parent together with epoch counters
         // detecting possibility of such a race allow to avoid taking locks when
         // there is no contention.
 
@@ -276,7 +283,7 @@ void task_group_context::bind_to ( generic_scheduler *local_sched ) {
         // loads of parent state data out of the scope where epoch counters comparison
         // can reliably validate it.
         uintptr_t local_count_snapshot = __TBB_load_with_acquire( my_parent->my_owner->my_context_state_propagation_epoch );
-        // Speculative propagation of parent's state. The speculation will be 
+        // Speculative propagation of parent's state. The speculation will be
         // validated by the epoch counters check further on.
         my_cancellation_requested = my_parent->my_cancellation_requested;
 #if __TBB_TASK_PRIORITY
@@ -284,7 +291,7 @@ void task_group_context::bind_to ( generic_scheduler *local_sched ) {
 #endif /* __TBB_TASK_PRIORITY */
         register_with( local_sched ); // Issues full fence
 
-        // If no state propagation was detected by the following condition, the above 
+        // If no state propagation was detected by the following condition, the above
         // full fence guarantees that the parent had correct state during speculative
         // propagation before the fence. Otherwise the propagation from parent is
         // repeated under the lock.
@@ -316,7 +323,7 @@ void task_group_context::propagate_task_group_state ( T task_group_context::*mpt
     if (this->*mptr_state == new_state) {
         // Nothing to do, whether descending from "src" or not, so no need to scan.
         // Hopefully this happens often thanks to earlier invocations.
-        // This optimisation is enabled by LIFO order in the context lists:
+        // This optimization is enabled by LIFO order in the context lists:
         // - new contexts are bound to the beginning of lists;
         // - descendants are newer than ancestors;
         // - earlier invocations are therefore likely to "paint" long chains.
@@ -329,6 +336,7 @@ void task_group_context::propagate_task_group_state ( T task_group_context::*mpt
     }
     else {
         for ( task_group_context *ancestor = my_parent; ancestor != NULL; ancestor = ancestor->my_parent ) {
+            __TBB_ASSERT(internal::is_alive(ancestor->my_version_and_traits), "context tree was corrupted");
             if ( ancestor == &src ) {
                 for ( task_group_context *ctx = this; ctx != ancestor; ctx = ctx->my_parent )
                     ctx->*mptr_state = new_state;
@@ -341,7 +349,7 @@ void task_group_context::propagate_task_group_state ( T task_group_context::*mpt
 template <typename T>
 void generic_scheduler::propagate_task_group_state ( T task_group_context::*mptr_state, task_group_context& src, T new_state ) {
     spin_mutex::scoped_lock lock(my_context_list_mutex);
-    // Acquire fence is necessary to ensure that the subsequent node->my_next load 
+    // Acquire fence is necessary to ensure that the subsequent node->my_next load
     // returned the correct value in case it was just inserted in another thread.
     // The fence also ensures visibility of the correct my_parent value.
     context_list_node_t *node = __TBB_load_with_acquire(my_context_list_head.my_next);
@@ -352,7 +360,7 @@ void generic_scheduler::propagate_task_group_state ( T task_group_context::*mptr
         node = node->my_next;
         __TBB_ASSERT( is_alive(ctx.my_version_and_traits), "Local context list contains destroyed object" );
     }
-    // Sync up local propagation epoch with the global one. Release fence prevents 
+    // Sync up local propagation epoch with the global one. Release fence prevents
     // reordering of possible store to *mptr_state after the sync point.
     __TBB_store_with_release(my_context_state_propagation_epoch, the_context_state_propagation_epoch);
 }
@@ -361,7 +369,7 @@ template <typename T>
 bool market::propagate_task_group_state ( T task_group_context::*mptr_state, task_group_context& src, T new_state ) {
     if ( !(src.my_state & task_group_context::may_have_children) )
         return true;
-    // The whole propagation algorithm is under the lock in order to ensure correctness 
+    // The whole propagation algorithm is under the lock in order to ensure correctness
     // in case of concurrent state changes at the different levels of the context tree.
     // See comment at the bottom of scheduler.cpp
     context_state_propagation_mutex_type::scoped_lock lock(the_context_state_propagation_mutex);
@@ -371,7 +379,7 @@ bool market::propagate_task_group_state ( T task_group_context::*mptr_state, tas
     // Advance global state propagation epoch
     __TBB_FetchAndAddWrelease(&the_context_state_propagation_epoch, 1);
     // Propagate to all workers and masters and sync up their local epochs with the global one
-    unsigned num_workers = my_num_workers;
+    unsigned num_workers = my_first_unused_worker_idx;
     for ( unsigned i = 0; i < num_workers; ++i ) {
         generic_scheduler *s = my_workers[i];
         // If the worker is only about to be registered, skip it.
@@ -379,10 +387,10 @@ bool market::propagate_task_group_state ( T task_group_context::*mptr_state, tas
             s->propagate_task_group_state( mptr_state, src, new_state );
     }
     // Propagate to all master threads (under my_arenas_list_mutex lock)
-    ForEachArena(a) {
+    ForEachArena(a) { // uses lock on my_arenas_list_mutex
         arena_slot &slot = a.my_slots[0];
         generic_scheduler *s = slot.my_scheduler;
-        // If the master is under construction, skip it. Otherwise make sure that it does not 
+        // If the master is under construction, skip it. Otherwise make sure that it does not
         // leave its arena and its scheduler get destroyed while we accessing its data.
         if ( s && as_atomic(slot.my_scheduler).compare_and_swap(LockedMaster, s) == s ) { //TODO: remove need in lock
             __TBB_ASSERT( slot.my_scheduler == LockedMaster, NULL );
@@ -419,7 +427,7 @@ bool task_group_context::is_group_execution_cancelled () const {
 
 // IMPORTANT: It is assumed that this method is not used concurrently!
 void task_group_context::reset () {
-    //! \todo Add assertion that this context does not have children
+    //! TODO: Add assertion that this context does not have children
     // No fences are necessary since this context can be accessed from another thread
     // only after stealing happened (which means necessary fences were used).
     if ( my_exception )  {
@@ -429,6 +437,31 @@ void task_group_context::reset () {
     my_cancellation_requested = 0;
 }
 
+#if __TBB_FP_CONTEXT
+// IMPORTANT: It is assumed that this method is not used concurrently!
+void task_group_context::capture_fp_settings () {
+    //! TODO: Add assertion that this context does not have children
+    // No fences are necessary since this context can be accessed from another thread
+    // only after stealing happened (which means necessary fences were used).
+    cpu_ctl_env &ctl = *internal::punned_cast<cpu_ctl_env*>(&my_cpu_ctl_env);
+    if ( !(my_version_and_traits & fp_settings) ) {
+        new ( &ctl ) cpu_ctl_env;
+        my_version_and_traits |= fp_settings;
+    }
+    ctl.get_env();
+}
+
+void task_group_context::copy_fp_settings( const task_group_context &src ) {
+    __TBB_ASSERT( !(my_version_and_traits & fp_settings), "The context already has FPU settings." );
+    __TBB_ASSERT( src.my_version_and_traits & fp_settings, "The source context does not have FPU settings." );
+
+    cpu_ctl_env &ctl = *internal::punned_cast<cpu_ctl_env*>(&my_cpu_ctl_env);
+    cpu_ctl_env &src_ctl = *internal::punned_cast<cpu_ctl_env*>(&src.my_cpu_ctl_env);
+    new (&ctl) cpu_ctl_env( src_ctl );
+    my_version_and_traits |= fp_settings;
+}
+#endif /* __TBB_FP_CONTEXT */
+
 void task_group_context::register_pending_exception () {
     if ( my_cancellation_requested )
         return;
diff --git a/src/tbb/task_stream.h b/src/tbb/task_stream.h
index 6e34fba..b65f133 100644
--- a/src/tbb/task_stream.h
+++ b/src/tbb/task_stream.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_task_stream_H
@@ -55,83 +47,89 @@ struct queue_and_mutex {
     ~queue_and_mutex () {}
 };
 
-const uintptr_t one = 1;
+typedef uintptr_t population_t;
+const population_t one = 1;
 
-inline void set_one_bit( uintptr_t& dest, int pos ) {
+inline void set_one_bit( population_t& dest, int pos ) {
     __TBB_ASSERT( pos>=0, NULL );
-    __TBB_ASSERT( pos<32, NULL );
+    __TBB_ASSERT( pos<int(sizeof(population_t)*CHAR_BIT), NULL );
     __TBB_AtomicOR( &dest, one<<pos );
 }
 
-inline void clear_one_bit( uintptr_t& dest, int pos ) {
+inline void clear_one_bit( population_t& dest, int pos ) {
     __TBB_ASSERT( pos>=0, NULL );
-    __TBB_ASSERT( pos<32, NULL );
+    __TBB_ASSERT( pos<int(sizeof(population_t)*CHAR_BIT), NULL );
     __TBB_AtomicAND( &dest, ~(one<<pos) );
 }
 
-inline bool is_bit_set( uintptr_t val, int pos ) {
+inline bool is_bit_set( population_t val, int pos ) {
     __TBB_ASSERT( pos>=0, NULL );
-    __TBB_ASSERT( pos<32, NULL );
+    __TBB_ASSERT( pos<int(sizeof(population_t)*CHAR_BIT), NULL );
     return (val & (one<<pos)) != 0;
 }
 
 //! The container for "fairness-oriented" aka "enqueued" tasks.
+template<int Levels>
 class task_stream : no_copy {
     typedef queue_and_mutex <task*, spin_mutex> lane_t;
-    uintptr_t population;
-    padded<lane_t>* lanes;
+    population_t population[Levels];
+    padded<lane_t>* lanes[Levels];
     unsigned N;
 
 public:
-    task_stream() : population(), lanes()
-    {
+    task_stream() : N() {
+        for(int level = 0; level < Levels; level++) {
+            population[level] = 0;
+            lanes[level] = NULL;
+        }
     }
 
     void initialize( unsigned n_lanes ) {
-        const unsigned max_lanes =
-#if __TBB_MORE_FIFO_LANES
-                sizeof(population) * CHAR_BIT;
-#else
-                32;
-#endif
+        const unsigned max_lanes = sizeof(population_t) * CHAR_BIT;
+
         N = n_lanes>=max_lanes ? max_lanes : n_lanes>2 ? 1<<(__TBB_Log2(n_lanes-1)+1) : 2;
         __TBB_ASSERT( N==max_lanes || N>=n_lanes && ((N-1)&N)==0, "number of lanes miscalculated");
-        __TBB_ASSERT( N <= sizeof(population) * CHAR_BIT, NULL );
-        lanes = new padded<lane_t>[N];
-        __TBB_ASSERT( !population, NULL );
+        __TBB_ASSERT( N <= sizeof(population_t) * CHAR_BIT, NULL );
+        for(int level = 0; level < Levels; level++) {
+            lanes[level] = new padded<lane_t>[N];
+            __TBB_ASSERT( !population[level], NULL );
+        }
     }
 
-    ~task_stream() { if (lanes) delete[] lanes; }
+    ~task_stream() {
+        for(int level = 0; level < Levels; level++)
+            if (lanes[level]) delete[] lanes[level];
+    }
 
     //! Push a task into a lane.
-    void push( task* source, FastRandom& random ) {
+    void push( task* source, int level, FastRandom& random ) {
         // Lane selection is random. Each thread should keep a separate seed value.
         unsigned idx;
         for( ; ; ) {
             idx = random.get() & (N-1);
             spin_mutex::scoped_lock lock;
-            if( lock.try_acquire(lanes[idx].my_mutex) ) {
-                lanes[idx].my_queue.push_back(source);
-                set_one_bit( population, idx ); //TODO: avoid atomic op if the bit is already set
+            if( lock.try_acquire(lanes[level][idx].my_mutex) ) {
+                lanes[level][idx].my_queue.push_back(source);
+                set_one_bit( population[level], idx ); //TODO: avoid atomic op if the bit is already set
                 break;
             }
         }
     }
 
     //! Try finding and popping a task.
-    task* pop( unsigned& last_used_lane ) {
+    task* pop( int level, unsigned& last_used_lane ) {
         task* result = NULL;
         // Lane selection is round-robin. Each thread should keep its last used lane.
         unsigned idx = (last_used_lane+1)&(N-1);
-        for( ; population; idx=(idx+1)&(N-1) ) {
-            if( is_bit_set( population, idx ) ) {
-                lane_t& lane = lanes[idx];
+        for( ; population[level]; idx=(idx+1)&(N-1) ) {
+            if( is_bit_set( population[level], idx ) ) {
+                lane_t& lane = lanes[level][idx];
                 spin_mutex::scoped_lock lock;
                 if( lock.try_acquire(lane.my_mutex) && !lane.my_queue.empty() ) {
                     result = lane.my_queue.front();
                     lane.my_queue.pop_front();
                     if( lane.my_queue.empty() )
-                        clear_one_bit( population, idx );
+                        clear_one_bit( population[level], idx );
                     break;
                 }
             }
@@ -141,8 +139,8 @@ public:
     }
 
     //! Checks existence of a task.
-    bool empty() {
-        return !population;
+    bool empty(int level) {
+        return !population[level];
     }
 
     //! Destroys all remaining tasks in every lane. Returns the number of destroyed tasks.
@@ -150,18 +148,20 @@ public:
         The scheduler is really expected to execute all tasks before task_stream destruction. */
     intptr_t drain() {
         intptr_t result = 0;
-        for(unsigned i=0; i<N; ++i) {
-            lane_t& lane = lanes[i];
-            spin_mutex::scoped_lock lock(lane.my_mutex);
-            for(lane_t::queue_base_t::iterator it=lane.my_queue.begin();
-                it!=lane.my_queue.end(); ++it, ++result)
-            {
-                task* t = *it;
-                tbb::task::destroy(*t);
+        for(unsigned level = 0; level < Levels; level++)
+            for(unsigned i=0; i<N; ++i) {
+                lane_t& lane = lanes[level][i];
+                spin_mutex::scoped_lock lock(lane.my_mutex);
+                for(lane_t::queue_base_t::iterator it=lane.my_queue.begin();
+                    it!=lane.my_queue.end(); ++it, ++result)
+                {
+                    __TBB_ASSERT( is_bit_set( population[level], i ), NULL );
+                    task* t = *it;
+                    tbb::task::destroy(*t);
+                }
+                lane.my_queue.clear();
+                clear_one_bit( population[level], i );
             }
-            lane.my_queue.clear();
-            clear_one_bit( population, i );
-        }
         return result;
     }
 }; // task_stream
diff --git a/src/tbb/tbb_assert_impl.h b/src/tbb/tbb_assert_impl.h
index cedabac..224b15f 100644
--- a/src/tbb/tbb_assert_impl.h
+++ b/src/tbb/tbb_assert_impl.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // IMPORTANT: To use assertion handling in TBB, exactly one of the TBB source files
diff --git a/src/tbb/tbb_main.cpp b/src/tbb/tbb_main.cpp
index fd06f8e..ecbde9d 100644
--- a/src/tbb/tbb_main.cpp
+++ b/src/tbb/tbb_main.cpp
@@ -1,32 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
+#include "tbb/global_control.h"
 #include "tbb_main.h"
 #include "governor.h"
 #include "market.h"
@@ -52,11 +45,9 @@ rml::tbb_factory governor::theRMLServerFactory;
 bool governor::UsePrivateRML;
 const task_scheduler_init *governor::BlockingTSI;
 #if TBB_USE_ASSERT
-bool governor::IsBlockingTermiantionInProgress;
+bool governor::IsBlockingTerminationInProgress;
 #endif
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 bool governor::is_speculation_enabled;
-#endif
 
 //------------------------------------------------------------------------
 // market data
@@ -134,18 +125,12 @@ void __TBB_InitOnce::add_ref() {
         governor::acquire_resources();
 }
 
-#if __TBB_ITT_STRUCTURE_API
-static inline void ITT_fini() { }
-#endif
-
 void __TBB_InitOnce::remove_ref() {
     int k = --count;
     __TBB_ASSERT(k>=0,"removed __TBB_InitOnce ref that was not added?"); 
     if( k==0 ) {
         governor::release_resources();
-#if __TBB_ITT_STRUCTURE_API
-        ITT_fini();
-#endif
+        ITT_FINI_ITTLIB();
     }
 }
 
@@ -232,6 +217,7 @@ void ITT_DoOneTimeInitialization() {
 
 //! Performs thread-safe lazy one-time general TBB initialization.
 void DoOneTimeInitializations() {
+    suppress_unused_warning(_pad);
     __TBB_InitOnce::lock();
     // No fence required for load of InitializationDone, because we are inside a critical section.
     if( !__TBB_InitOnce::InitializationDone ) {
@@ -403,15 +389,152 @@ void itt_task_end_v7( itt_domain_enum domain ) { }
 #endif // __TBB_ITT_STRUCTURE_API
 
 void* itt_load_pointer_v3( const void* src ) {
+    //TODO: replace this with __TBB_load_relaxed
     void* result = *static_cast<void*const*>(src);
     return result;
 }
 
 void itt_set_sync_name_v3( void* obj, const tchar* name) {
     ITT_SYNC_RENAME(obj, name);
-    suppress_unused_warning(obj && name);
+    suppress_unused_warning(obj, name);
 }
 
 
+class control_storage {
+    friend class tbb::interface9::global_control;
+protected:
+    size_t my_active_value;
+    atomic<global_control*> my_head;
+    spin_mutex my_list_mutex;
+
+    virtual size_t default_value() const = 0;
+    virtual void apply_active() const {}
+    virtual bool is_first_arg_preferred(size_t a, size_t b) const {
+        return a>b; // prefer max by default
+    }
+    virtual size_t active_value() const {
+        return my_head? my_active_value : default_value();
+    }
+};
+
+class allowed_parallelism_control : public padded<control_storage> {
+    virtual size_t default_value() const {
+        // current implementation can't have effective active value below 2
+        return max(2U, governor::default_num_threads());
+    }
+    virtual bool is_first_arg_preferred(size_t a, size_t b) const {
+        return a<b; // prefer min allowed parallelism
+    }
+    virtual void apply_active() const {
+        __TBB_ASSERT( my_active_value>=2, NULL );
+        // -1 to take master into account
+        market::set_active_num_workers( my_active_value-1 );
+    }
+    virtual size_t active_value() const {
+/* Reading of my_active_value is not synchronized with possible updating
+   of my_head by other thread. It's ok, as value of my_active_value became
+   not invalid, just obsolete. */
+        if (!my_head)
+            return default_value();
+        // non-zero, if market is active
+        const size_t workers = market::max_num_workers();
+        // We can't exceed market's maximal number of workers.
+        // +1 to take master into account
+        return workers? min(workers+1, my_active_value): my_active_value;
+    }
+public:
+    size_t active_value_if_present() const {
+        return my_head? my_active_value : 0;
+    }
+};
+
+class stack_size_control : public padded<control_storage> {
+    virtual size_t default_value() const {
+        return tbb::internal::ThreadStackSize;
+    }
+    virtual void apply_active() const {
+#if __TBB_WIN8UI_SUPPORT
+        __TBB_ASSERT( false, "For Windows Store* apps we must not set stack size" );
+#endif
+    }
+};
+
+static allowed_parallelism_control allowed_parallelism_ctl;
+static stack_size_control stack_size_ctl;
+
+static control_storage *controls[] = {&allowed_parallelism_ctl, &stack_size_ctl};
+
+unsigned market::app_parallelism_limit() {
+    return allowed_parallelism_ctl.active_value_if_present();
+}
+
 } // namespace internal
+
+namespace interface9 {
+
+using namespace internal;
+using namespace tbb::internal;
+
+void global_control::internal_create() {
+    __TBB_ASSERT_RELEASE( my_param < global_control::parameter_max, NULL );
+    control_storage *const c = controls[my_param];
+
+    spin_mutex::scoped_lock lock(c->my_list_mutex);
+    if (!c->my_head || c->is_first_arg_preferred(my_value, c->my_active_value)) {
+        c->my_active_value = my_value;
+        // to guarantee that apply_active() is called with current active value,
+        // calls it here and in internal_destroy() under my_list_mutex
+        c->apply_active();
+    }
+    my_next = c->my_head;
+    // publish my_head, at this point my_active_value must be valid
+    c->my_head = this;
+}
+
+void global_control::internal_destroy() {
+    global_control *prev = 0;
+
+    __TBB_ASSERT_RELEASE( my_param < global_control::parameter_max, NULL );
+    control_storage *const c = controls[my_param];
+    __TBB_ASSERT( c->my_head, NULL );
+
+    // Concurrent reading and changing global parameter is possible.
+    // In this case, my_active_value may not match current state of parameters.
+    // This is OK because:
+    // 1) my_active_value is either current or previous
+    // 2) my_active_value is current on internal_destroy leave
+    spin_mutex::scoped_lock lock(c->my_list_mutex);
+    size_t new_active = (size_t)-1, old_active = c->my_active_value;
+
+    if ( c->my_head != this )
+        new_active = c->my_head->my_value;
+    else if ( c->my_head->my_next )
+        new_active = c->my_head->my_next->my_value;
+    // if there is only one element, new_active will be set later
+    for ( global_control *curr = c->my_head; curr; prev = curr, curr = curr->my_next )
+        if ( curr == this ) {
+            if ( prev )
+                prev->my_next = my_next;
+            else
+                c->my_head = my_next;
+        } else
+            if (c->is_first_arg_preferred(curr->my_value, new_active))
+                new_active = curr->my_value;
+
+    if ( !c->my_head ) {
+        __TBB_ASSERT( new_active==(size_t)-1, NULL );
+        new_active = c->default_value();
+    }
+    if ( new_active != old_active ) {
+        c->my_active_value = new_active;
+        c->apply_active();
+    }
+}
+
+size_t global_control::active_value( int param ) {
+    __TBB_ASSERT_RELEASE( param < global_control::parameter_max, NULL );
+    return controls[param]->active_value();
+}
+
+} // tbb::interface9
 } // namespace tbb
diff --git a/src/tbb/tbb_main.h b/src/tbb/tbb_main.h
index 3e49d53..e36ade8 100644
--- a/src/tbb/tbb_main.h
+++ b/src/tbb/tbb_main.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_tbb_main_H
diff --git a/src/tbb/tbb_misc.cpp b/src/tbb/tbb_misc.cpp
index 91ca8af..2064269 100644
--- a/src/tbb/tbb_misc.cpp
+++ b/src/tbb/tbb_misc.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Source file for miscellaneous entities that are infrequently referenced by 
@@ -87,13 +79,14 @@ namespace internal {
    this large chunk of code to be placed on a cold page. */
 void handle_perror( int error_code, const char* what ) {
     char buf[256];
-    __TBB_ASSERT( strlen(what) < sizeof(buf) - 64, "Error description is too long" );
-    sprintf(buf,"%s: ",what);
-    char* end = strchr(buf,0);
-    size_t n = buf+sizeof(buf)-end;
-    strncpy( end, strerror( error_code ), n );
+#if _MSC_VER
+ #define snprintf _snprintf
+#endif
+    int written = snprintf(buf, sizeof(buf), "%s: %s", what, strerror( error_code ));
+    // On overflow, the returned value exceeds sizeof(buf) (for GLIBC) or is negative (for MSVC).
+    __TBB_ASSERT_EX( written>0 && written<(int)sizeof(buf), "Error description is too long" );
     // Ensure that buffer ends in terminator.
-    buf[sizeof(buf)-1] = 0; 
+    buf[sizeof(buf)-1] = 0;
 #if TBB_USE_EXCEPTIONS
     throw runtime_error(buf);
 #else
@@ -109,7 +102,7 @@ void handle_win_error( int error_code ) {
                     NULL, error_code, 0, buf, sizeof(buf), NULL );
 #else
 //TODO: update with right replacement for FormatMessageA
-	sprintf_s((char*)&buf, 512, "error code %d", error_code);
+    sprintf_s((char*)&buf, 512, "error code %d", error_code);
 #endif
 #if TBB_USE_EXCEPTIONS
     throw runtime_error(buf);
@@ -144,8 +137,9 @@ void throw_exception_v4 ( exception_id eid ) {
     case eid_reservation_length_error: DO_THROW( length_error, ("reservation size exceeds permitted max size") );
     case eid_invalid_key: DO_THROW( out_of_range, ("invalid key") );
     case eid_user_abort: DO_THROW( user_abort, () );
+    case eid_bad_tagged_msg_cast: DO_THROW( runtime_error, ("Illegal tagged_msg cast") );
 #if __TBB_SUPPORTS_WORKERS_WAITING_IN_TERMINATE
-    case eid_blocking_sch_init: DO_THROW( runtime_error, ("Nesting of blocking termiantion is impossible") );
+    case eid_blocking_sch_init: DO_THROW( runtime_error, ("Nesting of blocking termination is impossible") );
 #endif
     default: break;
     }
@@ -194,36 +188,35 @@ void PrintRMLVersionInfo( void* arg, const char* server_info ) {
     PrintExtraVersionInfo( server_info, (const char *)arg );
 }
 
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-    //! check for transaction support.
+//! check for transaction support.
 #if _MSC_VER
 #include <intrin.h> // for __cpuid
 #endif
 bool cpu_has_speculation() {
 #if __TBB_TSX_AVAILABLE
-#if (__INTEL_COMPILER || __GNUC__ || _MSC_VER)
+#if (__INTEL_COMPILER || __GNUC__ || _MSC_VER || __SUNPRO_CC)
     bool result = false;
     const int hle_ebx_mask = 1<<4;
 #if _MSC_VER
     int info[4] = {0,0,0,0};
-    const int EBX = 1;
+    const int reg_ebx = 1;
     __cpuidex(info, 7, 0);
-    result = (info[EBX] & hle_ebx_mask)!=0;
-#elif __GNUC__
-    int EBX = 0;
+    result = (info[reg_ebx] & hle_ebx_mask)!=0;
+#elif __GNUC__ || __SUNPRO_CC
+    int32_t reg_ebx = 0;
     int32_t reg_eax = 7;
     int32_t reg_ecx = 0;
     __asm__ __volatile__ ( "movl %%ebx, %%esi\n"
                            "cpuid\n"
                            "movl %%ebx, %0\n"
                            "movl %%esi, %%ebx\n"
-                           : "=a"(EBX) : "0" (reg_eax), "c" (reg_ecx) : "esi", 
+                           : "=a"(reg_ebx) : "0" (reg_eax), "c" (reg_ecx) : "esi", 
 #if __TBB_x86_64
                            "ebx",
 #endif
                            "edx"
                            );
-    result = (EBX & hle_ebx_mask)!=0 ;
+    result = (reg_ebx & hle_ebx_mask)!=0 ;
 #endif
     return result;
 #else
@@ -233,7 +226,6 @@ bool cpu_has_speculation() {
     return false;
 #endif /* __TBB_TSX_AVAILABLE */
 }
-#endif  /* __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX */
 
 } // namespace internal
 
diff --git a/src/tbb/tbb_misc.h b/src/tbb/tbb_misc.h
index b69c486..22e14ca 100644
--- a/src/tbb/tbb_misc.h
+++ b/src/tbb/tbb_misc.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_tbb_misc_H
@@ -42,6 +34,9 @@
 
 // Does the operating system have a system call to pin a thread to a set of OS processors?
 #define __TBB_OS_AFFINITY_SYSCALL_PRESENT ((__linux__ && !__ANDROID__) || (__FreeBSD_version >= 701000))
+// On IBM* Blue Gene* CNK nodes, the affinity API has restrictions that prevent its usability for TBB,
+// and also sysconf(_SC_NPROCESSORS_ONLN) already takes process affinity into account.
+#define __TBB_USE_OS_AFFINITY_SYSCALL (__TBB_OS_AFFINITY_SYSCALL_PRESENT && !__bg__)
 
 namespace tbb {
 namespace internal {
@@ -110,8 +105,8 @@ void PrintRMLVersionInfo( void* arg, const char* server_info );
 /** Provided here to avoid including not strict safe <algorithm>.\n
     In case operands cause signed/unsigned or size mismatch warnings it is caller's
     responsibility to do the appropriate cast before calling the function. **/
-template<typename T1, typename T2>
-T1 min ( const T1& val1, const T2& val2 ) {
+template<typename T>
+T min ( const T& val1, const T& val2 ) {
     return val1 < val2 ? val1 : val2;
 }
 
@@ -119,8 +114,8 @@ T1 min ( const T1& val1, const T2& val2 ) {
 /** Provided here to avoid including not strict safe <algorithm>.\n
     In case operands cause signed/unsigned or size mismatch warnings it is caller's
     responsibility to do the appropriate cast before calling the function. **/
-template<typename T1, typename T2>
-T1 max ( const T1& val1, const T2& val2 ) {
+template<typename T>
+T max ( const T& val1, const T& val2 ) {
     return val1 < val2 ? val2 : val1;
 }
 
@@ -163,7 +158,7 @@ public:
     FastRandom( uint64_t seed) { init(seed); }
     template <typename T>
     void init( T seed ) {
-        return init(seed,int_to_type<sizeof(seed)>());
+        init(seed,int_to_type<sizeof(seed)>());
     }
     void init( uint64_t seed , int_to_type<8> ) {
         init(uint32_t((seed>>32)+seed), int_to_type<4>());
@@ -243,7 +238,7 @@ inline void run_initializer( bool (*f)(), atomic<do_once_state>& state ) {
     state = f() ? do_once_executed : do_once_uninitialized;
 }
 
-#if __TBB_OS_AFFINITY_SYSCALL_PRESENT
+#if __TBB_USE_OS_AFFINITY_SYSCALL
   #if __linux__
     typedef cpu_set_t basic_mask_t;
   #elif __FreeBSD_version >= 701000
@@ -251,7 +246,7 @@ inline void run_initializer( bool (*f)(), atomic<do_once_state>& state ) {
   #else
     #error affinity_helper is not implemented in this OS
   #endif
-    class affinity_helper {
+    class affinity_helper : no_copy {
         basic_mask_t* threadMask;
         int is_changed;
     public:
@@ -260,15 +255,13 @@ inline void run_initializer( bool (*f)(), atomic<do_once_state>& state ) {
         void protect_affinity_mask();
     };
 #else
-    class affinity_helper {
+    class affinity_helper : no_copy {
     public:
         void protect_affinity_mask() {}
     };
-#endif /* __TBB_OS_AFFINITY_SYSCALL_PRESENT */
+#endif /* __TBB_USE_OS_AFFINITY_SYSCALL */
 
-#if __TBB_CPF_BUILD || TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 extern bool cpu_has_speculation();
-#endif
 
 } // namespace internal
 } // namespace tbb
diff --git a/src/tbb/tbb_misc_ex.cpp b/src/tbb/tbb_misc_ex.cpp
index d4da8c3..e32a718 100644
--- a/src/tbb/tbb_misc_ex.cpp
+++ b/src/tbb/tbb_misc_ex.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Source file for miscellaneous entities that are infrequently referenced by 
@@ -62,7 +54,7 @@
 namespace tbb {
 namespace internal {
 
-#if __TBB_OS_AFFINITY_SYSCALL_PRESENT
+#if __TBB_USE_OS_AFFINITY_SYSCALL
 
 static void set_affinity_mask( size_t maskSize, const basic_mask_t* threadMask ) {
 #if __linux__
diff --git a/src/tbb/tbb_resource.rc b/src/tbb/tbb_resource.rc
index aad2cb9..0e584ad 100644
--- a/src/tbb/tbb_resource.rc
+++ b/src/tbb/tbb_resource.rc
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 // Microsoft Visual C++ generated resource script.
 //
@@ -89,7 +81,7 @@ BEGIN
             VALUE "CompanyName", "Intel Corporation\0"
             VALUE "FileDescription", "Intel(R) Threading Building Blocks library\0"
             VALUE "FileVersion", TBB_VERSION "\0"
-            VALUE "LegalCopyright", "Copyright 2005-2014 Intel Corporation.  All Rights Reserved.\0"
+            VALUE "LegalCopyright", "Copyright 2005-2015 Intel Corporation.  All Rights Reserved.\0"
             VALUE "LegalTrademarks", "\0"
 #ifndef TBB_USE_DEBUG
             VALUE "OriginalFilename", "tbb.dll\0"
diff --git a/src/tbb/tbb_statistics.cpp b/src/tbb/tbb_statistics.cpp
index 98fd5fa..fcf366d 100644
--- a/src/tbb/tbb_statistics.cpp
+++ b/src/tbb/tbb_statistics.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb_statistics.h"
@@ -83,7 +75,7 @@ public:
         }
         __TBB_ASSERT( group_start_field[NumGroups] == statistics_counters::size(),
                       "Wrong number of elements in StatFieldTitles" );
-        dump( "%-*s", IDColumnWidth, "");
+        dump( "\n%-*s", IDColumnWidth, "");
         process_groups( &statistics_logger::print_group_title );
         dump( "%-*s", IDColumnWidth, "ID");
         process_groups( &statistics_logger::print_field_titles );
diff --git a/src/tbb/tbb_statistics.h b/src/tbb/tbb_statistics.h
index 65f5f1e..5427961 100644
--- a/src/tbb/tbb_statistics.h
+++ b/src/tbb/tbb_statistics.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_tbb_statistics_H
@@ -90,7 +82,7 @@
 //! Dump statistics for an arena when its master completes
 /** By default (when this macro is not set) the statistics is sent to output when
     arena object is destroyed. But with the current lazy workers termination
-    logic default behavior may result in loosing all statistics output. **/
+    logic default behavior may result in losing all statistics output. **/
 #define __TBB_STATISTICS_EARLY_DUMP 1
 
 #define GATHER_STATISTIC(x) (x)
diff --git a/src/tbb/tbb_thread.cpp b/src/tbb/tbb_thread.cpp
index 15f7672..2b5f36f 100644
--- a/src/tbb/tbb_thread.cpp
+++ b/src/tbb/tbb_thread.cpp
@@ -1,38 +1,32 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _WIN32||_WIN64
 #include <process.h>        // _beginthreadex()
 #endif
-#include "tbb_misc.h"       // handle_win_error(), ThreadStackSize
+#include <errno.h>
+#include "tbb_misc.h"       // handle_win_error()
 #include "tbb/tbb_stddef.h"
 #include "tbb/tbb_thread.h"
 #include "tbb/tbb_allocator.h"
+#include "tbb/global_control.h" // thread_stack_size
 #include "governor.h"       // default_num_threads()
 #if __TBB_WIN8UI_SUPPORT
 #include <thread>
@@ -55,7 +49,10 @@ void free_closure_v3( void *ptr )
 
 void tbb_thread_v3::join()
 {
-    __TBB_ASSERT( joinable(), "thread should be joinable when join called" );
+    if (!joinable())
+        handle_perror( EINVAL, "tbb_thread::join" ); // Invalid argument
+    if (this_tbb_thread::get_id() == get_id())
+        handle_perror( EDEADLK, "tbb_thread::join" ); // Resource deadlock avoided
 #if _WIN32||_WIN64
 #if __TBB_WIN8UI_SUPPORT
     std::thread* thread_tmp=(std::thread*)my_thread_id;
@@ -79,7 +76,8 @@ void tbb_thread_v3::join()
 }
 
 void tbb_thread_v3::detach() {
-    __TBB_ASSERT( joinable(), "only joinable thread can be detached" );
+    if (!joinable())
+        handle_perror( EINVAL, "tbb_thread::detach" ); // Invalid argument
 #if _WIN32||_WIN64
     BOOL status = CloseHandle( my_handle );
     if ( status == 0 )
@@ -107,8 +105,8 @@ void tbb_thread_v3::internal_start( __TBB_NATIVE_THREAD_ROUTINE_PTR(start_routin
     unsigned thread_id;
     // The return type of _beginthreadex is "uintptr_t" on new MS compilers,
     // and 'unsigned long' on old MS compilers.  uintptr_t works for both.
-    uintptr_t status = _beginthreadex( NULL, ThreadStackSize, start_routine,
-                                     closure, 0, &thread_id );
+    uintptr_t status = _beginthreadex( NULL, (unsigned)global_control::active_value(global_control::thread_stack_size),
+                                       start_routine, closure, 0, &thread_id );
     if( status==0 )
         handle_perror(errno,"__beginthreadex");
     else {
@@ -123,19 +121,22 @@ void tbb_thread_v3::internal_start( __TBB_NATIVE_THREAD_ROUTINE_PTR(start_routin
     status = pthread_attr_init( &stack_size );
     if( status )
         handle_perror( status, "pthread_attr_init" );
-    status = pthread_attr_setstacksize( &stack_size, ThreadStackSize );
+    status = pthread_attr_setstacksize( &stack_size, global_control::active_value(global_control::thread_stack_size) );
     if( status )
         handle_perror( status, "pthread_attr_setstacksize" );
 
     status = pthread_create( &thread_handle, &stack_size, start_routine, closure );
     if( status )
         handle_perror( status, "pthread_create" );
+    status = pthread_attr_destroy( &stack_size );
+    if( status )
+        handle_perror( status, "pthread_attr_destroy" );
 
     my_handle = thread_handle;
 #endif // _WIN32||_WIN64
 }
 
-unsigned tbb_thread_v3::hardware_concurrency() {
+unsigned tbb_thread_v3::hardware_concurrency() __TBB_NOEXCEPT(true) {
     return governor::default_num_threads();
 }
 
diff --git a/src/tbb/tbb_version.h b/src/tbb/tbb_version.h
index 2629c3b..1c30cfc 100644
--- a/src/tbb/tbb_version.h
+++ b/src/tbb/tbb_version.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Please define version number in the file:
diff --git a/src/tbb/tls.h b/src/tbb/tls.h
index d32406f..685e855 100644
--- a/src/tbb/tls.h
+++ b/src/tbb/tls.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_tls_H
diff --git a/src/tbb/tools_api/disable_warnings.h b/src/tbb/tools_api/disable_warnings.h
index 7f7327d..62745a1 100644
--- a/src/tbb/tools_api/disable_warnings.h
+++ b/src/tbb/tools_api/disable_warnings.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "ittnotify_config.h"
diff --git a/src/tbb/tools_api/internal/ittnotify.h b/src/tbb/tools_api/internal/ittnotify.h
index 08e3871..43317b2 100644
--- a/src/tbb/tools_api/internal/ittnotify.h
+++ b/src/tbb/tools_api/internal/ittnotify.h
@@ -1,33 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _INTERNAL_ITTNOTIFY_H_
 #define _INTERNAL_ITTNOTIFY_H_
+
 /**
  * @file
  * @brief Internal User API functions and types
@@ -64,25 +57,43 @@
 #  define ITT_PLATFORM_POSIX 2
 #endif /* ITT_PLATFORM_POSIX */
 
+#ifndef ITT_PLATFORM_MAC
+#  define ITT_PLATFORM_MAC 3
+#endif /* ITT_PLATFORM_MAC */
+
 #ifndef ITT_PLATFORM
 #  if ITT_OS==ITT_OS_WIN
 #    define ITT_PLATFORM ITT_PLATFORM_WIN
+#  elif ITT_OS==ITT_OS_MAC
+#    define ITT_PLATFORM ITT_PLATFORM_MAC
 #  else
 #    define ITT_PLATFORM ITT_PLATFORM_POSIX
-#  endif /* _WIN32 */
+#  endif
 #endif /* ITT_PLATFORM */
 
+#if defined(_UNICODE) && !defined(UNICODE)
+#define UNICODE
+#endif
+
 #include <stddef.h>
-#include <stdarg.h>
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #include <tchar.h>
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#include <stdint.h>
+#if defined(UNICODE) || defined(_UNICODE)
+#include <wchar.h>
+#endif /* UNICODE || _UNICODE */
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 
 #ifndef CDECL
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define CDECL __cdecl
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    define CDECL /* nothing */
+#    if defined _M_IX86 || defined __i386__ 
+#      define CDECL __attribute__ ((cdecl))
+#    else  /* _M_IX86 || __i386__ */
+#      define CDECL /* actual only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* CDECL */
 
@@ -90,16 +101,61 @@
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define STDCALL __stdcall
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    define STDCALL /* nothing */
+#    if defined _M_IX86 || defined __i386__
+#      define STDCALL __attribute__ ((stdcall)) 
+#    else  /* _M_IX86 || __i386__ */
+#      define STDCALL /* supported only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* STDCALL */
 
 #define ITTAPI    CDECL
-#define LIBITTAPI /* nothing */
+#define LIBITTAPI CDECL
 
+/* TODO: Temporary for compatibility! */
+#define ITTAPI_CALL    CDECL
+#define LIBITTAPI_CALL CDECL
+
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+/* use __forceinline (VC++ specific) */
+#define ITT_INLINE           __forceinline
+#define ITT_INLINE_ATTRIBUTE /* nothing */
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+/*
+ * Generally, functions are not inlined unless optimization is specified.
+ * For functions declared inline, this attribute inlines the function even
+ * if no optimization level was specified.
+ */
+#ifdef __STRICT_ANSI__
+#define ITT_INLINE           static
+#else  /* __STRICT_ANSI__ */
+#define ITT_INLINE           static inline
+#endif /* __STRICT_ANSI__ */
+#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline, unused))
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+/** @endcond */
+
+/** @cond exclude_from_documentation */
+/* Helper macro for joining tokens */
 #define ITT_JOIN_AUX(p,n) p##n
 #define ITT_JOIN(p,n)     ITT_JOIN_AUX(p,n)
 
+#ifdef ITT_MAJOR
+#undef ITT_MAJOR
+#endif
+#ifdef ITT_MINOR
+#undef ITT_MINOR
+#endif
+#define ITT_MAJOR     3
+#define ITT_MINOR     0
+
+/* Standard versioning of a token with major and minor version numbers */
+#define ITT_VERSIONIZE(x)    \
+    ITT_JOIN(x,              \
+    ITT_JOIN(_,              \
+    ITT_JOIN(ITT_MAJOR,      \
+    ITT_JOIN(_, ITT_MINOR))))
+
 #ifndef INTEL_ITTNOTIFY_PREFIX
 #  define INTEL_ITTNOTIFY_PREFIX __itt_
 #endif /* INTEL_ITTNOTIFY_PREFIX */
@@ -108,554 +164,47 @@
 #endif /* INTEL_ITTNOTIFY_POSTFIX */
 
 #define ITTNOTIFY_NAME_AUX(n) ITT_JOIN(INTEL_ITTNOTIFY_PREFIX,n)
-#define ITTNOTIFY_NAME(n)     ITTNOTIFY_NAME_AUX(ITT_JOIN(n,INTEL_ITTNOTIFY_POSTFIX))
+#define ITTNOTIFY_NAME(n)     ITT_VERSIONIZE(ITTNOTIFY_NAME_AUX(ITT_JOIN(n,INTEL_ITTNOTIFY_POSTFIX)))
 
 #define ITTNOTIFY_VOID(n) (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)
 #define ITTNOTIFY_DATA(n) (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)
 
+#define ITTNOTIFY_VOID_D0(n,d)       (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d)
+#define ITTNOTIFY_VOID_D1(n,d,x)     (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x)
+#define ITTNOTIFY_VOID_D2(n,d,x,y)   (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y)
+#define ITTNOTIFY_VOID_D3(n,d,x,y,z) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z)
+#define ITTNOTIFY_VOID_D4(n,d,x,y,z,a)     (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a)
+#define ITTNOTIFY_VOID_D5(n,d,x,y,z,a,b)   (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b)
+#define ITTNOTIFY_VOID_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c)
+#define ITTNOTIFY_DATA_D0(n,d)       (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d)
+#define ITTNOTIFY_DATA_D1(n,d,x)     (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x)
+#define ITTNOTIFY_DATA_D2(n,d,x,y)   (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y)
+#define ITTNOTIFY_DATA_D3(n,d,x,y,z) (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z)
+#define ITTNOTIFY_DATA_D4(n,d,x,y,z,a)     (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a)
+#define ITTNOTIFY_DATA_D5(n,d,x,y,z,a,b)   (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b)
+#define ITTNOTIFY_DATA_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c)
+
 #ifdef ITT_STUB
 #undef ITT_STUB
 #endif
 #ifdef ITT_STUBV
 #undef ITT_STUBV
 #endif
-#define ITT_STUBV(api,type,name,args,params)                      \
+#define ITT_STUBV(api,type,name,args)                             \
     typedef type (api* ITT_JOIN(ITTNOTIFY_NAME(name),_t)) args;   \
     extern ITT_JOIN(ITTNOTIFY_NAME(name),_t) ITTNOTIFY_NAME(name);
 #define ITT_STUB ITT_STUBV
+/** @endcond */
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
-/** @endcond */
-
-/**
- * @defgroup internal Internal API
- * @{
- * @}
- */
-
-/**
- * @defgroup makrs Marks
- * @ingroup internal
- * Marks group
- * @warning Internal API:
- *   - It is not shipped to outside of Intel
- *   - It is delivered to internal Intel teams using e-mail or SVN access only
- * @{
- */
-/** @brief user mark type */
-typedef int __itt_mark_type;
-
-/**
- * @brief Creates a user mark type with the specified name using char or Unicode string.
- * @param[in] name - name of mark to create
- * @return Returns a handle to the mark type
- */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-__itt_mark_type ITTAPI __itt_mark_createA(const char    *name);
-__itt_mark_type ITTAPI __itt_mark_createW(const wchar_t *name);
-#ifdef UNICODE
-#  define __itt_mark_create     __itt_mark_createW
-#  define __itt_mark_create_ptr __itt_mark_createW_ptr
-#else /* UNICODE */
-#  define __itt_mark_create     __itt_mark_createA
-#  define __itt_mark_create_ptr __itt_mark_createA_ptr
-#endif /* UNICODE */
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-__itt_mark_type ITTAPI __itt_mark_create(const char *name);
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-ITT_STUB(ITTAPI, __itt_mark_type, mark_createA, (const char    *name), (name))
-ITT_STUB(ITTAPI, __itt_mark_type, mark_createW, (const wchar_t *name), (name))
-#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-ITT_STUB(ITTAPI, __itt_mark_type, mark_create,  (const char *name), (name))
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_createA     ITTNOTIFY_DATA(mark_createA)
-#define __itt_mark_createA_ptr ITTNOTIFY_NAME(mark_createA)
-#define __itt_mark_createW     ITTNOTIFY_DATA(mark_createW)
-#define __itt_mark_createW_ptr ITTNOTIFY_NAME(mark_createW)
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_create      ITTNOTIFY_DATA(mark_create)
-#define __itt_mark_create_ptr  ITTNOTIFY_NAME(mark_create)
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_createA(name) (__itt_mark_type)0
-#define __itt_mark_createA_ptr 0
-#define __itt_mark_createW(name) (__itt_mark_type)0
-#define __itt_mark_createW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_create(name)  (__itt_mark_type)0
-#define __itt_mark_create_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_createA_ptr 0
-#define __itt_mark_createW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_create_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Creates a "discrete" user mark type of the specified type and an optional parameter using char or Unicode string.
- *
- * - The mark of "discrete" type is placed to collection results in case of success. It appears in overtime view(s) as a special tick sign.
- * - The call is "synchronous" - function returns after mark is actually added to results.
- * - This function is useful, for example, to mark different phases of application
- *   (beginning of the next mark automatically meand end of current region).
- * - Can be used together with "continuous" marks (see below) at the same collection session
- * @param[in] mt - mark, created by __itt_mark_create(const char* name) function
- * @param[in] parameter - string parameter of mark
- * @return Returns zero value in case of success, non-zero value otherwise.
- */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-int ITTAPI __itt_markA(__itt_mark_type mt, const char    *parameter);
-int ITTAPI __itt_markW(__itt_mark_type mt, const wchar_t *parameter);
-#ifdef UNICODE
-#  define __itt_mark     __itt_markW
-#  define __itt_mark_ptr __itt_markW_ptr
-#else /* UNICODE  */
-#  define __itt_mark     __itt_markA
-#  define __itt_mark_ptr __itt_markA_ptr
-#endif /* UNICODE */
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-int ITTAPI __itt_mark(__itt_mark_type mt, const char *parameter);
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-ITT_STUB(ITTAPI, int, markA, (__itt_mark_type mt, const char    *parameter), (mt, parameter))
-ITT_STUB(ITTAPI, int, markW, (__itt_mark_type mt, const wchar_t *parameter), (mt, parameter))
-#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-ITT_STUB(ITTAPI, int, mark,  (__itt_mark_type mt, const char *parameter), (mt, parameter))
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_markA     ITTNOTIFY_DATA(markA)
-#define __itt_markA_ptr ITTNOTIFY_NAME(markA)
-#define __itt_markW     ITTNOTIFY_DATA(markW)
-#define __itt_markW_ptr ITTNOTIFY_NAME(markW)
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark      ITTNOTIFY_DATA(mark)
-#define __itt_mark_ptr  ITTNOTIFY_NAME(mark)
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_markA(mt, parameter) (int)0
-#define __itt_markA_ptr 0
-#define __itt_markW(mt, parameter) (int)0
-#define __itt_markW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark(mt, parameter)  (int)0
-#define __itt_mark_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_markA_ptr 0
-#define __itt_markW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Use this if necessary to create a "discrete" user event type (mark) for process
- * rather then for one thread
- * @see int __itt_mark(__itt_mark_type mt, const char* parameter);
- */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-int ITTAPI __itt_mark_globalA(__itt_mark_type mt, const char    *parameter);
-int ITTAPI __itt_mark_globalW(__itt_mark_type mt, const wchar_t *parameter);
-#ifdef UNICODE
-#  define __itt_mark_global     __itt_mark_globalW
-#  define __itt_mark_global_ptr __itt_mark_globalW_ptr
-#else /* UNICODE  */
-#  define __itt_mark_global     __itt_mark_globalA
-#  define __itt_mark_global_ptr __itt_mark_globalA_ptr
-#endif /* UNICODE */
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-int ITTAPI __itt_mark_global(__itt_mark_type mt, const char *parameter);
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-ITT_STUB(ITTAPI, int, mark_globalA, (__itt_mark_type mt, const char    *parameter), (mt, parameter))
-ITT_STUB(ITTAPI, int, mark_globalW, (__itt_mark_type mt, const wchar_t *parameter), (mt, parameter))
-#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-ITT_STUB(ITTAPI, int, mark_global,  (__itt_mark_type mt, const char *parameter), (mt, parameter))
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_globalA     ITTNOTIFY_DATA(mark_globalA)
-#define __itt_mark_globalA_ptr ITTNOTIFY_NAME(mark_globalA)
-#define __itt_mark_globalW     ITTNOTIFY_DATA(mark_globalW)
-#define __itt_mark_globalW_ptr ITTNOTIFY_NAME(mark_globalW)
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_global      ITTNOTIFY_DATA(mark_global)
-#define __itt_mark_global_ptr  ITTNOTIFY_NAME(mark_global)
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_globalA(mt, parameter) (int)0
-#define __itt_mark_globalA_ptr 0
-#define __itt_mark_globalW(mt, parameter) (int)0
-#define __itt_mark_globalW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_global(mt, parameter)  (int)0
-#define __itt_mark_global_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_mark_globalA_ptr 0
-#define __itt_mark_globalW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_mark_global_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Creates an "end" point for "continuous" mark with specified name.
- *
- * - Returns zero value in case of success, non-zero value otherwise.
- *   Also returns non-zero value when preceding "begin" point for the
- *   mark with the same name failed to be created or not created.
- * - The mark of "continuous" type is placed to collection results in
- *   case of success. It appears in overtime view(s) as a special tick
- *   sign (different from "discrete" mark) together with line from
- *   corresponding "begin" mark to "end" mark.
- * @note Continuous marks can overlap and be nested inside each other.
- * Discrete mark can be nested inside marked region
- * @param[in] mt - mark, created by __itt_mark_create(const char* name) function
- * @return Returns zero value in case of success, non-zero value otherwise.
- */
-int ITTAPI __itt_mark_off(__itt_mark_type mt);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUB(ITTAPI, int, mark_off, (__itt_mark_type mt), (mt))
-#define __itt_mark_off     ITTNOTIFY_DATA(mark_off)
-#define __itt_mark_off_ptr ITTNOTIFY_NAME(mark_off)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_mark_off(mt) (int)0
-#define __itt_mark_off_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_mark_off_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Use this if necessary to create an "end" point for mark of process
- * @see int __itt_mark_off(__itt_mark_type mt);
- */
-int ITTAPI __itt_mark_global_off(__itt_mark_type mt);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUB(ITTAPI, int, mark_global_off, (__itt_mark_type mt), (mt))
-#define __itt_mark_global_off     ITTNOTIFY_DATA(mark_global_off)
-#define __itt_mark_global_off_ptr ITTNOTIFY_NAME(mark_global_off)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_mark_global_off(mt) (int)0
-#define __itt_mark_global_off_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_mark_global_off_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-/** @} marks group */
-
-/**
- * @defgroup counters Counters
- * @ingroup internal
- * Counters group
- * @{
- */
-/**
- * @brief opaque structure for counter identification
- */
-typedef struct ___itt_counter *__itt_counter;
-
-/**
- * @brief Create a counter with given name/domain for the calling thread
- *
- * After __itt_counter_create() is called, __itt_counter_inc() / __itt_counter_inc_delta() can be used
- * to increment the counter on any thread
- */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-__itt_counter ITTAPI __itt_counter_createA(const char    *name, const char    *domain);
-__itt_counter ITTAPI __itt_counter_createW(const wchar_t *name, const wchar_t *domain);
-#ifdef UNICODE
-#  define __itt_counter_create     __itt_counter_createW
-#  define __itt_counter_create_ptr __itt_counter_createW_ptr
-#else /* UNICODE */
-#  define __itt_counter_create     __itt_counter_createA
-#  define __itt_counter_create_ptr __itt_counter_createA_ptr
-#endif /* UNICODE */
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-__itt_counter ITTAPI __itt_counter_create(const char *name, const char *domain);
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-ITT_STUB(ITTAPI, __itt_counter, counter_createA, (const char    *name, const char    *domain), (name, domain))
-ITT_STUB(ITTAPI, __itt_counter, counter_createW, (const wchar_t *name, const wchar_t *domain), (name, domain))
-#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-ITT_STUB(ITTAPI, __itt_counter, counter_create,  (const char *name, const char *domain), (name, domain))
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_counter_createA     ITTNOTIFY_DATA(counter_createA)
-#define __itt_counter_createA_ptr ITTNOTIFY_NAME(counter_createA)
-#define __itt_counter_createW     ITTNOTIFY_DATA(counter_createW)
-#define __itt_counter_createW_ptr ITTNOTIFY_NAME(counter_createW)
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_counter_create     ITTNOTIFY_DATA(counter_create)
-#define __itt_counter_create_ptr ITTNOTIFY_NAME(counter_create)
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_counter_createA(name, domain)
-#define __itt_counter_createA_ptr 0
-#define __itt_counter_createW(name, domain)
-#define __itt_counter_createW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_counter_create(name, domain)
-#define __itt_counter_create_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_counter_createA_ptr 0
-#define __itt_counter_createW_ptr 0
-#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#define __itt_counter_create_ptr  0
-#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Destroy the counter identified by the pointer previously returned by __itt_counter_create()
- */
-void ITTAPI __itt_counter_destroy(__itt_counter id);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, counter_destroy, (__itt_counter id), (id))
-#define __itt_counter_destroy     ITTNOTIFY_VOID(counter_destroy)
-#define __itt_counter_destroy_ptr ITTNOTIFY_NAME(counter_destroy)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_counter_destroy(id)
-#define __itt_counter_destroy_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_counter_destroy_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Increment the counter value
- */
-void ITTAPI __itt_counter_inc(__itt_counter id);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, counter_inc, (__itt_counter id), (id))
-#define __itt_counter_inc     ITTNOTIFY_VOID(counter_inc)
-#define __itt_counter_inc_ptr ITTNOTIFY_NAME(counter_inc)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_counter_inc(id)
-#define __itt_counter_inc_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_counter_inc_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Increment the counter value with x
- */
-void ITTAPI __itt_counter_inc_delta(__itt_counter id, unsigned long long value);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, counter_inc_delta, (__itt_counter id, unsigned long long value), (id, value))
-#define __itt_counter_inc_delta     ITTNOTIFY_VOID(counter_inc_delta)
-#define __itt_counter_inc_delta_ptr ITTNOTIFY_NAME(counter_inc_delta)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_counter_inc_delta(id, value)
-#define __itt_counter_inc_delta_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_counter_inc_delta_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-/** @} counters group */
-
-/**
- * @defgroup stitch Stack Stitching
- * @ingroup internal
- * Stack Stitching group
- * @{
- */
-/**
- * @brief opaque structure for counter identification
- */
-typedef struct ___itt_caller *__itt_caller;
-
-/**
- * @brief Create the stitch point e.g. a point in call stack where other stacks should be stitched to.
- * The function returns a unique identifier which is used to match the cut points with corresponding stitch points.
- */
-__itt_caller ITTAPI __itt_stack_caller_create(void);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUB(ITTAPI, __itt_caller, stack_caller_create, (void), ())
-#define __itt_stack_caller_create     ITTNOTIFY_DATA(stack_caller_create)
-#define __itt_stack_caller_create_ptr ITTNOTIFY_NAME(stack_caller_create)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_stack_caller_create() (__itt_caller)0
-#define __itt_stack_caller_create_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_stack_caller_create_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Destroy the inforamtion about stitch point identified by the pointer previously returned by __itt_stack_caller_create()
- */
-void ITTAPI __itt_stack_caller_destroy(__itt_caller id);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, stack_caller_destroy, (__itt_caller id), (id))
-#define __itt_stack_caller_destroy     ITTNOTIFY_VOID(stack_caller_destroy)
-#define __itt_stack_caller_destroy_ptr ITTNOTIFY_NAME(stack_caller_destroy)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_stack_caller_destroy(id)
-#define __itt_stack_caller_destroy_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_stack_caller_destroy_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief Sets the cut point. Stack from each event which occurs after this call will be cut
- * at the same stack level the function was called and stitched to the corresponding stitch point.
- */
-void ITTAPI __itt_stack_callee_enter(__itt_caller id);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, stack_callee_enter, (__itt_caller id), (id))
-#define __itt_stack_callee_enter     ITTNOTIFY_VOID(stack_callee_enter)
-#define __itt_stack_callee_enter_ptr ITTNOTIFY_NAME(stack_callee_enter)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_stack_callee_enter(id)
-#define __itt_stack_callee_enter_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_stack_callee_enter_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/**
- * @brief This function eliminates the cut point which was set by latest __itt_stack_callee_enter().
- */
-void ITTAPI __itt_stack_callee_leave(__itt_caller id);
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, stack_callee_leave, (__itt_caller id), (id))
-#define __itt_stack_callee_leave     ITTNOTIFY_VOID(stack_callee_leave)
-#define __itt_stack_callee_leave_ptr ITTNOTIFY_NAME(stack_callee_leave)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_stack_callee_leave(id)
-#define __itt_stack_callee_leave_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_stack_callee_leave_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
 
-/** @} stitch group */
+#define INTEL_ITTNOTIFY_API_PRIVATE
+#include "../ittnotify.h"
 
-/* ***************************************************************************************************************************** */
-
-/** @cond exclude_from_documentation */
-typedef enum __itt_error_code {
-    __itt_error_success       = 0, /*!< no error */
-    __itt_error_no_module     = 1, /*!< module can't be loaded */
-    /* %1$s -- library name; win: %2$d -- system error code; unx: %2$s -- system error message. */
-    __itt_error_no_symbol     = 2, /*!< symbol not found */
-    /* %1$s -- library name, %2$s -- symbol name. */
-    __itt_error_unknown_group = 3, /*!< unknown group specified */
-    /* %1$s -- env var name, %2$s -- group name. */
-    __itt_error_cant_read_env = 4, /*!< GetEnvironmentVariable() failed */
-    /* %1$s -- env var name, %2$d -- system error. */
-    __itt_error_env_too_long  = 5, /*!< variable value too long */
-    /* %1$s -- env var name, %2$d -- actual length of the var, %3$d -- max allowed length. */
-    __itt_error_system        = 6  /*!< pthread_mutexattr_init or pthread_mutex_init failed */
-    /* %1$s -- function name, %2$d -- errno. */
-} __itt_error_code;
-
-typedef void (__itt_error_notification_t)(__itt_error_code code, va_list);
-__itt_error_notification_t* __itt_set_error_handler(__itt_error_notification_t*);
-
-const char* ITTAPI __itt_api_version(void);
-/** @endcond */
-
-/** @cond exclude_from_documentation */
-#ifndef INTEL_NO_MACRO_BODY
-#ifndef INTEL_NO_ITTNOTIFY_API
-#define __itt_error_handler ITT_JOIN(INTEL_ITTNOTIFY_PREFIX, error_handler)
-void __itt_error_handler(__itt_error_code code, va_list args);
-extern const int ITTNOTIFY_NAME(err);
-#define __itt_err ITTNOTIFY_NAME(err)
-ITT_STUB(ITTAPI, const char*, api_version, (void), ())
-#define __itt_api_version     ITTNOTIFY_DATA(api_version)
-#define __itt_api_version_ptr ITTNOTIFY_NAME(api_version)
-#else  /* INTEL_NO_ITTNOTIFY_API */
-#define __itt_api_version()   (const char*)0
-#define __itt_api_version_ptr 0
-#endif /* INTEL_NO_ITTNOTIFY_API */
-#else  /* INTEL_NO_MACRO_BODY */
-#define __itt_api_version_ptr 0
-#endif /* INTEL_NO_MACRO_BODY */
-/** @endcond */
-
-/** @cond exclude_from_documentation */
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
-/** @endcond */
 
 #endif /* _INTERNAL_ITTNOTIFY_H_ */
diff --git a/src/tbb/tools_api/ittnotify.h b/src/tbb/tools_api/ittnotify.h
index 65d423f..d6db08f 100644
--- a/src/tbb/tools_api/ittnotify.h
+++ b/src/tbb/tools_api/ittnotify.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _ITTNOTIFY_H_
@@ -127,12 +119,18 @@ The same ID may not be reused for different instances, unless a previous
 #  define ITT_PLATFORM_POSIX 2
 #endif /* ITT_PLATFORM_POSIX */
 
+#ifndef ITT_PLATFORM_MAC
+#  define ITT_PLATFORM_MAC 3
+#endif /* ITT_PLATFORM_MAC */
+
 #ifndef ITT_PLATFORM
 #  if ITT_OS==ITT_OS_WIN
 #    define ITT_PLATFORM ITT_PLATFORM_WIN
+#  elif ITT_OS==ITT_OS_MAC
+#    define ITT_PLATFORM ITT_PLATFORM_MAC
 #  else
 #    define ITT_PLATFORM ITT_PLATFORM_POSIX
-#  endif /* _WIN32 */
+#  endif
 #endif /* ITT_PLATFORM */
 
 #if defined(_UNICODE) && !defined(UNICODE)
@@ -153,11 +151,11 @@ The same ID may not be reused for different instances, unless a previous
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define CDECL __cdecl
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define CDECL /* not actual on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__ 
 #      define CDECL __attribute__ ((cdecl))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    else  /* _M_IX86 || __i386__ */
+#      define CDECL /* actual only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* CDECL */
 
@@ -165,11 +163,11 @@ The same ID may not be reused for different instances, unless a previous
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define STDCALL __stdcall
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define STDCALL /* not supported on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
-#      define STDCALL __attribute__ ((stdcall))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__
+#      define STDCALL __attribute__ ((stdcall)) 
+#    else  /* _M_IX86 || __i386__ */
+#      define STDCALL /* supported only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* STDCALL */
 
@@ -182,8 +180,8 @@ The same ID may not be reused for different instances, unless a previous
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 /* use __forceinline (VC++ specific) */
-#define INLINE           __forceinline
-#define INLINE_ATTRIBUTE /* nothing */
+#define ITT_INLINE           __forceinline
+#define ITT_INLINE_ATTRIBUTE /* nothing */
 #else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /*
  * Generally, functions are not inlined unless optimization is specified.
@@ -191,11 +189,11 @@ The same ID may not be reused for different instances, unless a previous
  * if no optimization level was specified.
  */
 #ifdef __STRICT_ANSI__
-#define INLINE           static
+#define ITT_INLINE           static inline
 #else  /* __STRICT_ANSI__ */
-#define INLINE           static inline
+#define ITT_INLINE           static inline
 #endif /* __STRICT_ANSI__ */
-#define INLINE_ATTRIBUTE __attribute__ ((always_inline))
+#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline, unused))
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /** @endcond */
 
@@ -417,6 +415,128 @@ ITT_STUBV(ITTAPI, void, thread_ignore, (void))
 /** @} threads group */
 
 /**
+ * @defgroup suppress Error suppression
+ * @ingroup public
+ * General behavior: application continues to run, but errors are suppressed
+ *
+ * @{
+ */
+
+/*****************************************************************//**
+ * @name group of functions used for error suppression in correctness tools
+ *********************************************************************/
+/** @{ */
+/**
+ * @hideinitializer 
+ * @brief possible value for suppression mask
+ */
+#define __itt_suppress_all_errors 0x7fffffff
+
+/**
+ * @hideinitializer 
+ * @brief possible value for suppression mask (suppresses errors from threading analysis)
+ */
+#define __itt_suppress_threading_errors 0x000000ff
+
+/**
+ * @hideinitializer 
+ * @brief possible value for suppression mask (suppresses errors from memory analysis)
+ */
+#define __itt_suppress_memory_errors 0x0000ff00
+
+/**
+ * @brief Start suppressing errors identified in mask on this thread
+ */
+void ITTAPI __itt_suppress_push(unsigned int mask);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, suppress_push, (unsigned int mask))
+#define __itt_suppress_push     ITTNOTIFY_VOID(suppress_push)
+#define __itt_suppress_push_ptr ITTNOTIFY_NAME(suppress_push)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_suppress_push(mask)
+#define __itt_suppress_push_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_suppress_push_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/**
+ * @brief Undo the effects of the matching call to __itt_suppress_push  
+ */
+void ITTAPI __itt_suppress_pop(void);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, suppress_pop, (void))
+#define __itt_suppress_pop     ITTNOTIFY_VOID(suppress_pop)
+#define __itt_suppress_pop_ptr ITTNOTIFY_NAME(suppress_pop)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_suppress_pop()
+#define __itt_suppress_pop_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_suppress_pop_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/**
+ * @enum __itt_model_disable
+ * @brief Enumerator for the disable methods
+ */
+typedef enum __itt_suppress_mode {
+    __itt_unsuppress_range,
+    __itt_suppress_range
+} __itt_suppress_mode_t;
+
+/**
+ * @brief Mark a range of memory for error suppression or unsuppression for error types included in mask
+ */
+void ITTAPI __itt_suppress_mark_range(__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, suppress_mark_range, (__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size))
+#define __itt_suppress_mark_range     ITTNOTIFY_VOID(suppress_mark_range)
+#define __itt_suppress_mark_range_ptr ITTNOTIFY_NAME(suppress_mark_range)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_suppress_mark_range(mask)
+#define __itt_suppress_mark_range_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_suppress_mark_range_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/**
+ * @brief Undo the effect of a matching call to __itt_suppress_mark_range.   If not matching
+ *        call is found, nothing is changed.
+ */
+void ITTAPI __itt_suppress_clear_range(__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, suppress_clear_range, (__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size))
+#define __itt_suppress_clear_range     ITTNOTIFY_VOID(suppress_clear_range)
+#define __itt_suppress_clear_range_ptr ITTNOTIFY_NAME(suppress_clear_range)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_suppress_clear_range(mask)
+#define __itt_suppress_clear_range_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_suppress_clear_range_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+/** @} */
+/** @} suppress group */
+
+/**
  * @defgroup sync Synchronization
  * @ingroup public
  * Indicate user-written synchronization code
@@ -839,8 +959,10 @@ void ITTAPI __itt_model_site_begin(__itt_model_site *site, __itt_model_site_inst
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 void ITTAPI __itt_model_site_beginW(const wchar_t *name);
 #endif
+void ITTAPI __itt_model_site_beginA(const char *name);
 void ITTAPI __itt_model_site_beginAL(const char *name, size_t siteNameLen);
 void ITTAPI __itt_model_site_end  (__itt_model_site *site, __itt_model_site_instance *instance);
+void ITTAPI __itt_model_site_end_2(void);
 
 /** @cond exclude_from_documentation */
 #ifndef INTEL_NO_MACRO_BODY
@@ -849,18 +971,24 @@ ITT_STUBV(ITTAPI, void, model_site_begin,  (__itt_model_site *site, __itt_model_
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 ITT_STUBV(ITTAPI, void, model_site_beginW,  (const wchar_t *name))
 #endif
+ITT_STUBV(ITTAPI, void, model_site_beginA,  (const char *name))
 ITT_STUBV(ITTAPI, void, model_site_beginAL,  (const char *name, size_t siteNameLen))
 ITT_STUBV(ITTAPI, void, model_site_end,    (__itt_model_site *site, __itt_model_site_instance *instance))
+ITT_STUBV(ITTAPI, void, model_site_end_2,  (void))
 #define __itt_model_site_begin      ITTNOTIFY_VOID(model_site_begin)
 #define __itt_model_site_begin_ptr  ITTNOTIFY_NAME(model_site_begin)
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #define __itt_model_site_beginW      ITTNOTIFY_VOID(model_site_beginW)
 #define __itt_model_site_beginW_ptr  ITTNOTIFY_NAME(model_site_beginW)
 #endif
+#define __itt_model_site_beginA      ITTNOTIFY_VOID(model_site_beginA)
+#define __itt_model_site_beginA_ptr  ITTNOTIFY_NAME(model_site_beginA)
 #define __itt_model_site_beginAL      ITTNOTIFY_VOID(model_site_beginAL)
 #define __itt_model_site_beginAL_ptr  ITTNOTIFY_NAME(model_site_beginAL)
 #define __itt_model_site_end        ITTNOTIFY_VOID(model_site_end)
 #define __itt_model_site_end_ptr    ITTNOTIFY_NAME(model_site_end)
+#define __itt_model_site_end_2        ITTNOTIFY_VOID(model_site_end_2)
+#define __itt_model_site_end_2_ptr    ITTNOTIFY_NAME(model_site_end_2)
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #define __itt_model_site_begin(site, instance, name)
 #define __itt_model_site_begin_ptr  0
@@ -868,18 +996,24 @@ ITT_STUBV(ITTAPI, void, model_site_end,    (__itt_model_site *site, __itt_model_
 #define __itt_model_site_beginW(name)
 #define __itt_model_site_beginW_ptr  0
 #endif
+#define __itt_model_site_beginA(name)
+#define __itt_model_site_beginA_ptr  0
 #define __itt_model_site_beginAL(name, siteNameLen)
 #define __itt_model_site_beginAL_ptr  0
 #define __itt_model_site_end(site, instance)
 #define __itt_model_site_end_ptr    0
+#define __itt_model_site_end_2()
+#define __itt_model_site_end_2_ptr    0
 #endif /* INTEL_NO_ITTNOTIFY_API */
 #else  /* INTEL_NO_MACRO_BODY */
 #define __itt_model_site_begin_ptr  0
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #define __itt_model_site_beginW_ptr  0
 #endif
+#define __itt_model_site_beginA_ptr  0
 #define __itt_model_site_beginAL_ptr  0
 #define __itt_model_site_end_ptr    0
+#define __itt_model_site_end_2_ptr    0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 
@@ -897,9 +1031,14 @@ ITT_STUBV(ITTAPI, void, model_site_end,    (__itt_model_site *site, __itt_model_
 void ITTAPI __itt_model_task_begin(__itt_model_task *task, __itt_model_task_instance *instance, const char *name);
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 void ITTAPI __itt_model_task_beginW(const wchar_t *name);
+void ITTAPI __itt_model_iteration_taskW(const wchar_t *name);
 #endif
+void ITTAPI __itt_model_task_beginA(const char *name);
 void ITTAPI __itt_model_task_beginAL(const char *name, size_t taskNameLen);
+void ITTAPI __itt_model_iteration_taskA(const char *name);
+void ITTAPI __itt_model_iteration_taskAL(const char *name, size_t taskNameLen);
 void ITTAPI __itt_model_task_end  (__itt_model_task *task, __itt_model_task_instance *instance);
+void ITTAPI __itt_model_task_end_2(void);
 
 /** @cond exclude_from_documentation */
 #ifndef INTEL_NO_MACRO_BODY
@@ -907,19 +1046,34 @@ void ITTAPI __itt_model_task_end  (__itt_model_task *task, __itt_model_task_inst
 ITT_STUBV(ITTAPI, void, model_task_begin,  (__itt_model_task *task, __itt_model_task_instance *instance, const char *name))
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 ITT_STUBV(ITTAPI, void, model_task_beginW,  (const wchar_t *name))
+ITT_STUBV(ITTAPI, void, model_iteration_taskW, (const wchar_t *name))
 #endif
+ITT_STUBV(ITTAPI, void, model_task_beginA,  (const char *name))
 ITT_STUBV(ITTAPI, void, model_task_beginAL,  (const char *name, size_t taskNameLen))
+ITT_STUBV(ITTAPI, void, model_iteration_taskA,  (const char *name))
+ITT_STUBV(ITTAPI, void, model_iteration_taskAL,  (const char *name, size_t taskNameLen))
 ITT_STUBV(ITTAPI, void, model_task_end,    (__itt_model_task *task, __itt_model_task_instance *instance))
+ITT_STUBV(ITTAPI, void, model_task_end_2,  (void))
 #define __itt_model_task_begin      ITTNOTIFY_VOID(model_task_begin)
 #define __itt_model_task_begin_ptr  ITTNOTIFY_NAME(model_task_begin)
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #define __itt_model_task_beginW     ITTNOTIFY_VOID(model_task_beginW)
 #define __itt_model_task_beginW_ptr ITTNOTIFY_NAME(model_task_beginW)
+#define __itt_model_iteration_taskW     ITTNOTIFY_VOID(model_iteration_taskW)
+#define __itt_model_iteration_taskW_ptr ITTNOTIFY_NAME(model_iteration_taskW)
 #endif
+#define __itt_model_task_beginA    ITTNOTIFY_VOID(model_task_beginA)
+#define __itt_model_task_beginA_ptr ITTNOTIFY_NAME(model_task_beginA)
 #define __itt_model_task_beginAL    ITTNOTIFY_VOID(model_task_beginAL)
 #define __itt_model_task_beginAL_ptr ITTNOTIFY_NAME(model_task_beginAL)
+#define __itt_model_iteration_taskA    ITTNOTIFY_VOID(model_iteration_taskA)
+#define __itt_model_iteration_taskA_ptr ITTNOTIFY_NAME(model_iteration_taskA)
+#define __itt_model_iteration_taskAL    ITTNOTIFY_VOID(model_iteration_taskAL)
+#define __itt_model_iteration_taskAL_ptr ITTNOTIFY_NAME(model_iteration_taskAL)
 #define __itt_model_task_end        ITTNOTIFY_VOID(model_task_end)
 #define __itt_model_task_end_ptr    ITTNOTIFY_NAME(model_task_end)
+#define __itt_model_task_end_2        ITTNOTIFY_VOID(model_task_end_2)
+#define __itt_model_task_end_2_ptr    ITTNOTIFY_NAME(model_task_end_2)
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #define __itt_model_task_begin(task, instance, name)
 #define __itt_model_task_begin_ptr  0
@@ -927,18 +1081,30 @@ ITT_STUBV(ITTAPI, void, model_task_end,    (__itt_model_task *task, __itt_model_
 #define __itt_model_task_beginW(name)
 #define __itt_model_task_beginW_ptr  0
 #endif
+#define __itt_model_task_beginA(name)
+#define __itt_model_task_beginA_ptr  0
 #define __itt_model_task_beginAL(name, siteNameLen)
 #define __itt_model_task_beginAL_ptr  0
+#define __itt_model_iteration_taskA(name)
+#define __itt_model_iteration_taskA_ptr  0
+#define __itt_model_iteration_taskAL(name, siteNameLen)
+#define __itt_model_iteration_taskAL_ptr  0
 #define __itt_model_task_end(task, instance)
 #define __itt_model_task_end_ptr    0
+#define __itt_model_task_end_2()
+#define __itt_model_task_end_2_ptr    0
 #endif /* INTEL_NO_ITTNOTIFY_API */
 #else  /* INTEL_NO_MACRO_BODY */
 #define __itt_model_task_begin_ptr  0
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #define __itt_model_task_beginW_ptr 0
 #endif
+#define __itt_model_task_beginA_ptr  0
 #define __itt_model_task_beginAL_ptr  0
+#define __itt_model_iteration_taskA_ptr    0
+#define __itt_model_iteration_taskAL_ptr    0
 #define __itt_model_task_end_ptr    0
+#define __itt_model_task_end_2_ptr    0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 
@@ -955,26 +1121,40 @@ ITT_STUBV(ITTAPI, void, model_task_end,    (__itt_model_task *task, __itt_model_
  * but may not have identical semantics.)
  */
 void ITTAPI __itt_model_lock_acquire(void *lock);
+void ITTAPI __itt_model_lock_acquire_2(void *lock);
 void ITTAPI __itt_model_lock_release(void *lock);
+void ITTAPI __itt_model_lock_release_2(void *lock);
 
 /** @cond exclude_from_documentation */
 #ifndef INTEL_NO_MACRO_BODY
 #ifndef INTEL_NO_ITTNOTIFY_API
 ITT_STUBV(ITTAPI, void, model_lock_acquire, (void *lock))
+ITT_STUBV(ITTAPI, void, model_lock_acquire_2, (void *lock))
 ITT_STUBV(ITTAPI, void, model_lock_release, (void *lock))
+ITT_STUBV(ITTAPI, void, model_lock_release_2, (void *lock))
 #define __itt_model_lock_acquire     ITTNOTIFY_VOID(model_lock_acquire)
 #define __itt_model_lock_acquire_ptr ITTNOTIFY_NAME(model_lock_acquire)
+#define __itt_model_lock_acquire_2     ITTNOTIFY_VOID(model_lock_acquire_2)
+#define __itt_model_lock_acquire_2_ptr ITTNOTIFY_NAME(model_lock_acquire_2)
 #define __itt_model_lock_release     ITTNOTIFY_VOID(model_lock_release)
 #define __itt_model_lock_release_ptr ITTNOTIFY_NAME(model_lock_release)
+#define __itt_model_lock_release_2     ITTNOTIFY_VOID(model_lock_release_2)
+#define __itt_model_lock_release_2_ptr ITTNOTIFY_NAME(model_lock_release_2)
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #define __itt_model_lock_acquire(lock)
 #define __itt_model_lock_acquire_ptr 0
+#define __itt_model_lock_acquire_2(lock)
+#define __itt_model_lock_acquire_2_ptr 0
 #define __itt_model_lock_release(lock)
 #define __itt_model_lock_release_ptr 0
+#define __itt_model_lock_release_2(lock)
+#define __itt_model_lock_release_2_ptr 0
 #endif /* INTEL_NO_ITTNOTIFY_API */
 #else  /* INTEL_NO_MACRO_BODY */
 #define __itt_model_lock_acquire_ptr 0
+#define __itt_model_lock_acquire_2_ptr 0
 #define __itt_model_lock_release_ptr 0
+#define __itt_model_lock_release_2_ptr 0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 
@@ -1123,25 +1303,32 @@ ITT_STUBV(ITTAPI, void, model_clear_uses, (void *addr))
  */
 void ITTAPI __itt_model_disable_push(__itt_model_disable x);
 void ITTAPI __itt_model_disable_pop(void);
+void ITTAPI __itt_model_aggregate_task(size_t x);
 
 /** @cond exclude_from_documentation */
 #ifndef INTEL_NO_MACRO_BODY
 #ifndef INTEL_NO_ITTNOTIFY_API
 ITT_STUBV(ITTAPI, void, model_disable_push, (__itt_model_disable x))
 ITT_STUBV(ITTAPI, void, model_disable_pop,  (void))
+ITT_STUBV(ITTAPI, void, model_aggregate_task, (size_t x))
 #define __itt_model_disable_push     ITTNOTIFY_VOID(model_disable_push)
 #define __itt_model_disable_push_ptr ITTNOTIFY_NAME(model_disable_push)
 #define __itt_model_disable_pop      ITTNOTIFY_VOID(model_disable_pop)
 #define __itt_model_disable_pop_ptr  ITTNOTIFY_NAME(model_disable_pop)
+#define __itt_model_aggregate_task      ITTNOTIFY_VOID(model_aggregate_task)
+#define __itt_model_aggregate_task_ptr  ITTNOTIFY_NAME(model_aggregate_task)
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #define __itt_model_disable_push(x)
 #define __itt_model_disable_push_ptr 0
 #define __itt_model_disable_pop()
 #define __itt_model_disable_pop_ptr 0
+#define __itt_model_aggregate_task(x)
+#define __itt_model_aggregate_task_ptr 0
 #endif /* INTEL_NO_ITTNOTIFY_API */
 #else  /* INTEL_NO_MACRO_BODY */
 #define __itt_model_disable_push_ptr 0
 #define __itt_model_disable_pop_ptr 0
+#define __itt_model_aggregate_task_ptr 0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 /** @} model group */
@@ -1367,9 +1554,97 @@ ITT_STUBV(ITTAPI, void, heap_internal_access_end, (void))
 #define __itt_heap_internal_access_end_ptr 0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
-/** @} heap group */
+
+/** @brief record memory growth begin */
+void ITTAPI __itt_heap_record_memory_growth_begin(void);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, heap_record_memory_growth_begin,  (void))
+#define __itt_heap_record_memory_growth_begin      ITTNOTIFY_VOID(heap_record_memory_growth_begin)
+#define __itt_heap_record_memory_growth_begin_ptr  ITTNOTIFY_NAME(heap_record_memory_growth_begin)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_heap_record_memory_growth_begin()
+#define __itt_heap_record_memory_growth_begin_ptr  0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_heap_record_memory_growth_begin_ptr  0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/** @brief record memory growth end */
+void ITTAPI __itt_heap_record_memory_growth_end(void);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, heap_record_memory_growth_end, (void))
+#define __itt_heap_record_memory_growth_end     ITTNOTIFY_VOID(heap_record_memory_growth_end)
+#define __itt_heap_record_memory_growth_end_ptr ITTNOTIFY_NAME(heap_record_memory_growth_end)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_heap_record_memory_growth_end()
+#define __itt_heap_record_memory_growth_end_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_heap_record_memory_growth_end_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/**
+ * @brief Specify the type of heap detection/reporting to modify.
+ */
+/**
+ * @hideinitializer 
+ * @brief Report on memory leaks.
+ */
+#define __itt_heap_leaks 0x00000001
+
+/**
+ * @hideinitializer 
+ * @brief Report on memory growth.
+ */
+#define __itt_heap_growth 0x00000002
+
+
+/** @brief heap reset detection */
+void ITTAPI __itt_heap_reset_detection(unsigned int reset_mask);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, heap_reset_detection,  (unsigned int reset_mask))
+#define __itt_heap_reset_detection      ITTNOTIFY_VOID(heap_reset_detection)
+#define __itt_heap_reset_detection_ptr  ITTNOTIFY_NAME(heap_reset_detection)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_heap_reset_detection()
+#define __itt_heap_reset_detection_ptr  0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_heap_reset_detection_ptr  0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/** @brief report */
+void ITTAPI __itt_heap_record(unsigned int record_mask);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, heap_record, (unsigned int record_mask))
+#define __itt_heap_record     ITTNOTIFY_VOID(heap_record)
+#define __itt_heap_record_ptr ITTNOTIFY_NAME(heap_record)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_heap_record()
+#define __itt_heap_record_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_heap_record_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 
+/** @} heap group */
+/** @endcond */
 /* ========================================================================== */
 
 /**
@@ -1403,7 +1678,7 @@ typedef struct ___itt_domain
  * @ingroup domains
  * @brief Create a domain.
  * Create domain using some domain name: the URI naming style is recommended.
- * Because the set of domains is expected to be static over the application's
+ * Because the set of domains is expected to be static over the application's 
  * execution time, there is no mechanism to destroy a domain.
  * Any domain can be accessed by any thread in the process, regardless of
  * which thread created the domain. This call is thread-safe.
@@ -1494,8 +1769,8 @@ static const __itt_id __itt_null = { 0, 0, 0 };
  * @param[in] extra The extra data to unique identify object; low QWORD of the ID value.
  */
 
-INLINE __itt_id ITTAPI __itt_id_make(void* addr, unsigned long long extra) INLINE_ATTRIBUTE;
-INLINE __itt_id ITTAPI __itt_id_make(void* addr, unsigned long long extra)
+ITT_INLINE __itt_id ITTAPI __itt_id_make(void* addr, unsigned long long extra) ITT_INLINE_ATTRIBUTE;
+ITT_INLINE __itt_id ITTAPI __itt_id_make(void* addr, unsigned long long extra)
 {
     __itt_id id = __itt_null;
     id.d1 = (unsigned long long)((uintptr_t)addr);
@@ -1538,7 +1813,7 @@ ITT_STUBV(ITTAPI, void, id_create, (const __itt_domain *domain, __itt_id id))
  * @brief Destroy an instance of identifier.
  * This ends the lifetime of the current instance of the given ID value in the trace.
  * Any relationships that are established after this lifetime ends are invalid.
- * This call must be performed before the given ID value can be reused for a different
+ * This call must be performed before the given ID value can be reused for a different 
  * named entity instance.
  * @param[in] domain The domain controlling the execution of this call.
  * @param[in] id The ID to destroy.
@@ -1652,6 +1927,40 @@ ITT_STUB(ITTAPI, __itt_string_handle*, string_handle_create,  (const char    *na
 /** @endcond */
 /** @} handles group */
 
+/** @cond exclude_from_documentation */
+typedef unsigned long long __itt_timestamp;
+/** @endcond */
+
+static const __itt_timestamp __itt_timestamp_none = (__itt_timestamp)-1LL;
+
+/** @cond exclude_from_gpa_documentation */
+
+/**
+ * @ingroup timestamps
+ * @brief Return timestamp corresponding to the current moment.
+ * This returns the timestamp in the format that is the most relevant for the current
+ * host or platform (RDTSC, QPC, and others). You can use the "<" operator to
+ * compare __itt_timestamp values.
+ */
+__itt_timestamp ITTAPI __itt_get_timestamp(void);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUB(ITTAPI, __itt_timestamp, get_timestamp, (void))
+#define __itt_get_timestamp      ITTNOTIFY_DATA(get_timestamp)
+#define __itt_get_timestamp_ptr  ITTNOTIFY_NAME(get_timestamp)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_get_timestamp()
+#define __itt_get_timestamp_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_get_timestamp_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+/** @} timestamps */
+/** @endcond */
+
 /** @cond exclude_from_gpa_documentation */
 
 /**
@@ -1736,24 +2045,46 @@ void ITTAPI __itt_frame_begin_v3(const __itt_domain *domain, __itt_id *id);
  */
 void ITTAPI __itt_frame_end_v3(const __itt_domain *domain, __itt_id *id);
 
+/**
+ * @ingroup frames
+ * @brief Submits a frame instance.
+ * Successive calls to __itt_frame_begin or __itt_frame_submit with the
+ * same ID are ignored until a call to __itt_frame_end or __itt_frame_submit
+ * with the same ID.
+ * Passing special __itt_timestamp_none value as "end" argument means
+ * take the current timestamp as the end timestamp.
+ * @param[in] domain The domain for this frame instance
+ * @param[in] id The instance ID for this frame instance or NULL
+ * @param[in] begin Timestamp of the beginning of the frame
+ * @param[in] end Timestamp of the end of the frame
+ */
+void ITTAPI __itt_frame_submit_v3(const __itt_domain *domain, __itt_id *id,
+    __itt_timestamp begin, __itt_timestamp end);
+
 /** @cond exclude_from_documentation */
 #ifndef INTEL_NO_MACRO_BODY
 #ifndef INTEL_NO_ITTNOTIFY_API
-ITT_STUBV(ITTAPI, void, frame_begin_v3, (const __itt_domain *domain, __itt_id *id))
-ITT_STUBV(ITTAPI, void, frame_end_v3,   (const __itt_domain *domain, __itt_id *id))
-#define __itt_frame_begin_v3(d,x)   ITTNOTIFY_VOID_D1(frame_begin_v3,d,x)
-#define __itt_frame_begin_v3_ptr    ITTNOTIFY_NAME(frame_begin_v3)
-#define __itt_frame_end_v3(d,x)     ITTNOTIFY_VOID_D1(frame_end_v3,d,x)
-#define __itt_frame_end_v3_ptr      ITTNOTIFY_NAME(frame_end_v3)
+ITT_STUBV(ITTAPI, void, frame_begin_v3,  (const __itt_domain *domain, __itt_id *id))
+ITT_STUBV(ITTAPI, void, frame_end_v3,    (const __itt_domain *domain, __itt_id *id))
+ITT_STUBV(ITTAPI, void, frame_submit_v3, (const __itt_domain *domain, __itt_id *id, __itt_timestamp begin, __itt_timestamp end))
+#define __itt_frame_begin_v3(d,x)      ITTNOTIFY_VOID_D1(frame_begin_v3,d,x)
+#define __itt_frame_begin_v3_ptr       ITTNOTIFY_NAME(frame_begin_v3)
+#define __itt_frame_end_v3(d,x)        ITTNOTIFY_VOID_D1(frame_end_v3,d,x)
+#define __itt_frame_end_v3_ptr         ITTNOTIFY_NAME(frame_end_v3)
+#define __itt_frame_submit_v3(d,x,b,e) ITTNOTIFY_VOID_D3(frame_submit_v3,d,x,b,e)
+#define __itt_frame_submit_v3_ptr      ITTNOTIFY_NAME(frame_submit_v3)
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #define __itt_frame_begin_v3(domain,id)
 #define __itt_frame_begin_v3_ptr 0
 #define __itt_frame_end_v3(domain,id)
 #define __itt_frame_end_v3_ptr   0
+#define __itt_frame_submit_v3(domain,id,begin,end)
+#define __itt_frame_submit_v3_ptr   0
 #endif /* INTEL_NO_ITTNOTIFY_API */
 #else  /* INTEL_NO_MACRO_BODY */
 #define __itt_frame_begin_v3_ptr 0
 #define __itt_frame_end_v3_ptr   0
+#define __itt_frame_submit_v3_ptr   0
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 /** @} frames group */
@@ -2041,7 +2372,7 @@ ITT_STUBV(ITTAPI, void, metadata_add, (const __itt_domain *domain, __itt_id id,
  * @param[in] id The identifier of the instance to which the metadata is to be added, or __itt_null to add to the current task
  * @param[in] key The name of the metadata
  * @param[in] data The metadata itself
- * @param[in] length The number of characters in the string, or -1 if the length is unknown but the string is null-terminated
+ * @param[in] length The number of characters in the string, or -1 if the length is unknown but the string is null-terminated 
 */
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 void ITTAPI __itt_metadata_str_addA(const __itt_domain *domain, __itt_id id, __itt_string_handle *key, const char *data, size_t length);
@@ -2077,9 +2408,9 @@ ITT_STUBV(ITTAPI, void, metadata_str_add, (const __itt_domain *domain, __itt_id
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_metadata_str_addA(d,x,y,z,a)
+#define __itt_metadata_str_addA(d,x,y,z,a) 
 #define __itt_metadata_str_addA_ptr 0
-#define __itt_metadata_str_addW(d,x,y,z,a)
+#define __itt_metadata_str_addW(d,x,y,z,a) 
 #define __itt_metadata_str_addW_ptr 0
 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #define __itt_metadata_str_add(d,x,y,z,a)
@@ -2103,7 +2434,7 @@ ITT_STUBV(ITTAPI, void, metadata_str_add, (const __itt_domain *domain, __itt_id
  * @param[in] scope The scope of the instance to which the metadata is to be added
 
  * @param[in] id The identifier of the instance to which the metadata is to be added, or __itt_null to add to the current task
-
+ 
  * @param[in] key The name of the metadata
  * @param[in] type The type of the metadata
  * @param[in] count The number of elements of the given type. If count == 0, no metadata will be added.
@@ -2136,7 +2467,7 @@ ITT_STUBV(ITTAPI, void, metadata_add_with_scope, (const __itt_domain *domain, __
 
  * @param[in] key The name of the metadata
  * @param[in] data The metadata itself
- * @param[in] length The number of characters in the string, or -1 if the length is unknown but the string is null-terminated
+ * @param[in] length The number of characters in the string, or -1 if the length is unknown but the string is null-terminated 
 */
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 void ITTAPI __itt_metadata_str_add_with_scopeA(const __itt_domain *domain, __itt_scope scope, __itt_string_handle *key, const char *data, size_t length);
@@ -2172,9 +2503,9 @@ ITT_STUBV(ITTAPI, void, metadata_str_add_with_scope, (const __itt_domain *domain
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #else  /* INTEL_NO_ITTNOTIFY_API */
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
-#define __itt_metadata_str_add_with_scopeA(d,x,y,z,a)
+#define __itt_metadata_str_add_with_scopeA(d,x,y,z,a) 
 #define __itt_metadata_str_add_with_scopeA_ptr  0
-#define __itt_metadata_str_add_with_scopeW(d,x,y,z,a)
+#define __itt_metadata_str_add_with_scopeW(d,x,y,z,a) 
 #define __itt_metadata_str_add_with_scopeW_ptr  0
 #else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #define __itt_metadata_str_add_with_scope(d,x,y,z,a)
@@ -2749,8 +3080,125 @@ ITT_STUB(LIBITTAPI, int, event_end, (__itt_event event))
 #endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 /** @} events group */
+
+
+/**
+ * @defgroup arrays Arrays Visualizer
+ * @ingroup public
+ * Visualize arrays
+ * @{
+ */
+
+/**
+ * @enum __itt_av_data_type
+ * @brief Defines types of arrays data (for C/C++ intrinsic types) 
+ */
+typedef enum 
+{
+    __itt_e_first = 0,
+    __itt_e_char = 0,  /* 1-byte integer */
+    __itt_e_uchar,     /* 1-byte unsigned integer */
+    __itt_e_int16,     /* 2-byte integer */
+    __itt_e_uint16,    /* 2-byte unsigned integer  */
+    __itt_e_int32,     /* 4-byte integer */
+    __itt_e_uint32,    /* 4-byte unsigned integer */
+    __itt_e_int64,     /* 8-byte integer */
+    __itt_e_uint64,    /* 8-byte unsigned integer */
+    __itt_e_float,     /* 4-byte floating */
+    __itt_e_double,    /* 8-byte floating */
+    __itt_e_last = __itt_e_double
+} __itt_av_data_type;
+
+/**
+ * @brief Save an array data to a file.
+ * Output format is defined by the file extension. The csv and bmp formats are supported (bmp - for 2-dimensional array only).
+ * @param[in] data - pointer to the array data
+ * @param[in] rank - the rank of the array 
+ * @param[in] dimensions - pointer to an array of integers, which specifies the array dimensions. 
+ * The size of dimensions must be equal to the rank
+ * @param[in] type - the type of the array, specified as one of the __itt_av_data_type values (for intrinsic types)
+ * @param[in] filePath - the file path; the output format is defined by the file extension
+ * @param[in] columnOrder - defines how the array is stored in the linear memory.
+ * It should be 1 for column-major order (e.g. in FORTRAN) or 0 - for row-major order (e.g. in C).
+ */
+
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+int ITTAPI __itt_av_saveA(void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder);
+int ITTAPI __itt_av_saveW(void *data, int rank, const int *dimensions, int type, const wchar_t *filePath, int columnOrder);
+#if defined(UNICODE) || defined(_UNICODE)
+#  define __itt_av_save     __itt_av_saveW
+#  define __itt_av_save_ptr __itt_av_saveW_ptr
+#else /* UNICODE */
+#  define __itt_av_save     __itt_av_saveA
+#  define __itt_av_save_ptr __itt_av_saveA_ptr
+#endif /* UNICODE */
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+int ITTAPI __itt_av_save(void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder);
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+ITT_STUB(ITTAPI, int, av_saveA, (void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder))
+ITT_STUB(ITTAPI, int, av_saveW, (void *data, int rank, const int *dimensions, int type, const wchar_t *filePath, int columnOrder))
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+ITT_STUB(ITTAPI, int, av_save,  (void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder))
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+#define __itt_av_saveA     ITTNOTIFY_DATA(av_saveA)
+#define __itt_av_saveA_ptr ITTNOTIFY_NAME(av_saveA)
+#define __itt_av_saveW     ITTNOTIFY_DATA(av_saveW)
+#define __itt_av_saveW_ptr ITTNOTIFY_NAME(av_saveW)
+#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#define __itt_av_save     ITTNOTIFY_DATA(av_save)
+#define __itt_av_save_ptr ITTNOTIFY_NAME(av_save)
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+#define __itt_av_saveA(name)
+#define __itt_av_saveA_ptr 0
+#define __itt_av_saveW(name)
+#define __itt_av_saveW_ptr 0
+#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#define __itt_av_save(name)
+#define __itt_av_save_ptr 0
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+#define __itt_av_saveA_ptr 0
+#define __itt_av_saveW_ptr 0
+#else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#define __itt_av_save_ptr 0
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#endif /* INTEL_NO_MACRO_BODY */
 /** @endcond */
 
+void ITTAPI __itt_enable_attach(void);
+
+/** @cond exclude_from_documentation */
+#ifndef INTEL_NO_MACRO_BODY
+#ifndef INTEL_NO_ITTNOTIFY_API
+ITT_STUBV(ITTAPI, void, enable_attach, (void))
+#define __itt_enable_attach     ITTNOTIFY_VOID(enable_attach)
+#define __itt_enable_attach_ptr ITTNOTIFY_NAME(enable_attach)
+#else  /* INTEL_NO_ITTNOTIFY_API */
+#define __itt_enable_attach()
+#define __itt_enable_attach_ptr 0
+#endif /* INTEL_NO_ITTNOTIFY_API */
+#else  /* INTEL_NO_MACRO_BODY */
+#define __itt_enable_attach_ptr 0
+#endif /* INTEL_NO_MACRO_BODY */
+/** @endcond */
+
+/** @cond exclude_from_gpa_documentation */
+
+/** @} arrays group */
+
+/** @endcond */
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/src/tbb/tools_api/ittnotify_config.h b/src/tbb/tools_api/ittnotify_config.h
index 0272851..3cdf4a6 100644
--- a/src/tbb/tools_api/ittnotify_config.h
+++ b/src/tbb/tools_api/ittnotify_config.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _ITTNOTIFY_CONFIG_H_
@@ -60,12 +52,18 @@
 #  define ITT_PLATFORM_POSIX 2
 #endif /* ITT_PLATFORM_POSIX */
 
+#ifndef ITT_PLATFORM_MAC
+#  define ITT_PLATFORM_MAC 3
+#endif /* ITT_PLATFORM_MAC */
+
 #ifndef ITT_PLATFORM
 #  if ITT_OS==ITT_OS_WIN
 #    define ITT_PLATFORM ITT_PLATFORM_WIN
+#  elif ITT_OS==ITT_OS_MAC
+#    define ITT_PLATFORM ITT_PLATFORM_MAC
 #  else
 #    define ITT_PLATFORM ITT_PLATFORM_POSIX
-#  endif /* _WIN32 */
+#  endif
 #endif /* ITT_PLATFORM */
 
 #if defined(_UNICODE) && !defined(UNICODE)
@@ -86,11 +84,11 @@
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define CDECL __cdecl
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define CDECL /* not actual on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__ 
 #      define CDECL __attribute__ ((cdecl))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    else  /* _M_IX86 || __i386__ */
+#      define CDECL /* actual only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* CDECL */
 
@@ -98,11 +96,11 @@
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define STDCALL __stdcall
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define STDCALL /* not supported on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
-#      define STDCALL __attribute__ ((stdcall))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__
+#      define STDCALL __attribute__ ((stdcall)) 
+#    else  /* _M_IX86 || __i386__ */
+#      define STDCALL /* supported only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* STDCALL */
 
@@ -115,8 +113,8 @@
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 /* use __forceinline (VC++ specific) */
-#define INLINE           __forceinline
-#define INLINE_ATTRIBUTE /* nothing */
+#define ITT_INLINE           __forceinline
+#define ITT_INLINE_ATTRIBUTE /* nothing */
 #else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /*
  * Generally, functions are not inlined unless optimization is specified.
@@ -124,11 +122,11 @@
  * if no optimization level was specified.
  */
 #ifdef __STRICT_ANSI__
-#define INLINE           static
+#define ITT_INLINE           static inline
 #else  /* __STRICT_ANSI__ */
-#define INLINE           static inline
+#define ITT_INLINE           static inline
 #endif /* __STRICT_ANSI__ */
-#define INLINE_ATTRIBUTE __attribute__ ((always_inline))
+#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline, unused))
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /** @endcond */
 
@@ -140,17 +138,19 @@
 #  define ITT_ARCH_IA32E 2
 #endif /* ITT_ARCH_IA32E */
 
-#ifndef ITT_ARCH_IA64
-#  define ITT_ARCH_IA64  3
-#endif /* ITT_ARCH_IA64 */
+#ifndef ITT_ARCH_ARM
+#  define ITT_ARCH_ARM  4
+#endif /* ITT_ARCH_ARM */
 
 #ifndef ITT_ARCH
-#  if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
+#  if defined _M_IX86 || defined __i386__
+#    define ITT_ARCH ITT_ARCH_IA32
+#  elif defined _M_X64 || defined _M_AMD64 || defined __x86_64__
 #    define ITT_ARCH ITT_ARCH_IA32E
-#  elif defined _M_IA64 || defined __ia64
+#  elif defined _M_IA64 || defined __ia64__
 #    define ITT_ARCH ITT_ARCH_IA64
-#  else
-#    define ITT_ARCH ITT_ARCH_IA32
+#  elif defined _M_ARM || __arm__
+#    define ITT_ARCH ITT_ARCH_ARM
 #  endif
 #endif
 
@@ -163,7 +163,10 @@
 #define ITT_TO_STR_AUX(x) #x
 #define ITT_TO_STR(x)     ITT_TO_STR_AUX(x)
 
-#define __ITT_BUILD_ASSERT(expr, suffix) do { static char __itt_build_check_##suffix[(expr) ? 1 : -1]; __itt_build_check_##suffix[0] = 0; } while(0)
+#define __ITT_BUILD_ASSERT(expr, suffix) do { \
+    static char __itt_build_check_##suffix[(expr) ? 1 : -1]; \
+    __itt_build_check_##suffix[0] = 0; \
+} while(0)
 #define _ITT_BUILD_ASSERT(expr, suffix)  __ITT_BUILD_ASSERT((expr), suffix)
 #define ITT_BUILD_ASSERT(expr)           _ITT_BUILD_ASSERT((expr), __LINE__)
 
@@ -176,7 +179,8 @@
 #define API_VERSION_NUM 0.0.0
 #endif /* API_VERSION_NUM */
 
-#define API_VERSION "ITT-API-Version " ITT_TO_STR(API_VERSION_NUM) " (" ITT_TO_STR(API_VERSION_BUILD) ")"
+#define API_VERSION "ITT-API-Version " ITT_TO_STR(API_VERSION_NUM) \
+                                " (" ITT_TO_STR(API_VERSION_BUILD) ")"
 
 /* OS communication functions */
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -194,12 +198,16 @@ typedef CRITICAL_SECTION  mutex_t;
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE 1 /* need for PTHREAD_MUTEX_RECURSIVE */
 #endif /* _GNU_SOURCE */
+#ifndef __USE_UNIX98
+#define __USE_UNIX98 1 /* need for PTHREAD_MUTEX_RECURSIVE, on SLES11.1 with gcc 4.3.4 wherein pthread.h missing dependency on __USE_XOPEN2K8 */
+#endif /*__USE_UNIX98*/
 #include <pthread.h>
 typedef void*             lib_t;
 typedef pthread_t         TIDT;
 typedef pthread_mutex_t   mutex_t;
 #define MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
-#define _strong_alias(name, aliasname) extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+#define _strong_alias(name, aliasname) \
+            extern __typeof (name) aliasname __attribute__ ((alias (#name)));
 #define strong_alias(name, aliasname) _strong_alias(name, aliasname)
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 
@@ -218,29 +226,35 @@ typedef pthread_mutex_t   mutex_t;
 #define __itt_thread_id()         GetCurrentThreadId()
 #define __itt_thread_yield()      SwitchToThread()
 #ifndef ITT_SIMPLE_INIT
-INLINE int __itt_interlocked_increment(volatile long* ptr)
+ITT_INLINE long
+__itt_interlocked_increment(volatile long* ptr) ITT_INLINE_ATTRIBUTE;
+ITT_INLINE long __itt_interlocked_increment(volatile long* ptr)
 {
     return InterlockedIncrement(ptr);
 }
 #endif /* ITT_SIMPLE_INIT */
 #else /* ITT_PLATFORM!=ITT_PLATFORM_WIN */
 #define __itt_get_proc(lib, name) dlsym(lib, name)
-#define __itt_mutex_init(mutex)   \
-    {                                                                                        \
-        pthread_mutexattr_t mutex_attr;                                                      \
-        int error_code = pthread_mutexattr_init(&mutex_attr);                                \
-        if (error_code)                                                                      \
-            __itt_report_error(__itt_error_system, "pthread_mutexattr_init", error_code);    \
-        error_code = pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE);        \
-        if (error_code)                                                                      \
-            __itt_report_error(__itt_error_system, "pthread_mutexattr_settype", error_code); \
-        error_code = pthread_mutex_init(mutex, &mutex_attr);                                 \
-        if (error_code)                                                                      \
-            __itt_report_error(__itt_error_system, "pthread_mutex_init", error_code);        \
-        error_code = pthread_mutexattr_destroy(&mutex_attr);                                 \
-        if (error_code)                                                                      \
-            __itt_report_error(__itt_error_system, "pthread_mutexattr_destroy", error_code); \
-    }
+#define __itt_mutex_init(mutex)   {\
+    pthread_mutexattr_t mutex_attr;                                         \
+    int error_code = pthread_mutexattr_init(&mutex_attr);                   \
+    if (error_code)                                                         \
+        __itt_report_error(__itt_error_system, "pthread_mutexattr_init",    \
+                           error_code);                                     \
+    error_code = pthread_mutexattr_settype(&mutex_attr,                     \
+                                           PTHREAD_MUTEX_RECURSIVE);        \
+    if (error_code)                                                         \
+        __itt_report_error(__itt_error_system, "pthread_mutexattr_settype", \
+                           error_code);                                     \
+    error_code = pthread_mutex_init(mutex, &mutex_attr);                    \
+    if (error_code)                                                         \
+        __itt_report_error(__itt_error_system, "pthread_mutex_init",        \
+                           error_code);                                     \
+    error_code = pthread_mutexattr_destroy(&mutex_attr);                    \
+    if (error_code)                                                         \
+        __itt_report_error(__itt_error_system, "pthread_mutexattr_destroy", \
+                           error_code);                                     \
+}
 #define __itt_mutex_lock(mutex)   pthread_mutex_lock(mutex)
 #define __itt_mutex_unlock(mutex) pthread_mutex_unlock(mutex)
 #define __itt_load_lib(name)      dlopen(name, RTLD_LAZY)
@@ -256,24 +270,29 @@ INLINE int __itt_interlocked_increment(volatile long* ptr)
 #ifdef __INTEL_COMPILER
 #define __TBB_machine_fetchadd4(addr, val) __fetchadd4_acq((void *)addr, val)
 #else  /* __INTEL_COMPILER */
-/* TODO: Add Support for not Intel compilers for IA-64 architecture*/
+/* TODO: Add Support for not Intel compilers for IA-64 architecture */
 #endif /* __INTEL_COMPILER */
-#else /* ITT_ARCH!=ITT_ARCH_IA64 */
-INLINE int __TBB_machine_fetchadd4(volatile void* ptr, long addend)
+#elif ITT_ARCH==ITT_ARCH_IA32 || ITT_ARCH==ITT_ARCH_IA32E /* ITT_ARCH!=ITT_ARCH_IA64 */
+ITT_INLINE long
+__TBB_machine_fetchadd4(volatile void* ptr, long addend) ITT_INLINE_ATTRIBUTE;
+ITT_INLINE long __TBB_machine_fetchadd4(volatile void* ptr, long addend)
 {
-    int result;
-    __asm__ __volatile__("lock\nxaddl %0,%1"
-                          : "=r"(result),"=m"(*(long*)ptr)
-                          : "0"(addend), "m"(*(long*)ptr)
+    long result;
+    __asm__ __volatile__("lock\nxadd %0,%1"
+                          : "=r"(result),"=m"(*(int*)ptr)
+                          : "0"(addend), "m"(*(int*)ptr)
                           : "memory");
     return result;
 }
+#elif ITT_ARCH==ITT_ARCH_ARM
+#define __TBB_machine_fetchadd4(addr, val) __sync_fetch_and_add(addr, val)
 #endif /* ITT_ARCH==ITT_ARCH_IA64 */
-
 #ifndef ITT_SIMPLE_INIT
-INLINE int __itt_interlocked_increment(volatile long* ptr)
+ITT_INLINE long
+__itt_interlocked_increment(volatile long* ptr) ITT_INLINE_ATTRIBUTE;
+ITT_INLINE long __itt_interlocked_increment(volatile long* ptr)
 {
-    return __TBB_machine_fetchadd4(ptr, 1) + 1;
+    return __TBB_machine_fetchadd4(ptr, 1) + 1L;
 }
 #endif /* ITT_SIMPLE_INIT */
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
diff --git a/src/tbb/tools_api/ittnotify_static.c b/src/tbb/tools_api/ittnotify_static.c
index 9ef77d4..1d1af20 100644
--- a/src/tbb/tools_api/ittnotify_static.c
+++ b/src/tbb/tools_api/ittnotify_static.c
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "ittnotify_config.h"
@@ -40,14 +32,14 @@
 #include <stdarg.h>
 #include <string.h>
 
-#define INTEL_NO_MACRO_BODY
+#define INTEL_NO_MACRO_BODY 
 #define INTEL_ITTNOTIFY_API_PRIVATE
 #include "ittnotify.h"
 #include "legacy/ittnotify.h"
 
 #include "disable_warnings.h"
 
-static const char api_version[] = API_VERSION "\0\n@(#) 201495 2011-12-01 14:14:56Z\n";
+static const char api_version[] = API_VERSION "\0\n@(#) $Revision: 336044 $\n";
 
 #define _N_(n) ITT_JOIN(INTEL_ITTNOTIFY_PREFIX,n)
 
@@ -61,8 +53,35 @@ static const char* ittnotify_lib_name = "libittnotify.dylib";
 #error Unsupported or unknown OS.
 #endif
 
+#ifdef __ANDROID__
+#include <android/log.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <linux/limits.h>
+
+#ifdef ITT_ANDROID_LOG
+    #define ITT_ANDROID_LOG_TAG   "INTEL_VTUNE_USERAPI"
+    #define ITT_ANDROID_LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, ITT_ANDROID_LOG_TAG, __VA_ARGS__))
+    #define ITT_ANDROID_LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, ITT_ANDROID_LOG_TAG, __VA_ARGS__))
+    #define ITT_ANDROID_LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR,ITT_ANDROID_LOG_TAG, __VA_ARGS__))
+    #define ITT_ANDROID_LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG,ITT_ANDROID_LOG_TAG, __VA_ARGS__))
+#else
+    #define ITT_ANDROID_LOGI(...)
+    #define ITT_ANDROID_LOGW(...)
+    #define ITT_ANDROID_LOGE(...)
+    #define ITT_ANDROID_LOGD(...)
+#endif
+
+/* default location of userapi collector on Android */
+#define ANDROID_ITTNOTIFY_DEFAULT_PATH  "/data/data/com.intel.vtune/intel/libittnotify.so"
+#endif
+
+
 #ifndef LIB_VAR_NAME
-#if ITT_ARCH==ITT_ARCH_IA32
+#if ITT_ARCH==ITT_ARCH_IA32 || ITT_ARCH==ITT_ARCH_ARM
 #define LIB_VAR_NAME INTEL_LIBITTNOTIFY32
 #else
 #define LIB_VAR_NAME INTEL_LIBITTNOTIFY64
@@ -110,7 +129,7 @@ static __itt_fini_ittlib_t* __itt_fini_ittlib_ptr = _N_(fini_ittlib);
 #define ITT_STUB(api,type,name,args,params,ptr,group,format)   \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args;\
 typedef type api ITT_JOIN(_N_(name),_t) args;                  \
-ITT_EXTERN_C { ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); } \
+ITT_EXTERN_C { ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); }  \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args \
 {                                                              \
     __itt_init_ittlib_name(NULL, __itt_group_all);             \
@@ -123,8 +142,7 @@ static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args \
 #define ITT_STUBV(api,type,name,args,params,ptr,group,format)  \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args;\
 typedef type api ITT_JOIN(_N_(name),_t) args;                  \
-ITT_EXTERN_C {                                                 \
-ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); } \
+ITT_EXTERN_C { ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); }  \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args \
 {                                                              \
     __itt_init_ittlib_name(NULL, __itt_group_all);             \
@@ -142,8 +160,7 @@ static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args \
 #define ITT_STUB(api,type,name,args,params,ptr,group,format)   \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args;\
 typedef type api ITT_JOIN(_N_(name),_t) args;                  \
-ITT_EXTERN_C {                                                 \
-ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); }
+ITT_EXTERN_C { ITT_JOIN(_N_(name),_t)* ITTNOTIFY_NAME(name) = ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)); }
 
 #define ITT_STUBV(api,type,name,args,params,ptr,group,format)  \
 static type api ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)) args;\
@@ -166,7 +183,7 @@ typedef struct ___itt_group_alias
 
 static __itt_group_alias group_alias[] = {
     { "KMP_FOR_TPROFILE", (__itt_group_id)(__itt_group_control | __itt_group_thread | __itt_group_sync  | __itt_group_mark) },
-    { "KMP_FOR_TCHECK",   (__itt_group_id)(__itt_group_control | __itt_group_thread | __itt_group_sync  | __itt_group_fsync | __itt_group_mark) },
+    { "KMP_FOR_TCHECK",   (__itt_group_id)(__itt_group_control | __itt_group_thread | __itt_group_sync  | __itt_group_fsync | __itt_group_mark | __itt_group_suppress) },
     { NULL,               (__itt_group_none) },
     { api_version,        (__itt_group_none) } /* !!! Just to avoid unused code elimination !!! */
 };
@@ -182,7 +199,7 @@ static __itt_api_info api_list[] = {
 /* Define functions with static implementation */
 #undef ITT_STUB
 #undef ITT_STUBV
-#define ITT_STUB(api,type,name,args,params,nameindll,group,format) {ITT_TO_STR(ITT_JOIN(__itt_,nameindll)), (void**)(void*)&ITTNOTIFY_NAME(name), (void*)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), (void*)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), (__itt_group_id)(group)},
+#define ITT_STUB(api,type,name,args,params,nameindll,group,format) { ITT_TO_STR(ITT_JOIN(__itt_,nameindll)), (void**)(void*)&ITTNOTIFY_NAME(name), (void*)(size_t)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), (void*)(size_t)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), (__itt_group_id)(group)},
 #define ITT_STUBV ITT_STUB
 #define __ITT_INTERNAL_INIT
 #include "ittnotify_static.h"
@@ -190,7 +207,7 @@ static __itt_api_info api_list[] = {
 /* Define functions without static implementation */
 #undef ITT_STUB
 #undef ITT_STUBV
-#define ITT_STUB(api,type,name,args,params,nameindll,group,format) {ITT_TO_STR(ITT_JOIN(__itt_,nameindll)), (void**)(void*)&ITTNOTIFY_NAME(name), (void*)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), NULL, (__itt_group_id)(group)},
+#define ITT_STUB(api,type,name,args,params,nameindll,group,format) {ITT_TO_STR(ITT_JOIN(__itt_,nameindll)), (void**)(void*)&ITTNOTIFY_NAME(name), (void*)(size_t)&ITT_VERSIONIZE(ITT_JOIN(_N_(name),_init)), NULL, (__itt_group_id)(group)},
 #define ITT_STUBV ITT_STUB
 #include "ittnotify_static.h"
     {NULL, NULL, NULL, NULL, __itt_group_none}
@@ -245,7 +262,7 @@ static __itt_string_handle null_string_handle = {
 static const char dll_path[PATH_MAX] = { 0 };
 
 /* static part descriptor which handles. all notification api attributes. */
-__itt_global __itt_ittapi_global = {
+__itt_global _N_(_ittapi_global) = {
     ITT_MAGIC,                                     /* identification info */
     ITT_MAJOR, ITT_MINOR, API_VERSION_BUILD,       /* version info */
     0,                                             /* api_initialized */
@@ -281,9 +298,9 @@ static void __itt_report_error(__itt_error_code code, ...)
 {
     va_list args;
     va_start(args, code);
-    if (__itt_ittapi_global.error_handler != NULL)
+    if (_N_(_ittapi_global).error_handler != NULL)
     {
-        __itt_error_handler_t* handler = (__itt_error_handler_t*)__itt_ittapi_global.error_handler;
+        __itt_error_handler_t* handler = (__itt_error_handler_t*)(size_t)_N_(_ittapi_global).error_handler;
         handler(code, args);
     }
 #ifdef ITT_NOTIFY_EXT_REPORT
@@ -301,7 +318,7 @@ static __itt_domain* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(domain_createW),_init))(
 {
     __itt_domain *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(domain_createW) && ITTNOTIFY_NAME(domain_createW) != ITT_VERSIONIZE(ITT_JOIN(_N_(domain_createW),_init)))
@@ -309,16 +326,16 @@ static __itt_domain* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(domain_createW),_init))(
     }
 
     if (name == NULL)
-        return __itt_ittapi_global.domain_list;
+        return _N_(_ittapi_global).domain_list;
 
-    ITT_MUTEX_INIT_AND_LOCK(__itt_ittapi_global);
-    for (h_tail = NULL, h = __itt_ittapi_global.domain_list; h != NULL; h_tail = h, h = h->next)
+    ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global));
+    for (h_tail = NULL, h = _N_(_ittapi_global).domain_list; h != NULL; h_tail = h, h = h->next)
         if (h->nameW != NULL && !wcscmp(h->nameW, name))
             break;
     if (h == NULL) {
-        NEW_DOMAIN_W(&__itt_ittapi_global,h,h_tail,name);
+        NEW_DOMAIN_W(&_N_(_ittapi_global),h,h_tail,name);
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
     return h;
 }
 
@@ -329,7 +346,7 @@ static __itt_domain* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(domain_create),_init))(c
 {
     __itt_domain *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -342,16 +359,16 @@ static __itt_domain* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(domain_create),_init))(c
     }
 
     if (name == NULL)
-        return __itt_ittapi_global.domain_list;
+        return _N_(_ittapi_global).domain_list;
 
-    ITT_MUTEX_INIT_AND_LOCK(__itt_ittapi_global);
-    for (h_tail = NULL, h = __itt_ittapi_global.domain_list; h != NULL; h_tail = h, h = h->next)
+    ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global));
+    for (h_tail = NULL, h = _N_(_ittapi_global).domain_list; h != NULL; h_tail = h, h = h->next)
         if (h->nameA != NULL && !__itt_fstrcmp(h->nameA, name))
             break;
     if (h == NULL) {
-        NEW_DOMAIN_A(&__itt_ittapi_global,h,h_tail,name);
+        NEW_DOMAIN_A(&_N_(_ittapi_global),h,h_tail,name);
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
     return h;
 }
 
@@ -360,7 +377,7 @@ static __itt_string_handle* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_cre
 {
     __itt_string_handle *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(string_handle_createW) && ITTNOTIFY_NAME(string_handle_createW) != ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_createW),_init)))
@@ -368,16 +385,16 @@ static __itt_string_handle* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_cre
     }
 
     if (name == NULL)
-        return __itt_ittapi_global.string_list;
+        return _N_(_ittapi_global).string_list;
 
-    ITT_MUTEX_INIT_AND_LOCK(__itt_ittapi_global);
-    for (h_tail = NULL, h = __itt_ittapi_global.string_list; h != NULL; h_tail = h, h = h->next)
+    ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global));
+    for (h_tail = NULL, h = _N_(_ittapi_global).string_list; h != NULL; h_tail = h, h = h->next)
         if (h->strW != NULL && !wcscmp(h->strW, name))
             break;
     if (h == NULL) {
-        NEW_STRING_HANDLE_W(&__itt_ittapi_global,h,h_tail,name);
+        NEW_STRING_HANDLE_W(&_N_(_ittapi_global),h,h_tail,name);
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
     return h;
 }
 
@@ -388,7 +405,7 @@ static __itt_string_handle* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_cre
 {
     __itt_string_handle *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -401,16 +418,16 @@ static __itt_string_handle* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_cre
     }
 
     if (name == NULL)
-        return __itt_ittapi_global.string_list;
+        return _N_(_ittapi_global).string_list;
 
-    ITT_MUTEX_INIT_AND_LOCK(__itt_ittapi_global);
-    for (h_tail = NULL, h = __itt_ittapi_global.string_list; h != NULL; h_tail = h, h = h->next)
+    ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global));
+    for (h_tail = NULL, h = _N_(_ittapi_global).string_list; h != NULL; h_tail = h, h = h->next)
         if (h->strA != NULL && !__itt_fstrcmp(h->strA, name))
             break;
     if (h == NULL) {
-        NEW_STRING_HANDLE_A(&__itt_ittapi_global,h,h_tail,name);
+        NEW_STRING_HANDLE_A(&_N_(_ittapi_global),h,h_tail,name);
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
     return h;
 }
 
@@ -418,7 +435,7 @@ static __itt_string_handle* ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(string_handle_cre
 
 static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(pause),_init))(void)
 {
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(pause) && ITTNOTIFY_NAME(pause) != ITT_VERSIONIZE(ITT_JOIN(_N_(pause),_init)))
@@ -427,12 +444,12 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(pause),_init))(void)
             return;
         }
     }
-    __itt_ittapi_global.state = __itt_collection_paused;
+    _N_(_ittapi_global).state = __itt_collection_paused;
 }
 
 static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(resume),_init))(void)
 {
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(resume) && ITTNOTIFY_NAME(resume) != ITT_VERSIONIZE(ITT_JOIN(_N_(resume),_init)))
@@ -441,7 +458,7 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(resume),_init))(void)
             return;
         }
     }
-    __itt_ittapi_global.state = __itt_collection_normal;
+    _N_(_ittapi_global).state = __itt_collection_normal;
 }
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -450,7 +467,7 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_nameW),_init))(const w
     TIDT tid = __itt_thread_id();
     __itt_thread_info *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(thread_set_nameW) && ITTNOTIFY_NAME(thread_set_nameW) != ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_nameW),_init)))
@@ -460,18 +477,18 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_nameW),_init))(const w
         }
     }
 
-    __itt_mutex_lock(&__itt_ittapi_global.mutex);
-    for (h_tail = NULL, h = __itt_ittapi_global.thread_list; h != NULL; h_tail = h, h = h->next)
+    __itt_mutex_lock(&_N_(_ittapi_global).mutex);
+    for (h_tail = NULL, h = _N_(_ittapi_global).thread_list; h != NULL; h_tail = h, h = h->next)
         if (h->tid == tid)
             break;
     if (h == NULL) {
-        NEW_THREAD_INFO_W(&__itt_ittapi_global, h, h_tail, tid, __itt_thread_normal, name);
+        NEW_THREAD_INFO_W(&_N_(_ittapi_global), h, h_tail, tid, __itt_thread_normal, name);
     }
     else
     {
         h->nameW = name ? _wcsdup(name) : NULL;
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
 }
 
 static int ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thr_name_setW),_init))(const wchar_t* name, int namelen)
@@ -489,7 +506,7 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_name),_init))(const ch
     TIDT tid = __itt_thread_id();
     __itt_thread_info *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -507,18 +524,18 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_name),_init))(const ch
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
     }
 
-    __itt_mutex_lock(&__itt_ittapi_global.mutex);
-    for (h_tail = NULL, h = __itt_ittapi_global.thread_list; h != NULL; h_tail = h, h = h->next)
+    __itt_mutex_lock(&_N_(_ittapi_global).mutex);
+    for (h_tail = NULL, h = _N_(_ittapi_global).thread_list; h != NULL; h_tail = h, h = h->next)
         if (h->tid == tid)
             break;
     if (h == NULL) {
-        NEW_THREAD_INFO_A(&__itt_ittapi_global, h, h_tail, tid, __itt_thread_normal, name);
+        NEW_THREAD_INFO_A(&_N_(_ittapi_global), h, h_tail, tid, __itt_thread_normal, name);
     }
     else
     {
         h->nameA = name ? __itt_fstrdup(name) : NULL;
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
 }
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -531,7 +548,6 @@ static int ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thr_name_setA),_init))(const char*
 #else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 static int ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thr_name_set),_init))(const char* name, int namelen)
 {
-    namelen = namelen;
     ITT_VERSIONIZE(ITT_JOIN(_N_(thread_set_name),_init))(name);
     return 0;
 }
@@ -542,7 +558,7 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_ignore),_init))(void)
     TIDT tid = __itt_thread_id();
     __itt_thread_info *h_tail, *h;
 
-    if (!__itt_ittapi_global.api_initialized && __itt_ittapi_global.thread_list->tid == 0)
+    if (!_N_(_ittapi_global).api_initialized && _N_(_ittapi_global).thread_list->tid == 0)
     {
         __itt_init_ittlib_name(NULL, __itt_group_all);
         if (ITTNOTIFY_NAME(thread_ignore) && ITTNOTIFY_NAME(thread_ignore) != ITT_VERSIONIZE(ITT_JOIN(_N_(thread_ignore),_init)))
@@ -552,19 +568,19 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thread_ignore),_init))(void)
         }
     }
 
-    __itt_mutex_lock(&__itt_ittapi_global.mutex);
-    for (h_tail = NULL, h = __itt_ittapi_global.thread_list; h != NULL; h_tail = h, h = h->next)
+    __itt_mutex_lock(&_N_(_ittapi_global).mutex);
+    for (h_tail = NULL, h = _N_(_ittapi_global).thread_list; h != NULL; h_tail = h, h = h->next)
         if (h->tid == tid)
             break;
     if (h == NULL) {
         static const char* name = "unknown";
-        NEW_THREAD_INFO_A(&__itt_ittapi_global, h, h_tail, tid, __itt_thread_ignored, name);
+        NEW_THREAD_INFO_A(&_N_(_ittapi_global), h, h_tail, tid, __itt_thread_ignored, name);
     }
     else
     {
         h->state = __itt_thread_ignored;
     }
-    __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+    __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
 }
 
 static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thr_ignore),_init))(void)
@@ -572,6 +588,17 @@ static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(thr_ignore),_init))(void)
     ITT_VERSIONIZE(ITT_JOIN(_N_(thread_ignore),_init))();
 }
 
+static void ITTAPI ITT_VERSIONIZE(ITT_JOIN(_N_(enable_attach),_init))(void)
+{
+#ifdef __ANDROID__
+    /*
+     * if LIB_VAR_NAME env variable were set before then stay previous value
+     * else set default path
+    */
+    setenv(ITT_TO_STR(LIB_VAR_NAME), ANDROID_ITTNOTIFY_DEFAULT_PATH, 0);
+#endif
+}
+
 /* -------------------------------------------------------------------------- */
 
 static const char* __itt_fsplit(const char* s, const char* sep, const char** out, int* len)
@@ -689,16 +716,102 @@ static const char* __itt_get_env_var(const char* name)
 static const char* __itt_get_lib_name(void)
 {
     const char* lib_name = __itt_get_env_var(ITT_TO_STR(LIB_VAR_NAME));
+
+#ifdef __ANDROID__
+    if (lib_name == NULL)
+    {
+        const char* const system_wide_marker_filename = "/data/local/tmp/com.intel.itt.collector_lib";
+        int itt_marker_file_fd = open(system_wide_marker_filename, O_RDONLY);
+        ssize_t res = 0;
+
+        if (itt_marker_file_fd == -1)
+        {
+            const pid_t my_pid = getpid();
+            char cmdline_path[PATH_MAX] = {0};
+            char package_name[PATH_MAX] = {0};
+            char app_sandbox_file[PATH_MAX] = {0};
+            int cmdline_fd = 0;
+
+            ITT_ANDROID_LOGI("Unable to open system-wide marker file.");
+            snprintf(cmdline_path, PATH_MAX - 1, "/proc/%d/cmdline", my_pid);
+            ITT_ANDROID_LOGI("CMD file: %s\n", cmdline_path);
+            cmdline_fd = open(cmdline_path, O_RDONLY);
+            if (cmdline_fd == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to open %s file!", cmdline_path);
+                return lib_name;
+            }
+            res = read(cmdline_fd, package_name, PATH_MAX - 1);
+            if (res == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to read %s file!", cmdline_path);
+                res = close(cmdline_fd);
+                if (res == -1)
+                {
+                    ITT_ANDROID_LOGE("Unable to close %s file!", cmdline_path);
+                }
+                return lib_name;
+            }
+            res = close(cmdline_fd);
+            if (res == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to close %s file!", cmdline_path);
+                return lib_name;
+            }
+            ITT_ANDROID_LOGI("Package name: %s\n", package_name);
+            snprintf(app_sandbox_file, PATH_MAX - 1, "/data/data/%s/com.intel.itt.collector_lib", package_name);
+            ITT_ANDROID_LOGI("Lib marker file name: %s\n", app_sandbox_file);
+            itt_marker_file_fd = open(app_sandbox_file, O_RDONLY);
+            if (itt_marker_file_fd == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to open app marker file!");
+                return lib_name;
+            }
+        }
+
+        {
+            char itt_lib_name[PATH_MAX] = {0};
+
+            res = read(itt_marker_file_fd, itt_lib_name, PATH_MAX - 1);
+            if (res == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to read %s file!", itt_marker_file_fd);
+                res = close(itt_marker_file_fd);
+                if (res == -1)
+                {
+                    ITT_ANDROID_LOGE("Unable to close %s file!", itt_marker_file_fd);
+                }
+                return lib_name;
+            }
+            ITT_ANDROID_LOGI("ITT Lib path: %s", itt_lib_name);
+            res = close(itt_marker_file_fd);
+            if (res == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to close %s file!", itt_marker_file_fd);
+                return lib_name;
+            }
+            ITT_ANDROID_LOGI("Set env");
+            res = setenv(ITT_TO_STR(LIB_VAR_NAME), itt_lib_name, 0);
+            if (res == -1)
+            {
+                ITT_ANDROID_LOGE("Unable to set env var!");
+                return lib_name;
+            }
+            lib_name = __itt_get_env_var(ITT_TO_STR(LIB_VAR_NAME));
+            ITT_ANDROID_LOGI("ITT Lib path from env: %s", itt_lib_name);
+        }
+    }
+#endif
+
     return lib_name;
 }
 
-#ifndef min
-#define min(a,b) (a) < (b) ? (a) : (b)
-#endif /* min */
+/* Avoid clashes with std::min */
+#define __itt_min(a,b) (a) < (b) ? (a) : (b)
 
 static __itt_group_id __itt_get_groups(void)
 {
-    register int i;
+    int i;
     __itt_group_id res = __itt_group_none;
     const char* var_name  = "INTEL_ITTNOTIFY_GROUPS";
     const char* group_str = __itt_get_env_var(var_name);
@@ -710,9 +823,8 @@ static __itt_group_id __itt_get_groups(void)
         const char* chunk;
         while ((group_str = __itt_fsplit(group_str, ",; ", &chunk, &len)) != NULL)
         {
-            __itt_fstrcpyn(gr, chunk, sizeof(gr));
-
-            gr[min((unsigned)len, sizeof(gr) - 1)] = 0;
+            __itt_fstrcpyn(gr, chunk, sizeof(gr) - 1);
+            gr[__itt_min(len, (int)(sizeof(gr) - 1))] = 0;
 
             for (i = 0; group_list[i].name != NULL; i++)
             {
@@ -759,17 +871,17 @@ static void __itt_reinit_all_pointers(void)
 {
     register int i;
     // Fill all pointers with initial stubs
-    for (i = 0; __itt_ittapi_global.api_list_ptr[i].name != NULL; i++)
-        *__itt_ittapi_global.api_list_ptr[i].func_ptr = __itt_ittapi_global.api_list_ptr[i].init_func;
+    for (i = 0; _N_(_ittapi_global).api_list_ptr[i].name != NULL; i++)
+        *_N_(_ittapi_global).api_list_ptr[i].func_ptr = _N_(_ittapi_global).api_list_ptr[i].init_func;
 }
 */
 
 static void __itt_nullify_all_pointers(void)
 {
-    register int i;
+    int i;
     /* Nulify all pointers except domain_create and string_handle_create */
-    for (i = 0; __itt_ittapi_global.api_list_ptr[i].name != NULL; i++)
-        *__itt_ittapi_global.api_list_ptr[i].func_ptr = __itt_ittapi_global.api_list_ptr[i].null_func;
+    for (i = 0; _N_(_ittapi_global).api_list_ptr[i].name != NULL; i++)
+        *_N_(_ittapi_global).api_list_ptr[i].func_ptr = _N_(_ittapi_global).api_list_ptr[i].null_func;
 }
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -783,87 +895,90 @@ ITT_EXTERN_C void _N_(fini_ittlib)(void)
     __itt_api_fini_t* __itt_api_fini_ptr;
     static volatile TIDT current_thread = 0;
 
-    if (__itt_ittapi_global.api_initialized)
+    if (_N_(_ittapi_global).api_initialized)
     {
-        __itt_mutex_lock(&__itt_ittapi_global.mutex);
-        if (__itt_ittapi_global.api_initialized)
+        __itt_mutex_lock(&_N_(_ittapi_global).mutex);
+        if (_N_(_ittapi_global).api_initialized)
         {
             if (current_thread == 0)
             {
                 current_thread = __itt_thread_id();
-                __itt_api_fini_ptr = (__itt_api_fini_t*)__itt_get_proc(__itt_ittapi_global.lib, "__itt_api_fini");
-                if (__itt_api_fini_ptr)
-                    __itt_api_fini_ptr(&__itt_ittapi_global);
+                if (_N_(_ittapi_global).lib) {
+                    __itt_api_fini_ptr = (__itt_api_fini_t*)(size_t)__itt_get_proc(_N_(_ittapi_global).lib, "__itt_api_fini");
+                    if (__itt_api_fini_ptr)
+                        __itt_api_fini_ptr(&_N_(_ittapi_global));
 
-                __itt_nullify_all_pointers();
+                    __itt_nullify_all_pointers();
+                }
 
  /* TODO: !!! not safe !!! don't support unload so far.
-  *             if (__itt_ittapi_global.lib != NULL)
-  *                 __itt_unload_lib(__itt_ittapi_global.lib);
-  *             __itt_ittapi_global.lib = NULL;
+  *             if (_N_(_ittapi_global).lib != NULL)
+  *                 __itt_unload_lib(_N_(_ittapi_global).lib);
+  *             _N_(_ittapi_global).lib = NULL;
   */
-                __itt_ittapi_global.api_initialized = 0;
+                _N_(_ittapi_global).api_initialized = 0;
                 current_thread = 0;
             }
         }
-        __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+        __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
     }
 }
 
 ITT_EXTERN_C int _N_(init_ittlib)(const char* lib_name, __itt_group_id init_groups)
 {
-    register int i;
+    int i;
     __itt_group_id groups;
 #ifdef ITT_COMPLETE_GROUP
     __itt_group_id zero_group = __itt_group_none;
 #endif /* ITT_COMPLETE_GROUP */
     static volatile TIDT current_thread = 0;
 
-    if (!__itt_ittapi_global.api_initialized)
+    if (!_N_(_ittapi_global).api_initialized)
     {
 #ifndef ITT_SIMPLE_INIT
-        ITT_MUTEX_INIT_AND_LOCK(__itt_ittapi_global);
+        ITT_MUTEX_INIT_AND_LOCK(_N_(_ittapi_global));
 #endif /* ITT_SIMPLE_INIT */
 
-        if (!__itt_ittapi_global.api_initialized)
+        if (!_N_(_ittapi_global).api_initialized)
         {
             if (current_thread == 0)
             {
                 current_thread = __itt_thread_id();
-                __itt_ittapi_global.thread_list->tid = current_thread;
+                _N_(_ittapi_global).thread_list->tid = current_thread;
                 if (lib_name == NULL)
                     lib_name = __itt_get_lib_name();
                 groups = __itt_get_groups();
                 if (groups != __itt_group_none || lib_name != NULL)
                 {
-                    __itt_ittapi_global.lib = __itt_load_lib((lib_name == NULL) ? ittnotify_lib_name : lib_name);
-                    if (__itt_ittapi_global.lib != NULL)
+                    _N_(_ittapi_global).lib = __itt_load_lib((lib_name == NULL) ? ittnotify_lib_name : lib_name);
+
+                    if (_N_(_ittapi_global).lib != NULL)
                     {
                         __itt_api_init_t* __itt_api_init_ptr;
-                        int lib_version = __itt_lib_version(__itt_ittapi_global.lib);
+                        int lib_version = __itt_lib_version(_N_(_ittapi_global).lib);
 
                         switch (lib_version) {
                         case 0:
                             groups = __itt_group_legacy;
                         case 1:
                             /* Fill all pointers from dynamic library */
-                            for (i = 0; __itt_ittapi_global.api_list_ptr[i].name != NULL; i++)
+                            for (i = 0; _N_(_ittapi_global).api_list_ptr[i].name != NULL; i++)
                             {
-                                if (__itt_ittapi_global.api_list_ptr[i].group & groups & init_groups)
+                                if (_N_(_ittapi_global).api_list_ptr[i].group & groups & init_groups)
                                 {
-                                    *__itt_ittapi_global.api_list_ptr[i].func_ptr = (void*)__itt_get_proc(__itt_ittapi_global.lib, __itt_ittapi_global.api_list_ptr[i].name);
-                                    if (*__itt_ittapi_global.api_list_ptr[i].func_ptr == NULL)
+                                    *_N_(_ittapi_global).api_list_ptr[i].func_ptr = (void*)__itt_get_proc(_N_(_ittapi_global).lib, _N_(_ittapi_global).api_list_ptr[i].name);
+                                    if (*_N_(_ittapi_global).api_list_ptr[i].func_ptr == NULL)
                                     {
                                         /* Restore pointers for function with static implementation */
-                                        *__itt_ittapi_global.api_list_ptr[i].func_ptr = __itt_ittapi_global.api_list_ptr[i].null_func;
-                                        __itt_report_error(__itt_error_no_symbol, lib_name, __itt_ittapi_global.api_list_ptr[i].name);
+                                        *_N_(_ittapi_global).api_list_ptr[i].func_ptr = _N_(_ittapi_global).api_list_ptr[i].null_func;
+                                        __itt_report_error(__itt_error_no_symbol, lib_name, _N_(_ittapi_global).api_list_ptr[i].name);
 #ifdef ITT_COMPLETE_GROUP
-                                        zero_group = (__itt_group_id)(zero_group | __itt_ittapi_global.api_list_ptr[i].group);
+                                        zero_group = (__itt_group_id)(zero_group | _N_(_ittapi_global).api_list_ptr[i].group);
 #endif /* ITT_COMPLETE_GROUP */
                                     }
                                 }
                                 else
-                                    *__itt_ittapi_global.api_list_ptr[i].func_ptr = __itt_ittapi_global.api_list_ptr[i].null_func;
+                                    *_N_(_ittapi_global).api_list_ptr[i].func_ptr = _N_(_ittapi_global).api_list_ptr[i].null_func;
                             }
 
                             if (groups == __itt_group_legacy)
@@ -883,15 +998,15 @@ ITT_EXTERN_C int _N_(init_ittlib)(const char* lib_name, __itt_group_id init_grou
                             }
 
 #ifdef ITT_COMPLETE_GROUP
-                            for (i = 0; __itt_ittapi_global.api_list_ptr[i].name != NULL; i++)
-                                if (__itt_ittapi_global.api_list_ptr[i].group & zero_group)
-                                    *__itt_ittapi_global.api_list_ptr[i].func_ptr = __itt_ittapi_global.api_list_ptr[i].null_func;
+                            for (i = 0; _N_(_ittapi_global).api_list_ptr[i].name != NULL; i++)
+                                if (_N_(_ittapi_global).api_list_ptr[i].group & zero_group)
+                                    *_N_(_ittapi_global).api_list_ptr[i].func_ptr = _N_(_ittapi_global).api_list_ptr[i].null_func;
 #endif /* ITT_COMPLETE_GROUP */
                             break;
                         case 2:
-                            __itt_api_init_ptr = (__itt_api_init_t*)__itt_get_proc(__itt_ittapi_global.lib, "__itt_api_init");
+                            __itt_api_init_ptr = (__itt_api_init_t*)(size_t)__itt_get_proc(_N_(_ittapi_global).lib, "__itt_api_init");
                             if (__itt_api_init_ptr)
-                                __itt_api_init_ptr(&__itt_ittapi_global, init_groups);
+                                __itt_api_init_ptr(&_N_(_ittapi_global), init_groups);
                             break;
                         }
                     }
@@ -912,7 +1027,7 @@ ITT_EXTERN_C int _N_(init_ittlib)(const char* lib_name, __itt_group_id init_grou
                 {
                     __itt_nullify_all_pointers();
                 }
-                __itt_ittapi_global.api_initialized = 1;
+                _N_(_ittapi_global).api_initialized = 1;
                 current_thread = 0;
                 /* !!! Just to avoid unused code elimination !!! */
                 if (__itt_fini_ittlib_ptr == _N_(fini_ittlib)) current_thread = 0;
@@ -920,25 +1035,26 @@ ITT_EXTERN_C int _N_(init_ittlib)(const char* lib_name, __itt_group_id init_grou
         }
 
 #ifndef ITT_SIMPLE_INIT
-        __itt_mutex_unlock(&__itt_ittapi_global.mutex);
+        __itt_mutex_unlock(&_N_(_ittapi_global).mutex);
 #endif /* ITT_SIMPLE_INIT */
     }
 
     /* Evaluating if any function ptr is non empty and it's in init_groups */
-    for (i = 0; __itt_ittapi_global.api_list_ptr[i].name != NULL; i++)
-        if (*__itt_ittapi_global.api_list_ptr[i].func_ptr != __itt_ittapi_global.api_list_ptr[i].null_func &&
-            __itt_ittapi_global.api_list_ptr[i].group & init_groups)
+    for (i = 0; _N_(_ittapi_global).api_list_ptr[i].name != NULL; i++)
+        if (*_N_(_ittapi_global).api_list_ptr[i].func_ptr != _N_(_ittapi_global).api_list_ptr[i].null_func &&
+            _N_(_ittapi_global).api_list_ptr[i].group & init_groups)
             return 1;
     return 0;
 }
 
 ITT_EXTERN_C __itt_error_handler_t* _N_(set_error_handler)(__itt_error_handler_t* handler)
 {
-    __itt_error_handler_t* prev = (__itt_error_handler_t*)__itt_ittapi_global.error_handler;
-    __itt_ittapi_global.error_handler = (void*)handler;
+    __itt_error_handler_t* prev = (__itt_error_handler_t*)(size_t)_N_(_ittapi_global).error_handler;
+    _N_(_ittapi_global).error_handler = (void*)(size_t)handler;
     return prev;
 }
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #pragma warning(pop)
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+
diff --git a/src/tbb/tools_api/ittnotify_static.h b/src/tbb/tools_api/ittnotify_static.h
index 906715b..c46e45a 100644
--- a/src/tbb/tools_api/ittnotify_static.h
+++ b/src/tbb/tools_api/ittnotify_static.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "ittnotify_config.h"
@@ -78,6 +70,8 @@ ITT_STUB(LIBITTAPI, int,  thr_name_set,  (const char    *name, int namelen), (IT
 ITT_STUBV(LIBITTAPI, void, thr_ignore,   (void),                             (ITT_NO_PARAMS),            thr_ignore,    __itt_group_thread | __itt_group_legacy, "no args")
 #endif /* __ITT_INTERNAL_BODY */
 
+ITT_STUBV(ITTAPI, void, enable_attach, (void), (ITT_NO_PARAMS), enable_attach, __itt_group_all, "no args")
+
 #else  /* __ITT_INTERNAL_INIT */
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
@@ -96,6 +90,11 @@ ITT_STUBV(ITTAPI, void, sync_cancel,     (void *addr), (ITT_FORMAT addr), sync_c
 ITT_STUBV(ITTAPI, void, sync_acquired,   (void *addr), (ITT_FORMAT addr), sync_acquired,  __itt_group_sync,  "%p")
 ITT_STUBV(ITTAPI, void, sync_releasing,  (void* addr), (ITT_FORMAT addr), sync_releasing, __itt_group_sync,  "%p")
 
+ITT_STUBV(ITTAPI, void, suppress_push,       (unsigned int mask),                             (ITT_FORMAT mask), suppress_push,  __itt_group_suppress,  "%p")
+ITT_STUBV(ITTAPI, void, suppress_pop,        (void),                                          (ITT_NO_PARAMS),   suppress_pop,   __itt_group_suppress,  "no args")
+ITT_STUBV(ITTAPI, void, suppress_mark_range, (__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size),(ITT_FORMAT mode, mask, address, size), suppress_mark_range, __itt_group_suppress, "%d, %p, %p, %d")
+ITT_STUBV(ITTAPI, void, suppress_clear_range,(__itt_suppress_mode_t mode, unsigned int mask, void * address, size_t size),(ITT_FORMAT mode, mask, address, size), suppress_clear_range,__itt_group_suppress, "%d, %p, %p, %d")
+
 ITT_STUBV(ITTAPI, void, fsync_prepare,   (void* addr), (ITT_FORMAT addr), sync_prepare,   __itt_group_fsync, "%p")
 ITT_STUBV(ITTAPI, void, fsync_cancel,    (void *addr), (ITT_FORMAT addr), sync_cancel,    __itt_group_fsync, "%p")
 ITT_STUBV(ITTAPI, void, fsync_acquired,  (void *addr), (ITT_FORMAT addr), sync_acquired,  __itt_group_fsync, "%p")
@@ -113,16 +112,26 @@ ITT_STUBV(ITTAPI, void, model_induction_uses,      (void* addr, size_t size), (I
 ITT_STUBV(ITTAPI, void, model_reduction_uses,      (void* addr, size_t size), (ITT_FORMAT addr, size), model_reduction_uses,      __itt_group_model, "%p, %d")
 ITT_STUBV(ITTAPI, void, model_observe_uses,        (void* addr, size_t size), (ITT_FORMAT addr, size), model_observe_uses,        __itt_group_model, "%p, %d")
 ITT_STUBV(ITTAPI, void, model_clear_uses,          (void* addr),              (ITT_FORMAT addr),       model_clear_uses,          __itt_group_model, "%p")
-ITT_STUBV(ITTAPI, void, model_disable_push,        (__itt_model_disable x),   (ITT_FORMAT x),          model_disable_push,        __itt_group_model, "%p")
-ITT_STUBV(ITTAPI, void, model_disable_pop,         (void),                    (ITT_NO_PARAMS),         model_disable_pop,         __itt_group_model, "no args")
 
 #ifndef __ITT_INTERNAL_BODY
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
-ITT_STUBV(ITTAPI, void, model_site_beginW,         (const wchar_t *name), (ITT_FORMAT name), model_site_beginW, __itt_group_model, "\"%s\"")
-ITT_STUBV(ITTAPI, void, model_task_beginW,         (const wchar_t *name), (ITT_FORMAT name), model_task_beginW, __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_site_beginW,         (const wchar_t *name),     (ITT_FORMAT name),       model_site_beginW,         __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_task_beginW,         (const wchar_t *name),     (ITT_FORMAT name),       model_task_beginW,         __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_iteration_taskW,     (const wchar_t *name),     (ITT_FORMAT name),       model_iteration_taskW,     __itt_group_model, "\"%s\"")
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-ITT_STUBV(ITTAPI, void, model_site_beginAL,        (const char *name, size_t len), (ITT_FORMAT name, len), model_site_beginAL, __itt_group_model, "\"%s\", %d")
-ITT_STUBV(ITTAPI, void, model_task_beginAL,        (const char *name, size_t len), (ITT_FORMAT name, len), model_task_beginAL, __itt_group_model, "\"%s\", %d")
+ITT_STUBV(ITTAPI, void, model_site_beginA,         (const char *name),        (ITT_FORMAT name),       model_site_beginA,         __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_site_beginAL,        (const char *name, size_t len), (ITT_FORMAT name, len), model_site_beginAL,    __itt_group_model, "\"%s\", %d")
+ITT_STUBV(ITTAPI, void, model_task_beginA,         (const char *name),        (ITT_FORMAT name),       model_task_beginA,         __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_task_beginAL,        (const char *name, size_t len), (ITT_FORMAT name, len), model_task_beginAL,    __itt_group_model, "\"%s\", %d")
+ITT_STUBV(ITTAPI, void, model_iteration_taskA,     (const char *name),        (ITT_FORMAT name),       model_iteration_taskA,     __itt_group_model, "\"%s\"")
+ITT_STUBV(ITTAPI, void, model_iteration_taskAL,    (const char *name, size_t len), (ITT_FORMAT name, len), model_iteration_taskAL, __itt_group_model, "\"%s\", %d")
+ITT_STUBV(ITTAPI, void, model_site_end_2,          (void),                    (ITT_NO_PARAMS),         model_site_end_2,          __itt_group_model, "no args")
+ITT_STUBV(ITTAPI, void, model_task_end_2,          (void),                    (ITT_NO_PARAMS),         model_task_end_2,          __itt_group_model, "no args")
+ITT_STUBV(ITTAPI, void, model_lock_acquire_2,      (void *lock),              (ITT_FORMAT lock),       model_lock_acquire_2,      __itt_group_model, "%p")
+ITT_STUBV(ITTAPI, void, model_lock_release_2,      (void *lock),              (ITT_FORMAT lock),       model_lock_release_2,      __itt_group_model, "%p")
+ITT_STUBV(ITTAPI, void, model_aggregate_task,      (size_t count),            (ITT_FORMAT count),      model_aggregate_task,      __itt_group_model, "%d")
+ITT_STUBV(ITTAPI, void, model_disable_push,        (__itt_model_disable x),   (ITT_FORMAT x),          model_disable_push,        __itt_group_model, "%p")
+ITT_STUBV(ITTAPI, void, model_disable_pop,         (void),                    (ITT_NO_PARAMS),         model_disable_pop,         __itt_group_model, "no args")
 #endif /* __ITT_INTERNAL_BODY */
 
 #ifndef __ITT_INTERNAL_BODY
@@ -141,16 +150,23 @@ ITT_STUBV(ITTAPI, void, heap_reallocate_begin, (__itt_heap_function h, void*  ad
 ITT_STUBV(ITTAPI, void, heap_reallocate_end,   (__itt_heap_function h, void*  addr, void** new_addr, size_t new_size, int initialized), (ITT_FORMAT h, addr, new_addr, new_size, initialized), heap_reallocate_end,   __itt_group_heap, "%p, %p, %p, %lu, %d")
 ITT_STUBV(ITTAPI, void, heap_internal_access_begin, (void), (ITT_NO_PARAMS), heap_internal_access_begin, __itt_group_heap, "no args")
 ITT_STUBV(ITTAPI, void, heap_internal_access_end,   (void), (ITT_NO_PARAMS), heap_internal_access_end,   __itt_group_heap, "no args")
+ITT_STUBV(ITTAPI, void, heap_record_memory_growth_begin, (void), (ITT_NO_PARAMS), heap_record_memory_growth_begin, __itt_group_heap, "no args")
+ITT_STUBV(ITTAPI, void, heap_record_memory_growth_end,   (void), (ITT_NO_PARAMS), heap_record_memory_growth_end,   __itt_group_heap, "no args")
+ITT_STUBV(ITTAPI, void, heap_reset_detection, (unsigned int reset_mask),  (ITT_FORMAT reset_mask), heap_reset_detection, __itt_group_heap, "%u")
+ITT_STUBV(ITTAPI, void, heap_record,          (unsigned int record_mask), (ITT_FORMAT record_mask),  heap_record,        __itt_group_heap, "%u")
 
 ITT_STUBV(ITTAPI, void, id_create,  (const __itt_domain *domain, __itt_id id), (ITT_FORMAT domain, id), id_create,  __itt_group_structure, "%p, %lu")
 ITT_STUBV(ITTAPI, void, id_destroy, (const __itt_domain *domain, __itt_id id), (ITT_FORMAT domain, id), id_destroy, __itt_group_structure, "%p, %lu")
 
+ITT_STUB(ITTAPI, __itt_timestamp, get_timestamp, (void), (ITT_NO_PARAMS), get_timestamp,  __itt_group_structure, "no args")
+
 ITT_STUBV(ITTAPI, void, region_begin, (const __itt_domain *domain, __itt_id id, __itt_id parent, __itt_string_handle *name), (ITT_FORMAT domain, id, parent, name), region_begin, __itt_group_structure, "%p, %lu, %lu, %p")
 ITT_STUBV(ITTAPI, void, region_end,   (const __itt_domain *domain, __itt_id id),                                             (ITT_FORMAT domain, id),               region_end,   __itt_group_structure, "%p, %lu")
 
 #ifndef __ITT_INTERNAL_BODY
-ITT_STUBV(ITTAPI, void, frame_begin_v3, (const __itt_domain *domain, __itt_id *id), (ITT_FORMAT domain, id), frame_begin_v3, __itt_group_structure, "%p, %p")
-ITT_STUBV(ITTAPI, void, frame_end_v3,   (const __itt_domain *domain, __itt_id *id), (ITT_FORMAT domain, id), frame_end_v3,   __itt_group_structure, "%p, %p")
+ITT_STUBV(ITTAPI, void, frame_begin_v3,  (const __itt_domain *domain, __itt_id *id),                                             (ITT_FORMAT domain, id),             frame_begin_v3,  __itt_group_structure, "%p, %p")
+ITT_STUBV(ITTAPI, void, frame_end_v3,    (const __itt_domain *domain, __itt_id *id),                                             (ITT_FORMAT domain, id),             frame_end_v3,    __itt_group_structure, "%p, %p")
+ITT_STUBV(ITTAPI, void, frame_submit_v3, (const __itt_domain *domain, __itt_id *id, __itt_timestamp begin, __itt_timestamp end), (ITT_FORMAT domain, id, begin, end), frame_submit_v3, __itt_group_structure, "%p, %p, %lu, %lu")
 #endif /* __ITT_INTERNAL_BODY */
 
 ITT_STUBV(ITTAPI, void, task_group,   (const __itt_domain *domain, __itt_id id, __itt_id parent, __itt_string_handle *name), (ITT_FORMAT domain, id, parent, name), task_group,  __itt_group_structure, "%p, %lu, %lu, %p")
@@ -298,4 +314,13 @@ ITT_STUBV(ITTAPI, void,               set_track,          (__itt_track *track),
 ITT_STUB(ITTAPI, const char*, api_version, (void), (ITT_NO_PARAMS), api_version, __itt_group_all & ~__itt_group_legacy, "no args")
 #endif /* __ITT_INTERNAL_BODY */
 
+#ifndef __ITT_INTERNAL_BODY
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+ITT_STUB(ITTAPI, int, av_saveA, (void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder), (ITT_FORMAT data, rank, dimensions, type, filePath, columnOrder), av_saveA, __itt_group_arrays, "%p, %d, %p, %d, \"%s\", %d")
+ITT_STUB(ITTAPI, int, av_saveW, (void *data, int rank, const int *dimensions, int type, const wchar_t *filePath, int columnOrder), (ITT_FORMAT data, rank, dimensions, type, filePath, columnOrder), av_saveW, __itt_group_arrays, "%p, %d, %p, %d, \"%S\", %d")
+#else  /* ITT_PLATFORM!=ITT_PLATFORM_WIN */
+ITT_STUB(ITTAPI, int, av_save,  (void *data, int rank, const int *dimensions, int type, const char *filePath, int columnOrder), (ITT_FORMAT data, rank, dimensions, type, filePath, columnOrder), av_save,  __itt_group_arrays, "%p, %d, %p, %d, \"%s\", %d")
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#endif /* __ITT_INTERNAL_BODY */
+
 #endif /* __ITT_INTERNAL_INIT */
diff --git a/src/tbb/tools_api/ittnotify_types.h b/src/tbb/tools_api/ittnotify_types.h
index a796a75..b9a04c2 100644
--- a/src/tbb/tools_api/ittnotify_types.h
+++ b/src/tbb/tools_api/ittnotify_types.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _ITTNOTIFY_TYPES_H_
@@ -47,6 +39,8 @@ typedef enum ___itt_group_id
     __itt_group_heap      = 1<<11,
     __itt_group_splitter_max = 1<<12,
     __itt_group_structure = 1<<12,
+    __itt_group_suppress = 1<<13,
+    __itt_group_arrays    = 1<<14,
     __itt_group_all       = -1
 } __itt_group_id;
 
@@ -75,6 +69,8 @@ typedef struct ___itt_group_list
         { __itt_group_stitch,    "stitch"    }, \
         { __itt_group_heap,      "heap"      }, \
         { __itt_group_structure, "structure" }, \
+        { __itt_group_suppress,  "suppress"  }, \
+        { __itt_group_arrays,    "arrays"    }, \
         { __itt_group_none,      NULL        }  \
     }
 
diff --git a/src/tbb/tools_api/legacy/ittnotify.h b/src/tbb/tools_api/legacy/ittnotify.h
index 279a264..115f086 100644
--- a/src/tbb/tools_api/legacy/ittnotify.h
+++ b/src/tbb/tools_api/legacy/ittnotify.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _LEGACY_ITTNOTIFY_H_
@@ -65,12 +57,18 @@
 #  define ITT_PLATFORM_POSIX 2
 #endif /* ITT_PLATFORM_POSIX */
 
+#ifndef ITT_PLATFORM_MAC
+#  define ITT_PLATFORM_MAC 3
+#endif /* ITT_PLATFORM_MAC */
+
 #ifndef ITT_PLATFORM
 #  if ITT_OS==ITT_OS_WIN
 #    define ITT_PLATFORM ITT_PLATFORM_WIN
+#  elif ITT_OS==ITT_OS_MAC
+#    define ITT_PLATFORM ITT_PLATFORM_MAC
 #  else
 #    define ITT_PLATFORM ITT_PLATFORM_POSIX
-#  endif /* _WIN32 */
+#  endif
 #endif /* ITT_PLATFORM */
 
 #if defined(_UNICODE) && !defined(UNICODE)
@@ -91,11 +89,11 @@
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define CDECL __cdecl
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define CDECL /* not actual on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__ 
 #      define CDECL __attribute__ ((cdecl))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    else  /* _M_IX86 || __i386__ */
+#      define CDECL /* actual only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* CDECL */
 
@@ -103,11 +101,11 @@
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define STDCALL __stdcall
 #  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    if defined _M_X64 || defined _M_AMD64 || defined __x86_64__
-#      define STDCALL /* not supported on x86_64 platform */
-#    else  /* _M_X64 || _M_AMD64 || __x86_64__ */
-#      define STDCALL __attribute__ ((stdcall))
-#    endif /* _M_X64 || _M_AMD64 || __x86_64__ */
+#    if defined _M_IX86 || defined __i386__
+#      define STDCALL __attribute__ ((stdcall)) 
+#    else  /* _M_IX86 || __i386__ */
+#      define STDCALL /* supported only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* STDCALL */
 
@@ -120,8 +118,8 @@
 
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 /* use __forceinline (VC++ specific) */
-#define INLINE           __forceinline
-#define INLINE_ATTRIBUTE /* nothing */
+#define ITT_INLINE           __forceinline
+#define ITT_INLINE_ATTRIBUTE /* nothing */
 #else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /*
  * Generally, functions are not inlined unless optimization is specified.
@@ -129,11 +127,11 @@
  * if no optimization level was specified.
  */
 #ifdef __STRICT_ANSI__
-#define INLINE           static
+#define ITT_INLINE           static inline
 #else  /* __STRICT_ANSI__ */
-#define INLINE           static inline
+#define ITT_INLINE           static inline
 #endif /* __STRICT_ANSI__ */
-#define INLINE_ATTRIBUTE __attribute__ ((always_inline))
+#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline, unused))
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 /** @endcond */
 
@@ -440,7 +438,7 @@ ITT_STUBV(ITTAPI, void, sync_set_name,  (void *addr, const char    *objtype, con
  * @param[in] objname -   null-terminated object name string. If NULL, no name will be assigned
  *                        to the object -- you can use the __itt_sync_rename call later to assign
  *                        the name
- * @param[in] typelen, namelen -   a lenght of string for appropriate objtype and objname parameter
+ * @param[in] typelen, namelen -   a length of string for appropriate objtype and objname parameter
  * @param[in] attribute - one of [#__itt_attr_barrier, #__itt_attr_mutex] values which defines the
  *                        exact semantics of how prepare/acquired/releasing calls work.
  * @return __itt_err upon failure (name or namelen being null,name and namelen mismatched)
diff --git a/src/tbb/tools_api/prototype/ittnotify.h b/src/tbb/tools_api/prototype/ittnotify.h
index c4679c3..7af8614 100644
--- a/src/tbb/tools_api/prototype/ittnotify.h
+++ b/src/tbb/tools_api/prototype/ittnotify.h
@@ -1,33 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _PROTOTYPE_ITTNOTIFY_H_
 #define _PROTOTYPE_ITTNOTIFY_H_
+
 /**
  * @file
  * @brief Prototype User API functions and types
@@ -64,42 +57,105 @@
 #  define ITT_PLATFORM_POSIX 2
 #endif /* ITT_PLATFORM_POSIX */
 
+#ifndef ITT_PLATFORM_MAC
+#  define ITT_PLATFORM_MAC 3
+#endif /* ITT_PLATFORM_MAC */
+
 #ifndef ITT_PLATFORM
 #  if ITT_OS==ITT_OS_WIN
 #    define ITT_PLATFORM ITT_PLATFORM_WIN
+#  elif ITT_OS==ITT_OS_MAC
+#    define ITT_PLATFORM ITT_PLATFORM_MAC
 #  else
 #    define ITT_PLATFORM ITT_PLATFORM_POSIX
-#  endif /* _WIN32 */
+#  endif
 #endif /* ITT_PLATFORM */
 
+#if defined(_UNICODE) && !defined(UNICODE)
+#define UNICODE
+#endif
+
 #include <stddef.h>
-#include <stdarg.h>
 #if ITT_PLATFORM==ITT_PLATFORM_WIN
 #include <tchar.h>
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#include <stdint.h>
+#if defined(UNICODE) || defined(_UNICODE)
+#include <wchar.h>
+#endif /* UNICODE || _UNICODE */
 #endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 
 #ifndef CDECL
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define CDECL __cdecl
-#  else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    define CDECL /* nothing */
+#  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#    if defined _M_IX86 || defined __i386__ 
+#      define CDECL __attribute__ ((cdecl))
+#    else  /* _M_IX86 || __i386__ */
+#      define CDECL /* actual only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* CDECL */
 
 #ifndef STDCALL
 #  if ITT_PLATFORM==ITT_PLATFORM_WIN
 #    define STDCALL __stdcall
-#  else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
-#    define STDCALL /* nothing */
+#  else /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+#    if defined _M_IX86 || defined __i386__
+#      define STDCALL __attribute__ ((stdcall)) 
+#    else  /* _M_IX86 || __i386__ */
+#      define STDCALL /* supported only on x86 platform */
+#    endif /* _M_IX86 || __i386__ */
 #  endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
 #endif /* STDCALL */
 
+#define ITTAPI    CDECL
+#define LIBITTAPI CDECL
+
+/* TODO: Temporary for compatibility! */
 #define ITTAPI_CALL    CDECL
-#define LIBITTAPI_CALL /* nothing */
+#define LIBITTAPI_CALL CDECL
+
+#if ITT_PLATFORM==ITT_PLATFORM_WIN
+/* use __forceinline (VC++ specific) */
+#define ITT_INLINE           __forceinline
+#define ITT_INLINE_ATTRIBUTE /* nothing */
+#else  /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+/*
+ * Generally, functions are not inlined unless optimization is specified.
+ * For functions declared inline, this attribute inlines the function even
+ * if no optimization level was specified.
+ */
+#ifdef __STRICT_ANSI__
+#define ITT_INLINE           static
+#else  /* __STRICT_ANSI__ */
+#define ITT_INLINE           static inline
+#endif /* __STRICT_ANSI__ */
+#define ITT_INLINE_ATTRIBUTE __attribute__ ((always_inline, unused))
+#endif /* ITT_PLATFORM==ITT_PLATFORM_WIN */
+/** @endcond */
 
+/** @cond exclude_from_documentation */
+/* Helper macro for joining tokens */
 #define ITT_JOIN_AUX(p,n) p##n
 #define ITT_JOIN(p,n)     ITT_JOIN_AUX(p,n)
 
+#ifdef ITT_MAJOR
+#undef ITT_MAJOR
+#endif
+#ifdef ITT_MINOR
+#undef ITT_MINOR
+#endif
+#define ITT_MAJOR     3
+#define ITT_MINOR     0
+
+/* Standard versioning of a token with major and minor version numbers */
+#define ITT_VERSIONIZE(x)    \
+    ITT_JOIN(x,              \
+    ITT_JOIN(_,              \
+    ITT_JOIN(ITT_MAJOR,      \
+    ITT_JOIN(_, ITT_MINOR))))
+
 #ifndef INTEL_ITTNOTIFY_PREFIX
 #  define INTEL_ITTNOTIFY_PREFIX __itt_
 #endif /* INTEL_ITTNOTIFY_PREFIX */
@@ -108,26 +164,41 @@
 #endif /* INTEL_ITTNOTIFY_POSTFIX */
 
 #define ITTNOTIFY_NAME_AUX(n) ITT_JOIN(INTEL_ITTNOTIFY_PREFIX,n)
-#define ITTNOTIFY_NAME(n)     ITTNOTIFY_NAME_AUX(ITT_JOIN(n,INTEL_ITTNOTIFY_POSTFIX))
+#define ITTNOTIFY_NAME(n)     ITT_VERSIONIZE(ITTNOTIFY_NAME_AUX(ITT_JOIN(n,INTEL_ITTNOTIFY_POSTFIX)))
 
 #define ITTNOTIFY_VOID(n) (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)
 #define ITTNOTIFY_DATA(n) (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)
 
+#define ITTNOTIFY_VOID_D0(n,d)       (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d)
+#define ITTNOTIFY_VOID_D1(n,d,x)     (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x)
+#define ITTNOTIFY_VOID_D2(n,d,x,y)   (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y)
+#define ITTNOTIFY_VOID_D3(n,d,x,y,z) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z)
+#define ITTNOTIFY_VOID_D4(n,d,x,y,z,a)     (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a)
+#define ITTNOTIFY_VOID_D5(n,d,x,y,z,a,b)   (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b)
+#define ITTNOTIFY_VOID_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? (void)0 : (!ITTNOTIFY_NAME(n)) ? (void)0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c)
+#define ITTNOTIFY_DATA_D0(n,d)       (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d)
+#define ITTNOTIFY_DATA_D1(n,d,x)     (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x)
+#define ITTNOTIFY_DATA_D2(n,d,x,y)   (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y)
+#define ITTNOTIFY_DATA_D3(n,d,x,y,z) (!(d)->flags) ?       0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z)
+#define ITTNOTIFY_DATA_D4(n,d,x,y,z,a)     (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a)
+#define ITTNOTIFY_DATA_D5(n,d,x,y,z,a,b)   (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b)
+#define ITTNOTIFY_DATA_D6(n,d,x,y,z,a,b,c) (!(d)->flags) ? 0 : (!ITTNOTIFY_NAME(n)) ?       0 : ITTNOTIFY_NAME(n)(d,x,y,z,a,b,c)
+
 #ifdef ITT_STUB
 #undef ITT_STUB
 #endif
 #ifdef ITT_STUBV
 #undef ITT_STUBV
 #endif
-#define ITT_STUBV(api,type,name,args,params)                      \
+#define ITT_STUBV(api,type,name,args)                             \
     typedef type (api* ITT_JOIN(ITTNOTIFY_NAME(name),_t)) args;   \
     extern ITT_JOIN(ITTNOTIFY_NAME(name),_t) ITTNOTIFY_NAME(name);
 #define ITT_STUB ITT_STUBV
+/** @endcond */
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
-/** @endcond */
 
 /**
  * @defgroup prototype Prototype API
@@ -135,14 +206,8 @@ extern "C" {
  * @}
  */
 
-/****************************************************************************
- * ??? group
- ****************************************************************************/
-
-/** @cond exclude_from_documentation */
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
-/** @endcond */
 
 #endif /* _PROTOTYPE_ITTNOTIFY_H_ */
diff --git a/src/tbb/win32-tbb-export.def b/src/tbb/win32-tbb-export.def
index 8426bf1..b5895ed 100644
--- a/src/tbb/win32-tbb-export.def
+++ b/src/tbb/win32-tbb-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
diff --git a/src/tbb/win32-tbb-export.lst b/src/tbb/win32-tbb-export.lst
index 7a00d08..18c2c9a 100644
--- a/src/tbb/win32-tbb-export.lst
+++ b/src/tbb/win32-tbb-export.lst
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 #include "tbb/tbb_config.h"
 
@@ -102,6 +94,7 @@ __TBB_SYMBOL( ?change_group at task@tbb@@QAEXAAVtask_group_context at 2@@Z )
 __TBB_SYMBOL( ?is_group_execution_cancelled at task_group_context@tbb@@QBE_NXZ )
 __TBB_SYMBOL( ?cancel_group_execution at task_group_context@tbb@@QAE_NXZ )
 __TBB_SYMBOL( ?reset at task_group_context@tbb@@QAEXXZ )
+__TBB_SYMBOL( ?capture_fp_settings at task_group_context@tbb@@QAEXXZ )
 __TBB_SYMBOL( ?init at task_group_context@tbb@@IAEXXZ )
 __TBB_SYMBOL( ?register_pending_exception at task_group_context@tbb@@QAEXXZ )
 __TBB_SYMBOL( ??1task_group_context at tbb@@QAE at XZ )
@@ -210,16 +203,14 @@ __TBB_SYMBOL( ?internal_release_writer at spin_rw_mutex_v3@tbb@@AAEXXZ )
 __TBB_SYMBOL( ?internal_try_acquire_reader at spin_rw_mutex_v3@tbb@@AAE_NXZ )
 __TBB_SYMBOL( ?internal_try_acquire_writer at spin_rw_mutex_v3@tbb@@AAE_NXZ )
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 // x86_rtm_rw_mutex.cpp
-__TBB_SYMBOL( ?internal_construct at x86_rtm_rw_mutex@internal at interface7@tbb@@AAEXXZ ) 
-__TBB_SYMBOL( ?release at scoped_lock@x86_rtm_rw_mutex at internal@interface7 at tbb@@QAEXXZ ) 
-__TBB_SYMBOL( ?internal_acquire_writer at x86_rtm_rw_mutex@internal at interface7@tbb@@AAEXAAVscoped_lock at 1234@_N at Z ) 
-__TBB_SYMBOL( ?internal_acquire_reader at x86_rtm_rw_mutex@internal at interface7@tbb@@AAEXAAVscoped_lock at 1234@_N at Z ) 
-__TBB_SYMBOL( ?internal_upgrade at x86_rtm_rw_mutex@internal at interface7@tbb@@AAE_NAAVscoped_lock at 1234@@Z ) 
-__TBB_SYMBOL( ?internal_downgrade at x86_rtm_rw_mutex@internal at interface7@tbb@@AAEXAAVscoped_lock at 1234@@Z ) 
-__TBB_SYMBOL( ?internal_try_acquire_writer at x86_rtm_rw_mutex@internal at interface7@tbb@@AAE_NAAVscoped_lock at 1234@@Z ) 
-#endif
+__TBB_SYMBOL( ?internal_construct at x86_rtm_rw_mutex@internal at interface8@tbb@@AAEXXZ ) 
+__TBB_SYMBOL( ?internal_release at x86_rtm_rw_mutex@internal at interface8@tbb@@AAEXAAVscoped_lock at 1234@@Z ) 
+__TBB_SYMBOL( ?internal_acquire_writer at x86_rtm_rw_mutex@internal at interface8@tbb@@AAEXAAVscoped_lock at 1234@_N at Z ) 
+__TBB_SYMBOL( ?internal_acquire_reader at x86_rtm_rw_mutex@internal at interface8@tbb@@AAEXAAVscoped_lock at 1234@_N at Z ) 
+__TBB_SYMBOL( ?internal_upgrade at x86_rtm_rw_mutex@internal at interface8@tbb@@AAE_NAAVscoped_lock at 1234@@Z ) 
+__TBB_SYMBOL( ?internal_downgrade at x86_rtm_rw_mutex@internal at interface8@tbb@@AAE_NAAVscoped_lock at 1234@@Z ) 
+__TBB_SYMBOL( ?internal_try_acquire_writer at x86_rtm_rw_mutex@internal at interface8@tbb@@AAE_NAAVscoped_lock at 1234@@Z ) 
 
 // spin_mutex.cpp
 __TBB_SYMBOL( ?internal_construct at spin_mutex@tbb@@QAEXXZ )
@@ -281,13 +272,16 @@ __TBB_SYMBOL( ?internal_pop at concurrent_queue_base_v3@internal at tbb@@IAEXPAX at Z )
 __TBB_SYMBOL( ?internal_pop_if_present at concurrent_queue_base_v3@internal at tbb@@IAE_NPAX at Z )
 __TBB_SYMBOL( ?internal_abort at concurrent_queue_base_v3@internal at tbb@@IAEXXZ )
 __TBB_SYMBOL( ?internal_push at concurrent_queue_base_v3@internal at tbb@@IAEXPBX at Z )
+__TBB_SYMBOL( ?internal_push_move at concurrent_queue_base_v8@internal at tbb@@IAEXPBX at Z )
 __TBB_SYMBOL( ?internal_push_if_not_full at concurrent_queue_base_v3@internal at tbb@@IAE_NPBX at Z )
+__TBB_SYMBOL( ?internal_push_move_if_not_full at concurrent_queue_base_v8@internal at tbb@@IAE_NPBX at Z )
 __TBB_SYMBOL( ?internal_size at concurrent_queue_base_v3@internal at tbb@@IBEHXZ )
 __TBB_SYMBOL( ?internal_empty at concurrent_queue_base_v3@internal at tbb@@IBE_NXZ )
 __TBB_SYMBOL( ?internal_set_capacity at concurrent_queue_base_v3@internal at tbb@@IAEXHI at Z )
 __TBB_SYMBOL( ?internal_finish_clear at concurrent_queue_base_v3@internal at tbb@@IAEXXZ )
 __TBB_SYMBOL( ?internal_throw_exception at concurrent_queue_base_v3@internal at tbb@@IBEXXZ )
 __TBB_SYMBOL( ?assign at concurrent_queue_base_v3@internal at tbb@@IAEXABV123@@Z )
+__TBB_SYMBOL( ?move_content at concurrent_queue_base_v8@internal at tbb@@IAEXAAV123@@Z )
 
 #if !TBB_NO_LEGACY
 // concurrent_vector.cpp v2
@@ -336,4 +330,9 @@ __TBB_SYMBOL( ?internal_condition_variable_notify_one at internal@interface5 at tbb@@Y
 __TBB_SYMBOL( ?internal_condition_variable_notify_all at internal@interface5 at tbb@@YAXAATcondvar_impl_t at 123@@Z )
 __TBB_SYMBOL( ?internal_destroy_condition_variable at internal@interface5 at tbb@@YAXAATcondvar_impl_t at 123@@Z )
 
+// global parameter
+__TBB_SYMBOL( ?active_value at global_control@interface9 at tbb@@CAIH at Z )
+__TBB_SYMBOL( ?internal_create at global_control@interface9 at tbb@@AAEXXZ )
+__TBB_SYMBOL( ?internal_destroy at global_control@interface9 at tbb@@AAEXXZ )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/win64-gcc-tbb-export.def b/src/tbb/win64-gcc-tbb-export.def
index 83f069a..8be9672 100644
--- a/src/tbb/win64-gcc-tbb-export.def
+++ b/src/tbb/win64-gcc-tbb-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 
diff --git a/src/tbb/win64-gcc-tbb-export.lst b/src/tbb/win64-gcc-tbb-export.lst
index ff698ef..d1a7ba2 100644
--- a/src/tbb/win64-gcc-tbb-export.lst
+++ b/src/tbb/win64-gcc-tbb-export.lst
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -94,6 +86,7 @@ __TBB_SYMBOL( _ZNK3tbb18task_group_context28is_group_execution_cancelledEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context22cancel_group_executionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context26register_pending_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context5resetEv )
+__TBB_SYMBOL( _ZN3tbb18task_group_context19capture_fp_settingsEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_context4initEv )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD1Ev )
 __TBB_SYMBOL( _ZN3tbb18task_group_contextD2Ev )
@@ -229,6 +222,15 @@ __TBB_SYMBOL( _ZN3tbb13spin_rw_mutex27internal_try_acquire_readerEPS0_ )
 __TBB_SYMBOL( _ZN3tbb13spin_rw_mutex27internal_try_acquire_writerEPS0_ )
 #endif
 
+// x86_rtm_rw_mutex.cpp
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_constructEv )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_writerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex27internal_try_acquire_writerERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex23internal_acquire_readerERNS2_11scoped_lockEb )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_releaseERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex16internal_upgradeERNS2_11scoped_lockE )
+__TBB_SYMBOL( _ZN3tbb10interface88internal16x86_rtm_rw_mutex18internal_downgradeERNS2_11scoped_lockE )
+
 /* spin_rw_mutex v3 */
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v318internal_constructEv )
 __TBB_SYMBOL( _ZN3tbb16spin_rw_mutex_v316internal_upgradeEv )
@@ -308,7 +310,9 @@ __TBB_SYMBOL( _ZTVN3tbb8internal24concurrent_queue_base_v3E )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_ )
 __TBB_SYMBOL( _ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v818internal_push_moveEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v830internal_push_move_if_not_fullEPKv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v314internal_abortEv )
@@ -318,6 +322,8 @@ __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v313internal_sizeEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv )
 __TBB_SYMBOL( _ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv )
 __TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_ )
+__TBB_SYMBOL( _ZN3tbb8internal24concurrent_queue_base_v812move_contentERS1_ )
+
 
 #if !TBB_NO_LEGACY
 /* concurrent_vector.cpp v2 */
@@ -366,4 +372,9 @@ __TBB_SYMBOL( _ZN3tbb10interface58internal38internal_condition_variable_notify_a
 __TBB_SYMBOL( _ZN3tbb10interface58internal38internal_condition_variable_notify_oneERNS1_14condvar_impl_tE )
 __TBB_SYMBOL( _ZN3tbb10interface58internal38internal_initialize_condition_variableERNS1_14condvar_impl_tE )
 
+// global parameter
+__TBB_SYMBOL( _ZN3tbb10interface914global_control12active_valueEi )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control15internal_createEv )
+__TBB_SYMBOL( _ZN3tbb10interface914global_control16internal_destroyEv )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/win64-tbb-export.def b/src/tbb/win64-tbb-export.def
index 1aaa303..094e337 100644
--- a/src/tbb/win64-tbb-export.def
+++ b/src/tbb/win64-tbb-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 ; This file is organized with a section for each .cpp file.
 ; Each of these sections is in alphabetical order.
diff --git a/src/tbb/win64-tbb-export.lst b/src/tbb/win64-tbb-export.lst
index b8755ae..7f68d0f 100644
--- a/src/tbb/win64-tbb-export.lst
+++ b/src/tbb/win64-tbb-export.lst
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 // This file is organized with a section for each .cpp file.
 // Each of these sections is in alphabetical order.
@@ -98,6 +90,7 @@ __TBB_SYMBOL( ?change_group at task@tbb@@QEAAXAEAVtask_group_context at 2@@Z )
 __TBB_SYMBOL( ?is_group_execution_cancelled at task_group_context@tbb@@QEBA_NXZ )
 __TBB_SYMBOL( ?cancel_group_execution at task_group_context@tbb@@QEAA_NXZ )
 __TBB_SYMBOL( ?reset at task_group_context@tbb@@QEAAXXZ )
+__TBB_SYMBOL( ?capture_fp_settings at task_group_context@tbb@@QEAAXXZ )
 __TBB_SYMBOL( ?init at task_group_context@tbb@@IEAAXXZ )
 __TBB_SYMBOL( ?register_pending_exception at task_group_context@tbb@@QEAAXXZ )
 __TBB_SYMBOL( ??1task_group_context at tbb@@QEAA at XZ )
@@ -206,16 +199,14 @@ __TBB_SYMBOL( ?internal_release_writer at spin_rw_mutex_v3@tbb@@AEAAXXZ )
 __TBB_SYMBOL( ?internal_try_acquire_reader at spin_rw_mutex_v3@tbb@@AEAA_NXZ )
 __TBB_SYMBOL( ?internal_try_acquire_writer at spin_rw_mutex_v3@tbb@@AEAA_NXZ )
 
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 // x86_rtm_rw_mutex.cpp
-__TBB_SYMBOL( ?internal_acquire_writer at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAAXAEAVscoped_lock at 1234@_N at Z )
-__TBB_SYMBOL( ?internal_acquire_reader at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAAXAEAVscoped_lock at 1234@_N at Z )
-__TBB_SYMBOL( ?internal_upgrade at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAA_NAEAVscoped_lock at 1234@@Z )
-__TBB_SYMBOL( ?internal_downgrade at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAAXAEAVscoped_lock at 1234@@Z )
-__TBB_SYMBOL( ?internal_try_acquire_writer at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAA_NAEAVscoped_lock at 1234@@Z )
-__TBB_SYMBOL( ?release at scoped_lock@x86_rtm_rw_mutex at internal@interface7 at tbb@@QEAAXXZ )
-__TBB_SYMBOL( ?internal_construct at x86_rtm_rw_mutex@internal at interface7@tbb@@AEAAXXZ )
-#endif
+__TBB_SYMBOL( ?internal_acquire_writer at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAAXAEAVscoped_lock at 1234@_N at Z )
+__TBB_SYMBOL( ?internal_acquire_reader at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAAXAEAVscoped_lock at 1234@_N at Z )
+__TBB_SYMBOL( ?internal_upgrade at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAA_NAEAVscoped_lock at 1234@@Z )
+__TBB_SYMBOL( ?internal_downgrade at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAA_NAEAVscoped_lock at 1234@@Z )
+__TBB_SYMBOL( ?internal_try_acquire_writer at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAA_NAEAVscoped_lock at 1234@@Z )
+__TBB_SYMBOL( ?internal_release at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAAXAEAVscoped_lock at 1234@@Z )
+__TBB_SYMBOL( ?internal_construct at x86_rtm_rw_mutex@internal at interface8@tbb@@AEAAXXZ )
 
 // spin_mutex.cpp
 __TBB_SYMBOL( ?internal_construct at spin_mutex@tbb@@QEAAXXZ )
@@ -274,7 +265,9 @@ __TBB_SYMBOL( ?advance at concurrent_queue_iterator_base_v3@internal at tbb@@IEAAXXZ )
 __TBB_SYMBOL( ??0concurrent_queue_base_v3 at internal@tbb@@IEAA at _K@Z )
 __TBB_SYMBOL( ??1concurrent_queue_base_v3 at internal@tbb@@MEAA at XZ )
 __TBB_SYMBOL( ?internal_push at concurrent_queue_base_v3@internal at tbb@@IEAAXPEBX at Z )
+__TBB_SYMBOL( ?internal_push_move at concurrent_queue_base_v8@internal at tbb@@IEAAXPEBX at Z )
 __TBB_SYMBOL( ?internal_push_if_not_full at concurrent_queue_base_v3@internal at tbb@@IEAA_NPEBX at Z )
+__TBB_SYMBOL( ?internal_push_move_if_not_full at concurrent_queue_base_v8@internal at tbb@@IEAA_NPEBX at Z )
 __TBB_SYMBOL( ?internal_pop at concurrent_queue_base_v3@internal at tbb@@IEAAXPEAX at Z )
 __TBB_SYMBOL( ?internal_pop_if_present at concurrent_queue_base_v3@internal at tbb@@IEAA_NPEAX at Z )
 __TBB_SYMBOL( ?internal_abort at concurrent_queue_base_v3@internal at tbb@@IEAAXXZ )
@@ -284,6 +277,7 @@ __TBB_SYMBOL( ?internal_finish_clear at concurrent_queue_base_v3@internal at tbb@@IEAA
 __TBB_SYMBOL( ?internal_set_capacity at concurrent_queue_base_v3@internal at tbb@@IEAAX_J_K at Z )
 __TBB_SYMBOL( ?internal_throw_exception at concurrent_queue_base_v3@internal at tbb@@IEBAXXZ )
 __TBB_SYMBOL( ?assign at concurrent_queue_base_v3@internal at tbb@@IEAAXAEBV123@@Z )
+__TBB_SYMBOL( ?move_content at concurrent_queue_base_v8@internal at tbb@@IEAAXAEAV123@@Z )
 
 #if !TBB_NO_LEGACY
 // concurrent_vector.cpp v2
@@ -332,4 +326,9 @@ __TBB_SYMBOL( ?internal_condition_variable_notify_one at internal@interface5 at tbb@@Y
 __TBB_SYMBOL( ?internal_condition_variable_notify_all at internal@interface5 at tbb@@YAXAEATcondvar_impl_t at 123@@Z )
 __TBB_SYMBOL( ?internal_destroy_condition_variable at internal@interface5 at tbb@@YAXAEATcondvar_impl_t at 123@@Z )
 
+// global parameter
+__TBB_SYMBOL( ?active_value at global_control@interface9 at tbb@@CA_KH at Z )
+__TBB_SYMBOL( ?internal_create at global_control@interface9 at tbb@@AEAAXXZ )
+__TBB_SYMBOL( ?internal_destroy at global_control@interface9 at tbb@@AEAAXXZ )
+
 #undef __TBB_SYMBOL
diff --git a/src/tbb/winrt-tbb-export.lst b/src/tbb/winrt-tbb-export.lst
index 15e93a6..9686446 100644
--- a/src/tbb/winrt-tbb-export.lst
+++ b/src/tbb/winrt-tbb-export.lst
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 #include "tbb/tbb_config.h"
 
@@ -82,6 +74,7 @@ __TBB_SYMBOL( ?change_group at task@tbb@@QAAXAAVtask_group_context at 2@@Z )
 __TBB_SYMBOL( ?is_group_execution_cancelled at task_group_context@tbb@@QBA_NXZ )
 __TBB_SYMBOL( ?cancel_group_execution at task_group_context@tbb@@QAA_NXZ )
 __TBB_SYMBOL( ?reset at task_group_context@tbb@@QAAXXZ )
+__TBB_SYMBOL( ?capture_fp_settings at task_group_context@tbb@@QAAXXZ )
 __TBB_SYMBOL( ?init at task_group_context@tbb@@IAAXXZ )
 __TBB_SYMBOL( ?register_pending_exception at task_group_context@tbb@@QAAXXZ )
 __TBB_SYMBOL( ??1task_group_context at tbb@@QAA at XZ )
@@ -243,13 +236,16 @@ __TBB_SYMBOL( ?internal_pop at concurrent_queue_base_v3@internal at tbb@@IAAXPAX at Z )
 __TBB_SYMBOL( ?internal_pop_if_present at concurrent_queue_base_v3@internal at tbb@@IAA_NPAX at Z )
 __TBB_SYMBOL( ?internal_abort at concurrent_queue_base_v3@internal at tbb@@IAAXXZ )
 __TBB_SYMBOL( ?internal_push at concurrent_queue_base_v3@internal at tbb@@IAAXPBX at Z )
+__TBB_SYMBOL( ?internal_push_move at concurrent_queue_base_v8@internal at tbb@@IAAXPBX at Z )
 __TBB_SYMBOL( ?internal_push_if_not_full at concurrent_queue_base_v3@internal at tbb@@IAA_NPBX at Z )
+__TBB_SYMBOL( ?internal_push_move_if_not_full at concurrent_queue_base_v8@internal at tbb@@IAA_NPBX at Z )
 __TBB_SYMBOL( ?internal_size at concurrent_queue_base_v3@internal at tbb@@IBAHXZ )
 __TBB_SYMBOL( ?internal_empty at concurrent_queue_base_v3@internal at tbb@@IBA_NXZ )
 __TBB_SYMBOL( ?internal_set_capacity at concurrent_queue_base_v3@internal at tbb@@IAAXHI at Z )
 __TBB_SYMBOL( ?internal_finish_clear at concurrent_queue_base_v3@internal at tbb@@IAAXXZ )
 __TBB_SYMBOL( ?internal_throw_exception at concurrent_queue_base_v3@internal at tbb@@IBAXXZ )
 __TBB_SYMBOL( ?assign at concurrent_queue_base_v3@internal at tbb@@IAAXABV123@@Z )
+__TBB_SYMBOL( ?move_content at concurrent_queue_base_v8@internal at tbb@@IAAXAAV123@@Z )
 
 #if !TBB_NO_LEGACY
 // concurrent_vector.cpp v2
diff --git a/src/tbb/x86_rtm_rw_mutex.cpp b/src/tbb/x86_rtm_rw_mutex.cpp
index f35452b..157cdfc 100644
--- a/src/tbb/x86_rtm_rw_mutex.cpp
+++ b/src/tbb/x86_rtm_rw_mutex.cpp
@@ -1,33 +1,24 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
 #if __TBB_TSX_AVAILABLE
 #include "tbb/spin_rw_mutex.h"
 #include "tbb/tbb_machine.h"
@@ -49,65 +40,63 @@
 
 namespace tbb {
 
-namespace interface7 {
+namespace interface8 {
 namespace internal {
 
 // abort code for mutexes that detect a conflict with another thread.
 // value is hexadecimal
-
-static const unsigned int speculation_transaction_aborted = 0x01;
-static const unsigned int speculation_can_retry           = 0x02;
-static const unsigned int speculation_memadd_conflict     = 0x04;
-static const unsigned int speculation_buffer_overflow     = 0x08;
-static const unsigned int speculation_breakpoint_hit      = 0x10;
-static const unsigned int speculation_nested_abort        = 0x20;
-static const unsigned int speculation_xabort_mask         = 0xFF000000;
-static const unsigned int speculation_xabort_shift        = 24;
-static const unsigned int speculation_retry               = speculation_transaction_aborted |
-                                                            speculation_can_retry |
-                                                            speculation_memadd_conflict;
+enum {
+    speculation_transaction_aborted = 0x01,
+    speculation_can_retry           = 0x02,
+    speculation_memadd_conflict     = 0x04,
+    speculation_buffer_overflow     = 0x08,
+    speculation_breakpoint_hit      = 0x10,
+    speculation_nested_abort        = 0x20,
+    speculation_xabort_mask         = 0xFF000000,
+    speculation_xabort_shift        = 24,
+    speculation_retry               = speculation_transaction_aborted
+                                      | speculation_can_retry
+                                      | speculation_memadd_conflict
+};
 
 // maximum number of times to retry
+// TODO: experiment on retry values.
 static const int retry_threshold_read = 10;
 static const int retry_threshold_write = 10;
 
 //! Release speculative mutex
-void x86_rtm_rw_mutex::scoped_lock::release() {
-    x86_rtm_rw_mutex* mutex = static_cast<x86_rtm_rw_mutex*>(my_scoped_lock.__internal_get_mutex());
-    switch(transaction_state) {
+void x86_rtm_rw_mutex::internal_release(x86_rtm_rw_mutex::scoped_lock& s) {
+    switch(s.transaction_state) {
     case RTM_transacting_writer:
     case RTM_transacting_reader:
         {
             __TBB_ASSERT(__TBB_machine_is_in_transaction(), "transaction_state && not speculating");
 #if __TBB_RW_MUTEX_DELAY_TEST
-            if(transaction_state == RTM_transacting_reader) {
-                if(mutex->w_flag) __TBB_machine_transaction_conflict_abort();
-            }
-            else {
-                if(mutex->state) __TBB_machine_transaction_conflict_abort();
+            if(s.transaction_state == RTM_transacting_reader) {
+                if(this->w_flag) __TBB_machine_transaction_conflict_abort();
+            } else {
+                if(this->state) __TBB_machine_transaction_conflict_abort();
             }
 #endif
             __TBB_machine_end_transaction();
-            my_scoped_lock.__internal_set_mutex(NULL);
+            s.my_scoped_lock.internal_set_mutex(NULL);
         }
         break;
     case RTM_real_reader:
-        __TBB_ASSERT(mutex, "mutex is unset");
-        __TBB_ASSERT(!mutex->w_flag, "w_flag set but read lock acquired");
-        my_scoped_lock.release();
+        __TBB_ASSERT(!this->w_flag, "w_flag set but read lock acquired");
+        s.my_scoped_lock.release();
         break;
     case RTM_real_writer:
-        __TBB_ASSERT(mutex, "mutex is unset");
-        __TBB_ASSERT(mutex->w_flag, "w_flag unset but write lock acquired");
-        mutex->w_flag = false;
-        my_scoped_lock.release();
+        __TBB_ASSERT(this->w_flag, "w_flag unset but write lock acquired");
+        this->w_flag = false;
+        s.my_scoped_lock.release();
         break;
     case RTM_not_in_mutex:
         __TBB_ASSERT(false, "RTM_not_in_mutex, but in release");
     default:
         __TBB_ASSERT(false, "invalid transaction_state");
     }
-    transaction_state = RTM_not_in_mutex;
+    s.transaction_state = RTM_not_in_mutex;
 }
 
 //! Acquire write lock on the given mutex.
@@ -136,7 +125,7 @@ void x86_rtm_rw_mutex::internal_acquire_writer(x86_rtm_rw_mutex::scoped_lock& s,
                 }
 #endif
                 s.transaction_state = RTM_transacting_writer;
-                s.my_scoped_lock.__internal_set_mutex(this);  // need mutex for release()
+                s.my_scoped_lock.internal_set_mutex(this);  // need mutex for release()
                 return;  // successfully started speculation
             }
             ++num_retries;
@@ -179,7 +168,7 @@ void x86_rtm_rw_mutex::internal_acquire_reader(x86_rtm_rw_mutex::scoped_lock& s,
                 }
 #endif
                 s.transaction_state = RTM_transacting_reader;
-                s.my_scoped_lock.__internal_set_mutex(this);  // need mutex for release()
+                s.my_scoped_lock.internal_set_mutex(this);  // need mutex for release()
                 return;  // successfully started speculation
             }
             // fallback path
@@ -217,22 +206,20 @@ bool x86_rtm_rw_mutex::internal_upgrade(x86_rtm_rw_mutex::scoped_lock& s)
         // don't need to add w_flag to read_set even if __TBB_RW_MUTEX_DELAY_TEST
         // because the this pointer (the spin_rw_mutex) will be sufficient on release.
         return true;
-        break;
     default:
-        __TBB_ASSERT(false, "Invalid state on upgrade");
+        __TBB_ASSERT(false, "Invalid state for upgrade");
+        return false;
     }
-    return false;
 }
 
 //! Downgrade writer to a reader.
-void x86_rtm_rw_mutex::internal_downgrade(x86_rtm_rw_mutex::scoped_lock& s) {
+bool x86_rtm_rw_mutex::internal_downgrade(x86_rtm_rw_mutex::scoped_lock& s) {
     switch(s.transaction_state) {
     case RTM_real_writer:
         s.transaction_state = RTM_real_reader;
         __TBB_ASSERT(w_flag, "Before downgrade_to_reader w_flag not true");
         w_flag = false;
-        s.my_scoped_lock.downgrade_to_reader();
-        break;
+        return s.my_scoped_lock.downgrade_to_reader();
     case RTM_transacting_writer:
 #if __TBB_RW_MUTEX_DELAY_TEST
         if(this->state) {  // a reader or writer has acquired mutex for real.
@@ -240,9 +227,10 @@ void x86_rtm_rw_mutex::internal_downgrade(x86_rtm_rw_mutex::scoped_lock& s) {
         }
 #endif
         s.transaction_state = RTM_transacting_reader;
-        break;
+        return true;
     default:
         __TBB_ASSERT(false, "Invalid state for downgrade");
+        return false;
     }
 }
 
@@ -274,8 +262,7 @@ void x86_rtm_rw_mutex::internal_construct() {
 }
 
 } // namespace internal
-} // namespace interface7
+} // namespace interface8
 } // namespace tbb
 
 #endif /* __TBB_TSX_AVAILABLE */
-#endif // TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
diff --git a/src/tbb/xbox360-tbb-export.def b/src/tbb/xbox360-tbb-export.def
index 72fb5f4..a6914c7 100644
--- a/src/tbb/xbox360-tbb-export.def
+++ b/src/tbb/xbox360-tbb-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
diff --git a/src/tbbmalloc/Customize.h b/src/tbbmalloc/Customize.h
index 8b75480..b2f375c 100644
--- a/src/tbbmalloc/Customize.h
+++ b/src/tbbmalloc/Customize.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_malloc_Customize_H_
@@ -45,11 +37,13 @@
 #define MALLOC_ITT_SYNC_ACQUIRED(pointer) ITT_NOTIFY(sync_acquired, (pointer))
 #define MALLOC_ITT_SYNC_RELEASING(pointer) ITT_NOTIFY(sync_releasing, (pointer))
 #define MALLOC_ITT_SYNC_CANCEL(pointer) ITT_NOTIFY(sync_cancel, (pointer))
+#define MALLOC_ITT_FINI_ITTLIB()        ITT_FINI_ITTLIB()
 #else
 #define MALLOC_ITT_SYNC_PREPARE(pointer) ((void)0)
 #define MALLOC_ITT_SYNC_ACQUIRED(pointer) ((void)0)
 #define MALLOC_ITT_SYNC_RELEASING(pointer) ((void)0)
 #define MALLOC_ITT_SYNC_CANCEL(pointer) ((void)0)
+#define MALLOC_ITT_FINI_ITTLIB()        ((void)0)
 #endif
 
 //! Stripped down version of spin_mutex.
@@ -123,6 +117,13 @@ inline void SpinWaitWhileEq(const volatile intptr_t &location, const intptr_t va
     tbb::internal::spin_wait_while_eq(location, value);
 }
 
+class AtomicBackoff {
+    tbb::internal::atomic_backoff backoff;
+public:
+    AtomicBackoff() {}
+    void pause() { backoff.pause(); }
+};
+
 inline void SpinWaitUntilEq(const volatile intptr_t &location, const intptr_t value) {
     tbb::internal::spin_wait_until_eq(location, value);
 }
@@ -147,12 +148,15 @@ static inline bool isPowerOfTwoMultiple(uintptr_t arg, uintptr_t divisor) {
 
 #define USE_DEFAULT_MEMORY_MAPPING 1
 
-// To support malloc replacement with LD_PRELOAD
+// To support malloc replacement
 #include "proxy.h"
 
 #if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
 #define malloc_proxy __TBB_malloc_proxy
 extern "C" void * __TBB_malloc_proxy(size_t)  __attribute__ ((weak));
+#elif MALLOC_ZONE_OVERLOAD_ENABLED
+// as there is no significant overhead, always suppose that proxy can be present
+const bool malloc_proxy = true;
 #else
 const bool malloc_proxy = false;
 #endif
@@ -164,4 +168,64 @@ namespace internal {
 
 #define MALLOC_EXTRA_INITIALIZATION rml::internal::init_tbbmalloc()
 
+// Need these to work regardless of tools support.
+namespace tbb {
+    namespace internal {
+
+        enum notify_type {prepare=0, cancel, acquired, releasing};
+
+#if TBB_USE_THREADING_TOOLS
+        inline void call_itt_notify(notify_type t, void *ptr) {
+            switch ( t ) {
+            case prepare:
+                MALLOC_ITT_SYNC_PREPARE( ptr );
+                break;
+            case cancel:
+                MALLOC_ITT_SYNC_CANCEL( ptr );
+                break;
+            case acquired:
+                MALLOC_ITT_SYNC_ACQUIRED( ptr );
+                break;
+            case releasing:
+                MALLOC_ITT_SYNC_RELEASING( ptr );
+                break;
+            }
+        }
+#else
+        inline void call_itt_notify(notify_type /*t*/, void * /*ptr*/) {}
+#endif // TBB_USE_THREADING_TOOLS
+
+        template <typename T>
+        inline void itt_store_word_with_release(T& dst, T src) {
+#if TBB_USE_THREADING_TOOLS
+            call_itt_notify(releasing, &dst);
+#endif // TBB_USE_THREADING_TOOLS
+            FencedStore(*(intptr_t*)&dst, src); 
+        }
+
+        template <typename T>
+        inline T itt_load_word_with_acquire(T& src) {
+            T result = FencedLoad(*(intptr_t*)&src);
+#if TBB_USE_THREADING_TOOLS
+            call_itt_notify(acquired, &src);
+#endif // TBB_USE_THREADING_TOOLS
+            return result;
+
+        }
+    } // namespace internal
+} // namespace tbb
+
+#include "tbb/internal/_aggregator_impl.h"
+
+template <typename OperationType>
+struct MallocAggregator {
+    typedef tbb::internal::aggregator_generic<OperationType> type;
+};
+
+//! aggregated_operation base class
+template <typename Derived>
+struct MallocAggregatedOperation {
+    typedef tbb::internal::aggregated_operation<Derived> type;
+};
+
 #endif /* _TBB_malloc_Customize_H_ */
diff --git a/src/tbbmalloc/MapMemory.h b/src/tbbmalloc/MapMemory.h
index afc3ac0..23b3818 100644
--- a/src/tbbmalloc/MapMemory.h
+++ b/src/tbbmalloc/MapMemory.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _itt_shared_malloc_MapMemory_H
diff --git a/src/tbbmalloc/Statistics.h b/src/tbbmalloc/Statistics.h
index 23e131d..1a06ea7 100644
--- a/src/tbbmalloc/Statistics.h
+++ b/src/tbbmalloc/Statistics.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define MAX_THREADS 1024
@@ -56,7 +48,7 @@ enum common_counter_type {
 };
 
 #if COLLECT_STATISTICS
-/* Statistics reporting callback registred via a static object dtor 
+/* Statistics reporting callback registered via a static object dtor
    on Posix or DLL_PROCESS_DETACH on Windows.
  */
 
diff --git a/src/tbbmalloc/TypeDefinitions.h b/src/tbbmalloc/TypeDefinitions.h
index 8c90221..8f62552 100644
--- a/src/tbbmalloc/TypeDefinitions.h
+++ b/src/tbbmalloc/TypeDefinitions.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _itt_shared_malloc_TypeDefinitions_H_
@@ -65,47 +57,6 @@
 //! PROVIDE YOUR OWN Customize.h IF YOU FEEL NECESSARY
 #include "Customize.h"
 
-// Include files containing declarations of intptr_t and uintptr_t
-#include <stddef.h>  // size_t
-#if _MSC_VER
-typedef unsigned __int16 uint16_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
- #if !UINTPTR_MAX
-  #define UINTPTR_MAX SIZE_MAX
- #endif
-#else // _MSC_VER
-#include <stdint.h>
-#endif
-
-namespace rml {
-namespace internal {
-
-extern bool  original_malloc_found;
-extern void* (*original_malloc_ptr)(size_t);
-extern void  (*original_free_ptr)(void*);
-
-} } // namespaces
-
-/*
- * Functions to align an integer down or up to the given power of two,
- * and test for such an alignment, and for power of two.
- */
-template<typename T>
-static inline T alignDown(T arg, uintptr_t alignment) {
-    return T( (uintptr_t)arg                & ~(alignment-1));
-}
-template<typename T>
-static inline T alignUp  (T arg, uintptr_t alignment) {
-    return T(((uintptr_t)arg+(alignment-1)) & ~(alignment-1));
-    // /*is this better?*/ return (((uintptr_t)arg-1) | (alignment-1)) + 1;
-}
-template<typename T> // works for not power-of-2 alignments
-static inline T alignUpGeneric(T arg, uintptr_t alignment) {
-    if (size_t rem = arg % alignment) {
-        arg += alignment - rem;
-    }
-    return arg;
-}
+#include "shared_utils.h"
 
 #endif /* _itt_shared_malloc_TypeDefinitions_H_ */
diff --git a/src/tbbmalloc/backend.cpp b/src/tbbmalloc/backend.cpp
index bef70f7..d2bd7fb 100644
--- a/src/tbbmalloc/backend.cpp
+++ b/src/tbbmalloc/backend.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <string.h>   /* for memset */
@@ -37,7 +29,7 @@ namespace internal {
 
 /*
   syscall/malloc can set non-zero errno in case of failure,
-  but later allocator might be able to find memory to fulfil the request.
+  but later allocator might be able to find memory to fulfill the request.
   And we do not want changing of errno by successful scalable_malloc call.
   To support this, restore old errno in (get|free)RawMemory, and set errno
   in frontend just before returning to user code.
@@ -96,43 +88,60 @@ void HugePagesStatus::printStatus() {
 
 void HugePagesStatus::doPrintStatus(bool state, const char *stateName)
 {
-    fprintf(stderr, "TBBmalloc: huge pages\t%s%s\n",
-            state? "" : "not ", stateName);
+    // Under OS X* fprintf/snprintf acquires an internal lock, so when
+    // 1st allocation is done under the lock, we got a deadlock.
+    // Do not use fprintf etc during initialization.
+    fputs("TBBmalloc: huge pages\t", stderr);
+    if (!state)
+        fputs("not ", stderr);
+    fputs(stateName, stderr);
+    fputs("\n", stderr);
 }
 
-void *Backend::getRawMem(size_t &size) const
+void *Backend::allocRawMem(size_t &size) const
 {
+    void *res = NULL;
+    size_t allocSize;
+
     if (extMemPool->userPool()) {
-        size = alignUpGeneric(size, extMemPool->granularity);
-        return (*extMemPool->rawAlloc)(extMemPool->poolId, size);
-    }
-    // try to get them at 1st allocation and still use, if successful
-    // if 1st try is unsuccessful, no more trying
-    if (FencedLoad(hugePages.enabled)) {
-        size_t hugeSize = alignUpGeneric(size, hugePages.getSize());
-        void *res = getRawMemory(hugeSize, /*hugePages=*/true);
-        hugePages.registerAllocation(res);
-        if (res) {
-            size = hugeSize;
-            AtomicAdd((intptr_t&)totalMemSize, size);
-            return res;
+        // TODO: support for raw mem not aligned at sizeof(uintptr_t)
+        // memory from fixed pool is asked once and only once
+        if (!extMemPool->fixedPool || !rawMemReceived) {
+            allocSize = alignUpGeneric(size, extMemPool->granularity);
+            res = (*extMemPool->rawAlloc)(extMemPool->poolId, allocSize);
+            if (extMemPool->fixedPool)
+                const_cast<bool&>(rawMemReceived) = true;
+        }
+    } else {
+        // try to get them at 1st allocation and still use, if successful
+        // if 1st try is unsuccessful, no more trying
+        if (FencedLoad(hugePages.enabled)) {
+            allocSize = alignUpGeneric(size, hugePages.getSize());
+            res = getRawMemory(allocSize, /*hugePages=*/true);
+            hugePages.registerAllocation(res);
+        }
+
+        if ( !res ) {
+            allocSize = alignUpGeneric(size, extMemPool->granularity);
+            res = getRawMemory(allocSize, /*hugePages=*/false);
         }
     }
-    size_t granSize = alignUpGeneric(size, extMemPool->granularity);
-    if (void *res = getRawMemory(granSize, /*hugePages=*/false)) {
-        size = granSize;
+
+    if ( res ) {
+        size = allocSize;
         AtomicAdd((intptr_t&)totalMemSize, size);
-        return res;
     }
-    return NULL;
+
+    return res;
 }
 
 void Backend::freeRawMem(void *object, size_t size) const
 {
     AtomicAdd((intptr_t&)totalMemSize, -size);
-    if (extMemPool->userPool())
+    if (extMemPool->userPool()) {
+        MALLOC_ASSERT(!extMemPool->fixedPool, "No free for fixed-size pools.");
         (*extMemPool->rawFree)(extMemPool->poolId, object, size);
-    else {
+    } else {
         hugePages.registerReleasing(size);
         freeRawMemory(object, size);
     }
@@ -178,16 +187,17 @@ public:
         MALLOC_ASSERT(size > MAX_LOCKED_VAL, ASSERT_TEXT);
         FencedStore((intptr_t&)value, size);
     }
+    bool isLastRegionBlock() const { return value==LAST_REGION_BLOCK; }
     friend void Backend::IndexedBins::verify();
 };
 
 struct MemRegion {
-    MemRegion *next,    // keep all regions in any pool to release all them on
-              *prev;    // pool destroying, 2-linked list to release individual
-                        // regions.
-    size_t     allocSz, // got from poll callback
-               blockSz; // initial and maximal inner block size
-    bool       exact;   // region tageted to exact large object allocation
+    MemRegion *next,      // keep all regions in any pool to release all them on
+              *prev;      // pool destroying, 2-linked list to release individual
+                          // regions.
+    size_t     allocSz,   // got from poll callback
+               blockSz;   // initial and maximal inner block size
+    MemRegionType type;
 };
 
 // this data must be unmodified while block is in use, so separate it
@@ -223,6 +233,7 @@ public:
     void initHeader() { myL.initLocked(); leftL.initLocked(); }
     void setMeFree(size_t size) { myL.unlock(size); }
     size_t trySetMeUsed(GuardedSize::State s) { return myL.tryLock(s); }
+    bool isLastRegionBlock() const { return myL.isLastRegionBlock(); }
 
     void setLeftFree(size_t sz) { leftL.unlock(sz); }
     size_t trySetLeftUsed(GuardedSize::State s) { return leftL.tryLock(s); }
@@ -268,10 +279,57 @@ struct LastFreeBlock : public FreeBlock {
 
 const size_t FreeBlock::minBlockSize = sizeof(FreeBlock);
 
+inline bool BackendSync::waitTillBlockReleased(intptr_t startModifiedCnt)
+{
+    AtomicBackoff backoff;
+#if __TBB_MALLOC_BACKEND_STAT
+    class ITT_Guard {
+        void *ptr;
+    public:
+        ITT_Guard(void *p) : ptr(p) {
+            MALLOC_ITT_SYNC_PREPARE(ptr);
+        }
+        ~ITT_Guard() {
+            MALLOC_ITT_SYNC_ACQUIRED(ptr);
+        }
+    };
+    ITT_Guard ittGuard(&inFlyBlocks);
+#endif
+    for (intptr_t myBinsInFlyBlocks = FencedLoad(inFlyBlocks),
+             myCoalescQInFlyBlocks = backend->blocksInCoalescing(); ;
+         backoff.pause()) {
+        intptr_t currBinsInFlyBlocks = FencedLoad(inFlyBlocks),
+            currCoalescQInFlyBlocks = backend->blocksInCoalescing();
+        WhiteboxTestingYield();
+        // Stop waiting iff:
+
+        // 1) blocks were removed from processing, not added
+        if (myBinsInFlyBlocks > currBinsInFlyBlocks
+        // 2) released during delayed coalescing queue
+            || myCoalescQInFlyBlocks > currCoalescQInFlyBlocks)
+            break;
+        // 3) if there are blocks in coalescing, and no progress in its processing,
+        // try to scan coalescing queue and stop waiting, if changes were made
+        // (if there are no changes and in-fly blocks exist, we continue
+        //  waiting to not increase load on coalescQ)
+        if (currCoalescQInFlyBlocks > 0 && backend->scanCoalescQ(/*forceCoalescQDrop=*/false))
+            break;
+        // 4) when there are no blocks
+        if (!currBinsInFlyBlocks && !currCoalescQInFlyBlocks)
+            // re-scan make sense only if bins were modified since scanned
+            return startModifiedCnt != getNumOfMods();
+        myBinsInFlyBlocks = currBinsInFlyBlocks;
+        myCoalescQInFlyBlocks = currCoalescQInFlyBlocks;
+    }
+    return true;
+}
+
 void CoalRequestQ::putBlock(FreeBlock *fBlock)
 {
     MALLOC_ASSERT(fBlock->sizeTmp >= FreeBlock::minBlockSize, ASSERT_TEXT);
     fBlock->markUsed();
+    // the block is in the queue, do not forget that it's here
+    AtomicIncrement(inFlyBlocks);
 
     for (;;) {
         FreeBlock *myBlToFree = (FreeBlock*)FencedLoad((intptr_t&)blocksToFree);
@@ -303,6 +361,12 @@ FreeBlock *CoalRequestQ::getAll()
     }
 }
 
+inline void CoalRequestQ::blockWasProcessed()
+{
+    bkndSync->binsModified();
+    AtomicAdd(inFlyBlocks, -1);
+}
+
 // Try to get a block from a bin.
 // If the remaining free space would stay in the same bin,
 //     split the block without removing it.
@@ -344,7 +408,7 @@ try_next:
                 uintptr_t rightNew = (uintptr_t)newB + size;
                 uintptr_t rightCurr = (uintptr_t)curr + szBlock;
                 // appropriate size, and left and right split results
-                // are either big enough or non-exitent
+                // are either big enough or non-existent
                 if (rightNew <= rightCurr
                     && (newB==curr ||
                         (uintptr_t)newB-(uintptr_t)curr >= FreeBlock::minBlockSize)
@@ -410,7 +474,8 @@ try_next:
             curr = next;
         }
     }
-    return backend->coalescAndPutList(fBlockList, /*forceCoalescQDrop=*/true);
+    return backend->coalescAndPutList(fBlockList, /*forceCoalescQDrop=*/true,
+                                      /*reportBlocksProcessed=*/false);
 }
 
 void Backend::Bin::removeBlock(FreeBlock *fBlock)
@@ -545,7 +610,6 @@ FreeBlock *Backend::splitUnalignedBlock(FreeBlock *fBlock, int num, size_t size,
             coalescAndPut(splitB, splitSz);
         }
     }
-    bkndSync.blockReleased();
     FreeBlock::markBlocks(fBlock, num, size);
     return fBlock;
 }
@@ -571,7 +635,6 @@ FreeBlock *Backend::splitAlignedBlock(FreeBlock *fBlock, int num, size_t size,
         }
         coalescAndPut(newAlgnd, newSz);
     }
-    bkndSync.blockReleased();
     MALLOC_ASSERT(!needAlignedBlock || isAligned(fBlock, slabSize),
                   "Expect to get aligned block, if one was requested.");
     FreeBlock::markBlocks(fBlock, num, size);
@@ -590,66 +653,89 @@ inline bool Backend::MaxRequestComparator::operator()(size_t oldMaxReq,
     return requestSize > oldMaxReq && requestSize < backend->getMaxBinnedSize();
 }
 
-FreeBlock *Backend::askMemFromOS(size_t blockSize, intptr_t startModifiedCnt,
-                                 int *lockedBinsThreshold, int numOfLockedBins)
+// last chance to get memory
+FreeBlock *Backend::releaseMemInCaches(intptr_t startModifiedCnt,
+                                    int *lockedBinsThreshold, int numOfLockedBins)
 {
-    FreeBlock *block = (FreeBlock*)VALID_BLOCK_IN_BIN;
-
-    // Another thread is modifying backend while we can't get the block.
-    // Wait while it leaves and re-do the scan
-    // before trying other ways to extend the backend.
-    if (bkndSync.waitTillBlockReleased(startModifiedCnt)
-        // semaphore is protecting adding more more memory from OS
-        || memExtendingSema.wait())
+    // something released from caches
+    if (extMemPool->hardCachesCleanup()
+        // ..or can use blocks that are in processing now
+        || bkndSync.waitTillBlockReleased(startModifiedCnt))
         return (FreeBlock*)VALID_BLOCK_IN_BIN;
-
-    if (startModifiedCnt != bkndSync.getNumOfMods()) {
-        memExtendingSema.signal();
+    // OS can't give us more memory, but we have some in locked bins
+    if (*lockedBinsThreshold && numOfLockedBins) {
+        *lockedBinsThreshold = 0;
         return (FreeBlock*)VALID_BLOCK_IN_BIN;
     }
-    // To keep objects below maxBinnedSize, region must be larger then that.
-    // So trying to balance between too small regions (that leads to
-    // fragmentation) and too large ones (that leads to excessive address
-    // space consumption). If region is "quite large", allocate only one,
-    // to prevent fragmentation. It supposedly doesn't hurt performance,
-    // because the object requested by user is large.
+    return NULL; // nothing found, give up
+}
+
+FreeBlock *Backend::askMemFromOS(size_t blockSize, intptr_t startModifiedCnt,
+                                 int *lockedBinsThreshold, int numOfLockedBins,
+                                 bool *splittableRet)
+{
+    FreeBlock *block;
+    // The block sizes can be divided into 3 groups:
+    //   1. "quite small": popular object size, we are in bootstarp or something
+    //      like; request several regions.
+    //   2. "quite large": we want to have several such blocks in the region
+    //      but not want several pre-allocated regions.
+    //   3. "huge": exact fit, we allocate only one block and do not allow
+    //       any other allocations to placed in a region.
+    // Dividing the block sizes in these groups we are trying to balance between
+    // too small regions (that leads to fragmentation) and too large ones (that
+    // leads to excessive address space consumption). If a region is "too
+    // large", allocate only one, to prevent fragmentation. It supposedly
+    // doesn't hurt performance, because the object requested by user is large.
+    // Bounds for the groups are:
     const size_t maxBinned = getMaxBinnedSize();
-    const size_t regSz_sizeBased = blockSize>=maxBinned?
-        blockSize : alignUp(4*maxRequestedSize, 1024*1024);
-    if (blockSize == slabSize || blockSize == numOfSlabAllocOnMiss*slabSize
-        || regSz_sizeBased < maxBinned) {
-        // For this size of blocks, add NUM_OF_REG "advance" regions in bin,
-        // and return one as a result.
-        // TODO: add to bin first, because other threads can use them right away.
-        // This must be done carefully, because blocks in bins can be released
-        // in releaseCachesToLimit().
-        const unsigned NUM_OF_REG = 3;
-        block = addNewRegion(maxBinned, /*exact=*/false, /*addToBin=*/false);
-        if (block)
-            for (unsigned idx=0; idx<NUM_OF_REG; idx++)
-                if (! addNewRegion(maxBinned, /*exact=*/false, /*addToBin=*/true))
-                    break;
+    const size_t quiteSmall = maxBinned / 8;
+    const size_t quiteLarge = maxBinned;
+
+    if (blockSize >= quiteLarge) {
+        // Do not interact with other threads via semaphores, as for exact fit
+        // we can't share regions with them, memory requesting is individual.
+        block = addNewRegion(blockSize, MEMREG_ONE_BLOCK, /*addToBin=*/false);
+        if (!block)
+            return releaseMemInCaches(startModifiedCnt, lockedBinsThreshold, numOfLockedBins);
+        *splittableRet = false;
     } else {
-        // if huge pages enabled and blockSize > maxBinned, rest of space up to
-        // huge page alignment is unusable, because single user object sits
-        // in an region.
-        block = addNewRegion(regSz_sizeBased, /*exact=*/true, /*addToBin=*/false);
-    }
-    memExtendingSema.signal();
-
-    // no regions found, try to clean cache
-    if (!block || block == (FreeBlock*)VALID_BLOCK_IN_BIN) {
-            // something released from caches
-        if (extMemPool->hardCachesCleanup()
-            // ..or can use blocks that are in processing now
-            || bkndSync.waitTillBlockReleased(startModifiedCnt))
+        const size_t regSz_sizeBased = alignUp(4*maxRequestedSize, 1024*1024);
+        // Another thread is modifying backend while we can't get the block.
+        // Wait while it leaves and re-do the scan
+        // before trying other ways to extend the backend.
+        if (bkndSync.waitTillBlockReleased(startModifiedCnt)
+            // semaphore is protecting adding more more memory from OS
+            || memExtendingSema.wait())
             return (FreeBlock*)VALID_BLOCK_IN_BIN;
-        // OS can't give us more memory, but we have some in locked bins
-        if (*lockedBinsThreshold && numOfLockedBins) {
-            *lockedBinsThreshold = 0;
+
+        if (startModifiedCnt != bkndSync.getNumOfMods()) {
+            memExtendingSema.signal();
             return (FreeBlock*)VALID_BLOCK_IN_BIN;
         }
-        return NULL; // nothing found, give up
+
+        if ( blockSize < quiteSmall ) {
+            // For this size of blocks, add NUM_OF_REG "advance" regions in bin,
+            // and return one as a result.
+            // TODO: add to bin first, because other threads can use them right away.
+            // This must be done carefully, because blocks in bins can be released
+            // in releaseCachesToLimit().
+            const unsigned NUM_OF_REG = 3;
+            block = addNewRegion(regSz_sizeBased, MEMREG_FLEXIBLE_SIZE, /*addToBin=*/false);
+            if (block)
+                for (unsigned idx=0; idx<NUM_OF_REG; idx++)
+                    if (! addNewRegion(regSz_sizeBased, MEMREG_FLEXIBLE_SIZE, /*addToBin=*/true))
+                        break;
+        } else {
+            block = addNewRegion(regSz_sizeBased, MEMREG_SEVERAL_BLOCKS, /*addToBin=*/false);
+        }
+        memExtendingSema.signal();
+
+        // no regions found, try to clean cache
+        if (!block || block == (FreeBlock*)VALID_BLOCK_IN_BIN)
+            return releaseMemInCaches(startModifiedCnt, lockedBinsThreshold, numOfLockedBins);
+        // Since a region can hold more than one block it can be splitted.
+        *splittableRet = true;
     }
     // after asking memory from OS, release caches if we above the memory limits
     releaseCachesToLimit();
@@ -711,6 +797,7 @@ FreeBlock *Backend::genericGetBlock(int num, size_t size, bool needAlignedBlock)
     AtomicUpdate(maxRequestedSize, totalReqSize, MaxRequestComparator(this));
     scanCoalescQ(/*forceCoalescQDrop=*/false);
 
+    bool splittable = true;
     for (;;) {
         const intptr_t startModifiedCnt = bkndSync.getNumOfMods();
         int numOfLockedBins;
@@ -747,7 +834,7 @@ FreeBlock *Backend::genericGetBlock(int num, size_t size, bool needAlignedBlock)
             // only remaining possibility is to ask for more memory
             block =
                 askMemFromOS(totalReqSize, startModifiedCnt, &lockedBinsThreshold,
-                             numOfLockedBins);
+                             numOfLockedBins, &splittable);
             if (!block)
                 return NULL;
             if (block != (FreeBlock*)VALID_BLOCK_IN_BIN) {
@@ -759,10 +846,14 @@ FreeBlock *Backend::genericGetBlock(int num, size_t size, bool needAlignedBlock)
             block = NULL;
         }
     }
-    if (block)
+    MALLOC_ASSERT(block, ASSERT_TEXT);
+    if (splittable)
         block = toAlignedBin(block, block->sizeTmp)?
             splitAlignedBlock(block, num, size, needAlignedBlock) :
             splitUnalignedBlock(block, num, size, needAlignedBlock);
+    // matched blockConsumed() from startUseBlock()
+    bkndSync.blockReleased();
+
     return block;
 }
 
@@ -772,7 +863,7 @@ LargeMemoryBlock *Backend::getLargeBlock(size_t size)
         (LargeMemoryBlock*)genericGetBlock(1, size, /*needAlignedRes=*/false);
     if (lmb) {
         lmb->unalignedSize = size;
-        if (extMemPool->mustBeAddedToGlobalLargeBlockList())
+        if (extMemPool->userPool())
             extMemPool->lmbList.add(lmb);
     }
     return lmb;
@@ -839,7 +930,7 @@ void AllLargeBlocksList::remove(LargeMemoryBlock *lmb)
 
 void Backend::putLargeBlock(LargeMemoryBlock *lmb)
 {
-    if (extMemPool->mustBeAddedToGlobalLargeBlockList())
+    if (extMemPool->userPool())
         extMemPool->lmbList.remove(lmb);
     genericPutBlock((FreeBlock *)lmb, lmb->unalignedSize);
 }
@@ -851,17 +942,76 @@ void Backend::returnLargeObject(LargeMemoryBlock *lmb)
     STAT_increment(getThreadId(), ThreadCommonCounters, freeLargeObj);
 }
 
-void Backend::releaseRegion(MemRegion *memRegion)
+#if BACKEND_HAS_MREMAP
+void *Backend::remap(void *ptr, size_t oldSize, size_t newSize, size_t alignment)
 {
-    {
-        MallocMutex::scoped_lock lock(regionListLock);
-        if (regionList == memRegion)
-            regionList = memRegion->next;
-        if (memRegion->next)
-            memRegion->next->prev = memRegion->prev;
-        if (memRegion->prev)
-            memRegion->prev->next = memRegion->next;
+    // no remap for user pools and for object too small that living in bins
+    if (inUserPool() || min(oldSize, newSize)<maxBinned_SmallPage
+        // during remap, can't guarantee alignment more strict than current or
+        // more strict than page alignment
+        || !isAligned(ptr, alignment) || alignment>extMemPool->granularity)
+        return NULL;
+    const LargeMemoryBlock* lmbOld = ((LargeObjectHdr *)ptr - 1)->memoryBlock;
+    FreeBlock *oldFBlock = (FreeBlock *)lmbOld;
+    FreeBlock *right = oldFBlock->rightNeig(lmbOld->unalignedSize);
+    // in every region only one block can have LAST_REGION_BLOCK on right,
+    // so don't need no synchronization
+    if (!right->isLastRegionBlock())
+        return NULL;
+
+    MemRegion *oldRegion = static_cast<LastFreeBlock*>(right)->memRegion;
+    MALLOC_ASSERT( oldRegion < ptr, ASSERT_TEXT );
+    if (oldRegion->type != MEMREG_ONE_BLOCK)
+        return NULL;  // we are not single in the region
+    const size_t userOffset = (uintptr_t)ptr - (uintptr_t)oldRegion;
+    const size_t requestSize =
+        alignUp(userOffset + newSize + sizeof(LastFreeBlock), extMemPool->granularity);
+    if (requestSize < newSize) // is wrapped around?
+        return NULL;
+    regionList.remove(oldRegion);
+
+    void *ret = mremap(oldRegion, oldRegion->allocSz, requestSize, MREMAP_MAYMOVE);
+    if (MAP_FAILED == ret) { // can't remap, revert and leave
+        regionList.add(oldRegion);
+        return NULL;
     }
+    MemRegion *region = (MemRegion*)ret;
+    MALLOC_ASSERT(region->type == MEMREG_ONE_BLOCK, ASSERT_TEXT);
+    region->allocSz = requestSize;
+
+    FreeBlock *fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion),
+                                             largeObjectAlignment);
+    // put LastFreeBlock at the very end of region
+    const uintptr_t fBlockEnd = (uintptr_t)region + requestSize - sizeof(LastFreeBlock);
+    region->blockSz = fBlockEnd - (uintptr_t)fBlock;
+
+    regionList.add(region);
+    startUseBlock(region, fBlock, /*addToBin=*/false);
+    MALLOC_ASSERT(fBlock->sizeTmp == region->blockSz, ASSERT_TEXT);
+    // matched blockConsumed() in startUseBlock().
+    // TODO: get rid of useless pair blockConsumed()/blockReleased()
+    bkndSync.blockReleased();
+
+    // object must start at same offest from region's start
+    void *object = (void*)((uintptr_t)region + userOffset);
+    MALLOC_ASSERT(isAligned(object, alignment), ASSERT_TEXT);
+    LargeObjectHdr *header = (LargeObjectHdr*)object - 1;
+    setBackRef(header->backRefIdx, header);
+
+    LargeMemoryBlock *lmb = (LargeMemoryBlock*)fBlock;
+    lmb->unalignedSize = region->blockSz;
+    lmb->objectSize = newSize;
+    lmb->backRefIdx = header->backRefIdx;
+    header->memoryBlock = lmb;
+    MALLOC_ASSERT((uintptr_t)lmb + lmb->unalignedSize >=
+                  (uintptr_t)object + lmb->objectSize, "An object must fit to the block.");
+    return object;
+}
+#endif /* BACKEND_HAS_MREMAP */
+
+void Backend::releaseRegion(MemRegion *memRegion)
+{
+    regionList.remove(memRegion);
     freeRawMem(memRegion, memRegion->allocSz);
 }
 
@@ -875,7 +1025,7 @@ FreeBlock *Backend::doCoalesc(FreeBlock *fBlock, MemRegion **mRegion)
     fBlock->markCoalescing(resSize);
     resBlock->blockInBin = false;
 
-    // coalesing with left neighbor
+    // coalescing with left neighbor
     size_t leftSz = fBlock->trySetLeftUsed(GuardedSize::COAL_BLOCK);
     if (leftSz != GuardedSize::LOCKED) {
         if (leftSz == GuardedSize::COAL_BLOCK) {
@@ -897,7 +1047,7 @@ FreeBlock *Backend::doCoalesc(FreeBlock *fBlock, MemRegion **mRegion)
             }
         }
     }
-    // coalesing with right neighbor
+    // coalescing with right neighbor
     FreeBlock *right = fBlock->rightNeig(fBlock->sizeTmp);
     size_t rightSz = right->trySetMeUsed(GuardedSize::COAL_BLOCK);
     if (rightSz != GuardedSize::LOCKED) {
@@ -952,14 +1102,18 @@ FreeBlock *Backend::doCoalesc(FreeBlock *fBlock, MemRegion **mRegion)
     return resBlock;
 }
 
-bool Backend::coalescAndPutList(FreeBlock *list, bool forceCoalescQDrop)
+bool Backend::coalescAndPutList(FreeBlock *list, bool forceCoalescQDrop,
+                                bool reportBlocksProcessed)
 {
     bool regionReleased = false;
-    FreeBlock *helper;
-    MemRegion *memRegion;
 
-    for (;list; list = helper) {
+    for (FreeBlock *helper; list;
+         list = helper,
+             // matches block enqueue in CoalRequestQ::putBlock()
+             reportBlocksProcessed? coalescQ.blockWasProcessed() : (void)0) {
+        MemRegion *memRegion;
         bool addToTail = false;
+
         helper = list->nextToFree;
         FreeBlock *toRet = doCoalesc(list, &memRegion);
         if (!toRet)
@@ -1029,7 +1183,7 @@ void Backend::coalescAndPut(FreeBlock *fBlock, size_t blockSz)
     fBlock->sizeTmp = blockSz;
     fBlock->nextToFree = NULL;
 
-    coalescAndPutList(fBlock, /*forceCoalescQDrop=*/false);
+    coalescAndPutList(fBlock, /*forceCoalescQDrop=*/false, /*reportBlocksProcessed=*/false);
 }
 
 bool Backend::scanCoalescQ(bool forceCoalescQDrop)
@@ -1037,7 +1191,12 @@ bool Backend::scanCoalescQ(bool forceCoalescQDrop)
     FreeBlock *currCoalescList = coalescQ.getAll();
 
     if (currCoalescList)
-        coalescAndPutList(currCoalescList, forceCoalescQDrop);
+        // reportBlocksProcessed=true informs that the blocks leave coalescQ,
+        // matches blockConsumed() from CoalRequestQ::putBlock()
+        coalescAndPutList(currCoalescList, forceCoalescQDrop,
+                          /*reportBlocksProcessed=*/true);
+    // returns status of coalescQ.getAll(), as an indication of possibe changes in backend
+    // TODO: coalescAndPutList() may report is some new free blocks became available or not
     return currCoalescList;
 }
 
@@ -1048,14 +1207,19 @@ FreeBlock *Backend::findBlockInRegion(MemRegion *region, size_t exactBlockSize)
     uintptr_t fBlockEnd,
         lastFreeBlock = (uintptr_t)region + region->allocSz - sizeof(LastFreeBlock);
 
-    if (region->exact) {
+    MALLOC_STATIC_ASSERT(sizeof(LastFreeBlock) % sizeof(uintptr_t) == 0,
+        "Atomic applied on LastFreeBlock, and we put it at the end of region, that"
+        " is uintptr_t-aligned, so no unaligned atomic opeartions are possible.");
+     // right bound is slab-aligned, keep LastFreeBlock after it
+    if (region->type==MEMREG_FLEXIBLE_SIZE) {
+        fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion),
+                                      sizeof(uintptr_t));
+        fBlockEnd = alignDown(lastFreeBlock, slabSize);
+    } else {
         fBlock = (FreeBlock *)alignUp((uintptr_t)region + sizeof(MemRegion),
                                       largeObjectAlignment);
         fBlockEnd = (uintptr_t)fBlock + exactBlockSize;
         MALLOC_ASSERT(fBlockEnd <= lastFreeBlock, ASSERT_TEXT);
-    } else { // right bound is slab-aligned, keep LastFreeBlock after it
-        fBlock = (FreeBlock *)((uintptr_t)region + sizeof(MemRegion));
-        fBlockEnd = alignDown(lastFreeBlock, slabSize);
     }
     if (fBlockEnd <= (uintptr_t)fBlock)
         return NULL; // allocSz is too small
@@ -1079,6 +1243,8 @@ void Backend::startUseBlock(MemRegion *region, FreeBlock *fBlock, bool addToBin)
     fBlock->setMeFree(blockSz);
 
     LastFreeBlock *lastBl = static_cast<LastFreeBlock*>(fBlock->rightNeig(blockSz));
+    // to not get unaligned atomics during LastFreeBlock access
+    MALLOC_ASSERT(isAligned(lastBl, sizeof(uintptr_t)), NULL);
     lastBl->initHeader();
     lastBl->setMeFree(GuardedSize::LAST_REGION_BLOCK);
     lastBl->setLeftFree(blockSz);
@@ -1089,42 +1255,66 @@ void Backend::startUseBlock(MemRegion *region, FreeBlock *fBlock, bool addToBin)
         unsigned targetBin = sizeToBin(blockSz);
         // during adding advance regions, register bin for a largest block in region
         advRegBins.registerBin(targetBin);
-        if (!region->exact && toAlignedBin(fBlock, blockSz)) {
+        if (region->type!=MEMREG_ONE_BLOCK && toAlignedBin(fBlock, blockSz)) {
             freeAlignedBins.addBlock(targetBin, fBlock, blockSz, /*addToTail=*/false);
         } else {
             freeLargeBins.addBlock(targetBin, fBlock, blockSz, /*addToTail=*/false);
         }
     } else {
-        // to match with blockReleased() in split(Unaligned|Aligned)Block
+        // to match with blockReleased() in genericGetBlock
         bkndSync.blockConsumed();
         fBlock->sizeTmp = fBlock->tryLockBlock();
+        MALLOC_ASSERT(fBlock->sizeTmp >= FreeBlock::minBlockSize,
+                      "Locking must be successful");
     }
 }
 
-FreeBlock *Backend::addNewRegion(size_t size, bool exact, bool addToBin)
+void MemRegionList::add(MemRegion *r)
 {
-    // to guarantee that header is not overwritten in used blocks
-    MALLOC_ASSERT(sizeof(BlockMutexes) <= sizeof(BlockI), ASSERT_TEXT);
-    // to guarantee that block length is not conflicting with
-    // special values of GuardedSize
-    MALLOC_ASSERT(FreeBlock::minBlockSize > GuardedSize::MAX_SPEC_VAL, ASSERT_TEXT);
-    // "exact" means that not less than rawSize for block inside the region.
-    // Reserve space for region header, worst case alignment
-    // and last block mark.
-    size_t rawSize = exact?
+    r->prev = NULL;
+    MallocMutex::scoped_lock lock(regionListLock);
+    r->next = head;
+    head = r;
+    if (head->next)
+        head->next->prev = head;
+}
+
+void MemRegionList::remove(MemRegion *r)
+{
+    MallocMutex::scoped_lock lock(regionListLock);
+    if (head == r)
+        head = head->next;
+    if (r->next)
+        r->next->prev = r->prev;
+    if (r->prev)
+        r->prev->next = r->next;
+}
+
+FreeBlock *Backend::addNewRegion(size_t size, MemRegionType memRegType, bool addToBin)
+{
+    MALLOC_STATIC_ASSERT(sizeof(BlockMutexes) <= sizeof(BlockI),
+                 "Header must be not overwritten in used blocks");
+    MALLOC_ASSERT(FreeBlock::minBlockSize > GuardedSize::MAX_SPEC_VAL,
+          "Block length must not conflict with special values of GuardedSize");
+    // If the region is not "flexible size" we should reserve some space for
+    // a region header, the worst case alignment and the last block mark.
+    const size_t requestSize = memRegType == MEMREG_FLEXIBLE_SIZE ? size :
         size + sizeof(MemRegion) + largeObjectAlignment
-             +  FreeBlock::minBlockSize + sizeof(LastFreeBlock)
-        : size;
+             +  FreeBlock::minBlockSize + sizeof(LastFreeBlock);
 
-    MemRegion *region = (MemRegion*)getRawMem(rawSize);
-    if (!region) return 0;
+    size_t rawSize = requestSize;
+    MemRegion *region = (MemRegion*)allocRawMem(rawSize);
+    if (!region) {
+        MALLOC_ASSERT(rawSize==requestSize, "getRawMem has not allocated memory but changed the allocated size.");
+        return NULL;
+    }
     if (rawSize < sizeof(MemRegion)) {
         if (!extMemPool->fixedPool)
             freeRawMem(region, rawSize);
         return NULL;
     }
 
-    region->exact = exact;
+    region->type = memRegType;
     region->allocSz = rawSize;
     FreeBlock *fBlock = findBlockInRegion(region, size);
     if (!fBlock) {
@@ -1132,15 +1322,7 @@ FreeBlock *Backend::addNewRegion(size_t size, bool exact, bool addToBin)
             freeRawMem(region, rawSize);
         return NULL;
     }
-    // adding to global list of all regions
-    {
-        region->prev = NULL;
-        MallocMutex::scoped_lock lock(regionListLock);
-        region->next = regionList;
-        regionList = region;
-        if (regionList->next)
-            regionList->next->prev = regionList;
-    }
+    regionList.add(region);
     startUseBlock(region, fBlock, addToBin);
     bkndSync.binsModified();
     return addToBin? (FreeBlock*)VALID_BLOCK_IN_BIN : fBlock;
@@ -1149,13 +1331,13 @@ FreeBlock *Backend::addNewRegion(size_t size, bool exact, bool addToBin)
 bool Backend::bootstrap(ExtMemoryPool *extMemoryPool)
 {
     extMemPool = extMemoryPool;
-    return addNewRegion(2*1024*1024, /*exact=*/false, /*addToBin=*/true);
+    coalescQ.init(&bkndSync);
+    bkndSync.init(this);
+    return addNewRegion(2*1024*1024, MEMREG_FLEXIBLE_SIZE, /*addToBin=*/true);
 }
 
 void Backend::reset()
 {
-    MemRegion *curr;
-
     MALLOC_ASSERT(extMemPool->userPool(), "Only user pool can be reset.");
     // no active threads are allowed in backend while reset() called
     verify();
@@ -1164,7 +1346,7 @@ void Backend::reset()
     freeAlignedBins.reset();
     advRegBins.reset();
 
-    for (curr = regionList; curr; curr = curr->next) {
+    for (MemRegion *curr = regionList.head; curr; curr = curr->next) {
         FreeBlock *fBlock = findBlockInRegion(curr, curr->blockSz);
         MALLOC_ASSERT(fBlock, "A memory region unexpectedly got smaller");
         startUseBlock(curr, fBlock, /*addToBin=*/true);
@@ -1175,19 +1357,19 @@ bool Backend::destroy()
 {
     // no active threads are allowed in backend while destroy() called
     verify();
-
-    freeLargeBins.reset();
-    freeAlignedBins.reset();
-
-    while (regionList) {
-        MemRegion *helper = regionList->next;
+    if (!inUserPool()) {
+        freeLargeBins.reset();
+        freeAlignedBins.reset();
+    }
+    while (regionList.head) {
+        MemRegion *helper = regionList.head->next;
         if (inUserPool())
-            (*extMemPool->rawFree)(extMemPool->poolId, regionList,
-                                   regionList->allocSz);
+            (*extMemPool->rawFree)(extMemPool->poolId, regionList.head,
+                                   regionList.head->allocSz);
         else {
-            freeRawMemory(regionList, regionList->allocSz);
+            freeRawMemory(regionList.head, regionList.head->allocSz);
         }
-        regionList = helper;
+        regionList.head = helper;
     }
     return true;
 }
diff --git a/src/tbbmalloc/backref.cpp b/src/tbbmalloc/backref.cpp
index ac5dae5..a464778 100644
--- a/src/tbbmalloc/backref.cpp
+++ b/src/tbbmalloc/backref.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbbmalloc_internal.h"
diff --git a/src/tbbmalloc/frontend.cpp b/src/tbbmalloc/frontend.cpp
index 8e514c5..9838cd3 100644
--- a/src/tbbmalloc/frontend.cpp
+++ b/src/tbbmalloc/frontend.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 
@@ -45,7 +37,7 @@
     #if __sun || __SUNPRO_CC
     #define __asm__ asm
     #endif
-
+    #include <unistd.h> // sysconf(_SC_PAGESIZE)
 #elif USE_WINTHREAD
     #define GetMyTID() GetCurrentThreadId()
 #if __TBB_WIN8UI_SUPPORT
@@ -109,7 +101,7 @@ const int blockHeaderAlignment = estimatedCacheLineSize;
 /*
  * The malloc routines themselves need to be able to occasionally malloc some space,
  * in order to set up the structures used by the thread local structures. This
- * routine preforms that fuctions.
+ * routine performs that functions.
  */
 class BootStrapBlocks {
     MallocMutex bootStrapLock;
@@ -339,6 +331,7 @@ const size_t MemoryPool::defaultGranularity;
 MallocMutex  MemoryPool::memPoolListLock;
 // TODO: move huge page status to default pool, because that's its states
 HugePagesStatus hugePages;
+static bool usedBySrcIncluded;
 
 // Slab block is 16KB-aligned. To prevent false sharing, separate locally-accessed
 // fields and fields commonly accessed by not owner threads.
@@ -402,24 +395,45 @@ public:
     unsigned int getSize() const {
         MALLOC_ASSERT(isStartupAllocObject() || objectSize<minLargeObjectSize,
                       "Invalid object size");
-        return objectSize;
+        return isStartupAllocObject()? 0 : objectSize;
     }
     const BackRefIdx *getBackRefIdx() const { return &backRefIdx; }
     inline TLSData *ownBlock() const;
     bool isStartupAllocObject() const { return objectSize == startupAllocObjSizeMark; }
-    inline FreeObject *findObjectToFree(void *object) const;
-    bool checkFreePrecond(void *object) const {
-        if (allocatedCount>0) {
-            if (startupAllocObjSizeMark == objectSize) // startup block
-                return object<=bumpPtr;
-            else
-                return allocatedCount <= (slabSize-sizeof(Block))/objectSize
-                       && (!bumpPtr || object>bumpPtr);
+    inline FreeObject *findObjectToFree(const void *object) const;
+    void checkFreePrecond(const void *object) const {
+#if MALLOC_DEBUG
+        const char *msg = "Possible double free or heap corruption.";
+        // small objects are always at least sizeof(size_t) Byte aligned,
+        // try to check this before this dereference as for invalid objects
+        // this may be unreadable
+        MALLOC_ASSERT(isAligned(object, sizeof(size_t)), "Try to free invalid small object");
+        // releasing to free slab
+        MALLOC_ASSERT(allocatedCount>0, msg);
+        // must not point to slab's header
+        MALLOC_ASSERT((uintptr_t)object - (uintptr_t)this >= sizeof(Block), msg);
+        if (startupAllocObjSizeMark == objectSize) // startup block
+            MALLOC_ASSERT(object<=bumpPtr, msg);
+        else {
+            // non-startup objects are 8 Byte aligned
+            MALLOC_ASSERT(isAligned(object, 8), "Try to free invalid small object");
+            MALLOC_ASSERT(allocatedCount <= (slabSize-sizeof(Block))/objectSize
+                          && (!bumpPtr || object>bumpPtr), msg);
+            FreeObject *toFree = findObjectToFree(object);
+            // check against head of freeList, as this is mostly
+            // expected after double free
+            MALLOC_ASSERT(findObjectToFree(object) != freeList, msg);
+            // check against head of publicFreeList, to detect double free
+            // involiving foreign thread
+            MALLOC_ASSERT(findObjectToFree(object) != publicFreeList, msg);
         }
-        return false;
+#else
+        suppress_unused_warning(object);
+#endif
     }
     const BackRefIdx *getBackRef() const { return &backRefIdx; }
     void initEmptyBlock(TLSData *tls, size_t size);
+    size_t findObjectSize(void *object) const;
 
 protected:
     void cleanBlockHeader();
@@ -525,16 +539,6 @@ const uint32_t numBlockBins = minFittingIndex+numFittingBins;
 const uint32_t minLargeObjectSize = fittingSize5 + 1;
 
 /*
- * Default granularity of memory pools
- */
-
-#if USE_WINTHREAD
-const size_t scalableMallocPoolGranularity = 64*1024; // for VirtualAlloc use
-#else
-const size_t scalableMallocPoolGranularity = 4*1024;  // page size, for mmap use
-#endif
-
-/*
  * Per-thread pool of slab blocks. Idea behind it is to not share with other
  * threads memory that are likely in local cache(s) of our CPU.
  */
@@ -676,6 +680,7 @@ void AllLocalCaches::registerThread(TLSRemote *tls)
 void AllLocalCaches::unregisterThread(TLSRemote *tls)
 {
     MallocMutex::scoped_lock lock(listLock);
+    MALLOC_ASSERT(head, "Can't unregister thread: no threads are registered.");
     if (head == tls)
         head = tls->next;
     if (tls->next)
@@ -722,10 +727,18 @@ bool        RecursiveMallocCallProtector::canUsePthread;
 
 /*********** End code to provide thread ID and a TLS pointer **********/
 
+// Parameter for isLargeObject, keeps our expectations on memory origin.
+// Assertions must use unknownMem to reliably report object invalidity.
+enum MemoryOrigin {
+    ourMem,    // allocated by TBB allocator
+    unknownMem // can be allocated by system allocator or TBB allocator
+};
+
+template<MemoryOrigin> bool isLargeObject(void *object);
 static void *internalMalloc(size_t size);
 static void internalFree(void *object);
 static void *internalPoolMalloc(MemoryPool* mPool, size_t size);
-static bool internalPoolFree(MemoryPool *mPool, void *object);
+static bool internalPoolFree(MemoryPool *mPool, void *object, size_t size);
 
 #if !MALLOC_DEBUG
 #if __INTEL_COMPILER || _MSC_VER
@@ -1116,12 +1129,17 @@ void MemoryPool::destroy()
         if (next)
             next->prev = prev;
     }
-    bootStrapBlocks.reset();
-    orphanedBlocks.reset();
-    // slab blocks in non-default pool do not have backreferencies,
+    // slab blocks in non-default pool do not have backreferences,
     // only large objects do
     if (extMemPool.userPool())
         extMemPool.lmbList.releaseAll</*poolDestroy=*/true>(&extMemPool.backend);
+    else {
+        // There and below in extMemPool.destroy(), do not restore initial state
+        // for user pool, because it's just about to be released. But for system
+        // pool restoring, we do not want to do zeroing of it on subsequent reload.
+        bootStrapBlocks.reset();
+        orphanedBlocks.reset();
+    }
     extMemPool.destroy();
 }
 
@@ -1232,7 +1250,7 @@ Block* Bin::getPublicFreeListBlock()
 {
     Block* block;
     MALLOC_ASSERT( this, ASSERT_TEXT );
-    // if this method is called, active block usage must be unsuccesful
+    // if this method is called, active block usage must be unsuccessful
     MALLOC_ASSERT( !activeBlk && !mailbox || activeBlk && activeBlk->isFull, ASSERT_TEXT );
 
 // the counter should be changed    STAT_increment(getThreadId(), ThreadCommonCounters, lockPublicFreeList);
@@ -1394,8 +1412,8 @@ void Block::privatizePublicFreeList()
         while( isSolidPtr(temp->next) ){ // the list will end with either NULL or UNUSABLE
             temp = temp->next;
             allocatedCount--;
+            MALLOC_ASSERT( allocatedCount < (slabSize-sizeof(Block))/objectSize, ASSERT_TEXT );
         }
-        MALLOC_ASSERT( allocatedCount < (slabSize-sizeof(Block))/objectSize, ASSERT_TEXT );
         /* merge with local freeList */
         temp->next = freeList;
         freeList = localPublicFreeList;
@@ -1631,7 +1649,7 @@ inline TLSData *Block::ownBlock() const {
     return tlsPtr;
 }
 
-FreeObject *Block::findObjectToFree(void *object) const
+FreeObject *Block::findObjectToFree(const void *object) const
 {
     FreeObject *objectToFree;
     // Due to aligned allocations, a pointer passed to scalable_free
@@ -1693,7 +1711,7 @@ void TLSData::release(MemoryPool *mPool)
 
 
 #if MALLOC_CHECK_RECURSION
-// TODO: Use deducated heap for this
+// TODO: Use dedicated heap for this
 
 /*
  * It's a special kind of allocation that can be used when malloc is
@@ -1703,6 +1721,7 @@ void TLSData::release(MemoryPool *mPool)
  * allocations are performed by moving bump pointer and increasing of object counter,
  * releasing is done via counter of objects allocated in the block
  * or moving bump pointer if releasing object is on a bound.
+ * TODO: make bump pointer to grow to the same backward direction as all the others.
  */
 
 class StartupBlock : public Block {
@@ -1866,13 +1885,13 @@ void AllocControlledMode::initReadEnv(const char *envName, intptr_t defaultVal)
 
 void MemoryPool::initDefaultPool()
 {
-    long long hugePageSize = 0;
+    long long unsigned hugePageSize = 0;
 #if __linux__
     if (FILE *f = fopen("/proc/meminfo", "r")) {
         const int READ_BUF_SIZE = 100;
         char buf[READ_BUF_SIZE];
-        MALLOC_ASSERT(sizeof(hugePageSize) >= 8,
-                      "At least 64 bits required for keeping page size/numbers.");
+        MALLOC_STATIC_ASSERT(sizeof(hugePageSize) >= 8,
+              "At least 64 bits required for keeping page size/numbers.");
 
         while (fgets(buf, READ_BUF_SIZE, f)) {
             if (1 == sscanf(buf, "Hugepagesize: %llu kB", &hugePageSize)) {
@@ -1953,8 +1972,14 @@ static void initMemoryManager()
     MALLOC_ASSERT( 2*blockHeaderAlignment == sizeof(Block), ASSERT_TEXT );
     MALLOC_ASSERT( sizeof(FreeObject) == sizeof(void*), ASSERT_TEXT );
 
+#if USE_WINTHREAD
+    const size_t granularity = 64*1024; // granulatity of VirtualAlloc
+#else
+    // POSIX.1-2001-compliant way to get page size
+    const size_t granularity = sysconf(_SC_PAGESIZE);
+#endif
     bool initOk = defaultMemPool->
-        extMemPool.init(0, NULL, NULL, scalableMallocPoolGranularity,
+        extMemPool.init(0, NULL, NULL, granularity,
                         /*keepAllMemory=*/false, /*fixedPool=*/false);
 // TODO: add error handling, and on error do something better than exit(1)
     if (!initOk || !initBackRefMaster(&defaultMemPool->extMemPool.backend)) {
@@ -2060,6 +2085,23 @@ inline FreeObject* Block::allocate()
     return NULL;
 }
 
+size_t Block::findObjectSize(void *object) const
+{
+    size_t blSize = getSize();
+#if MALLOC_CHECK_RECURSION
+    // Currently, there is no aligned allocations from startup blocks,
+    // so we can return just StartupBlock::msize().
+    // TODO: This must be extended if we add aligned allocation from startup blocks.
+    if (!blSize)
+        return StartupBlock::msize(object);
+#endif
+    // object can be aligned, so real size can be less than block's
+    size_t size =
+        blSize - ((uintptr_t)object - (uintptr_t)findObjectToFree(object));
+    MALLOC_ASSERT(size>0 && size<minLargeObjectSize, ASSERT_TEXT);
+    return size;
+}
+
 void Bin::moveBlockToBinFront(Block *block)
 {
     /* move the block to the front of the bin */
@@ -2172,6 +2214,7 @@ void *MemoryPool::getFromLLOCache(TLSData* tls, size_t size, size_t alignment)
     size_t allocationSize = LargeObjectCache::alignToBin(size+headersSize+alignment);
     if (allocationSize < size) // allocationSize is wrapped around after alignToBin
         return NULL;
+    MALLOC_ASSERT(allocationSize >= alignment, "Overflow must be checked before.");
 
     if (tls)
         lmb = tls->lloc.get(allocationSize);
@@ -2213,7 +2256,7 @@ void *MemoryPool::getFromLLOCache(TLSData* tls, size_t size, size_t alignment)
 
         lmb->objectSize = size;
 
-        MALLOC_ASSERT( isLargeObject(alignedArea), ASSERT_TEXT );
+        MALLOC_ASSERT( isLargeObject<unknownMem>(alignedArea), ASSERT_TEXT );
         MALLOC_ASSERT( isAligned(alignedArea, alignment), ASSERT_TEXT );
 
         return alignedArea;
@@ -2283,7 +2326,7 @@ static void *reallocAligned(MemoryPool *memPool, void *ptr,
     void *result;
     size_t copySize;
 
-    if (isLargeObject(ptr)) {
+    if (isLargeObject<ourMem>(ptr)) {
         LargeMemoryBlock* lmb = ((LargeObjectHdr *)ptr - 1)->memoryBlock;
         copySize = lmb->unalignedSize-((uintptr_t)ptr-(uintptr_t)lmb);
         if (size <= copySize && (0==alignment || isAligned(ptr, alignment))) {
@@ -2291,12 +2334,18 @@ static void *reallocAligned(MemoryPool *memPool, void *ptr,
             return ptr;
         } else {
             copySize = lmb->objectSize;
+#if BACKEND_HAS_MREMAP
+            if ((result = (memPool->extMemPool.backend.remap(ptr, copySize, size,
+                              alignment<largeObjectAlignment?
+                                        largeObjectAlignment : alignment))))
+                return result;
+#endif
             result = alignment ? allocateAligned(memPool, size, alignment) :
                 internalPoolMalloc(memPool, size);
         }
     } else {
         Block* block = (Block *)alignDown(ptr, slabSize);
-        copySize = block->getSize();
+        copySize = block->findObjectSize(ptr);
         if (size <= copySize && (0==alignment || isAligned(ptr, alignment))) {
             return ptr;
         } else {
@@ -2306,7 +2355,7 @@ static void *reallocAligned(MemoryPool *memPool, void *ptr,
     }
     if (result) {
         memcpy(result, ptr, copySize<size? copySize: size);
-        internalPoolFree(memPool, ptr);
+        internalPoolFree(memPool, ptr, 0);
     }
     return result;
 }
@@ -2349,14 +2398,18 @@ static inline BackRefIdx safer_dereference (const BackRefIdx *ptr)
     return id;
 }
 
+template<MemoryOrigin memOrigin>
 bool isLargeObject(void *object)
 {
     if (!isAligned(object, largeObjectAlignment))
         return false;
     LargeObjectHdr *header = (LargeObjectHdr*)object - 1;
-    BackRefIdx idx = safer_dereference(&header->backRefIdx);
+    BackRefIdx idx = memOrigin==unknownMem? safer_dereference(&header->backRefIdx) :
+        header->backRefIdx;
 
     return idx.isLargeObject()
+        // in valid LargeObjectHdr memoryBlock is not NULL
+        && header->memoryBlock
         // in valid LargeObjectHdr memoryBlock points somewhere before header
         // TODO: more strict check
         && (uintptr_t)header->memoryBlock < (uintptr_t)header
@@ -2365,24 +2418,26 @@ bool isLargeObject(void *object)
 
 static inline bool isSmallObject (void *ptr)
 {
-    void* expected = alignDown(ptr, slabSize);
-    const BackRefIdx* idx = ((Block*)expected)->getBackRef();
+    Block* expectedBlock = (Block*)alignDown(ptr, slabSize);
+    const BackRefIdx* idx = expectedBlock->getBackRef();
 
-    return expected == getBackRef(safer_dereference(idx));
+    bool isSmall = expectedBlock == getBackRef(safer_dereference(idx));
+    if (isSmall)
+        expectedBlock->checkFreePrecond(ptr);
+    return isSmall;
 }
 
 /**** Check if an object was allocated by scalable_malloc ****/
 static inline bool isRecognized (void* ptr)
 {
-    return isLargeObject(ptr) || isSmallObject(ptr);
+    return isLargeObject<unknownMem>(ptr) || isSmallObject(ptr);
 }
 
 static inline void freeSmallObject(MemoryPool *memPool, void *object)
 {
     /* mask low bits to get the block */
     Block *block = (Block *)alignDown(object, slabSize);
-    MALLOC_ASSERT( block->checkFreePrecond(object),
-                   "Possible double free or heap corruption." );
+    block->checkFreePrecond(object);
 
 #if MALLOC_CHECK_RECURSION
     if (block->isStartupAllocObject()) {
@@ -2477,7 +2532,11 @@ static void *internalPoolMalloc(MemoryPool* memPool, size_t size)
     return NULL;
 }
 
-static bool internalPoolFree(MemoryPool *memPool, void *object)
+// When size==0 (i.e. unknown), detect here whether the object is large.
+// For size is known and < minLargeObjectSize, we still need to check
+// if the actual object is large, because large objects might be used
+// for aligned small allocations.
+static bool internalPoolFree(MemoryPool *memPool, void *object, size_t size)
 {
     if (!memPool || !object) return false;
 
@@ -2485,9 +2544,9 @@ static bool internalPoolFree(MemoryPool *memPool, void *object)
     // not initialized means foreign object is releasing.
     MALLOC_ASSERT(isMallocInitialized(), ASSERT_TEXT);
     MALLOC_ASSERT(memPool->extMemPool.userPool() || isRecognized(object),
-                  "Invalid pointer in pool_free detected.");
+                  "Invalid pointer during object releasing is detected.");
 
-    if (isLargeObject(object))
+    if (size >= minLargeObjectSize || isLargeObject<ourMem>(object))
         memPool->putToLLOCache(memPool->getTLS(/*create=*/false), object);
     else
         freeSmallObject(memPool, object);
@@ -2513,26 +2572,18 @@ static void *internalMalloc(size_t size)
 
 static void internalFree(void *object)
 {
-    internalPoolFree(defaultMemPool, object);
+    internalPoolFree(defaultMemPool, object, 0);
 }
 
 static size_t internalMsize(void* ptr)
 {
     if (ptr) {
         MALLOC_ASSERT(isRecognized(ptr), "Invalid pointer in scalable_msize detected.");
-        if (isLargeObject(ptr)) {
+        if (isLargeObject<ourMem>(ptr)) {
             LargeMemoryBlock* lmb = ((LargeObjectHdr*)ptr - 1)->memoryBlock;
             return lmb->objectSize;
-        } else {
-            Block* block = (Block *)alignDown(ptr, slabSize);
-#if MALLOC_CHECK_RECURSION
-            size_t size = block->getSize()? block->getSize() : StartupBlock::msize(ptr);
-#else
-            size_t size = block->getSize();
-#endif
-            MALLOC_ASSERT(size>0 && size<minLargeObjectSize, ASSERT_TEXT);
-            return size;
-        }
+        } else
+            return ((Block*)alignDown(ptr, slabSize))->findObjectSize(ptr);
     }
     errno = EINVAL;
     // Unlike _msize, return 0 in case of parameter error.
@@ -2618,7 +2669,7 @@ void *pool_realloc(rml::MemoryPool* mPool, void *object, size_t size)
     if (!object)
         return internalPoolMalloc((rml::internal::MemoryPool*)mPool, size);
     if (!size) {
-        internalPoolFree((rml::internal::MemoryPool*)mPool, object);
+        internalPoolFree((rml::internal::MemoryPool*)mPool, object, 0);
         return NULL;
     }
     return reallocAligned((rml::internal::MemoryPool*)mPool, object, size, 0);
@@ -2642,7 +2693,7 @@ void *pool_aligned_realloc(rml::MemoryPool* memPool, void *ptr, size_t size, siz
     if (!ptr)
         tmp = allocateAligned(mPool, size, alignment);
     else if (!size) {
-        internalPoolFree(mPool, ptr);
+        internalPoolFree(mPool, ptr, 0);
         return NULL;
     } else
         tmp = reallocAligned(mPool, ptr, size, alignment);
@@ -2652,7 +2703,7 @@ void *pool_aligned_realloc(rml::MemoryPool* memPool, void *ptr, size_t size, siz
 
 bool pool_free(rml::MemoryPool *mPool, void *object)
 {
-    return internalPoolFree((rml::internal::MemoryPool*)mPool, object);
+    return internalPoolFree((rml::internal::MemoryPool*)mPool, object, 0);
 }
 
 } // namespace rml
@@ -2742,6 +2793,8 @@ extern "C" void __TBB_mallocProcessShutdownNotification()
     for( int i=1; i<=nThreads && i<MAX_THREADS; ++i )
         STAT_print(i);
 #endif
+    if (!usedBySrcIncluded)
+        MALLOC_ITT_FINI_ITTLIB();
 }
 
 extern "C" void * scalable_malloc(size_t size)
@@ -2755,18 +2808,24 @@ extern "C" void scalable_free (void *object) {
     internalFree(object);
 }
 
+#if MALLOC_ZONE_OVERLOAD_ENABLED
+extern "C" void __TBB_malloc_free_definite_size(void *object, size_t size) {
+    internalPoolFree(defaultMemPool, object, size);
+}
+#endif
+
 /*
  * A variant that provides additional memory safety, by checking whether the given address
  * was obtained with this allocator, and if not redirecting to the provided alternative call.
  */
-extern "C" void safer_scalable_free (void *object, void (*original_free)(void*))
+extern "C" void __TBB_malloc_safer_free(void *object, void (*original_free)(void*))
 {
     if (!object)
         return;
 
     // must check 1st for large object, because small object check touches 4 pages on left,
-    // and it can be unaccessable
-    if (isLargeObject(object)) {
+    // and it can be inaccessible
+    if (isLargeObject<unknownMem>(object)) {
         TLSData *tls = defaultMemPool->getTLS(/*create=*/false);
 
         defaultMemPool->putToLLOCache(tls, object);
@@ -2808,7 +2867,7 @@ extern "C" void* scalable_realloc(void* ptr, size_t size)
  * A variant that provides additional memory safety, by checking whether the given address
  * was obtained with this allocator, and if not redirecting to the provided alternative call.
  */
-extern "C" void* safer_scalable_realloc (void* ptr, size_t sz, void* original_realloc)
+extern "C" void* __TBB_malloc_safer_realloc(void* ptr, size_t sz, void* original_realloc)
 {
     void *tmp; // TODO: fix warnings about uninitialized use of tmp
 
@@ -2865,7 +2924,16 @@ extern "C" void* safer_scalable_realloc (void* ptr, size_t sz, void* original_re
 
 extern "C" void * scalable_calloc(size_t nobj, size_t size)
 {
-    size_t arraySize = nobj * size;
+    // it's square root of maximal size_t value
+    const size_t mult_not_overflow = size_t(1) << (sizeof(size_t)*CHAR_BIT/2);
+    const size_t arraySize = nobj * size;
+
+    // check for overflow during multiplication:
+    if (nobj>=mult_not_overflow || size>=mult_not_overflow) // 1) heuristic check
+        if (nobj && arraySize / nobj != size) {             // 2) exact check
+            errno = ENOMEM;
+            return NULL;
+        }
     void* result = internalMalloc(arraySize);
     if (result)
         memset(result, 0, arraySize);
@@ -2920,7 +2988,7 @@ extern "C" void * scalable_aligned_realloc(void *ptr, size_t size, size_t alignm
     return tmp;
 }
 
-extern "C" void * safer_scalable_aligned_realloc(void *ptr, size_t size, size_t alignment, void* orig_function)
+extern "C" void * __TBB_malloc_safer_aligned_realloc(void *ptr, size_t size, size_t alignment, void* orig_function)
 {
     /* corner cases left out of reallocAligned to not deal with errno there */
     if (!isPowerOfTwo(alignment)) {
@@ -2992,7 +3060,7 @@ extern "C" size_t scalable_msize(void* ptr)
  * A variant that provides additional memory safety, by checking whether the given address
  * was obtained with this allocator, and if not redirecting to the provided alternative call.
  */
-extern "C" size_t safer_scalable_msize (void *object, size_t (*original_msize)(void*))
+extern "C" size_t __TBB_malloc_safer_msize(void *object, size_t (*original_msize)(void*))
 {
     if (object) {
         // Check if the memory was allocated by scalable_malloc
@@ -3001,15 +3069,17 @@ extern "C" size_t safer_scalable_msize (void *object, size_t (*original_msize)(v
         else if (original_msize)
             return original_msize(object);
     }
-    // object is NULL or unknown
-    errno = EINVAL;
+    // object is NULL or unknown, or foreign and no original_msize
+#if USE_WINTHREAD
+    errno = EINVAL; // errno expected to be set only on this platform
+#endif
     return 0;
 }
 
 /*
  * The same as above but for _aligned_msize case
  */
-extern "C" size_t safer_scalable_aligned_msize (void *object, size_t alignment, size_t offset, size_t (*orig_aligned_msize)(void*,size_t,size_t))
+extern "C" size_t __TBB_malloc_safer_aligned_msize(void *object, size_t alignment, size_t offset, size_t (*orig_aligned_msize)(void*,size_t,size_t))
 {
     if (object) {
         // Check if the memory was allocated by scalable_malloc
@@ -3043,6 +3113,17 @@ extern "C" int scalable_allocation_mode(int param, intptr_t value)
 #else
         return TBBMALLOC_NO_EFFECT;
 #endif
+#if __TBB_SOURCE_DIRECTLY_INCLUDED
+    } else if (param == TBBMALLOC_INTERNAL_SOURCE_INCLUDED) {
+        switch (value) {
+        case 0: // used by dynamic library
+        case 1: // used by static library or directly included sources
+            usedBySrcIncluded = value;
+            return TBBMALLOC_OK;
+        default:
+            return TBBMALLOC_INVALID_PARAM;
+        }
+#endif
     }
     return TBBMALLOC_INVALID_PARAM;
 }
diff --git a/src/tbbmalloc/index.html b/src/tbbmalloc/index.html
new file mode 100644
index 0000000..545fcb9
--- /dev/null
+++ b/src/tbbmalloc/index.html
@@ -0,0 +1,54 @@
+<HTML>
+<body>
+<H2>Overview</H2>
+<P>
+This directory contains the Intel® Threading Building Blocks (Intel® TBB) scalable allocator library source files.
+</P>
+
+<HR>
+<p></p>
+Copyright © 2005-2015 Intel Corporation.  All Rights Reserved.
+<P></P>
+Intel is a registered trademark or trademark of Intel Corporation
+or its subsidiaries in the United States and other countries.
+<p></p>
+* Other names and brands may be claimed as the property of others.
+
+<P>
+<H3>Third Party and Open Source Licenses</H3>
+</P>
+<P>
+    <pre>
+    proxy_overload_osx.h
+    // Copyright (c) 2011, Google Inc.
+    // All rights reserved.
+    //
+    // Redistribution and use in source and binary forms, with or without
+    // modification, are permitted provided that the following conditions are
+    // met:
+    //
+    //     * Redistributions of source code must retain the above copyright
+    // notice, this list of conditions and the following disclaimer.
+    //     * Redistributions in binary form must reproduce the above
+    // copyright notice, this list of conditions and the following disclaimer
+    // in the documentation and/or other materials provided with the
+    // distribution.
+    //     * Neither the name of Google Inc. nor the names of its
+    // contributors may be used to endorse or promote products derived from
+    // this software without specific prior written permission.
+    //
+    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+    </pre>
+</P>
+</body>
+</HTML>
diff --git a/src/tbbmalloc/large_objects.cpp b/src/tbbmalloc/large_objects.cpp
index ce8910b..fe1a175 100644
--- a/src/tbbmalloc/large_objects.cpp
+++ b/src/tbbmalloc/large_objects.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbbmalloc_internal.h"
@@ -34,6 +26,95 @@
 namespace rml {
 namespace internal {
 
+
+// ---------------- Cache Bin Aggregator Operation Helpers ---------------- //
+// The list of possible operations.
+enum CacheBinOperationType {
+    CBOP_INVALID = 0,
+    CBOP_GET,
+    CBOP_PUT_LIST,
+    CBOP_CLEAN_TO_THRESHOLD,
+    CBOP_CLEAN_ALL,
+    CBOP_DECR_USED_SIZE
+};
+
+// The operation status list. CBST_NOWAIT can be specified for non-blocking operations.
+enum CacheBinOperationStatus {
+    CBST_WAIT = 0,
+    CBST_NOWAIT,
+    CBST_DONE
+};
+
+// The list of structures which describe the operation data
+struct OpGet {
+    static const CacheBinOperationType type = CBOP_GET;
+    LargeMemoryBlock **res;
+    size_t size;
+    uintptr_t currTime;
+};
+
+struct OpPutList {
+    static const CacheBinOperationType type = CBOP_PUT_LIST;
+    LargeMemoryBlock *head;
+};
+
+struct OpCleanToThreshold {
+    static const CacheBinOperationType type = CBOP_CLEAN_TO_THRESHOLD;
+    LargeMemoryBlock **res;
+    uintptr_t currTime;
+};
+
+struct OpCleanAll {
+    static const CacheBinOperationType type = CBOP_CLEAN_ALL;
+    LargeMemoryBlock **res;
+};
+
+struct OpDecrUsedSize {
+    static const CacheBinOperationType type = CBOP_DECR_USED_SIZE;
+    size_t size;
+};
+
+union CacheBinOperationData {
+private:
+    OpGet opGet;
+    OpPutList opPutList;
+    OpCleanToThreshold opCleanToThreshold;
+    OpCleanAll opCleanAll;
+    OpDecrUsedSize opDecrUsedSize;
+};
+
+// Forward declarations
+template <typename OpTypeData> OpTypeData& opCast(CacheBinOperation &op);
+
+// Describes the aggregator operation
+struct CacheBinOperation : public MallocAggregatedOperation<CacheBinOperation>::type {
+    CacheBinOperationType type;
+
+    template <typename OpTypeData>
+    CacheBinOperation(OpTypeData &d, CacheBinOperationStatus st = CBST_WAIT) {
+        opCast<OpTypeData>(*this) = d;
+        type = OpTypeData::type;
+        MallocAggregatedOperation<CacheBinOperation>::type::status = st;
+    }
+private:
+    CacheBinOperationData data;
+
+    template <typename OpTypeData>
+    friend OpTypeData& opCast(CacheBinOperation &op);
+};
+
+// The opCast function can be the member of CacheBinOperation but it will have
+// small stylistic ambiguity: it will look like a getter (with a cast) for the
+// CacheBinOperation::data data member but it should return a reference to
+// simplify the code from a lot of getter/setter calls. So the global cast in
+// the style of static_cast (or reinterpret_cast) seems to be more readable and
+// have more explicit semantic.
+template <typename OpTypeData>
+OpTypeData& opCast(CacheBinOperation &op) {
+    return *reinterpret_cast<OpTypeData*>(&op.data);
+}
+// ------------------------------------------------------------------------ //
+
 #if __TBB_MALLOC_LOCACHE_STAT
 intptr_t mallocCalls, cacheHits;
 intptr_t memAllocKB, memHitKB;
@@ -45,181 +126,267 @@ inline bool lessThanWithOverflow(intptr_t a, intptr_t b)
            (a > b && (a - b > UINTPTR_MAX/2));
 }
 
-template<typename Props>
-LargeMemoryBlock *LargeObjectCacheImpl<Props>::CacheBin::
-    putList(ExtMemoryPool *extMemPool, LargeMemoryBlock *head, BinBitMask *bitMask, int idx)
+/* ----------------------------------- Operation processing methods ------------------------------------ */
+
+template<typename Props> void LargeObjectCacheImpl<Props>::CacheBin::CacheBinFunctor::
+    OperationPreprocessor::commitOperation(CacheBinOperation *op) const 
 {
-    int i, num, totalNum;
-    size_t size = head->unalignedSize;
-    LargeMemoryBlock *curr, *tail, *toRelease = NULL;
-    uintptr_t currTime;
+    FencedStore( (intptr_t&)(op->status), CBST_DONE );
+}
 
-    // we not kept prev pointers during assigning blocks to bins, set them now
-    head->prev = NULL;
-    for (num=1, curr=head; curr->next; num++, curr=curr->next)
-        curr->next->prev = curr;
-    tail = curr;
-    totalNum = num;
-
-    {
-        MallocMutex::scoped_lock scoped_cs(lock);
-        usedSize -= num*size;
-        // to keep ordering on list, get time under list lock
-        currTime = extMemPool->loc.getCurrTimeRange(num);
-
-        for (curr=tail, i=0; curr; curr=curr->prev, i++) {
-            curr->age = currTime+i;
-            STAT_increment(getThreadId(), ThreadCommonCounters, cacheLargeObj);
-        }
+template<typename Props> void LargeObjectCacheImpl<Props>::CacheBin::CacheBinFunctor::
+    OperationPreprocessor::addOpToOpList(CacheBinOperation *op, CacheBinOperation **opList) const
+{
+    op->next = *opList;
+    *opList = op;
+}
 
-        if (!lastCleanedAge) {
-            // 1st object of such size was released.
-            // Not cache it, and remeber when this occurs
-            // to take into account during cache miss.
-            lastCleanedAge = tail->age;
-            toRelease = tail;
-            tail = tail->prev;
-            if (tail)
-                tail->next = NULL;
-            else
-                head = NULL;
-            num--;
-        }
-        if (num) {
-            // add [head;tail] list to cache
-            tail->next = first;
-            if (first)
-                first->prev = tail;
-            first = head;
-            if (!last) {
-                MALLOC_ASSERT(0 == oldest, ASSERT_TEXT);
-                oldest = tail->age;
-                last = tail;
-            }
+template<typename Props> bool LargeObjectCacheImpl<Props>::CacheBin::CacheBinFunctor::
+    OperationPreprocessor::getFromPutList(CacheBinOperation *opGet, uintptr_t currTime)
+{
+    if ( head ) {
+        uintptr_t age = head->age;
+        LargeMemoryBlock *next = head->next;
+        *opCast<OpGet>(*opGet).res = head;
+        commitOperation( opGet );
+        head = next;
+        putListNum--;
+        MALLOC_ASSERT( putListNum>=0, ASSERT_TEXT );
 
-            cachedSize += num*size;
-        }
-/* It's accebtable, if a bin is empty, and we have non-empty in bit mask.
-   So set true in bitmask without lock.
-   It's not acceptable, if a bin is non-empty and we have empty in bitmask.
-   So set false in bitmask under lock. */
+        // use moving average with current hit interval
+        bin->updateMeanHitRange( currTime - age );
+        return true;
+    }
+    return false;
+}
 
-        // No used object, and nothing in the bin, mark the bin as empty
-        if (!usedSize && !first)
-            bitMask->set(idx, false);
+template<typename Props> void LargeObjectCacheImpl<Props>::CacheBin::CacheBinFunctor::
+    OperationPreprocessor::addToPutList(LargeMemoryBlock *h, LargeMemoryBlock *t, int num)
+{
+    if ( head ) {
+        MALLOC_ASSERT( tail, ASSERT_TEXT );
+        tail->next = h;
+        h->prev = tail;
+        tail = t;
+        putListNum += num;
+    } else {
+        head = h;
+        tail = t;
+        putListNum = num;
     }
-    extMemPool->loc.cleanupCacheIfNeededOnRange(totalNum, currTime);
-    if (toRelease)
-        toRelease->prev = toRelease->next = NULL;
-    return toRelease;
 }
 
-template<typename Props>
-LargeMemoryBlock *LargeObjectCacheImpl<Props>::CacheBin::
-    get(size_t size, uintptr_t currTime, bool *setNonEmpty)
-{
-    LargeMemoryBlock *result=NULL;
-    {
-        MallocMutex::scoped_lock scoped_cs(lock);
-        forgetOutdatedState(currTime);
-
-        if (first) {
-            result = first;
-            first = result->next;
-            if (first)
-                first->prev = NULL;
-            else {
-                last = NULL;
-                oldest = 0;
+template<typename Props> void LargeObjectCacheImpl<Props>::CacheBin::CacheBinFunctor::
+    OperationPreprocessor::operator()(CacheBinOperation* opList)
+{
+    for ( CacheBinOperation *op = opList, *opNext; op; op = opNext ) {
+        opNext = op->next;
+        switch ( op->type ) {
+        case CBOP_GET:
+            {
+                lclTime--;
+                if ( !lastGetOpTime ) {
+                    lastGetOpTime = lclTime;
+                    lastGet = 0;
+                } else if ( !lastGet ) lastGet = lclTime;
+
+                if ( !getFromPutList(op,lclTime) ) {
+                    opCast<OpGet>(*op).currTime = lclTime;
+                    addOpToOpList( op, &opGet );
+                }
+            }
+            break;
+
+        case CBOP_PUT_LIST:
+            {
+                LargeMemoryBlock *head = opCast<OpPutList>(*op).head;
+                LargeMemoryBlock *curr = head, *prev = NULL;
+
+                int num = 0;
+                do {
+                    // we do not kept prev pointers during assigning blocks to bins, set them now
+                    curr->prev = prev;
+
+                    // Save the local times to the memory blocks. Local times are necessary
+                    // for the getFromPutList function which updates the hit range value in
+                    // CacheBin when OP_GET and OP_PUT_LIST operations are merged successfully.
+                    // The age will be updated to the correct global time after preprocessing
+                    // when global cache time is updated.
+                    curr->age = --lclTime;
+
+                    prev = curr;
+                    num += 1;
+
+                    STAT_increment(getThreadId(), ThreadCommonCounters, cacheLargeObj);
+                } while (( curr = curr->next ));
+
+                LargeMemoryBlock *tail = prev;
+                addToPutList(head, tail, num);
+
+                while ( opGet ) {
+                    CacheBinOperation *next = opGet->next;
+                    if ( !getFromPutList(opGet, opCast<OpGet>(*opGet).currTime) )
+                        break;
+                    opGet = next;
+                }
+            }
+            break;
+
+        case CBOP_DECR_USED_SIZE:
+            decrUsedSize += opCast<OpDecrUsedSize>(*op).size;
+            commitOperation( op );
+            break;
+
+        case CBOP_CLEAN_ALL:
+            isCleanAll = true;
+            addOpToOpList( op, &opClean );
+            break;
+
+        case CBOP_CLEAN_TO_THRESHOLD:
+            {
+                uintptr_t currTime = opCast<OpCleanToThreshold>(*op).currTime;
+                // We don't worry about currTime overflow since it is a rare
+                // occurrence and doesn't affect correctness
+                cleanTime = cleanTime < currTime ? currTime : cleanTime;
+                addOpToOpList( op, &opClean );
             }
-            // use moving average with current hit interval
-            intptr_t hitRange = currTime - result->age;
-            meanHitRange = meanHitRange? (meanHitRange + hitRange)/2 : hitRange;
-
-            cachedSize -= size;
-        } else {
-            if (lastCleanedAge)
-                ageThreshold = Props::OnMissFactor*(currTime - lastCleanedAge);
+            break;
+
+        default:
+            MALLOC_ASSERT( false, "Unknown operation." );
         }
-        if (!usedSize) // inform that there are used blocks in the bin
-            *setNonEmpty = true;
-        // subject to later correction, if got cache miss and later allocation failed
-        usedSize += size;
-        lastGet = currTime;
     }
-    return result;
+    MALLOC_ASSERT( !( opGet && head ), "Not all put/get pairs are processed!" );
 }
 
-// forget the history for the bin if it was unused for long time
-template<typename Props>
-void LargeObjectCacheImpl<Props>::CacheBin::forgetOutdatedState(uintptr_t currTime)
+template<typename Props> void LargeObjectCacheImpl<Props>::CacheBin::
+    CacheBinFunctor::operator()(CacheBinOperation* opList)
 {
-    // If the time since the last get is LongWaitFactor times more than ageThreshold
-    // for the bin, treat the bin as rarely-used and forget everything we know
-    // about it.
-    // If LongWaitFactor is too small, we forget too early and
-    // so prevents good caching, while if too high, caching blocks
-    // with unrelated usage pattern occurs.
-    const uintptr_t sinceLastGet = currTime - lastGet;
-    bool doCleanup = false;
+    MALLOC_ASSERT( opList, "Empty operation list is passed into operation handler." );
+
+    OperationPreprocessor prep(bin);
+    prep(opList);
+
+    if ( uintptr_t timeRange = prep.getTimeRange() ) {
+        uintptr_t startTime = extMemPool->loc.getCurrTimeRange(timeRange);
+        // endTime is used as the current (base) time since the local time is negative.
+        uintptr_t endTime = startTime + timeRange;
+
+        if ( prep.lastGetOpTime && prep.lastGet ) bin->setLastGet(prep.lastGet+endTime);
+
+        if ( CacheBinOperation *opGet = prep.opGet ) {
+            bool isEmpty = false;
+            do {
+#if __TBB_MALLOC_WHITEBOX_TEST
+                tbbmalloc_whitebox::locGetProcessed++;
+#endif
+                const OpGet &opGetData = opCast<OpGet>(*opGet);
+                if ( !isEmpty ) {
+                    if ( LargeMemoryBlock *res = bin->get() ) {
+                        uintptr_t getTime = opGetData.currTime + endTime;
+                        // use moving average with current hit interval
+                        bin->updateMeanHitRange( getTime - res->age);
+                        bin->updateCachedSize( -opGetData.size );
+                        *opGetData.res = res;
+                    } else {
+                        isEmpty = true;
+                        uintptr_t lastGetOpTime = prep.lastGetOpTime+endTime;
+                        bin->forgetOutdatedState(lastGetOpTime);
+                        bin->updateAgeThreshold(lastGetOpTime);
+                    }
+                }
 
-    if (!last) { // clean only empty bins
-        if (ageThreshold)
-            doCleanup = sinceLastGet > Props::LongWaitFactor*ageThreshold;
-        else if (lastCleanedAge)
-            doCleanup = sinceLastGet > Props::LongWaitFactor*(lastCleanedAge - lastGet);
+                CacheBinOperation *opNext = opGet->next;
+                bin->updateUsedSize( opGetData.size, bitMask, idx );
+                prep.commitOperation( opGet );
+                opGet = opNext;
+            } while ( opGet );
+            if ( prep.lastGetOpTime )
+                bin->setLastGet( prep.lastGetOpTime + endTime );
+        } else if ( LargeMemoryBlock *curr = prep.head ) {
+            curr->prev = NULL;
+            while ( curr ) {
+                // Update local times to global times
+                curr->age += endTime;
+                curr=curr->next;
+            }
+#if __TBB_MALLOC_WHITEBOX_TEST
+            tbbmalloc_whitebox::locPutProcessed+=prep.putListNum;
+#endif
+            toRelease = bin->putList(prep.head, prep.tail, bitMask, idx, prep.putListNum);
+        }
+        needCleanup = extMemPool->loc.isCleanupNeededOnRange(timeRange, startTime);
+        currTime = endTime - 1;
     }
-    if (doCleanup) {
-        lastCleanedAge = 0;
-        ageThreshold = 0;
+
+    if ( CacheBinOperation *opClean = prep.opClean ) {
+        if ( prep.isCleanAll )
+            *opCast<OpCleanAll>(*opClean).res = bin->cleanAll(bitMask, idx);
+        else
+            *opCast<OpCleanToThreshold>(*opClean).res = bin->cleanToThreshold(prep.cleanTime, bitMask, idx);
+
+        CacheBinOperation *opNext = opClean->next;
+        prep.commitOperation( opClean );
+
+        while (( opClean = opNext )) {
+            opNext = opClean->next;
+            prep.commitOperation(opClean);
+        }
     }
+
+    if ( size_t decrUsedSize = prep.decrUsedSize )
+        bin->updateUsedSize(-decrUsedSize, bitMask, idx);
 }
+/* ----------------------------------------------------------------------------------------------------- */
+/* --------------------------- Methods for creating and executing operations --------------------------- */
+template<typename Props> void LargeObjectCacheImpl<Props>::
+    CacheBin::ExecuteOperation(CacheBinOperation *op, ExtMemoryPool *extMemPool, BinBitMask *bitMask, int idx, bool longLifeTime)
+{
+    CacheBinFunctor func( this, extMemPool, bitMask, idx );
+    aggregator.execute( op, func, longLifeTime );
 
-template<typename Props>
-bool LargeObjectCacheImpl<Props>::CacheBin::
-    cleanToThreshold(Backend *backend, BinBitMask *bitMask, uintptr_t currTime, int idx)
+    if (  LargeMemoryBlock *toRelease = func.getToRelease() )
+        extMemPool->backend.returnLargeObject(toRelease);
+
+    if ( func.isCleanupNeeded() )
+        extMemPool->loc.doCleanup( func.getCurrTime(), /*doThreshDecr=*/false);
+}
+
+template<typename Props> LargeMemoryBlock *LargeObjectCacheImpl<Props>::
+    CacheBin::get(ExtMemoryPool *extMemPool, size_t size, BinBitMask *bitMask, int idx)
+{
+    LargeMemoryBlock *lmb=NULL;
+    OpGet data = {&lmb, size};
+    CacheBinOperation op(data);
+    ExecuteOperation( &op, extMemPool, bitMask, idx );
+    return lmb;
+}
+
+template<typename Props> void LargeObjectCacheImpl<Props>::
+    CacheBin::putList(ExtMemoryPool *extMemPool, LargeMemoryBlock *head, BinBitMask *bitMask, int idx)
+{
+    MALLOC_ASSERT(sizeof(LargeMemoryBlock)+sizeof(CacheBinOperation)<=head->unalignedSize, "CacheBinOperation is too large to be placed in LargeMemoryBlock!");
+
+    OpPutList data = {head};
+    CacheBinOperation *op = new (head+1) CacheBinOperation(data, CBST_NOWAIT);
+    ExecuteOperation( op, extMemPool, bitMask, idx, false );
+}
+
+template<typename Props> bool LargeObjectCacheImpl<Props>::
+    CacheBin::cleanToThreshold(ExtMemoryPool *extMemPool, BinBitMask *bitMask, uintptr_t currTime, int idx)
 {
     LargeMemoryBlock *toRelease = NULL;
-    bool released = false;
-#if MALLOC_DEBUG
-    uintptr_t nextAge = 0;
-#endif
 
     /* oldest may be more recent then age, that's why cast to signed type
        was used. age overflow is also processed correctly. */
     if (last && (intptr_t)(currTime - oldest) > ageThreshold) {
-        MallocMutex::scoped_lock scoped_cs(lock);
-        // double check
-        if (last && (intptr_t)(currTime - last->age) > ageThreshold) {
-            do {
-#if MALLOC_DEBUG
-                // check that list ordered
-                MALLOC_ASSERT(!nextAge || lessThanWithOverflow(nextAge, last->age),
-                              ASSERT_TEXT);
-                nextAge = last->age;
-#endif
-                cachedSize -= last->unalignedSize;
-                last = last->prev;
-            } while (last && (intptr_t)(currTime - last->age) > ageThreshold);
-            if (last) {
-                toRelease = last->next;
-                oldest = last->age;
-                last->next = NULL;
-            } else {
-                toRelease = first;
-                first = NULL;
-                oldest = 0;
-                if (!usedSize)
-                    bitMask->set(idx, false);
-            }
-            MALLOC_ASSERT( toRelease, ASSERT_TEXT );
-            lastCleanedAge = toRelease->age;
-        }
-        else
-            return false;
+        OpCleanToThreshold data = {&toRelease, currTime};
+        CacheBinOperation op(data);
+        ExecuteOperation( &op, extMemPool, bitMask, idx );
     }
-    released = toRelease;
+    bool released = toRelease;
 
+    Backend *backend = &extMemPool->backend;
     while ( toRelease ) {
         LargeMemoryBlock *helper = toRelease->next;
         backend->returnLargeObject(toRelease);
@@ -228,30 +395,19 @@ bool LargeObjectCacheImpl<Props>::CacheBin::
     return released;
 }
 
-template<typename Props>
-bool LargeObjectCacheImpl<Props>::
-    CacheBin::cleanAll(Backend *backend, BinBitMask *bitMask, int idx)
+template<typename Props> bool LargeObjectCacheImpl<Props>::
+    CacheBin::releaseAllToBackend(ExtMemoryPool *extMemPool, BinBitMask *bitMask, int idx)
 {
     LargeMemoryBlock *toRelease = NULL;
-    bool released = false;
 
     if (last) {
-        MallocMutex::scoped_lock scoped_cs(lock);
-        // double check
-        if (last) {
-            toRelease = first;
-            last = NULL;
-            first = NULL;
-            oldest = 0;
-            cachedSize = 0;
-            if (!usedSize)
-                bitMask->set(idx, false);
-        }
-        else
-            return false;
+        OpCleanAll data = {&toRelease};
+        CacheBinOperation op(data);
+        ExecuteOperation(&op, extMemPool, bitMask, idx);
     }
-    released = toRelease;
+    bool released = toRelease;
 
+    Backend *backend = &extMemPool->backend;
     while ( toRelease ) {
         LargeMemoryBlock *helper = toRelease->next;
         MALLOC_ASSERT(!helper || lessThanWithOverflow(helper->age, toRelease->age),
@@ -262,8 +418,156 @@ bool LargeObjectCacheImpl<Props>::
     return released;
 }
 
-template<typename Props>
-size_t LargeObjectCacheImpl<Props>::CacheBin::reportStat(int num, FILE *f)
+template<typename Props> void LargeObjectCacheImpl<Props>::
+    CacheBin::decrUsedSize(ExtMemoryPool *extMemPool, size_t size, BinBitMask *bitMask, int idx) {
+    OpDecrUsedSize data = {size};
+    CacheBinOperation op(data);
+    ExecuteOperation( &op, extMemPool, bitMask, idx );
+}
+/* ----------------------------------------------------------------------------------------------------- */
+/* ------------------------------ Unsafe methods used with the aggregator ------------------------------ */
+template<typename Props> LargeMemoryBlock *LargeObjectCacheImpl<Props>::
+    CacheBin::putList(LargeMemoryBlock *head, LargeMemoryBlock *tail, BinBitMask *bitMask, int idx, int num)
+{
+    size_t size = head->unalignedSize;
+    usedSize -= num*size;
+    MALLOC_ASSERT( !last || (last->age != 0 && last->age != -1U), ASSERT_TEXT );
+    LargeMemoryBlock *toRelease = NULL;
+    if (!lastCleanedAge) {
+        // 1st object of such size was released.
+        // Not cache it, and remember when this occurs
+        // to take into account during cache miss.
+        lastCleanedAge = tail->age;
+        toRelease = tail;
+        tail = tail->prev;
+        if (tail)
+            tail->next = NULL;
+        else
+            head = NULL;
+        num--;
+    }
+    if (num) {
+        // add [head;tail] list to cache
+        tail->next = first;
+        if (first)
+            first->prev = tail;
+        first = head;
+        if (!last) {
+            MALLOC_ASSERT(0 == oldest, ASSERT_TEXT);
+            oldest = tail->age;
+            last = tail;
+        }
+
+        cachedSize += num*size;
+    }
+
+    // No used object, and nothing in the bin, mark the bin as empty
+    if (!usedSize && !first)
+        bitMask->set(idx, false);
+
+    return toRelease;
+}
+
+template<typename Props> LargeMemoryBlock *LargeObjectCacheImpl<Props>::
+    CacheBin::get()
+{
+    LargeMemoryBlock *result=first;
+    if (result) {
+        first = result->next;
+        if (first)
+            first->prev = NULL;
+        else {
+            last = NULL;
+            oldest = 0;
+        }
+    }
+
+    return result;
+}
+
+// forget the history for the bin if it was unused for long time
+template<typename Props> void LargeObjectCacheImpl<Props>::
+    CacheBin::forgetOutdatedState(uintptr_t currTime)
+{
+    // If the time since the last get is LongWaitFactor times more than ageThreshold
+    // for the bin, treat the bin as rarely-used and forget everything we know
+    // about it.
+    // If LongWaitFactor is too small, we forget too early and
+    // so prevents good caching, while if too high, caching blocks
+    // with unrelated usage pattern occurs.
+    const uintptr_t sinceLastGet = currTime - lastGet;
+    bool doCleanup = false;
+
+    if (ageThreshold)
+        doCleanup = sinceLastGet > Props::LongWaitFactor*ageThreshold;
+    else if (lastCleanedAge)
+        doCleanup = sinceLastGet > Props::LongWaitFactor*(lastCleanedAge - lastGet);
+
+    if (doCleanup) {
+        lastCleanedAge = 0;
+        ageThreshold = 0;
+    }
+
+}
+
+template<typename Props> LargeMemoryBlock *LargeObjectCacheImpl<Props>::
+    CacheBin::cleanToThreshold(uintptr_t currTime, BinBitMask *bitMask, int idx)
+{
+    /* oldest may be more recent then age, that's why cast to signed type
+    was used. age overflow is also processed correctly. */
+    if ( !last || (intptr_t)(currTime - last->age) < ageThreshold ) return NULL;
+
+#if MALLOC_DEBUG
+    uintptr_t nextAge = 0;
+#endif
+    do {
+#if MALLOC_DEBUG
+        // check that list ordered
+        MALLOC_ASSERT(!nextAge || lessThanWithOverflow(nextAge, last->age),
+            ASSERT_TEXT);
+        nextAge = last->age;
+#endif
+        cachedSize -= last->unalignedSize;
+        last = last->prev;
+    } while (last && (intptr_t)(currTime - last->age) > ageThreshold);
+
+    LargeMemoryBlock *toRelease = NULL;
+    if (last) {
+        toRelease = last->next;
+        oldest = last->age;
+        last->next = NULL;
+    } else {
+        toRelease = first;
+        first = NULL;
+        oldest = 0;
+        if (!usedSize)
+            bitMask->set(idx, false);
+    }
+    MALLOC_ASSERT( toRelease, ASSERT_TEXT );
+    lastCleanedAge = toRelease->age;
+
+    return toRelease;
+}
+
+template<typename Props> LargeMemoryBlock *LargeObjectCacheImpl<Props>::
+    CacheBin::cleanAll(BinBitMask *bitMask, int idx)
+{
+    if (!last) return NULL;
+
+    LargeMemoryBlock *toRelease = first;
+    last = NULL;
+    first = NULL;
+    oldest = 0;
+    cachedSize = 0;
+    if (!usedSize)
+        bitMask->set(idx, false);
+
+    return toRelease;
+}
+/* ----------------------------------------------------------------------------------------------------- */
+
+template<typename Props> size_t LargeObjectCacheImpl<Props>::
+    CacheBin::reportStat(int num, FILE *f)
 {
 #if __TBB_MALLOC_LOCACHE_STAT
     if (first)
@@ -279,7 +583,7 @@ size_t LargeObjectCacheImpl<Props>::CacheBin::reportStat(int num, FILE *f)
 
 // release from cache blocks that are older than ageThreshold
 template<typename Props>
-bool LargeObjectCacheImpl<Props>::regularCleanup(Backend *backend, uintptr_t currTime, bool doThreshDecr)
+bool LargeObjectCacheImpl<Props>::regularCleanup(ExtMemoryPool *extMemPool, uintptr_t currTime, bool doThreshDecr)
 {
     bool released = false;
     BinsSummary binsSummary;
@@ -290,18 +594,18 @@ bool LargeObjectCacheImpl<Props>::regularCleanup(Backend *backend, uintptr_t cur
         if (!doThreshDecr && tooLargeLOC>2 && binsSummary.isLOCTooLarge()) {
             // if LOC is too large for quite long time, decrease the threshold
             // based on bin hit statistics.
-            // For this, redo cleanup from the beginnig.
+            // For this, redo cleanup from the beginning.
             // Note: on this iteration total usedSz can be not too large
             // in comparison to total cachedSz, as we calculated it only
-            // partially. We are ok this it.
-            i = bitMask.getMaxTrue(numBins-1);
+            // partially. We are ok with it.
+            i = bitMask.getMaxTrue(numBins-1)+1;
             doThreshDecr = true;
             binsSummary.reset();
             continue;
         }
         if (doThreshDecr)
             bin[i].decreaseThreshold();
-        if (bin[i].cleanToThreshold(backend, &bitMask, currTime, i))
+        if (bin[i].cleanToThreshold(extMemPool, &bitMask, currTime, i))
             released = true;
     }
 
@@ -316,11 +620,11 @@ bool LargeObjectCacheImpl<Props>::regularCleanup(Backend *backend, uintptr_t cur
 }
 
 template<typename Props>
-bool LargeObjectCacheImpl<Props>::cleanAll(Backend *backend)
+bool LargeObjectCacheImpl<Props>::cleanAll(ExtMemoryPool *extMemPool)
 {
     bool released = false;
     for (int i = numBins-1; i >= 0; i--)
-        released |= bin[i].cleanAll(backend, &bitMask, i);
+        released |= bin[i].releaseAllToBackend(extMemPool, &bitMask, i);
     return released;
 }
 
@@ -354,38 +658,20 @@ size_t LargeObjectCache::getUsedSize() const
 }
 #endif // __TBB_MALLOC_WHITEBOX_TEST
 
-uintptr_t LargeObjectCache::getCurrTime()
+inline bool LargeObjectCache::isCleanupNeededOnRange(uintptr_t range, uintptr_t currTime)
 {
-    return (uintptr_t)AtomicIncrement((intptr_t&)cacheCurrTime);
-}
-
-uintptr_t LargeObjectCache::getCurrTimeRange(uintptr_t range)
-{
-    return (uintptr_t)AtomicAdd((intptr_t&)cacheCurrTime, range)+1;
-}
-
-void LargeObjectCache::cleanupCacheIfNeeded(uintptr_t currTime)
-{
-    if ( 0 == currTime % cacheCleanupFreq )
-        doCleanup(currTime, /*doThreshDecr=*/false);
-}
-
-void LargeObjectCache::
-    cleanupCacheIfNeededOnRange(uintptr_t range, uintptr_t currTime)
-{
-    if (range >= cacheCleanupFreq
+    return range >= cacheCleanupFreq
         || currTime+range < currTime-1 // overflow, 0 is power of 2, do cleanup
         // (prev;prev+range] contains n*cacheCleanupFreq
-        || alignUp(currTime, cacheCleanupFreq)<=currTime+range)
-        doCleanup(currTime, /*doThreshDecr=*/false);
+        || alignUp(currTime, cacheCleanupFreq)<currTime+range;
 }
 
 bool LargeObjectCache::doCleanup(uintptr_t currTime, bool doThreshDecr)
 {
     if (!doThreshDecr)
         extMemPool->allLocalCaches.markUnused();
-    return largeCache.regularCleanup(&extMemPool->backend, currTime, doThreshDecr)
-        | hugeCache.regularCleanup(&extMemPool->backend, currTime, doThreshDecr);
+    return largeCache.regularCleanup(extMemPool, currTime, doThreshDecr)
+        | hugeCache.regularCleanup(extMemPool, currTime, doThreshDecr);
 }
 
 bool LargeObjectCache::decreasingCleanup()
@@ -398,23 +684,19 @@ bool LargeObjectCache::regularCleanup()
     return doCleanup(FencedLoad((intptr_t&)cacheCurrTime), /*doThreshDecr=*/false);
 }
 
-bool LargeObjectCache::cleanAll(Backend *backend)
+bool LargeObjectCache::cleanAll()
 {
-    return largeCache.cleanAll(backend) | hugeCache.cleanAll(backend);
+    return largeCache.cleanAll(extMemPool) | hugeCache.cleanAll(extMemPool);
 }
 
 template<typename Props>
-LargeMemoryBlock *LargeObjectCacheImpl<Props>::get(uintptr_t currTime, size_t size)
+LargeMemoryBlock *LargeObjectCacheImpl<Props>::get(ExtMemoryPool *extMemoryPool, size_t size)
 {
     MALLOC_ASSERT( size%Props::CacheStep==0, ASSERT_TEXT );
     int idx = sizeToIdx(size);
-    bool setNonEmpty = false;
 
-    LargeMemoryBlock *lmb = bin[idx].get(size, currTime, &setNonEmpty);
-    // Setting to true is possible out of lock. As bitmask is used only for cleanup,
-    // the lack of consistency is not violating correctness here.
-    if (setNonEmpty)
-        bitMask.set(idx, true);
+    LargeMemoryBlock *lmb = bin[idx].get(extMemoryPool, size, &bitMask, idx);
+
     if (lmb) {
         MALLOC_ITT_SYNC_ACQUIRED(bin+idx);
         STAT_increment(getThreadId(), ThreadCommonCounters, allocCachedLargeObj);
@@ -423,11 +705,11 @@ LargeMemoryBlock *LargeObjectCacheImpl<Props>::get(uintptr_t currTime, size_t si
 }
 
 template<typename Props>
-void LargeObjectCacheImpl<Props>::rollbackCacheState(size_t size)
+void LargeObjectCacheImpl<Props>::rollbackCacheState(ExtMemoryPool *extMemPool, size_t size)
 {
     int idx = sizeToIdx(size);
     MALLOC_ASSERT(idx<numBins, ASSERT_TEXT);
-    bin[idx].decrUsedSize(size, &bitMask, idx);
+    bin[idx].decrUsedSize(extMemPool, size, &bitMask, idx);
 }
 
 #if __TBB_MALLOC_LOCACHE_STAT
@@ -453,20 +735,18 @@ void LargeObjectCacheImpl<Props>::putList(ExtMemoryPool *extMemPool, LargeMemory
     int toBinIdx = sizeToIdx(toCache->unalignedSize);
 
     MALLOC_ITT_SYNC_RELEASING(bin+toBinIdx);
-    if (LargeMemoryBlock *release = bin[toBinIdx].putList(extMemPool, toCache,
-                                                          &bitMask, toBinIdx))
-        extMemPool->backend.returnLargeObject(release);
+    bin[toBinIdx].putList(extMemPool, toCache, &bitMask, toBinIdx);
 }
 
 void LargeObjectCache::rollbackCacheState(size_t size)
 {
     if (size < maxLargeSize)
-        largeCache.rollbackCacheState(size);
+        largeCache.rollbackCacheState(extMemPool, size);
     else if (size < maxHugeSize)
-        hugeCache.rollbackCacheState(size);
+        hugeCache.rollbackCacheState(extMemPool, size);
 }
 
-// return artifical bin index, it's used only during sorting and never saved
+// return artificial bin index, it's used only during sorting and never saved
 int LargeObjectCache::sizeToIdx(size_t size)
 {
     MALLOC_ASSERT(size < maxHugeSize, ASSERT_TEXT);
@@ -531,10 +811,8 @@ LargeMemoryBlock *LargeObjectCache::get(size_t size)
     MALLOC_ASSERT( size>=minLargeSize, ASSERT_TEXT );
 
     if ( size < maxHugeSize) {
-        uintptr_t currTime = getCurrTime();
-        cleanupCacheIfNeeded(currTime);
         return size < maxLargeSize?
-            largeCache.get(currTime, size) : hugeCache.get(currTime, size);
+            largeCache.get(extMemPool, size) : hugeCache.get(extMemPool, size);
     }
     return NULL;
 }
@@ -590,7 +868,7 @@ bool ExtMemoryPool::hardCachesCleanup()
     // thread-local caches must be cleaned before LOC,
     // because object from thread-local cache can be released to LOC
     bool ret = releaseAllLocalCaches();
-    ret |= loc.cleanAll(&backend);
+    ret |= loc.cleanAll();
     ret |= backend.clean();
     return ret;
 }
diff --git a/src/tbbmalloc/lin32-proxy-export.def b/src/tbbmalloc/lin32-proxy-export.def
index 7020261..01574ac 100644
--- a/src/tbbmalloc/lin32-proxy-export.def
+++ b/src/tbbmalloc/lin32-proxy-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -38,6 +30,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
+malloc_usable_size;
 __libc_malloc;
 __libc_realloc;
 __libc_calloc;
@@ -46,7 +39,6 @@ __libc_memalign;
 __libc_pvalloc;
 __libc_valloc;
 __TBB_malloc_proxy;
-__TBB_internal_find_original_malloc;
 _ZdaPv; /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
 _ZdlPv;
diff --git a/src/tbbmalloc/lin32-tbbmalloc-export.def b/src/tbbmalloc/lin32-tbbmalloc-export.def
index 3123327..ad8bc42 100644
--- a/src/tbbmalloc/lin32-tbbmalloc-export.def
+++ b/src/tbbmalloc/lin32-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -37,14 +29,14 @@ scalable_posix_memalign;
 scalable_aligned_malloc;
 scalable_aligned_realloc;
 scalable_aligned_free;
-__TBB_internal_calloc;
-__TBB_internal_free;
-__TBB_internal_malloc;
-__TBB_internal_realloc;
-__TBB_internal_posix_memalign;
 scalable_msize;
 scalable_allocation_mode;
 scalable_allocation_command;
+__TBB_malloc_safer_aligned_msize;
+__TBB_malloc_safer_aligned_realloc;
+__TBB_malloc_safer_free;
+__TBB_malloc_safer_msize;
+__TBB_malloc_safer_realloc;
 
 /* memory pool stuff */
 _ZN3rml10pool_resetEPNS_10MemoryPoolE;
diff --git a/src/tbbmalloc/lin64-proxy-export.def b/src/tbbmalloc/lin64-proxy-export.def
index 694e4a6..acbe8a2 100644
--- a/src/tbbmalloc/lin64-proxy-export.def
+++ b/src/tbbmalloc/lin64-proxy-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -38,6 +30,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
+malloc_usable_size;
 __libc_malloc;
 __libc_realloc;
 __libc_calloc;
@@ -46,7 +39,6 @@ __libc_memalign;
 __libc_pvalloc;
 __libc_valloc;
 __TBB_malloc_proxy;
-__TBB_internal_find_original_malloc;
 _ZdaPv;  /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
 _ZdlPv;
diff --git a/src/tbbmalloc/lin64-tbbmalloc-export.def b/src/tbbmalloc/lin64-tbbmalloc-export.def
index e0b019c..6108d08 100644
--- a/src/tbbmalloc/lin64-tbbmalloc-export.def
+++ b/src/tbbmalloc/lin64-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -37,14 +29,14 @@ scalable_posix_memalign;
 scalable_aligned_malloc;
 scalable_aligned_realloc;
 scalable_aligned_free;
-__TBB_internal_calloc;
-__TBB_internal_free;
-__TBB_internal_malloc;
-__TBB_internal_realloc;
-__TBB_internal_posix_memalign;
 scalable_msize;
 scalable_allocation_mode;
 scalable_allocation_command;
+__TBB_malloc_safer_aligned_msize;
+__TBB_malloc_safer_aligned_realloc;
+__TBB_malloc_safer_free;
+__TBB_malloc_safer_msize;
+__TBB_malloc_safer_realloc;
 
 /* memory pool stuff */
 _ZN3rml11pool_createElPKNS_13MemPoolPolicyE;
diff --git a/src/tbbmalloc/lin64ipf-proxy-export.def b/src/tbbmalloc/lin64ipf-proxy-export.def
index 694e4a6..acbe8a2 100644
--- a/src/tbbmalloc/lin64ipf-proxy-export.def
+++ b/src/tbbmalloc/lin64ipf-proxy-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -38,6 +30,7 @@ valloc;
 pvalloc;
 mallinfo;
 mallopt;
+malloc_usable_size;
 __libc_malloc;
 __libc_realloc;
 __libc_calloc;
@@ -46,7 +39,6 @@ __libc_memalign;
 __libc_pvalloc;
 __libc_valloc;
 __TBB_malloc_proxy;
-__TBB_internal_find_original_malloc;
 _ZdaPv;  /* next ones are new/delete */
 _ZdaPvRKSt9nothrow_t;
 _ZdlPv;
diff --git a/src/tbbmalloc/lin64ipf-tbbmalloc-export.def b/src/tbbmalloc/lin64ipf-tbbmalloc-export.def
index e0b019c..6108d08 100644
--- a/src/tbbmalloc/lin64ipf-tbbmalloc-export.def
+++ b/src/tbbmalloc/lin64ipf-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -37,14 +29,14 @@ scalable_posix_memalign;
 scalable_aligned_malloc;
 scalable_aligned_realloc;
 scalable_aligned_free;
-__TBB_internal_calloc;
-__TBB_internal_free;
-__TBB_internal_malloc;
-__TBB_internal_realloc;
-__TBB_internal_posix_memalign;
 scalable_msize;
 scalable_allocation_mode;
 scalable_allocation_command;
+__TBB_malloc_safer_aligned_msize;
+__TBB_malloc_safer_aligned_realloc;
+__TBB_malloc_safer_free;
+__TBB_malloc_safer_msize;
+__TBB_malloc_safer_realloc;
 
 /* memory pool stuff */
 _ZN3rml11pool_createElPKNS_13MemPoolPolicyE;
diff --git a/src/tbbmalloc/mac32-tbbmalloc-export.def b/src/tbbmalloc/mac32-tbbmalloc-export.def
index b00ac4e..3b16313 100644
--- a/src/tbbmalloc/mac32-tbbmalloc-export.def
+++ b/src/tbbmalloc/mac32-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 _scalable_calloc
@@ -37,6 +29,12 @@ _scalable_aligned_free
 _scalable_msize
 _scalable_allocation_mode
 _scalable_allocation_command
+___TBB_malloc_safer_aligned_msize
+___TBB_malloc_safer_aligned_realloc
+___TBB_malloc_safer_free
+___TBB_malloc_safer_msize
+___TBB_malloc_safer_realloc
+___TBB_malloc_free_definite_size
 /* memory pool stuff */
 __ZN3rml11pool_createElPKNS_13MemPoolPolicyE
 __ZN3rml14pool_create_v1ElPKNS_13MemPoolPolicyEPPNS_10MemoryPoolE
diff --git a/src/tbbmalloc/mac64-tbbmalloc-export.def b/src/tbbmalloc/mac64-tbbmalloc-export.def
index b00ac4e..3b16313 100644
--- a/src/tbbmalloc/mac64-tbbmalloc-export.def
+++ b/src/tbbmalloc/mac64-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 _scalable_calloc
@@ -37,6 +29,12 @@ _scalable_aligned_free
 _scalable_msize
 _scalable_allocation_mode
 _scalable_allocation_command
+___TBB_malloc_safer_aligned_msize
+___TBB_malloc_safer_aligned_realloc
+___TBB_malloc_safer_free
+___TBB_malloc_safer_msize
+___TBB_malloc_safer_realloc
+___TBB_malloc_free_definite_size
 /* memory pool stuff */
 __ZN3rml11pool_createElPKNS_13MemPoolPolicyE
 __ZN3rml14pool_create_v1ElPKNS_13MemPoolPolicyEPPNS_10MemoryPoolE
diff --git a/src/tbbmalloc/proxy.cpp b/src/tbbmalloc/proxy.cpp
index 7382c2e..c2fbc7f 100644
--- a/src/tbbmalloc/proxy.cpp
+++ b/src/tbbmalloc/proxy.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "proxy.h"
@@ -39,12 +31,16 @@
     #define TBB_USE_EXCEPTIONS 1
 #endif
 
-#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
+#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED
+
+#ifndef __THROW
+#define __THROW
+#endif
 
 /*** service functions and variables ***/
 
+#include <string.h> // for memset
 #include <unistd.h> // for sysconf
-#include <dlfcn.h>
 
 static long memoryPageSize;
 
@@ -53,83 +49,133 @@ static inline void initPageSize()
     memoryPageSize = sysconf(_SC_PAGESIZE);
 }
 
-/* For the expected behaviour (i.e., finding malloc/free/etc from libc.so,
-   not from ld-linux.so) dlsym(RTLD_NEXT) should be called from
-   a LD_PRELOADed library, not another dynamic library.
-   So we have to put find_original_malloc here.
- */
-extern "C" bool __TBB_internal_find_original_malloc(int num, const char *names[],
-                                                        void *ptrs[])
-{
-    for (int i=0; i<num; i++)
-        if (NULL == (ptrs[i] = dlsym (RTLD_NEXT, names[i])))
-            return false;
-
-    return true;
-}
+#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
+#include "Customize.h" // FencedStore
+#include <dlfcn.h>
+#include <malloc.h>    // mallinfo
 
 /* __TBB_malloc_proxy used as a weak symbol by libtbbmalloc for:
    1) detection that the proxy library is loaded
    2) check that dlsym("malloc") found something different from our replacement malloc
 */
-extern "C" void *__TBB_malloc_proxy() __attribute__ ((alias ("malloc")));
+extern "C" void *__TBB_malloc_proxy(size_t) __attribute__ ((alias ("malloc")));
 
-#ifndef __THROW
-#define __THROW
-#endif
+static void *orig_msize;
 
-/*** replacements for malloc and the family ***/
+#elif MALLOC_ZONE_OVERLOAD_ENABLED
 
-extern "C" {
+#include "proxy_overload_osx.h"
+
+#endif // MALLOC_ZONE_OVERLOAD_ENABLED
+
+// Original (i.e., replaced) functions,
+// they are never changed for MALLOC_ZONE_OVERLOAD_ENABLED.
+static void *orig_free,
+    *orig_realloc;
+
+#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
+#define ZONE_ARG
+#define PREFIX(name) name
+
+static void *orig_libc_free,
+    *orig_libc_realloc;
+
+// We already tried to find ptr to original functions.
+static intptr_t origFuncSearched;
 
-void *malloc(size_t size) __THROW
+inline void InitOrigPointers()
 {
-    return __TBB_internal_malloc(size);
+    // race is OK here, as different threads found same functions
+    if (!origFuncSearched) {
+        orig_free = dlsym(RTLD_NEXT, "free");
+        orig_realloc = dlsym(RTLD_NEXT, "realloc");
+        orig_msize = dlsym(RTLD_NEXT, "malloc_usable_size");
+        orig_libc_free = dlsym(RTLD_NEXT, "__libc_free");
+        orig_libc_realloc = dlsym(RTLD_NEXT, "__libc_realloc");
+
+        FencedStore(origFuncSearched, 1);
+    }
 }
 
-void * calloc(size_t num, size_t size) __THROW
+/*** replacements for malloc and the family ***/
+extern "C" {
+#elif MALLOC_ZONE_OVERLOAD_ENABLED
+
+// each impl_* function has such 1st argument, it's unused
+#define ZONE_ARG struct _malloc_zone_t *,
+#define PREFIX(name) impl_##name
+// not interested in original functions for zone overload
+inline void InitOrigPointers() {}
+
+#endif // MALLOC_UNIXLIKE_OVERLOAD_ENABLED and MALLOC_ZONE_OVERLOAD_ENABLED
+
+void *PREFIX(malloc)(ZONE_ARG size_t size) __THROW
 {
-    return __TBB_internal_calloc(num, size);
+    return scalable_malloc(size);
 }
 
-void free(void *object) __THROW
+void *PREFIX(calloc)(ZONE_ARG size_t num, size_t size) __THROW
 {
-    __TBB_internal_free(object);
+    return scalable_calloc(num, size);
 }
 
-void * realloc(void* ptr, size_t sz) __THROW
+void PREFIX(free)(ZONE_ARG void *object) __THROW
 {
-    return __TBB_internal_realloc(ptr, sz);
+    InitOrigPointers();
+    __TBB_malloc_safer_free(object, (void (*)(void*))orig_free);
 }
 
-int posix_memalign(void **memptr, size_t alignment, size_t size) __THROW
+void *PREFIX(realloc)(ZONE_ARG void* ptr, size_t sz) __THROW
 {
-    return __TBB_internal_posix_memalign(memptr, alignment, size);
+    InitOrigPointers();
+    return __TBB_malloc_safer_realloc(ptr, sz, orig_realloc);
 }
 
 /* The older *NIX interface for aligned allocations;
    it's formally substituted by posix_memalign and deprecated,
    so we do not expect it to cause cyclic dependency with C RTL. */
-void * memalign(size_t alignment, size_t size)  __THROW
+void *PREFIX(memalign)(ZONE_ARG size_t alignment, size_t size) __THROW
 {
     return scalable_aligned_malloc(size, alignment);
 }
 
 /* valloc allocates memory aligned on a page boundary */
-void * valloc(size_t size) __THROW
+void *PREFIX(valloc)(ZONE_ARG size_t size) __THROW
 {
     if (! memoryPageSize) initPageSize();
 
     return scalable_aligned_malloc(size, memoryPageSize);
 }
 
+#undef ZONE_ARG
+#undef PREFIX
+
+#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
+
+// match prototype from system headers
+#if __ANDROID__
+size_t malloc_usable_size(const void *ptr) __THROW
+#else
+size_t malloc_usable_size(void *ptr) __THROW
+#endif
+{
+    InitOrigPointers();
+    return __TBB_malloc_safer_msize(const_cast<void*>(ptr), (size_t (*)(void*))orig_msize);
+}
+
+int posix_memalign(void **memptr, size_t alignment, size_t size) __THROW
+{
+    return scalable_posix_memalign(memptr, alignment, size);
+}
+
 /* pvalloc allocates smallest set of complete pages which can hold
    the requested number of bytes. Result is aligned on page boundary. */
-void * pvalloc(size_t size) __THROW
+void *pvalloc(size_t size) __THROW
 {
     if (! memoryPageSize) initPageSize();
-    // align size up to the page size
-    size = ((size-1) | (memoryPageSize-1)) + 1;
+    // align size up to the page size,
+    // pvalloc(0) returns 1 page, see man libmpatrol
+    size = size? ((size-1) | (memoryPageSize-1)) + 1 : memoryPageSize;
 
     return scalable_aligned_malloc(size, memoryPageSize);
 }
@@ -139,34 +185,45 @@ int mallopt(int /*param*/, int /*value*/) __THROW
     return 1;
 }
 
-#if !__ANDROID__
-// Those non-standart functions are exported by GLIBC, and might be used
-// in conjunction with standart malloc/free, so we must ovberload them.
+struct mallinfo mallinfo() __THROW
+{
+    struct mallinfo m;
+    memset(&m, 0, sizeof(struct mallinfo));
+
+    return m;
+}
+
+#if __ANDROID__
+// Android doesn't have malloc_usable_size, provide it to be compatible
+// with Linux, in addition overload dlmalloc_usable_size() that presented
+// under Android.
+size_t dlmalloc_usable_size(const void *ptr) __attribute__ ((alias ("malloc_usable_size")));
+#else // __ANDROID__
+// Those non-standard functions are exported by GLIBC, and might be used
+// in conjunction with standard malloc/free, so we must ovberload them.
 // Bionic doesn't have them. Not removing from the linker scripts,
 // as absent entry points are ignored by the linker.
 void *__libc_malloc(size_t size) __attribute__ ((alias ("malloc")));
-void *__libc_realloc(void *ptr, size_t size) __attribute__ ((alias ("realloc")));
 void *__libc_calloc(size_t num, size_t size) __attribute__ ((alias ("calloc")));
-void __libc_free(void *ptr) __attribute__ ((alias ("free")));
 void *__libc_memalign(size_t alignment, size_t size) __attribute__ ((alias ("memalign")));
 void *__libc_pvalloc(size_t size) __attribute__ ((alias ("pvalloc")));
 void *__libc_valloc(size_t size) __attribute__ ((alias ("valloc")));
-#endif
 
-} /* extern "C" */
-
-#if __linux__
-#include <malloc.h>
-#include <string.h> // for memset
-
-extern "C" struct mallinfo mallinfo() __THROW
+// call original __libc_* to support naive replacement of free via __libc_free etc
+void __libc_free(void *ptr)
 {
-    struct mallinfo m;
-    memset(&m, 0, sizeof(struct mallinfo));
+    InitOrigPointers();
+    __TBB_malloc_safer_free(ptr, (void (*)(void*))orig_libc_free);
+}
 
-    return m;
+void *__libc_realloc(void *ptr, size_t size)
+{
+    InitOrigPointers();
+    return __TBB_malloc_safer_realloc(ptr, size, orig_libc_realloc);
 }
-#endif /* __linux__ */
+#endif // !__ANDROID__
+
+} /* extern "C" */
 
 /*** replacements for global operators new and delete ***/
 
@@ -189,10 +246,12 @@ void* operator new[](size_t sz) throw (std::bad_alloc) {
     return res;
 }
 void operator delete(void* ptr) throw() {
-    scalable_free(ptr);
+    InitOrigPointers();
+    __TBB_malloc_safer_free(ptr, (void (*)(void*))orig_free);
 }
 void operator delete[](void* ptr) throw() {
-    scalable_free(ptr);
+    InitOrigPointers();
+    __TBB_malloc_safer_free(ptr, (void (*)(void*))orig_free);
 }
 void* operator new(size_t sz, const std::nothrow_t&) throw() {
     return scalable_malloc(sz);
@@ -201,13 +260,16 @@ void* operator new[](std::size_t sz, const std::nothrow_t&) throw() {
     return scalable_malloc(sz);
 }
 void operator delete(void* ptr, const std::nothrow_t&) throw() {
-    scalable_free(ptr);
+    InitOrigPointers();
+    __TBB_malloc_safer_free(ptr, (void (*)(void*))orig_free);
 }
 void operator delete[](void* ptr, const std::nothrow_t&) throw() {
-    scalable_free(ptr);
+    InitOrigPointers();
+    __TBB_malloc_safer_free(ptr, (void (*)(void*))orig_free);
 }
 
 #endif /* MALLOC_UNIXLIKE_OVERLOAD_ENABLED */
+#endif /* MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED */
 
 
 #ifdef _WIN32
@@ -217,10 +279,11 @@ void operator delete[](void* ptr, const std::nothrow_t&) throw() {
 
 #include <stdio.h>
 #include "tbb_function_replacement.h"
+#include "shared_utils.h"
 
-void safer_scalable_free2( void *ptr)
+void __TBB_malloc_safer_delete( void *ptr)
 {
-    safer_scalable_free( ptr, NULL );
+    __TBB_malloc_safer_free( ptr, NULL );
 }
 
 void* safer_aligned_malloc( size_t size, size_t alignment )
@@ -235,35 +298,35 @@ void* safer_expand( void *, size_t )
     return NULL;
 }
 
-#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(CRTLIB)                                        \
-void (*orig_free_##CRTLIB)(void*);                                                              \
-void safer_scalable_free_##CRTLIB(void *ptr)                                                    \
-{                                                                                               \
-    safer_scalable_free( ptr, orig_free_##CRTLIB );                                             \
-}                                                                                               \
-                                                                                                \
-size_t (*orig_msize_##CRTLIB)(void*);                                                           \
-size_t safer_scalable_msize_##CRTLIB(void *ptr)                                                 \
-{                                                                                               \
-    return safer_scalable_msize( ptr, orig_msize_##CRTLIB );                                    \
-}                                                                                               \
-                                                                                                \
-size_t (*orig_aligned_msize_##CRTLIB)(void*, size_t, size_t);                                   \
-size_t safer_scalable_aligned_msize_##CRTLIB( void *ptr, size_t alignment, size_t offset)       \
-{                                                                                               \
-    return safer_scalable_aligned_msize( ptr, alignment, offset, orig_aligned_msize_##CRTLIB ); \
-}                                                                                               \
-                                                                                                \
-void* safer_scalable_realloc_##CRTLIB( void *ptr, size_t size )                                 \
-{                                                                                               \
-    orig_ptrs func_ptrs = {orig_free_##CRTLIB, orig_msize_##CRTLIB};                            \
-    return safer_scalable_realloc( ptr, size, &func_ptrs );                                     \
-}                                                                                               \
-                                                                                                \
-void* safer_scalable_aligned_realloc_##CRTLIB( void *ptr, size_t size, size_t aligment )        \
-{                                                                                               \
-    orig_ptrs func_ptrs = {orig_free_##CRTLIB, orig_msize_##CRTLIB};                            \
-    return safer_scalable_aligned_realloc( ptr, size, aligment, &func_ptrs );                   \
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(CRTLIB)                                             \
+void (*orig_free_##CRTLIB)(void*);                                                                   \
+void __TBB_malloc_safer_free_##CRTLIB(void *ptr)                                                     \
+{                                                                                                    \
+    __TBB_malloc_safer_free( ptr, orig_free_##CRTLIB );                                              \
+}                                                                                                    \
+                                                                                                     \
+size_t (*orig__msize_##CRTLIB)(void*);                                                               \
+size_t __TBB_malloc_safer__msize_##CRTLIB(void *ptr)                                                 \
+{                                                                                                    \
+    return __TBB_malloc_safer_msize( ptr, orig__msize_##CRTLIB );                                    \
+}                                                                                                    \
+                                                                                                     \
+size_t (*orig__aligned_msize_##CRTLIB)(void*, size_t, size_t);                                       \
+size_t __TBB_malloc_safer__aligned_msize_##CRTLIB( void *ptr, size_t alignment, size_t offset)       \
+{                                                                                                    \
+    return __TBB_malloc_safer_aligned_msize( ptr, alignment, offset, orig__aligned_msize_##CRTLIB ); \
+}                                                                                                    \
+                                                                                                     \
+void* __TBB_malloc_safer_realloc_##CRTLIB( void *ptr, size_t size )                                  \
+{                                                                                                    \
+    orig_ptrs func_ptrs = {orig_free_##CRTLIB, orig__msize_##CRTLIB};                                \
+    return __TBB_malloc_safer_realloc( ptr, size, &func_ptrs );                                      \
+}                                                                                                    \
+                                                                                                     \
+void* __TBB_malloc_safer__aligned_realloc_##CRTLIB( void *ptr, size_t size, size_t aligment )        \
+{                                                                                                    \
+    orig_ptrs func_ptrs = {orig_free_##CRTLIB, orig__msize_##CRTLIB};                                \
+    return __TBB_malloc_safer_aligned_realloc( ptr, size, aligment, &func_ptrs );                    \
 }
 
 // limit is 30 bytes/60 symbols per line
@@ -291,35 +354,30 @@ const char* known_bytecodes[] = {
     NULL
     };
 
-#if _WIN64
-#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(CRT_VER)\
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "free",  (FUNCPTR)safer_scalable_free_ ## CRT_VER ## d,  known_bytecodes, (FUNCPTR*)&orig_free_ ## CRT_VER ## d );  \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "free",  (FUNCPTR)safer_scalable_free_ ## CRT_VER,       known_bytecodes, (FUNCPTR*)&orig_free_ ## CRT_VER );       \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_msize",(FUNCPTR)safer_scalable_msize_ ## CRT_VER ## d, known_bytecodes, (FUNCPTR*)&orig_msize_ ## CRT_VER ## d ); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_msize",(FUNCPTR)safer_scalable_msize_ ## CRT_VER,      known_bytecodes, (FUNCPTR*)&orig_msize_ ## CRT_VER );      \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "realloc",         (FUNCPTR)safer_scalable_realloc_ ## CRT_VER ## d,         0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "realloc",         (FUNCPTR)safer_scalable_realloc_ ## CRT_VER,              0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_free",   (FUNCPTR)safer_scalable_free_ ## CRT_VER ## d,            0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_free",   (FUNCPTR)safer_scalable_free_ ## CRT_VER,                 0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_realloc",(FUNCPTR)safer_scalable_aligned_realloc_ ## CRT_VER ## d, 0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_realloc",(FUNCPTR)safer_scalable_aligned_realloc_ ## CRT_VER,      0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_msize",(FUNCPTR)safer_scalable_aligned_msize_ ## CRT_VER ## d, known_bytecodes, (FUNCPTR*)&orig_aligned_msize_ ## CRT_VER ## d ); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_msize",(FUNCPTR)safer_scalable_aligned_msize_ ## CRT_VER,      known_bytecodes, (FUNCPTR*)&orig_aligned_msize_ ## CRT_VER );
-#else
-#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(CRT_VER)\
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "free",  (FUNCPTR)safer_scalable_free_ ## CRT_VER ## d,  known_bytecodes, (FUNCPTR*)&orig_free_ ## CRT_VER ## d );  \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "free",  (FUNCPTR)safer_scalable_free_ ## CRT_VER,       known_bytecodes, (FUNCPTR*)&orig_free_ ## CRT_VER );       \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_msize",(FUNCPTR)safer_scalable_msize_ ## CRT_VER ## d, known_bytecodes, (FUNCPTR*)&orig_msize_ ## CRT_VER ## d ); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_msize",(FUNCPTR)safer_scalable_msize_ ## CRT_VER,      known_bytecodes, (FUNCPTR*)&orig_msize_ ## CRT_VER );      \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "realloc",         (FUNCPTR)safer_scalable_realloc_ ## CRT_VER ## d,         0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "realloc",         (FUNCPTR)safer_scalable_realloc_ ## CRT_VER,              0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_free",   (FUNCPTR)safer_scalable_free_ ## CRT_VER ## d,            0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_free",   (FUNCPTR)safer_scalable_free_ ## CRT_VER,                 0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_realloc",(FUNCPTR)safer_scalable_aligned_realloc_ ## CRT_VER ## d, 0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_realloc",(FUNCPTR)safer_scalable_aligned_realloc_ ## CRT_VER,      0, NULL); \
-    ReplaceFunctionWithStore( #CRT_VER "d.dll", "_aligned_msize",(FUNCPTR)safer_scalable_aligned_msize_ ## CRT_VER ## d, known_bytecodes, (FUNCPTR*)&orig_aligned_msize_ ## CRT_VER ## d ); \
-    ReplaceFunctionWithStore( #CRT_VER  ".dll", "_aligned_msize",(FUNCPTR)safer_scalable_aligned_msize_ ## CRT_VER,      known_bytecodes, (FUNCPTR*)&orig_aligned_msize_ ## CRT_VER );
-#endif
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY(CRT_VER,function_name,dbg_modifier)                                                                         \
+    ReplaceFunctionWithStore( #CRT_VER #dbg_modifier ".dll", #function_name, (FUNCPTR)__TBB_malloc_safer_##function_name##_##CRT_VER##dbg_modifier, known_bytecodes, (FUNCPTR*)&orig_##function_name##_##CRT_VER##dbg_modifier );
+
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY_NO_FALLBACK(CRT_VER,function_name,dbg_modifier)                                                             \
+    ReplaceFunctionWithStore( #CRT_VER #dbg_modifier ".dll", #function_name, (FUNCPTR)__TBB_malloc_safer_##function_name##_##CRT_VER##dbg_modifier, 0, NULL );
+
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY_REDIRECT(CRT_VER,function_name,dest_func,dbg_modifier)                                                      \
+    ReplaceFunctionWithStore( #CRT_VER #dbg_modifier ".dll", #function_name, (FUNCPTR)__TBB_malloc_safer_##dest_func##_##CRT_VER##dbg_modifier, 0, NULL );
+
+
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_IMPL(CRT_VER,dbg_modifier)                           \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY(CRT_VER,free,dbg_modifier)                         \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY(CRT_VER,_msize,dbg_modifier)                       \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY_NO_FALLBACK(CRT_VER,realloc,dbg_modifier)          \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY_REDIRECT(CRT_VER,_aligned_free,free,dbg_modifier)  \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY_NO_FALLBACK(CRT_VER,_aligned_realloc,dbg_modifier) \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_ENTRY(CRT_VER,_aligned_msize,dbg_modifier)
+
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_RELEASE(CRT_VER) __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_IMPL(CRT_VER,)
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_DEBUG(CRT_VER) __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_IMPL(CRT_VER,d)
+
+#define __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(CRT_VER)     \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_RELEASE(CRT_VER) \
+    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_DEBUG(CRT_VER)
 
 __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr70d);
 __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr70);
@@ -335,6 +393,7 @@ __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr110d);
 __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr110);
 __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr120d);
 __TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(msvcr120);
+__TBB_ORIG_ALLOCATOR_REPLACEMENT_WRAPPER(ucrtbase);
 
 
 /*** replacements for global operators new and delete ***/
@@ -357,14 +416,14 @@ void* operator_new_arr(size_t sz) throw (std::bad_alloc) {
     return res;
 }
 void operator_delete(void* ptr) throw() {
-    safer_scalable_free2(ptr);
+    __TBB_malloc_safer_delete(ptr);
 }
 #if _MSC_VER && !defined(__INTEL_COMPILER)
 #pragma warning( pop )
 #endif
 
 void operator_delete_arr(void* ptr) throw() {
-    safer_scalable_free2(ptr);
+    __TBB_malloc_safer_delete(ptr);
 }
 void* operator_new_t(size_t sz, const std::nothrow_t&) throw() {
     return scalable_malloc(sz);
@@ -373,10 +432,10 @@ void* operator_new_arr_t(std::size_t sz, const std::nothrow_t&) throw() {
     return scalable_malloc(sz);
 }
 void operator_delete_t(void* ptr, const std::nothrow_t&) throw() {
-    safer_scalable_free2(ptr);
+    __TBB_malloc_safer_delete(ptr);
 }
 void operator_delete_arr_t(void* ptr, const std::nothrow_t&) throw() {
-    safer_scalable_free2(ptr);
+    __TBB_malloc_safer_delete(ptr);
 }
 
 const char* modules_to_replace[] = {
@@ -390,10 +449,16 @@ const char* modules_to_replace[] = {
     "msvcr110.dll",
     "msvcr120d.dll",
     "msvcr120.dll",
+//    "ucrtbase.dll",
     "msvcr70d.dll",
     "msvcr70.dll",
     "msvcr71d.dll",
     "msvcr71.dll",
+#if __TBB_TODO
+    // TODO: Try enabling replacement for non-versioned system binaries below
+    "msvcrtd.dll",
+    "msvcrt.dll",
+#endif
     };
 
 /*
@@ -428,11 +493,14 @@ typedef struct FRData_t {
     FRR_ON_ERROR _on_error;
 } FRDATA;
 
-FRDATA routines_to_replace[] = {
+FRDATA c_routines_to_replace[] = {
     { "malloc",  (FUNCPTR)scalable_malloc, FRR_FAIL },
     { "calloc",  (FUNCPTR)scalable_calloc, FRR_FAIL },
     { "_aligned_malloc",  (FUNCPTR)safer_aligned_malloc, FRR_FAIL },
     { "_expand",  (FUNCPTR)safer_expand, FRR_IGNORE },
+};
+
+FRDATA cxx_routines_to_replace[] = {
 #if _WIN64
     { "??2 at YAPEAX_K@Z", (FUNCPTR)operator_new, FRR_FAIL },
     { "??_U at YAPEAX_K@Z", (FUNCPTR)operator_new_arr, FRR_FAIL },
@@ -449,14 +517,16 @@ FRDATA routines_to_replace[] = {
 };
 
 #ifndef UNICODE
-void ReplaceFunctionWithStore( const char*dllName, const char *funcName, FUNCPTR newFunc, const char ** opcodes, FUNCPTR* origFunc )
+typedef char unicode_char_t;
 #else
-void ReplaceFunctionWithStore( const wchar_t *dllName, const char *funcName, FUNCPTR newFunc, const char ** opcodes, FUNCPTR* origFunc )
+typedef wchar_t unicode_char_t;
 #endif
+
+void ReplaceFunctionWithStore( const unicode_char_t *dllName, const char *funcName, FUNCPTR newFunc, const char ** opcodes, FUNCPTR* origFunc,  FRR_ON_ERROR on_error = FRR_FAIL )
 {
     FRR_TYPE type = ReplaceFunction( dllName, funcName, newFunc, opcodes, origFunc );
     if (type == FRR_NODLL) return;
-    if ( type != FRR_OK )
+    if (type != FRR_OK && on_error == FRR_FAIL)
     {
         fprintf(stderr, "Failed to replace function %s in module %s\n",
                 funcName, dllName);
@@ -466,8 +536,6 @@ void ReplaceFunctionWithStore( const wchar_t *dllName, const char *funcName, FUN
 
 void doMallocReplacement()
 {
-    int i,j;
-
     // Replace functions and keep backup of original code (separate for each runtime)
     __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(msvcr70)
     __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(msvcr71)
@@ -476,30 +544,32 @@ void doMallocReplacement()
     __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(msvcr100)
     __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(msvcr110)
     __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL(msvcr120)
+//    __TBB_ORIG_ALLOCATOR_REPLACEMENT_CALL_RELEASE(ucrtbase)
 
     // Replace functions without storing original code
-    int modules_to_replace_count = sizeof(modules_to_replace) / sizeof(modules_to_replace[0]);
-    int routines_to_replace_count = sizeof(routines_to_replace) / sizeof(routines_to_replace[0]);
-    for ( j=0; j<modules_to_replace_count; j++ )
-        for (i = 0; i < routines_to_replace_count; i++)
+    for (size_t j = 0; j < arrayLength(modules_to_replace); j++) {
+        for (size_t i = 0; i < arrayLength(c_routines_to_replace); i++)
+        {
+            ReplaceFunctionWithStore( modules_to_replace[j], c_routines_to_replace[i]._func, c_routines_to_replace[i]._fptr, NULL, NULL,  c_routines_to_replace[i]._on_error );
+        }
+        // in in Microsoft* Visual Studio* 2015 new runtime library does not export operator new/delete anymore.
+        if ( strcmp(modules_to_replace[j], "ucrtbase.dll") == 0 ){
+            continue;
+        }
+
+        for (size_t i = 0; i < arrayLength(cxx_routines_to_replace); i++)
         {
 #if !_WIN64
             // in Microsoft* Visual Studio* 2012 and 2013 32-bit operator delete consists of 2 bytes only: short jump to free(ptr);
             // replacement should be skipped for this particular case.
-            if ( ((strcmp(modules_to_replace[j], "msvcr110.dll") == 0) || (strcmp(modules_to_replace[j], "msvcr120.dll") == 0)) && (strcmp(routines_to_replace[i]._func, "??3 at YAXPAX@Z") == 0)) continue;
+            if ( ((strcmp(modules_to_replace[j], "msvcr110.dll") == 0) || (strcmp(modules_to_replace[j], "msvcr120.dll") == 0)) && (strcmp(cxx_routines_to_replace[i]._func, "??3 at YAXPAX@Z") == 0) ) continue;
             // in Microsoft* Visual Studio* 2013 32-bit operator delete[] consists of 2 bytes only: short jump to free(ptr);
             // replacement should be skipped for this particular case.
-            if ((strcmp(modules_to_replace[j], "msvcr120.dll") == 0) && (strcmp(routines_to_replace[i]._func, "??_V at YAXPAX@Z") == 0)) continue;
+            if ( (strcmp(modules_to_replace[j], "msvcr120.dll") == 0) && (strcmp(cxx_routines_to_replace[i]._func, "??_V at YAXPAX@Z") == 0) ) continue;
 #endif
-            FRR_TYPE type = ReplaceFunction( modules_to_replace[j], routines_to_replace[i]._func, routines_to_replace[i]._fptr, NULL, NULL );
-            if (type == FRR_NODLL) break;
-            if (type != FRR_OK && routines_to_replace[i]._on_error==FRR_FAIL)
-            {
-                fprintf(stderr, "Failed to replace function %s in module %s\n",
-                        routines_to_replace[i]._func, modules_to_replace[j]);
-                exit(1);
-            }
+            ReplaceFunctionWithStore( modules_to_replace[j], cxx_routines_to_replace[i]._func, cxx_routines_to_replace[i]._fptr, NULL, NULL,  cxx_routines_to_replace[i]._on_error );
         }
+    }
 }
 
 #endif // !__TBB_WIN8UI_SUPPORT
diff --git a/src/tbbmalloc/proxy.h b/src/tbbmalloc/proxy.h
index 2eb110a..781cadc 100644
--- a/src/tbbmalloc/proxy.h
+++ b/src/tbbmalloc/proxy.h
@@ -1,39 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef _TBB_malloc_proxy_H_
 #define _TBB_malloc_proxy_H_
 
-#if __linux__
-#define MALLOC_UNIXLIKE_OVERLOAD_ENABLED 1
-#endif
+#define MALLOC_UNIXLIKE_OVERLOAD_ENABLED __linux__
+#define MALLOC_ZONE_OVERLOAD_ENABLED __APPLE__
 
 // MALLOC_UNIXLIKE_OVERLOAD_ENABLED depends on MALLOC_CHECK_RECURSION stuff
+// TODO: limit MALLOC_CHECK_RECURSION to *_OVERLOAD_ENABLED only
 #if __linux__ || __APPLE__ || __sun || __FreeBSD__ || MALLOC_UNIXLIKE_OVERLOAD_ENABLED
 #define MALLOC_CHECK_RECURSION 1
 #endif
@@ -49,19 +41,15 @@ extern "C" {
     void * scalable_aligned_realloc(void* ptr, size_t size, size_t alignment);
     int    scalable_posix_memalign(void **memptr, size_t alignment, size_t size);
     size_t scalable_msize(void *ptr);
-    void   safer_scalable_free( void *ptr, void (*original_free)(void*));
-    void * safer_scalable_realloc( void *ptr, size_t, void* );
-    void * safer_scalable_aligned_realloc( void *ptr, size_t, size_t, void* );
-    size_t safer_scalable_msize( void *ptr, size_t (*orig_msize_crt80d)(void*));
-    size_t safer_scalable_aligned_msize( void *ptr, size_t, size_t, size_t (*orig_msize_crt80d)(void*,size_t,size_t));
-
-    void * __TBB_internal_malloc(size_t size);
-    void * __TBB_internal_calloc(size_t num, size_t size);
-    void   __TBB_internal_free(void *ptr);
-    void * __TBB_internal_realloc(void* ptr, size_t sz);
-    int    __TBB_internal_posix_memalign(void **memptr, size_t alignment, size_t size);
-    
-    bool   __TBB_internal_find_original_malloc(int num, const char *names[], void *table[]);
+    void   __TBB_malloc_safer_free( void *ptr, void (*original_free)(void*));
+    void * __TBB_malloc_safer_realloc( void *ptr, size_t, void* );
+    void * __TBB_malloc_safer_aligned_realloc( void *ptr, size_t, size_t, void* );
+    size_t __TBB_malloc_safer_msize( void *ptr, size_t (*orig_msize_crt80d)(void*));
+    size_t __TBB_malloc_safer_aligned_msize( void *ptr, size_t, size_t, size_t (*orig_msize_crt80d)(void*,size_t,size_t));
+
+#if MALLOC_ZONE_OVERLOAD_ENABLED
+    void   __TBB_malloc_free_definite_size(void *object, size_t size);
+#endif
 } // extern "C"
 
 // Struct with original free() and _msize() pointers
diff --git a/src/tbbmalloc/proxy_overload_osx.h b/src/tbbmalloc/proxy_overload_osx.h
new file mode 100644
index 0000000..d4f828a
--- /dev/null
+++ b/src/tbbmalloc/proxy_overload_osx.h
@@ -0,0 +1,169 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+// The original source for this code is
+// Copyright (c) 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <AvailabilityMacros.h>
+#include <malloc/malloc.h>
+
+static kern_return_t enumerator(task_t, void *, unsigned, vm_address_t,
+                                memory_reader_t, vm_range_recorder_t)
+{
+    return KERN_FAILURE;
+}
+
+static size_t good_size(malloc_zone_t *, size_t size)
+{
+    return size;
+}
+
+static boolean_t zone_check(malloc_zone_t *) /* Consistency checker */
+{
+    return true;
+}
+
+static void zone_print(malloc_zone_t *, boolean_t) { }
+static void zone_log(malloc_zone_t *, void *) {}
+static void zone_force_lock(malloc_zone_t *) {}
+static void zone_force_unlock(malloc_zone_t *) {}
+
+static void zone_statistics(malloc_zone_t *, malloc_statistics_t *s)
+{
+    s->blocks_in_use = 0;
+    s->size_in_use = s->max_size_in_use = s->size_allocated = 0;
+}
+
+static boolean_t zone_locked(malloc_zone_t *)
+{
+    return false;
+}
+
+static boolean_t impl_zone_enable_discharge_checking(malloc_zone_t *)
+{
+    return false;
+}
+
+static void impl_zone_disable_discharge_checking(malloc_zone_t *) {}
+static void impl_zone_discharge(malloc_zone_t *, void *) {}
+static void impl_zone_destroy(struct _malloc_zone_t *) {}
+
+/* note: impl_malloc_usable_size() is called for each free() call, so it must be fast */
+static size_t impl_malloc_usable_size(struct _malloc_zone_t *, const void *ptr)
+{
+    // malloc_usable_size() is used by OS X to recognize which memory manager
+    // allocated the address, so our wrapper must not redirect to the original function.
+    return __TBB_malloc_safer_msize(const_cast<void*>(ptr), NULL);
+}
+
+static void *impl_malloc(struct _malloc_zone_t *, size_t size);
+static void *impl_calloc(struct _malloc_zone_t *, size_t num_items, size_t size);
+static void *impl_valloc(struct _malloc_zone_t *, size_t size);
+static void impl_free(struct _malloc_zone_t *, void *ptr);
+static void *impl_realloc(struct _malloc_zone_t *, void *ptr, size_t size);
+static void *impl_memalign(struct _malloc_zone_t *, size_t alignment, size_t size);
+
+/* ptr is in zone and have reported size */
+static void impl_free_definite_size(struct _malloc_zone_t*, void *ptr, size_t size)
+{
+    __TBB_malloc_free_definite_size(ptr, size);
+}
+
+/* Empty out caches in the face of memory pressure. */
+static size_t impl_pressure_relief(struct _malloc_zone_t *, size_t goal)
+{
+    return 0;
+}
+
+static malloc_zone_t *system_zone;
+
+struct DoMallocReplacement {
+    DoMallocReplacement() {
+        static malloc_introspection_t introspect;
+        memset(&introspect, 0, sizeof(malloc_introspection_t));
+        static malloc_zone_t zone;
+        memset(&zone, 0, sizeof(malloc_zone_t));
+
+        introspect.enumerator = &enumerator;
+        introspect.good_size = &good_size;
+        introspect.check = &zone_check;
+        introspect.print = &zone_print;
+        introspect.log = zone_log;
+        introspect.force_lock = &zone_force_lock;
+        introspect.force_unlock = &zone_force_unlock;
+        introspect.statistics = zone_statistics;
+        introspect.zone_locked = &zone_locked;
+        introspect.enable_discharge_checking = &impl_zone_enable_discharge_checking;
+        introspect.disable_discharge_checking = &impl_zone_disable_discharge_checking;
+        introspect.discharge = &impl_zone_discharge;
+
+        zone.size = &impl_malloc_usable_size;
+        zone.malloc = &impl_malloc;
+        zone.calloc = &impl_calloc;
+        zone.valloc = &impl_valloc;
+        zone.free = &impl_free;
+        zone.realloc = &impl_realloc;
+        zone.destroy = &impl_zone_destroy;
+        zone.zone_name = "tbbmalloc";
+        zone.introspect = &introspect;
+        zone.version = 8;
+        zone.memalign = impl_memalign;
+        zone.free_definite_size = &impl_free_definite_size;
+        zone.pressure_relief = &impl_pressure_relief;
+
+        // make sure that default purgeable zone is initialized
+        malloc_default_purgeable_zone();
+        // after unregistration of system zone, our zone became default
+        malloc_zone_register(&zone);
+        system_zone = malloc_default_zone();
+        malloc_zone_unregister(system_zone);
+        malloc_zone_register(system_zone);
+    }
+};
+
+static DoMallocReplacement doMallocReplacement;
+
diff --git a/src/tbbmalloc/shared_utils.h b/src/tbbmalloc/shared_utils.h
new file mode 100644
index 0000000..55e0b44
--- /dev/null
+++ b/src/tbbmalloc/shared_utils.h
@@ -0,0 +1,89 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB_shared_utils_H
+#define __TBB_shared_utils_H
+
+// Include files containing declarations of intptr_t and uintptr_t
+#include <stddef.h>  // size_t
+#if _MSC_VER
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+ #if !UINTPTR_MAX
+  #define UINTPTR_MAX SIZE_MAX
+ #endif
+#else // _MSC_VER
+#include <stdint.h>
+#endif
+
+/*
+ * Functions to align an integer down or up to the given power of two,
+ * and test for such an alignment, and for power of two.
+ */
+template<typename T>
+static inline T alignDown(T arg, uintptr_t alignment) {
+    return T( (uintptr_t)arg                & ~(alignment-1));
+}
+template<typename T>
+static inline T alignUp  (T arg, uintptr_t alignment) {
+    return T(((uintptr_t)arg+(alignment-1)) & ~(alignment-1));
+    // /*is this better?*/ return (((uintptr_t)arg-1) | (alignment-1)) + 1;
+}
+template<typename T> // works for not power-of-2 alignments
+static inline T alignUpGeneric(T arg, uintptr_t alignment) {
+    if (size_t rem = arg % alignment) {
+        arg += alignment - rem;
+    }
+    return arg;
+}
+
+template<typename T, size_t N> // generic function to find length of array
+inline size_t arrayLength(const T(&)[N]) {
+    return N;
+}
+
+#if defined(min)
+#undef min
+#endif
+
+template<typename T>
+T min ( const T& val1, const T& val2 ) {
+    return val1 < val2 ? val1 : val2;
+}
+
+namespace rml {
+namespace internal {
+
+/*
+ * Best estimate of cache line size, for the purpose of avoiding false sharing.
+ * Too high causes memory overhead, too low causes false-sharing overhead.
+ * Because, e.g., 32-bit code might run on a 64-bit system with a larger cache line size,
+ * it would probably be better to probe at runtime where possible and/or allow for an environment variable override,
+ * but currently this is still used for compile-time layout of class Block, so the change is not entirely trivial.
+ */
+#if __powerpc64__ || __ppc64__ || __bgp__
+const uint32_t estimatedCacheLineSize = 128;
+#else
+const uint32_t estimatedCacheLineSize =  64;
+#endif
+
+}} // namespaces
+#endif /* __TBB_shared_utils_H */
diff --git a/src/tbbmalloc/tbb_function_replacement.cpp b/src/tbbmalloc/tbb_function_replacement.cpp
index 82cdbed..c5e0b74 100644
--- a/src/tbbmalloc/tbb_function_replacement.cpp
+++ b/src/tbbmalloc/tbb_function_replacement.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -187,15 +179,15 @@ private:
 static MemoryProvider memProvider;
 
 // Compare opcodes from dictionary (str1) and opcodes from code (str2)
-// str1 might contain '*' to mask adresses
-// RETURN: NULL if opcodes did not match, string lentgh of str1 on success
+// str1 might contain '*' to mask addresses
+// RETURN: NULL if opcodes did not match, string length of str1 on success
 size_t compareStrings( const char *str1, const char *str2 )
 {
-   size_t str1Lentgh = strlen(str1);
-   for (size_t i=0; i<str1Lentgh; i++){
+   size_t str1Length = strlen(str1);
+   for (size_t i=0; i<str1Length; i++){
        if( str1[i] != '*' && str1[i] != str2[i] ) return 0;
    }
-   return str1Lentgh;
+   return str1Length;
 }
 
 // Check function prologue with know prologues from the dictionary
diff --git a/src/tbbmalloc/tbb_function_replacement.h b/src/tbbmalloc/tbb_function_replacement.h
index e73042f..fd3fefc 100644
--- a/src/tbbmalloc/tbb_function_replacement.h
+++ b/src/tbbmalloc/tbb_function_replacement.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_function_replacement_H
diff --git a/src/tbbmalloc/tbbmalloc.cpp b/src/tbbmalloc/tbbmalloc.cpp
index 15d12a2..f561a8c 100644
--- a/src/tbbmalloc/tbbmalloc.cpp
+++ b/src/tbbmalloc/tbbmalloc.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "TypeDefinitions.h" // Customize.h and proxy.h get included
@@ -36,49 +28,14 @@
 #undef UNICODE
 
 #if USE_PTHREAD
-#include <dlfcn.h>
+#include <dlfcn.h> // dlopen
 #elif USE_WINTHREAD
 #include "tbb/machine/windows_api.h"
 #endif
 
-#if MALLOC_CHECK_RECURSION
-
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-#if __sun
-#include <string.h> /* for memset */
-#include <errno.h>
-#endif
-
-#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
-
-extern "C" {
-
-void   safer_scalable_free( void*, void (*)(void*) );
-void * safer_scalable_realloc( void*, size_t, void* );
-
-bool __TBB_internal_find_original_malloc(int num, const char *names[], void *table[])  __attribute__ ((weak));
-
-}
-
-#endif /* MALLOC_UNIXLIKE_OVERLOAD_ENABLED */
-#endif /* MALLOC_CHECK_RECURSION */
-
 namespace rml {
 namespace internal {
 
-#if MALLOC_CHECK_RECURSION
-
-void* (*original_malloc_ptr)(size_t) = 0;
-void  (*original_free_ptr)(void*) = 0;
-#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
-static void* (*original_calloc_ptr)(size_t,size_t) = 0;
-static void* (*original_realloc_ptr)(void*,size_t) = 0;
-#endif
-
-#endif /* MALLOC_CHECK_RECURSION */
-
 /** Caller is responsible for ensuring this routine is called exactly once. */
 extern "C" void MallocInitializeITT() {
 #if DO_ITT_NOTIFY
@@ -106,27 +63,6 @@ extern "C" void MallocInitializeITT() {
 #endif
 
 void init_tbbmalloc() {
-#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
-    if (malloc_proxy && __TBB_internal_find_original_malloc) {
-        const char *alloc_names[] = { "malloc", "free", "realloc", "calloc"};
-        void *orig_alloc_ptrs[4];
-
-        if (__TBB_internal_find_original_malloc(4, alloc_names, orig_alloc_ptrs)) {
-            (void *&)original_malloc_ptr  = orig_alloc_ptrs[0];
-            (void *&)original_free_ptr    = orig_alloc_ptrs[1];
-            (void *&)original_realloc_ptr = orig_alloc_ptrs[2];
-            (void *&)original_calloc_ptr  = orig_alloc_ptrs[3];
-            MALLOC_ASSERT( original_malloc_ptr!=malloc_proxy,
-                           "standard malloc not found" );
-/* It's workaround for a bug in GNU Libc 2.9 (as it shipped with Fedora 10).
-   1st call to libc's malloc should be not from threaded code.
- */
-            original_free_ptr(original_malloc_ptr(1024));
-            original_malloc_found = 1;
-        }
-    }
-#endif /* MALLOC_UNIXLIKE_OVERLOAD_ENABLED */
-
 #if DO_ITT_NOTIFY
     MallocInitializeITT();
 #endif
@@ -179,45 +115,6 @@ static RegisterProcessShutdownNotification reg;
 #endif /* !USE_WINTHREAD */
 #endif /* !__TBB_SOURCE_DIRECTLY_INCLUDED */
 
-#if MALLOC_CHECK_RECURSION
-
-bool  original_malloc_found;
-
-#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED
-
-extern "C" {
-
-void * __TBB_internal_malloc(size_t size)
-{
-    return scalable_malloc(size);
-}
-
-void * __TBB_internal_calloc(size_t num, size_t size)
-{
-    return scalable_calloc(num, size);
-}
-
-int __TBB_internal_posix_memalign(void **memptr, size_t alignment, size_t size)
-{
-    return scalable_posix_memalign(memptr, alignment, size);
-}
-
-void* __TBB_internal_realloc(void* ptr, size_t sz)
-{
-    return safer_scalable_realloc(ptr, sz, (void*&)original_realloc_ptr);
-}
-
-void __TBB_internal_free(void *object)
-{
-    safer_scalable_free(object, original_free_ptr);
-}
-
-} /* extern "C" */
-
-#endif /* MALLOC_UNIXLIKE_OVERLOAD_ENABLED */
-
-#endif /* MALLOC_CHECK_RECURSION */
-
 } } // namespaces
 
 #if __TBB_ipf
diff --git a/src/tbbmalloc/tbbmalloc.rc b/src/tbbmalloc/tbbmalloc.rc
index a7beceb..de82be9 100644
--- a/src/tbbmalloc/tbbmalloc.rc
+++ b/src/tbbmalloc/tbbmalloc.rc
@@ -1,28 +1,20 @@
-// Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+// Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 //
-// This file is part of Threading Building Blocks.
+// This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+// you can redistribute it and/or modify it under the terms of the GNU General Public License
+// version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See  the GNU General Public License for more details.   You should have received a copy of
+// the  GNU General Public License along with Threading Building Blocks; if not, write to the
+// Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 //
-// Threading Building Blocks is free software; you can redistribute it
-// and/or modify it under the terms of the GNU General Public License
-// version 2 as published by the Free Software Foundation.
-//
-// Threading Building Blocks is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Threading Building Blocks; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-//
-// As a special exception, you may use this file as part of a free software
-// library without restriction.  Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License.  This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
+// As a special exception,  you may use this file  as part of a free software library without
+// restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+// functions from this file, or you compile this file and link it with other files to produce
+// an executable,  this file does not by itself cause the resulting executable to be covered
+// by the GNU General Public License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General Public License.
 
 // Microsoft Visual C++ generated resource script.
 //
@@ -92,7 +84,7 @@ BEGIN
             VALUE "CompanyName", "Intel Corporation\0"
             VALUE "FileDescription", "Scalable Allocator library\0"
             VALUE "FileVersion", TBBMALLOC_VERSION "\0"
-            VALUE "LegalCopyright", "Copyright 2005-2014 Intel Corporation.  All Rights Reserved.\0"
+            VALUE "LegalCopyright", "Copyright 2005-2015 Intel Corporation.  All Rights Reserved.\0"
             VALUE "LegalTrademarks", "\0"
 #ifndef TBB_USE_DEBUG
             VALUE "OriginalFilename", "tbbmalloc.dll\0"
diff --git a/src/tbbmalloc/tbbmalloc_internal.h b/src/tbbmalloc/tbbmalloc_internal.h
index d6aff58..6cf585e 100644
--- a/src/tbbmalloc/tbbmalloc_internal.h
+++ b/src/tbbmalloc/tbbmalloc_internal.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbbmalloc_internal_H
@@ -43,6 +35,9 @@
     #error Must define USE_PTHREAD or USE_WINTHREAD
 #endif
 
+// TODO: *BSD also has it
+#define BACKEND_HAS_MREMAP __linux__
+
 #include "tbb/tbb_config.h" // for __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN
 #if __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN
   #define _EXCEPTION_PTR_H /* prevents exception_ptr.h inclusion */
@@ -118,19 +113,6 @@ const uintptr_t slabSize = 16*1024;
 const unsigned cacheCleanupFreq = 256;
 
 /*
- * Best estimate of cache line size, for the purpose of avoiding false sharing.
- * Too high causes memory overhead, too low causes false-sharing overhead.
- * Because, e.g., 32-bit code might run on a 64-bit system with a larger cache line size,
- * it would probably be better to probe at runtime where possible and/or allow for an environment variable override,
- * but currently this is still used for compile-time layout of class Block, so the change is not entirely trivial.
- */
-#if __powerpc64__ || __ppc64__ || __bgp__
-const uint32_t estimatedCacheLineSize = 128;
-#else
-const uint32_t estimatedCacheLineSize =  64;
-#endif
-
-/*
  * Alignment of large (>= minLargeObjectSize) objects.
  */
 const size_t largeObjectAlignment = estimatedCacheLineSize;
@@ -145,6 +127,7 @@ class FreeBlock;
 class TLSData;
 class Backend;
 class MemoryPool;
+struct CacheBinOperation;
 extern const uint32_t minLargeObjectSize;
 
 class TLSKey {
@@ -172,10 +155,10 @@ inline void AtomicUpdate(Arg &location, Arg newVal, const Compare &cmp)
 }
 
 // TODO: make BitMaskBasic more general
-// (currenty, it fits BitMaskMin well, but not as suitable for BitMaskMax)
+// (currently, it fits BitMaskMin well, but not as suitable for BitMaskMax)
 template<unsigned NUM>
 class BitMaskBasic {
-    static const int SZ = (NUM-1)/(CHAR_BIT*sizeof(uintptr_t))+1;
+    static const unsigned SZ = (NUM-1)/(CHAR_BIT*sizeof(uintptr_t))+1;
     static const unsigned WORD_LEN = CHAR_BIT*sizeof(uintptr_t);
     uintptr_t mask[SZ];
 protected:
@@ -190,24 +173,25 @@ protected:
             AtomicAnd(&mask[i], ~(1ULL << pos));
     }
     int getMinTrue(unsigned startIdx) const {
-        size_t idx = startIdx / WORD_LEN;
-        uintptr_t curr;
+        unsigned idx = startIdx / WORD_LEN;
         int pos;
 
-        if (startIdx % WORD_LEN) { // clear bits before startIdx
+        if (startIdx % WORD_LEN) {
+            // only interested in part of a word, clear bits before startIdx
             pos = WORD_LEN - startIdx % WORD_LEN;
-            curr = mask[idx] & ((1ULL<<pos) - 1);
-        } else
-            curr = mask[idx];
-
-        for (int i=idx; i<SZ; i++, curr=mask[i]) {
-            if (-1 != (pos = BitScanRev(curr)))
-                return (i+1)*WORD_LEN - pos - 1;
+            uintptr_t actualMask = mask[idx] & (((uintptr_t)1<<pos) - 1);
+            idx++;
+            if (-1 != (pos = BitScanRev(actualMask)))
+                return idx*WORD_LEN - pos - 1;
         }
+
+        while (idx<SZ)
+            if (-1 != (pos = BitScanRev(mask[idx++])))
+                return idx*WORD_LEN - pos - 1;
         return -1;
     }
 public:
-    void reset() { for (int i=0; i<SZ; i++) mask[i] = 0; }
+    void reset() { for (unsigned i=0; i<SZ; i++) mask[i] = 0; }
 };
 
 template<unsigned NUM>
@@ -269,6 +253,7 @@ struct LargeObjectCacheProps {
 
 template<typename Props>
 class LargeObjectCacheImpl {
+private:
     // The number of bins to cache large objects.
     static const uint32_t numBins = (Props::MaxSize-Props::MinSize)/Props::CacheStep;
 
@@ -296,6 +281,7 @@ class LargeObjectCacheImpl {
     // TODO: try to switch to 32-bit logical time to save space in CacheBin
     // and move bins to different cache lines.
     class CacheBin {
+    private:
         LargeMemoryBlock *first,
                          *last;
   /* age of an oldest block in the list; equal to last->age, if last defined,
@@ -317,14 +303,114 @@ class LargeObjectCacheImpl {
   /* time of last get called for the bin */
         uintptr_t         lastGet;
 
-        MallocMutex       lock;
+        /* The functor called by the aggregator for the operation list */
+        class CacheBinFunctor {
+            CacheBin *const bin;
+            ExtMemoryPool *const extMemPool;
+            BinBitMask *const bitMask;
+            const int idx;
+
+            LargeMemoryBlock *toRelease;
+            bool needCleanup;
+            uintptr_t currTime;
+
+            /* Do preprocessing under the operation list. */
+            /* All the OP_PUT_LIST operations are merged in the one operation.
+               All OP_GET operations are merged with the OP_PUT_LIST operations but
+               it demands the update of the moving average value in the bin.
+               Only the last OP_CLEAN_TO_THRESHOLD operation has sense.
+               The OP_CLEAN_ALL operation also should be performed only once.
+               Moreover it cancels the OP_CLEAN_TO_THRESHOLD operation. */
+            class OperationPreprocessor {
+                // TODO: remove the dependency on CacheBin.
+                CacheBin *const  bin;
+
+                /* Contains the relative time in the operation list.
+                   It counts in the reverse order since the aggregator also
+                   provides operations in the reverse order. */
+                uintptr_t lclTime;
+
+                /* opGet contains only OP_GET operations which cannot be merge with OP_PUT operations
+                   opClean contains all OP_CLEAN_TO_THRESHOLD and OP_CLEAN_ALL operations. */
+                CacheBinOperation *opGet, *opClean;
+                /* The time of the last OP_CLEAN_TO_THRESHOLD operations */
+                uintptr_t cleanTime;
+
+                /* lastGetOpTime - the time of the last OP_GET operation.
+                   lastGet - the same meaning as CacheBin::lastGet */
+                uintptr_t lastGetOpTime, lastGet;
+
+                /* The total sum of all usedSize decrements requested with CBOP_DECR_USED_SIZE operations. */
+                size_t decrUsedSize;
+
+                /* The list of blocks for the OP_PUT_LIST operation. */
+                LargeMemoryBlock *head, *tail;
+                int putListNum;
+
+                /* if the OP_CLEAN_ALL is requested. */
+                bool isCleanAll;
+
+                inline void commitOperation(CacheBinOperation *op) const;
+                inline void addOpToOpList(CacheBinOperation *op, CacheBinOperation **opList) const;
+                bool getFromPutList(CacheBinOperation* opGet, uintptr_t currTime);
+                void addToPutList( LargeMemoryBlock *head, LargeMemoryBlock *tail, int num );
+
+            public:
+                OperationPreprocessor(CacheBin *bin) :
+                    bin(bin), lclTime(0), opGet(NULL), opClean(NULL), cleanTime(0),
+                    lastGetOpTime(0), decrUsedSize(0), head(NULL), isCleanAll(false)  {}
+                void operator()(CacheBinOperation* opList);
+                uintptr_t getTimeRange() const { return -lclTime; }
+
+                friend class CacheBinFunctor;
+            };
+
+        public:
+            CacheBinFunctor(CacheBin *bin, ExtMemoryPool *extMemPool, BinBitMask *bitMask, int idx) :
+                bin(bin), extMemPool(extMemPool), bitMask(bitMask), idx(idx), toRelease(NULL), needCleanup(false) {}
+            void operator()(CacheBinOperation* opList);
+
+            bool isCleanupNeeded() const { return needCleanup; }
+            LargeMemoryBlock *getToRelease() const { return toRelease; }
+            uintptr_t getCurrTime() const { return currTime; }
+        };
+
+        typename MallocAggregator<CacheBinOperation>::type aggregator;
+
+        void ExecuteOperation(CacheBinOperation *op, ExtMemoryPool *extMemPool, BinBitMask *bitMask, int idx, bool longLifeTime = true);
+  /* ---------- unsafe methods used with the aggregator ---------- */
+        void forgetOutdatedState(uintptr_t currTime);
+        LargeMemoryBlock *putList(LargeMemoryBlock *head, LargeMemoryBlock *tail, BinBitMask *bitMask, int idx, int num);
+        LargeMemoryBlock *get();
+        LargeMemoryBlock *cleanToThreshold(uintptr_t currTime, BinBitMask *bitMask, int idx);
+        LargeMemoryBlock *cleanAll(BinBitMask *bitMask, int idx);
+        void updateUsedSize(size_t size, BinBitMask *bitMask, int idx) {
+            if (!usedSize) bitMask->set(idx, true);
+            usedSize += size;
+            if (!usedSize && !first) bitMask->set(idx, false);
+        }
+        void updateMeanHitRange( intptr_t hitRange ) {
+            hitRange = hitRange >= 0 ? hitRange : 0;
+            meanHitRange = meanHitRange ? (meanHitRange + hitRange)/2 : hitRange;
+        }
+        void updateAgeThreshold( uintptr_t currTime ) {
+            if (lastCleanedAge)
+                ageThreshold = Props::OnMissFactor*(currTime - lastCleanedAge);
+        }
+        void updateCachedSize(size_t size) { cachedSize += size; }
+        void setLastGet( uintptr_t newLastGet ) { lastGet = newLastGet; }
+  /* -------------------------------------------------------- */
+
   /* should be placed in zero-initialized memory, ctor not needed. */
         CacheBin();
-        void forgetOutdatedState(uintptr_t currT);
     public:
         void init() { memset(this, 0, sizeof(CacheBin)); }
-        LargeMemoryBlock *putList(ExtMemoryPool *extMemPool, LargeMemoryBlock *head, BinBitMask *bitMask, int idx);
-        inline LargeMemoryBlock *get(size_t size, uintptr_t currTime, bool *setNonEmpty);
+        void putList(ExtMemoryPool *extMemPool, LargeMemoryBlock *head, BinBitMask *bitMask, int idx);
+        LargeMemoryBlock *get(ExtMemoryPool *extMemPool, size_t size, BinBitMask *bitMask, int idx);
+        bool cleanToThreshold(ExtMemoryPool *extMemPool, BinBitMask *bitMask, uintptr_t currTime, int idx);
+        bool releaseAllToBackend(ExtMemoryPool *extMemPool, BinBitMask *bitMask, int idx);
+        void decrUsedSize(ExtMemoryPool *extMemPool, size_t size, BinBitMask *bitMask, int idx);
+
         void decreaseThreshold() {
             if (ageThreshold)
                 ageThreshold = (ageThreshold + meanHitRange)/2;
@@ -332,14 +418,6 @@ class LargeObjectCacheImpl {
         void updateBinsSummary(BinsSummary *binsSummary) const {
             binsSummary->update(usedSize, cachedSize);
         }
-        bool cleanToThreshold(Backend *backend, BinBitMask *bitMask, uintptr_t currTime, int idx);
-        bool cleanAll(Backend *backend, BinBitMask *bitMask, int idx);
-        void decrUsedSize(size_t size, BinBitMask *bitMask, int idx) {
-            MallocMutex::scoped_lock scoped_cs(lock);
-            usedSize -= size;
-            if (!usedSize && !first)
-                bitMask->set(idx, false);
-        }
         size_t getSize() const { return cachedSize; }
         size_t getUsedSize() const { return usedSize; }
         size_t reportStat(int num, FILE *f);
@@ -360,12 +438,11 @@ public:
     static int getNumBins() { return numBins; }
 
     void putList(ExtMemoryPool *extMemPool, LargeMemoryBlock *largeBlock);
-    LargeMemoryBlock *get(uintptr_t currTime, size_t size);
+    LargeMemoryBlock *get(ExtMemoryPool *extMemPool, size_t size);
 
-    void rollbackCacheState(size_t size);
-    uintptr_t cleanupCacheIfNeeded(ExtMemoryPool *extMemPool, uintptr_t currTime);
-    bool regularCleanup(Backend *backend, uintptr_t currAge, bool doThreshDecr);
-    bool cleanAll(Backend *backend);
+    void rollbackCacheState(ExtMemoryPool *extMemPool, size_t size);
+    bool regularCleanup(ExtMemoryPool *extMemPool, uintptr_t currAge, bool doThreshDecr);
+    bool cleanAll(ExtMemoryPool *extMemPool);
     void reset() {
         tooLargeLOC = 0;
         for (int i = numBins-1; i >= 0; i--)
@@ -391,8 +468,10 @@ public:
     static const uint32_t largeBlockCacheStep =  8*1024,
                           hugeBlockCacheStep = 512*1024;
 private:
-    typedef LargeObjectCacheImpl< LargeObjectCacheProps<minLargeSize, maxLargeSize, largeBlockCacheStep, 2, 2, 16> > LargeCacheType;
-    typedef LargeObjectCacheImpl< LargeObjectCacheProps<maxLargeSize, maxHugeSize, hugeBlockCacheStep, 1, 1, 4> > HugeCacheType;
+    typedef LargeObjectCacheProps<minLargeSize, maxLargeSize, largeBlockCacheStep, 2, 2, 16> LargeCacheTypeProps;
+    typedef LargeObjectCacheProps<maxLargeSize, maxHugeSize, hugeBlockCacheStep, 1, 1, 4> HugeCacheTypeProps;
+    typedef LargeObjectCacheImpl< LargeCacheTypeProps > LargeCacheType;
+    typedef LargeObjectCacheImpl< HugeCacheTypeProps > HugeCacheType;
 
     // beginning of largeCache is more actively used and smaller than hugeCache,
     // so put hugeCache first to prevent false sharing
@@ -415,7 +494,6 @@ private:
     ExtMemoryPool *extMemPool; // strict 1:1 relation, never changed
 
     static int sizeToIdx(size_t size);
-    bool doCleanup(uintptr_t currTime, bool doThreshDecr);
 public:
     void init(ExtMemoryPool *memPool) { extMemPool = memPool; }
     void put(LargeMemoryBlock *largeBlock);
@@ -423,11 +501,12 @@ public:
     LargeMemoryBlock *get(size_t size);
 
     void rollbackCacheState(size_t size);
-    void cleanupCacheIfNeeded(uintptr_t currTime);
-    void cleanupCacheIfNeededOnRange(uintptr_t range, uintptr_t currTime);
+    bool isCleanupNeededOnRange(uintptr_t range, uintptr_t currTime);
+    bool doCleanup(uintptr_t currTime, bool doThreshDecr);
+
     bool decreasingCleanup();
     bool regularCleanup();
-    bool cleanAll(Backend *backend);
+    bool cleanAll();
     void reset() {
         largeCache.reset();
         hugeCache.reset();
@@ -444,8 +523,8 @@ public:
             : alignUp(size, hugeBlockCacheStep);
     }
 
-    uintptr_t getCurrTime();
-    uintptr_t getCurrTimeRange(uintptr_t range);
+    uintptr_t getCurrTime() { return (uintptr_t)AtomicIncrement((intptr_t&)cacheCurrTime); }
+    uintptr_t getCurrTimeRange(uintptr_t range) { return (uintptr_t)AtomicAdd((intptr_t&)cacheCurrTime, range)+1; }
 };
 
 class BackRefIdx { // composite index to backreference array
@@ -480,7 +559,7 @@ struct LargeMemoryBlock : public BlockI {
                      *gNext;
     uintptr_t         age;           // age of block while in cache
     size_t            objectSize;    // the size requested by a client
-    size_t            unalignedSize; // the size requested from getMemory
+    size_t            unalignedSize; // the size requested from backend
     BackRefIdx        backRefIdx;    // cached here, used copy is in LargeObjectHdr
 };
 
@@ -488,52 +567,40 @@ struct LargeMemoryBlock : public BlockI {
 class BackendSync {
     // Class instances should reside in zero-initialized memory!
     // The number of blocks currently removed from a bin and not returned back
-    intptr_t  blocksInProcessing;  // to another
-    intptr_t  binsModifications;   // incremented on every bin modification
+    intptr_t inFlyBlocks;         // to another
+    intptr_t binsModifications;   // incremented on every bin modification
+    Backend *backend;
 public:
-    void blockConsumed() { AtomicIncrement(blocksInProcessing); }
+    void init(Backend *b) { backend = b; }
+    void blockConsumed() { AtomicIncrement(inFlyBlocks); }
     void binsModified() { AtomicIncrement(binsModifications); }
     void blockReleased() {
 #if __TBB_MALLOC_BACKEND_STAT
-        MALLOC_ITT_SYNC_RELEASING(&blocksInProcessing);
+        MALLOC_ITT_SYNC_RELEASING(&inFlyBlocks);
 #endif
         AtomicIncrement(binsModifications);
-        intptr_t prev = AtomicAdd(blocksInProcessing, -1);
+        intptr_t prev = AtomicAdd(inFlyBlocks, -1);
         MALLOC_ASSERT(prev > 0, ASSERT_TEXT);
         suppress_unused_warning(prev);
     }
     intptr_t getNumOfMods() const { return FencedLoad(binsModifications); }
     // return true if need re-do the blocks search
-    bool waitTillBlockReleased(intptr_t startModifiedCnt) {
-#if __TBB_MALLOC_BACKEND_STAT
-        MALLOC_ITT_SYNC_PREPARE(&blocksInProcessing);
-#endif
-        for (intptr_t myBlocksNum = FencedLoad(blocksInProcessing);
-             // no blocks in processing, stop waiting
-             myBlocksNum; ) {
-            SpinWaitWhileEq(blocksInProcessing, myBlocksNum);
-            WhiteboxTestingYield();
-            intptr_t newBlocksNum = FencedLoad(blocksInProcessing);
-            // stop waiting iff blocks were removed from processing,
-            // if blocks were added, there is no reason to stop waiting
-            if (newBlocksNum < myBlocksNum)
-                break;
-            myBlocksNum = newBlocksNum;
-        }
-#if __TBB_MALLOC_BACKEND_STAT
-        MALLOC_ITT_SYNC_ACQUIRED(&blocksInProcessing);
-#endif
-        // were bins modified since scanned?
-        return startModifiedCnt != getNumOfMods();
-    }
+    inline bool waitTillBlockReleased(intptr_t startModifiedCnt);
 };
 
 class CoalRequestQ { // queue of free blocks that coalescing was delayed
 private:
-    FreeBlock *blocksToFree;
+    FreeBlock   *blocksToFree;
+    BackendSync *bkndSync;
+    // counted blocks in blocksToFree and that are leaved blocksToFree
+    // and still in active coalescing
+    intptr_t     inFlyBlocks;
 public:
+    void init(BackendSync *bSync) { bkndSync = bSync; }
     FreeBlock *getAll(); // return current list of blocks and make queue empty
     void putBlock(FreeBlock *fBlock);
+    inline void blockWasProcessed();
+    intptr_t blocksInFly() const { return FencedLoad(inFlyBlocks); }
 };
 
 class MemExtendingSema {
@@ -560,6 +627,24 @@ public:
     void signal() { AtomicAdd(active, -1); }
 };
 
+enum MemRegionType {
+    // The region does not guarantee the block size.
+    MEMREG_FLEXIBLE_SIZE = 0,
+    // The region can hold exact number of blocks with the size of the
+    // first reqested block.
+    MEMREG_SEVERAL_BLOCKS,
+    // The region holds only one block with a reqested size.
+    MEMREG_ONE_BLOCK
+};
+
+class MemRegionList {
+    MallocMutex regionListLock;
+public:
+    MemRegion  *head;
+    void add(MemRegion *r);
+    void remove(MemRegion *r);
+};
+
 class Backend {
 private:
 /* Blocks in range [minBinnedSize; getMaxBinnedSize()] are kept in bins,
@@ -569,7 +654,7 @@ private:
     enum {
         minBinnedSize = 8*1024UL,
         /*   If huge pages are available, maxBinned_HugePage used.
-             If not, maxBinned_SmallPage is the thresold.
+             If not, maxBinned_SmallPage is the threshold.
              TODO: use pool's granularity for upper bound setting.*/
         maxBinned_SmallPage = 1024*1024UL,
         // TODO: support other page sizes
@@ -652,8 +737,7 @@ private:
 
     ExtMemoryPool *extMemPool;
     // used for release every region on pool destroying
-    MemRegion     *regionList;
-    MallocMutex    regionListLock;
+    MemRegionList  regionList;
 
     CoalRequestQ   coalescQ; // queue of coalescing requests
     BackendSync    bkndSync;
@@ -661,20 +745,28 @@ private:
     MemExtendingSema memExtendingSema;
     size_t         totalMemSize,
                    memSoftLimit;
-
-    // Using of maximal observed requested size allows descrease
-    // memory consumption for small requests and descrease fragmentation
+    // Fixed pools request memory once per lifetime, during pool_create.
+    // Status of memory acquisition for such pool keeps here.
+    // So value is changed only for fixed pools, and without synchronization,
+    // as pool is not available till returning from pool_create.
+    bool           rawMemReceived;
+
+    // Using of maximal observed requested size allows decrease
+    // memory consumption for small requests and decrease fragmentation
     // for workloads when small and large allocation requests are mixed.
     // TODO: decrease, not only increase it
     size_t         maxRequestedSize;
 
-    FreeBlock *addNewRegion(size_t rawSize, bool exact, bool addToBin);
+    FreeBlock *addNewRegion(size_t size, MemRegionType type, bool addToBin);
     FreeBlock *findBlockInRegion(MemRegion *region, size_t exactBlockSize);
     void startUseBlock(MemRegion *region, FreeBlock *fBlock, bool addToBin);
     void releaseRegion(MemRegion *region);
 
+    FreeBlock *releaseMemInCaches(intptr_t startModifiedCnt,
+                                  int *lockedBinsThreshold, int numOfLockedBins);
     FreeBlock *askMemFromOS(size_t totalReqSize, intptr_t startModifiedCnt,
-                            int *lockedBinsThreshold, int numOfLockedBins);
+                            int *lockedBinsThreshold, int numOfLockedBins,
+                            bool *splittable);
     FreeBlock *genericGetBlock(int num, size_t size, bool resSlabAligned);
     void genericPutBlock(FreeBlock *fBlock, size_t blockSz);
     FreeBlock *splitUnalignedBlock(FreeBlock *fBlock, int num, size_t size,
@@ -683,18 +775,19 @@ private:
                             bool needAlignedRes);
 
     FreeBlock *doCoalesc(FreeBlock *fBlock, MemRegion **memRegion);
-    bool coalescAndPutList(FreeBlock *head, bool forceCoalescQDrop);
-    bool scanCoalescQ(bool forceCoalescQDrop);
+    bool coalescAndPutList(FreeBlock *head, bool forceCoalescQDrop, bool reportBlocksProcessed);
     void coalescAndPut(FreeBlock *fBlock, size_t blockSz);
 
     void removeBlockFromBin(FreeBlock *fBlock);
 
-    void *getRawMem(size_t &size) const;
+    void *allocRawMem(size_t &size) const;
     void freeRawMem(void *object, size_t size) const;
 
     void putLargeBlock(LargeMemoryBlock *lmb);
     void releaseCachesToLimit();
 public:
+    bool scanCoalescQ(bool forceCoalescQDrop);
+    intptr_t blocksInCoalescing() const { return coalescQ.blocksInFly(); }
     void verify();
 #if __TBB_MALLOC_BACKEND_STAT
     void reportStat(FILE *f);
@@ -721,6 +814,8 @@ public:
     LargeMemoryBlock *getLargeBlock(size_t size);
     void returnLargeObject(LargeMemoryBlock *lmb);
 
+    void *remap(void *ptr, size_t oldSize, size_t newSize, size_t alignment);
+
     void setRecommendedMaxSize(size_t softLimit) {
         memSoftLimit = softLimit;
         releaseCachesToLimit();
@@ -775,7 +870,8 @@ struct ExtMemoryPool {
     AllLocalCaches    allLocalCaches;
 
     intptr_t          poolId;
-    // to find all large objects
+    // To find all large objects. This used during user pool destruction,
+    // to release all backreferencies in large blocks (slab blocks do not have them).
     AllLargeBlocksList lmbList;
     // Callbacks to be used instead of MapMemory/UnmapMemory.
     rawAllocType      rawAlloc;
@@ -794,7 +890,7 @@ struct ExtMemoryPool {
     // i.e., not system default pool for scalable_malloc/scalable_free
     bool userPool() const { return rawAlloc; }
 
-     // true if something has beed released
+     // true if something has been released
     bool softCachesCleanup();
     bool releaseAllLocalCaches();
     bool hardCachesCleanup();
@@ -805,15 +901,16 @@ struct ExtMemoryPool {
         backend.reset();
     }
     void destroy() {
-        loc.reset();
-        allLocalCaches.reset();
+        if (!userPool()) {
+            loc.reset();
+            allLocalCaches.reset();
+        }
         // pthread_key_dtors must be disabled before memory unmapping
         // TODO: race-free solution
         tlsPointerKey.~TLSKey();
         if (rawFree || !userPool())
             backend.destroy();
     }
-    bool mustBeAddedToGlobalLargeBlockList() const { return userPool(); }
     void delayRegionsReleasing(bool mode) { delayRegsReleasing = mode; }
     inline bool regionsAreReleaseable() const;
 
@@ -858,7 +955,7 @@ public:
 // init() and printStatus() is called only under global initialization lock.
 // Race is possible between registerAllocation() and registerReleasing(),
 // harm is that up to single huge page releasing is missed (because failure
-// to get huge page is registred only 1st time), that is negligible.
+// to get huge page is registered only 1st time), that is negligible.
 // setMode is also can be called concurrently.
 // Object must reside in zero-initialized memory
 class HugePagesStatus {
@@ -980,8 +1077,7 @@ public:
         if (!malloc_proxy) {
 #if __FreeBSD__
 /* If !canUsePthread, we can't call pthread_self() before, but now pthread
-   is already on, so can do it. False positives here lead to silent switching
-   from malloc to mmap for all large allocations with bad performance impact. */
+   is already on, so can do it. */
             if (!canUsePthread) {
                 canUsePthread = true;
                 owner_thread = pthread_self();
@@ -1004,8 +1100,6 @@ public:
 
 bool isMallocInitializedExt();
 
-bool isLargeObject(void *object);
-
 unsigned int getThreadId();
 
 bool initBackRefMaster(Backend *backend);
diff --git a/src/tbbmalloc/tbbmalloc_internal_api.h b/src/tbbmalloc/tbbmalloc_internal_api.h
index 6feed74..2eedc77 100644
--- a/src/tbbmalloc/tbbmalloc_internal_api.h
+++ b/src/tbbmalloc/tbbmalloc_internal_api.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_tbbmalloc_internal_api_H
@@ -33,6 +25,12 @@
 extern "C" {
 #endif /* __cplusplus */
 
+typedef enum {
+    /* Tune usage of source included allocator. Selected value is large enough
+       to not intercept with constants from AllocationModeParam. */
+    TBBMALLOC_INTERNAL_SOURCE_INCLUDED = 65536
+} AllocationModeInternalParam;
+
 void __TBB_mallocProcessShutdownNotification();
 #if _WIN32||_WIN64
 void __TBB_mallocThreadShutdownNotification();
@@ -42,4 +40,4 @@ void __TBB_mallocThreadShutdownNotification();
 } /* extern "C" */
 #endif /* __cplusplus */
 
-#endif // __TBB_tbbmalloc_internal_api_H
+#endif /* __TBB_tbbmalloc_internal_api_H */
diff --git a/src/tbbmalloc/win32-gcc-tbbmalloc-export.def b/src/tbbmalloc/win32-gcc-tbbmalloc-export.def
index 6756eea..c66216c 100644
--- a/src/tbbmalloc/win32-gcc-tbbmalloc-export.def
+++ b/src/tbbmalloc/win32-gcc-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -36,14 +28,14 @@ scalable_posix_memalign;
 scalable_aligned_malloc;
 scalable_aligned_realloc;
 scalable_aligned_free;
-safer_scalable_free;
-safer_scalable_realloc;
 scalable_msize;
 scalable_allocation_mode;
 scalable_allocation_command;
-safer_scalable_msize;
-safer_scalable_aligned_msize;
-safer_scalable_aligned_realloc;
+__TBB_malloc_safer_free;
+__TBB_malloc_safer_realloc;
+__TBB_malloc_safer_msize;
+__TBB_malloc_safer_aligned_msize;
+__TBB_malloc_safer_aligned_realloc;
 /* memory pool stuff */
 _ZN3rml10pool_resetEPNS_10MemoryPoolE;
 _ZN3rml11pool_createEiPKNS_13MemPoolPolicyE;
diff --git a/src/tbbmalloc/win32-tbbmalloc-export.def b/src/tbbmalloc/win32-tbbmalloc-export.def
index a7a0dd1..75148a0 100644
--- a/src/tbbmalloc/win32-tbbmalloc-export.def
+++ b/src/tbbmalloc/win32-tbbmalloc-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
@@ -35,14 +27,14 @@ scalable_posix_memalign
 scalable_aligned_malloc
 scalable_aligned_realloc
 scalable_aligned_free
-safer_scalable_free
-safer_scalable_realloc
 scalable_msize
 scalable_allocation_mode
 scalable_allocation_command
-safer_scalable_msize
-safer_scalable_aligned_msize
-safer_scalable_aligned_realloc
+__TBB_malloc_safer_free
+__TBB_malloc_safer_realloc
+__TBB_malloc_safer_msize
+__TBB_malloc_safer_aligned_msize
+__TBB_malloc_safer_aligned_realloc
 ?pool_create at rml@@YAPAVMemoryPool at 1@HPBUMemPoolPolicy at 1@@Z
 ?pool_create_v1 at rml@@YA?AW4MemPoolError at 1@HPBUMemPoolPolicy at 1@PAPAVMemoryPool at 1@@Z
 ?pool_destroy at rml@@YA_NPAVMemoryPool at 1@@Z
diff --git a/src/tbbmalloc/win64-gcc-tbbmalloc-export.def b/src/tbbmalloc/win64-gcc-tbbmalloc-export.def
index 1905d70..cc413da 100644
--- a/src/tbbmalloc/win64-gcc-tbbmalloc-export.def
+++ b/src/tbbmalloc/win64-gcc-tbbmalloc-export.def
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 {
@@ -36,14 +28,14 @@ scalable_posix_memalign;
 scalable_aligned_malloc;
 scalable_aligned_realloc;
 scalable_aligned_free;
-safer_scalable_free;
-safer_scalable_realloc;
 scalable_msize;
 scalable_allocation_mode;
 scalable_allocation_command;
-safer_scalable_msize;
-safer_scalable_aligned_msize;
-safer_scalable_aligned_realloc;
+__TBB_malloc_safer_free;
+__TBB_malloc_safer_realloc;
+__TBB_malloc_safer_msize;
+__TBB_malloc_safer_aligned_msize;
+__TBB_malloc_safer_aligned_realloc;
 /* memory pool stuff */
 _ZN3rml10pool_resetEPNS_10MemoryPoolE;
 _ZN3rml11pool_createExPKNS_13MemPoolPolicyE;
diff --git a/src/tbbmalloc/win64-tbbmalloc-export.def b/src/tbbmalloc/win64-tbbmalloc-export.def
index 367256a..e4f9d74 100644
--- a/src/tbbmalloc/win64-tbbmalloc-export.def
+++ b/src/tbbmalloc/win64-tbbmalloc-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
@@ -35,14 +27,14 @@ scalable_posix_memalign
 scalable_aligned_malloc
 scalable_aligned_realloc
 scalable_aligned_free
-safer_scalable_free
-safer_scalable_realloc
 scalable_msize
 scalable_allocation_mode
 scalable_allocation_command
-safer_scalable_msize
-safer_scalable_aligned_msize
-safer_scalable_aligned_realloc
+__TBB_malloc_safer_free
+__TBB_malloc_safer_realloc
+__TBB_malloc_safer_msize
+__TBB_malloc_safer_aligned_msize
+__TBB_malloc_safer_aligned_realloc
 ; memory pool stuff
 ?pool_create at rml@@YAPEAVMemoryPool at 1@_JPEBUMemPoolPolicy at 1@@Z
 ?pool_create_v1 at rml@@YA?AW4MemPoolError at 1@_JPEBUMemPoolPolicy at 1@PEAPEAVMemoryPool at 1@@Z
diff --git a/src/tbbmalloc/xbox360-tbbmalloc-export.def b/src/tbbmalloc/xbox360-tbbmalloc-export.def
index fff42f1..0a010bc 100644
--- a/src/tbbmalloc/xbox360-tbbmalloc-export.def
+++ b/src/tbbmalloc/xbox360-tbbmalloc-export.def
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 EXPORTS
 
@@ -35,9 +27,9 @@ scalable_posix_memalign @5
 scalable_aligned_malloc @6
 scalable_aligned_realloc @7
 scalable_aligned_free @8
-safer_scalable_free @9
-safer_scalable_realloc @10
+__TBB_malloc_safer_free @9
+__TBB_malloc_safer_realloc @10
 scalable_msize @11
-safer_scalable_msize @12
-safer_scalable_aligned_realloc @13
-safer_scalable_aligned_msize @14
+__TBB_malloc_safer_msize @12
+__TBB_malloc_safer_aligned_realloc @13
+__TBB_malloc_safer_aligned_msize @14
diff --git a/src/tbbproxy/tbbproxy-windows.asm b/src/tbbproxy/tbbproxy-windows.asm
index df041ae..2d0d3ed 100644
--- a/src/tbbproxy/tbbproxy-windows.asm
+++ b/src/tbbproxy/tbbproxy-windows.asm
@@ -1,28 +1,20 @@
-; Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+; Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 ;
-; This file is part of Threading Building Blocks.
+; This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+; you can redistribute it and/or modify it under the terms of the GNU General Public License
+; version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+; distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See  the GNU General Public License for more details.   You should have received a copy of
+; the  GNU General Public License along with Threading Building Blocks; if not, write to the
+; Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 ;
-; Threading Building Blocks is free software; you can redistribute it
-; and/or modify it under the terms of the GNU General Public License
-; version 2 as published by the Free Software Foundation.
-;
-; Threading Building Blocks is distributed in the hope that it will be
-; useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-; of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU General Public License for more details.
-;
-; You should have received a copy of the GNU General Public License
-; along with Threading Building Blocks; if not, write to the Free Software
-; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-;
-; As a special exception, you may use this file as part of a free software
-; library without restriction.  Specifically, if other files instantiate
-; templates or use macros or inline functions from this file, or you compile
-; this file and link it with other files to produce an executable, this
-; file does not by itself cause the resulting executable to be covered by
-; the GNU General Public License.  This exception does not however
-; invalidate any other reasons why the executable file might be covered by
-; the GNU General Public License.
+; As a special exception,  you may use this file  as part of a free software library without
+; restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+; functions from this file, or you compile this file and link it with other files to produce
+; an executable,  this file does not by itself cause the resulting executable to be covered
+; by the GNU General Public License. This exception does not however invalidate any other
+; reasons why the executable file might be covered by the GNU General Public License.
 
 #include "tbb/tbb_config.h"
 
diff --git a/src/tbbproxy/tbbproxy.cpp b/src/tbbproxy/tbbproxy.cpp
index 11a3a3b..3c5f307 100644
--- a/src/tbbproxy/tbbproxy.cpp
+++ b/src/tbbproxy/tbbproxy.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
@@ -123,7 +115,7 @@ static void _tell( char const * format, va_list args ) {
 } // _tell
 
 
-// Print message to stderr unconditinally.
+// Print message to stderr unconditionally.
 static void say( char const * format, ... ) {
     va_list args;
     va_start( args, format );
@@ -175,7 +167,7 @@ static tbb::runtime_loader::error_code error( tbb::runtime_loader::error_mode mo
 
 /*
     ------------------------------------------------------------------------------------------------
-    General-purpose string manupulation utilities.
+    General-purpose string manipulation utilities.
     ------------------------------------------------------------------------------------------------
 */
 
@@ -543,7 +535,7 @@ static tbb::runtime_loader::error_code load( tbb::runtime_loader::error_mode mod
 
 
 
-// Supress "defined but not used" compiler warnings.
+// Suppress "defined but not used" compiler warnings.
 static void const * dummy[] = {
     (void *) & strip,
     (void *) & trim,
diff --git a/src/test/harness.h b/src/test/harness.h
index e0ade7c..7044d96 100644
--- a/src/test/harness.h
+++ b/src/test/harness.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Declarations for rock-bottom simple test harness.
@@ -38,7 +30,6 @@
 
 #include "tbb/tbb_config.h"
 #include "harness_defs.h"
-#include <exception> //for set_terminate
 
 namespace Harness {
     enum TestResult {
@@ -91,7 +82,7 @@ int TestMain ();
 
 #if _WIN32||_WIN64
     #include "tbb/machine/windows_api.h"
-    #if _WIN32_WINNT > 0x0501 && _MSC_VER
+    #if _WIN32_WINNT > 0x0501 && _MSC_VER && !_M_ARM
         #include <dbghelp.h>
         #pragma comment (lib, "dbghelp.lib")
     #endif
@@ -153,12 +144,13 @@ void print_call_stack() {
             if(!SymFromAddr( GetCurrentProcess(), DWORD64(buff[i]), &offset, &sym )) {
                 sym.Address = ULONG64(buff[i]); offset = 0; sym.Name[0] = 0;
             }
-            REPORT("[%d] %016I64LX+%04I64LX: %s\n", i, sym.Address, offset, sym.Name); //TODO: print module name
+            REPORT("[%d] %016I64X+%04I64X: %s\n", i, sym.Address, offset, sym.Name); //TODO: print module name
         }
     #endif /*BACKTRACE_FUNCTION_AVAILABLE*/
 }
 
 #if !HARNESS_NO_ASSERT
+    #include <exception> //for set_terminate
     #include "harness_assert.h"
     #if TEST_USES_TBB
         #include <tbb/tbb_stddef.h> /*set_assertion_handler*/
@@ -339,6 +331,10 @@ static void ParseCommandLine( int argc, char* argv[] ) {
 #include "mpi.h"
 #endif
 
+#if __TBB_MIC_OFFLOAD && __MIC__
+extern "C" int COIProcessProxyFlush();
+#endif
+
 HARNESS_EXPORT
 #if HARNESS_NO_PARSE_COMMAND_LINE
 int main() {
@@ -391,7 +387,16 @@ int main(int argc, char* argv[]) {
     #pragma offload target(mic) out(res) mandatory
 #endif
 #endif
-    res = TestMain ();
+    {
+        res = TestMain();
+#if __TBB_MIC_OFFLOAD && __MIC__
+        // It is recommended not to use the __MIC__ macro directly in the offload block but it is Ok here
+        // since it is not lead to an unexpected difference between host and target compilation phases.
+        // We need to flush internals COI buffers to order output from the offload part before the host part.
+        // Also it is work-around for the issue with missed output.
+        COIProcessProxyFlush();
+#endif
+    }
 
     ASSERT( res==Harness::Done || res==Harness::Skipped, "Wrong return code by TestMain");
 #if __TBB_MPI_INTEROP
@@ -449,7 +454,11 @@ public:
         thread_handle = thread_tmp->native_handle();
         thread_id = 0;
 #else
-        thread_handle = (HANDLE)_beginthreadex( NULL, 0, thread_function, this, 0, &thread_id );
+        unsigned stack_size = 0;
+#if HARNESS_THREAD_STACK_SIZE
+        stack_size = HARNESS_THREAD_STACK_SIZE;
+#endif
+        thread_handle = (HANDLE)_beginthreadex( NULL, stack_size, thread_function, this, 0, &thread_id );
 #endif
         ASSERT( thread_handle!=0, "NativeParallelFor: _beginthreadex failed" );
 #else
@@ -463,6 +472,7 @@ public:
         // Therefore we set the stack size explicitly (as for TBB worker threads).
 // TODO: make a single definition of MByte used by all tests.
         const size_t MByte = 1024*1024;
+#if !defined(HARNESS_THREAD_STACK_SIZE)
 #if __i386__||__i386||__arm__
         const size_t stack_size = 1*MByte;
 #elif __x86_64__
@@ -470,6 +480,9 @@ public:
 #else
         const size_t stack_size = 4*MByte;
 #endif
+#else
+        const size_t stack_size = HARNESS_THREAD_STACK_SIZE;
+#endif /* HARNESS_THREAD_STACK_SIZE */
         pthread_attr_t attr_stack;
         int status = pthread_attr_init(&attr_stack);
         ASSERT(0==status, "NativeParallelFor: pthread_attr_init failed");
@@ -592,6 +605,11 @@ T1 max ( const T1& val1, const T2& val2 ) {
 }
 #endif /* !max */
 
+template<typename T>
+static inline bool is_aligned(T arg, size_t alignment) {
+    return 0==((size_t)arg &  (alignment-1));
+}
+
 #if __linux__
 inline unsigned LinuxKernelVersion()
 {
@@ -670,6 +688,30 @@ public:
     tid_t CurrentTid () { return pthread_self(); }
 #endif /* !WIN */
 
+    static const unsigned Primes[] = {
+        0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5, 0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b,
+        0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231, 0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b,
+        0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801, 0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3,
+        0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed, 0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b,
+        0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9, 0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7,
+        0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7, 0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7,
+        0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b, 0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b,
+        0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3, 0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f
+    };
+
+    class FastRandom {
+        unsigned x, a;
+    public:
+        unsigned short get() {
+            unsigned short r = (unsigned short)(x >> 16);
+            x = x*a + 1;
+            return r;
+        }
+        FastRandom( unsigned seed ) {
+            x = seed;
+            a = Primes[seed % (sizeof(Primes) / sizeof(Primes[0]))];
+        }
+    };
 } // namespace Harness
 
 #endif /* tbb_tests_harness_H */
diff --git a/src/test/harness_allocator.h b/src/test/harness_allocator.h
index d5b2bcd..8392dbe 100644
--- a/src/test/harness_allocator.h
+++ b/src/test/harness_allocator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Declarations for simple estimate of the memory being used by a program.
@@ -31,6 +23,9 @@
 // This header is an optional part of the test harness.
 // It assumes that "harness_assert.h" has already been included.
 
+#ifndef tbb_test_harness_allocator_H
+#define tbb_test_harness_allocator_H
+
 #if __linux__ || __APPLE__ || __sun
 #include <unistd.h>
 #elif _WIN32 
@@ -46,23 +41,160 @@
 #endif
 
 #include <stdexcept>
+#include <algorithm>  // std::swap
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     #pragma warning (pop)
 #endif
 
 #include "tbb/atomic.h"
+#include "harness_defs.h"
 
 #if __SUNPRO_CC
 using std::printf;
 #endif
 
-#if defined(_MSC_VER) && defined(_Wp64)
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
     // Workaround for overzealous compiler warnings in /Wp64 mode
     #pragma warning (push)
+#if defined(_Wp64)
     #pragma warning (disable: 4267)
 #endif
+#if _MSC_VER <= 1600
+    #pragma warning (disable: 4355)
+#endif
+#if _MSC_VER <= 1800
+    #pragma warning (disable: 4512)
+#endif
+#endif
+
+#if TBB_INTERFACE_VERSION >= 7005
+// Allocator traits were introduced in 4.2 U5
+namespace Harness {
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+    using std::true_type;
+    using std::false_type;
+#else
+    using tbb::internal::true_type;
+    using tbb::internal::false_type;
+#endif //__TBB_ALLOCATOR_TRAITS_PRESENT
+}
+#endif
+
+template<typename counter_type = size_t>
+struct arena_data  {
+    char * const my_buffer;
+    size_t const my_size; //in bytes
+    counter_type my_allocated; // in bytes
+
+    template<typename T>
+    arena_data(T * a_buffer, size_t a_size) __TBB_NOEXCEPT(true)
+    :   my_buffer(reinterpret_cast<char *>(a_buffer))
+    ,   my_size(a_size * sizeof(T) )
+    {
+        my_allocated =0;
+    }
+};
+
+template<typename T, typename pocma = Harness::false_type, typename counter_type = size_t>
+struct arena {
+    typedef arena_data<counter_type> arena_data_t;
+private:
+    arena_data_t * my_data;
+public:
+    typedef T value_type;
+    typedef value_type* pointer;
+    typedef const value_type* const_pointer;
+    typedef value_type& reference;
+    typedef const value_type& const_reference;
+    typedef size_t size_type;
+    typedef ptrdiff_t difference_type;
+    template<typename U> struct rebind {
+        typedef arena<U, pocma, counter_type> other;
+    };
+
+    typedef pocma propagate_on_container_move_assignment;
+
+    arena(arena_data_t & data) __TBB_NOEXCEPT(true) : my_data(&data) {}
+
+    template<typename U1, typename U2, typename U3>
+    friend struct arena;
+
+    template<typename U1, typename U2 >
+    arena(arena<U1, U2, counter_type> const& other) __TBB_NOEXCEPT(true) : my_data(other.my_data) {}
+
+    friend void swap(arena & lhs ,arena & rhs){
+        std::swap(lhs.my_data, rhs.my_data);
+    }
+
+    pointer address(reference x) const {return &x;}
+    const_pointer address(const_reference x) const {return &x;}
+
+    //! Allocate space for n objects, starting on a cache/sector line.
+    pointer allocate( size_type n, const void* =0) {
+        size_t new_size = (my_data->my_allocated += n*sizeof(T));
+        __TBB_ASSERT(my_data->my_allocated <= my_data->my_size,"trying to allocate more than was reserved");
+        char* result =  &(my_data->my_buffer[new_size - n*sizeof(T)]);
+        return reinterpret_cast<pointer>(result);
+    }
+
+    //! Free block of memory that starts on a cache line
+    void deallocate( pointer p_arg, size_type n) {
+        char* p = reinterpret_cast<char*>(p_arg);
+        __TBB_ASSERT(p >=my_data->my_buffer && p <= my_data->my_buffer + my_data->my_size, "trying to deallocate pointer not from arena ?");
+        __TBB_ASSERT(p + n*sizeof(T) <= my_data->my_buffer + my_data->my_size, "trying to deallocate incorrect number of items?");
+        tbb::internal::suppress_unused_warning(p, n);
+    }
+
+    //! Largest value for which method allocate might succeed.
+    size_type max_size() const throw() {
+        return my_data->my_size / sizeof(T);
+    }
+
+    //! Copy-construct value at location pointed to by p.
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+    template<typename U, typename... Args>
+    void construct(U *p, Args&&... args)
+        { ::new((void *)p) U(std::forward<Args>(args)...); }
+#else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void construct( pointer p, value_type&& value ) {::new((void*)(p)) value_type(std::move(value));}
+#endif
+    void construct( pointer p, const value_type& value ) {::new((void*)(p)) value_type(value);}
+#endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+
+    //! Destroy value at location pointed to by p.
+    void destroy( pointer p ) {
+        p->~value_type();
+#if _MSC_VER <= 1800 && defined(_MSC_VER) && !defined(__INTEL_COMPILER)
+        tbb::internal::suppress_unused_warning(p);
+#endif
+    }
+
+    friend bool operator==(arena const& lhs, arena const& rhs){
+        return lhs.my_data == rhs.my_data;
+    }
+
+    friend bool operator!=(arena const& lhs, arena const& rhs){
+        return !(lhs== rhs);
+    }
+};
 
+template <typename count_t = tbb::atomic<size_t> >
+struct allocator_counters {
+    count_t items_allocated;
+    count_t items_freed;
+    count_t allocations;
+    count_t frees;
+
+    friend bool operator==(allocator_counters const & lhs, allocator_counters const & rhs){
+        return     lhs.items_allocated == rhs.items_allocated
+                && lhs.items_freed == rhs.items_freed
+                && lhs.allocations == rhs.allocations
+                && lhs.frees == rhs.frees
+        ;
+    }
+};
 
 template <typename base_alloc_t, typename count_t = tbb::atomic<size_t> >
 class static_counting_allocator : public base_alloc_t
@@ -79,6 +211,8 @@ public:
         typedef static_counting_allocator<typename base_alloc_t::template rebind<U>::other,count_t> other;
     };
 
+    typedef allocator_counters<count_t> counters_t;
+
     static size_t max_items;
     static count_t items_allocated;
     static count_t items_freed;
@@ -107,9 +241,10 @@ public:
                 __TBB_THROW( std::bad_alloc() );
             return NULL;
         }
+        pointer p = base_alloc_t::allocate(n, pointer(0));
         allocations++;
         items_allocated += n;
-        return base_alloc_t::allocate(n, pointer(0));
+        return p;
     }
 
     pointer allocate(const size_type n, const void * const)
@@ -123,6 +258,11 @@ public:
         base_alloc_t::deallocate(ptr, n);
     }
 
+    static counters_t counters(){
+        counters_t c = {items_allocated, items_freed, allocations, frees} ;
+        return c;
+    }
+
     static void init_counters(bool v = false) {
         verbose = v;
         if(verbose) printf("\n------------------------------------------- Allocations:\n");
@@ -154,6 +294,116 @@ bool static_counting_allocator<base_alloc_t, count_t>::verbose;
 template <typename base_alloc_t, typename count_t>
 bool static_counting_allocator<base_alloc_t, count_t>::throwing;
 
+
+template <typename tag, typename count_t = tbb::atomic<size_t> >
+class static_shared_counting_allocator_base
+{
+public:
+    typedef allocator_counters<count_t> counters_t;
+
+    static size_t max_items;
+    static count_t items_allocated;
+    static count_t items_freed;
+    static count_t allocations;
+    static count_t frees;
+    static bool verbose, throwing;
+
+    static counters_t counters(){
+        counters_t c = {items_allocated, items_freed, allocations, frees} ;
+        return c;
+    }
+
+    static void init_counters(bool v = false) {
+        verbose = v;
+        if(verbose) printf("\n------------------------------------------- Allocations:\n");
+        items_allocated = 0;
+        items_freed = 0;
+        allocations = 0;
+        frees = 0;
+        max_items = 0;
+    }
+
+    static void set_limits(size_t max = 0, bool do_throw = true) {
+        max_items = max;
+        throwing = do_throw;
+    }
+};
+
+template <typename tag, typename count_t>
+size_t static_shared_counting_allocator_base<tag, count_t>::max_items;
+
+template <typename tag, typename count_t>
+count_t static_shared_counting_allocator_base<tag, count_t>::items_allocated;
+
+template <typename tag, typename count_t>
+count_t static_shared_counting_allocator_base<tag, count_t>::items_freed;
+
+template <typename tag, typename count_t>
+count_t static_shared_counting_allocator_base<tag, count_t>::allocations;
+
+template <typename tag, typename count_t>
+count_t static_shared_counting_allocator_base<tag, count_t>::frees;
+
+template <typename tag, typename count_t>
+bool static_shared_counting_allocator_base<tag, count_t>::verbose;
+
+template <typename tag, typename count_t>
+bool static_shared_counting_allocator_base<tag, count_t>::throwing;
+
+template <typename tag, typename base_alloc_t, typename count_t = tbb::atomic<size_t> >
+class static_shared_counting_allocator : public static_shared_counting_allocator_base<tag, count_t>, public base_alloc_t
+{
+    typedef static_shared_counting_allocator_base<tag, count_t> base_t;
+public:
+    typedef typename base_alloc_t::pointer pointer;
+    typedef typename base_alloc_t::const_pointer const_pointer;
+    typedef typename base_alloc_t::reference reference;
+    typedef typename base_alloc_t::const_reference const_reference;
+    typedef typename base_alloc_t::value_type value_type;
+    typedef typename base_alloc_t::size_type size_type;
+    typedef typename base_alloc_t::difference_type difference_type;
+    template<typename U> struct rebind {
+        typedef static_shared_counting_allocator<tag, typename base_alloc_t::template rebind<U>::other, count_t> other;
+    };
+
+    static_shared_counting_allocator() throw() { }
+
+    static_shared_counting_allocator(const base_alloc_t& src) throw()
+    : base_alloc_t(src) { }
+
+    static_shared_counting_allocator(const static_shared_counting_allocator& src) throw()
+    : base_alloc_t(src) { }
+
+    template<typename U, typename C>
+    static_shared_counting_allocator(const static_shared_counting_allocator<tag, U, C>& src) throw()
+    : base_alloc_t(src) { }
+
+    pointer allocate(const size_type n)
+    {
+        if(base_t::verbose) printf("\t+%d|", int(n));
+        if(base_t::max_items && base_t::items_allocated + n >= base_t::max_items) {
+            if(base_t::verbose) printf("items limit hits!");
+            if(base_t::throwing)
+                __TBB_THROW( std::bad_alloc() );
+            return NULL;
+        }
+        base_t::allocations++;
+        base_t::items_allocated += n;
+        return base_alloc_t::allocate(n, pointer(0));
+    }
+
+    pointer allocate(const size_type n, const void * const)
+    {   return allocate(n); }
+
+    void deallocate(const pointer ptr, const size_type n)
+    {
+        if(base_t::verbose) printf("\t-%d|", int(n));
+        base_t::frees++;
+        base_t::items_freed += n;
+        base_alloc_t::deallocate(ptr, n);
+    }
+};
+
 template <typename base_alloc_t, typename count_t = tbb::atomic<size_t> >
 class local_counting_allocator : public base_alloc_t
 {
@@ -175,12 +425,27 @@ public:
     count_t frees;
     size_t max_items;
 
+    void set_counters(const count_t & a_items_allocated, const count_t & a_items_freed, const count_t & a_allocations, const count_t & a_frees, const count_t & a_max_items){
+        items_allocated = a_items_allocated;
+        items_freed = a_items_freed;
+        allocations = a_allocations;
+        frees = a_frees;
+        max_items = a_max_items;
+    }
+
+    template< typename allocator_t>
+    void set_counters(const allocator_t & a){
+        this->set_counters(a.items_allocated, a.items_freed, a.allocations, a.frees, a.max_items);
+    }
+
+    void clear_counters(){
+        count_t zero;
+        zero = 0;
+        this->set_counters(zero,zero,zero,zero,zero);
+    }
+
     local_counting_allocator() throw() {
-        items_allocated = 0;
-        items_freed = 0;
-        allocations = 0;
-        frees = 0;
-        max_items = 0;
+        this->clear_counters();
     }
 
     local_counting_allocator(const local_counting_allocator &a) throw()
@@ -193,12 +458,8 @@ public:
     { }
 
     template<typename U, typename C>
-    local_counting_allocator(const static_counting_allocator<U,C> &) throw() {
-        items_allocated = static_counting_allocator<U,C>::items_allocated;
-        items_freed = static_counting_allocator<U,C>::items_freed;
-        allocations = static_counting_allocator<U,C>::allocations;
-        frees = static_counting_allocator<U,C>::frees;
-        max_items = static_counting_allocator<U,C>::max_items;
+    local_counting_allocator(const static_counting_allocator<U,C> & a) throw() {
+        this->set_counters(a);
     }
 
     template<typename U, typename C>
@@ -211,15 +472,16 @@ public:
     { }
 
     bool operator==(const local_counting_allocator &a) const
-    { return &a == this; }
+    { return static_cast<const base_alloc_t&>(a) == *this; }
 
     pointer allocate(const size_type n)
     {
         if(max_items && items_allocated + n >= max_items)
             __TBB_THROW( std::bad_alloc() );
+        pointer p = base_alloc_t::allocate(n, pointer(0));
         ++allocations;
         items_allocated += n;
-        return base_alloc_t::allocate(n, pointer(0));
+        return p;
     }
 
     pointer allocate(const size_type n, const void * const)
@@ -288,7 +550,78 @@ inline bool operator!=( const debug_allocator<T1,B1> &a, const debug_allocator<T
     return static_cast< B1<T1> >(a) != static_cast< B2<T2> >(b);
 }
 
-#if defined(_MSC_VER) && defined(_Wp64)
-    // Workaround for overzealous compiler warnings in /Wp64 mode
+template <typename T, typename pocma = Harness::false_type, template<typename X> class Allocator = std::allocator>
+class stateful_allocator : public Allocator<T>
+{
+    void* unique_pointer;
+
+    template<typename T1, typename pocma1, template<typename X1> class Allocator1>
+    friend class  stateful_allocator;
+public:
+    typedef Allocator<T> base_allocator_type;
+    typedef typename base_allocator_type::value_type value_type;
+    typedef typename base_allocator_type::pointer pointer;
+    typedef typename base_allocator_type::const_pointer const_pointer;
+    typedef typename base_allocator_type::reference reference;
+    typedef typename base_allocator_type::const_reference const_reference;
+    typedef typename base_allocator_type::size_type size_type;
+    typedef typename base_allocator_type::difference_type difference_type;
+    template<typename U> struct rebind {
+        typedef stateful_allocator<U, pocma, Allocator> other;
+    };
+    typedef pocma propagate_on_container_move_assignment;
+
+    stateful_allocator() throw() : unique_pointer(this) { }
+
+    template<typename U>
+    stateful_allocator(const stateful_allocator<U, pocma> &a) throw() : base_allocator_type( Allocator<U>( a ) ),  unique_pointer(a.uniqe_pointer) { }
+
+    friend bool operator==(stateful_allocator const& lhs, stateful_allocator const& rhs){
+        return lhs.unique_pointer == rhs.unique_pointer;
+    }
+
+    friend bool operator!=(stateful_allocator const& rhs, stateful_allocator const& lhs){
+        return !(lhs == rhs);
+    }
+
+};
+
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
+    // Workaround for overzealous compiler warnings
     #pragma warning (pop)
-#endif // warning 4267 is back
+#endif // warning 4267,4512,4355 is back
+
+namespace Harness {
+
+    struct IsEqual {
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+        template <typename T>
+        static bool compare( const std::weak_ptr<T> &t1, const std::weak_ptr<T> &t2 ) {
+            // Compare real pointers.
+            return t1.lock().get() == t2.lock().get();
+        }
+        template <typename T>
+        static bool compare( const std::unique_ptr<T> &t1, const std::unique_ptr<T> &t2 ) {
+            // Compare real values.
+            return *t1 == *t2;
+        }
+        template <typename T1, typename T2>
+        static bool compare( const std::pair< const std::weak_ptr<T1>, std::weak_ptr<T2> > &t1,
+                const std::pair< const std::weak_ptr<T1>, std::weak_ptr<T2> > &t2 ) {
+            // Compare real pointers.
+            return t1.first.lock().get() == t2.first.lock().get() &&
+                t1.second.lock().get() == t2.second.lock().get();
+        }
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+        template <typename T1, typename T2>
+        static bool compare( const T1 &t1, const T2 &t2 ) {
+            return t1 == t2;
+        }
+        template <typename T1, typename T2>
+        bool operator()( T1 &t1, T2 &t2) const {
+            return compare( (const T1&)t1, (const T2&)t2 );
+        }
+    };
+
+} // Harness
+#endif // tbb_test_harness_allocator_H
diff --git a/src/test/harness_assert.h b/src/test/harness_assert.h
index 9402848..f3897de 100644
--- a/src/test/harness_assert.h
+++ b/src/test/harness_assert.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Just the assertion portion of the harness.
@@ -38,8 +30,9 @@
 void ReportError( const char* filename, int line, const char* expression, const char* message); 
 void ReportWarning( const char* filename, int line, const char* expression, const char* message); 
 
-#define ASSERT(p,message) ((p)?(void)0:ReportError(__FILE__,__LINE__,#p,message))
-#define ASSERT_WARNING(p,message) ((p)?(void)0:ReportWarning(__FILE__,__LINE__,#p,message))
+#define ASSERT_CUSTOM(p,message,file,line)  ((p)?(void)0:ReportError(file,line,#p,message))
+#define ASSERT(p,message)                   ASSERT_CUSTOM(p,message,__FILE__,__LINE__)
+#define ASSERT_WARNING(p,message)           ((p)?(void)0:ReportWarning(__FILE__,__LINE__,#p,message))
 
 //! Compile-time error if x and y have different types
 template<typename T>
diff --git a/src/test/harness_bad_expr.h b/src/test/harness_bad_expr.h
index ace7b9f..a7cc652 100644
--- a/src/test/harness_bad_expr.h
+++ b/src/test/harness_bad_expr.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Declarations for checking __TBB_ASSERT checks inside TBB.
diff --git a/src/test/harness_barrier.h b/src/test/harness_barrier.h
index 877217b..7fb4011 100644
--- a/src/test/harness_barrier.h
+++ b/src/test/harness_barrier.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/atomic.h"
@@ -93,20 +85,28 @@ public:
     bool custom_wait(const WaitEq &onWaitCallback, const Callback &onOpenBarrierCallback)
     { // return true if last thread
         unsigned myEpoch = epoch;
-        int threadsLeft = numThreads - numThreadsFinished.fetch_and_increment() - 1;
+        unsigned myNumThreads = numThreads; // read it before the increment
+        int threadsLeft = myNumThreads - numThreadsFinished.fetch_and_increment() - 1;
         ASSERT(threadsLeft>=0, "Broken barrier");
         if (threadsLeft > 0) {
             /* not the last threading reaching barrier, wait until epoch changes & return 0 */
             onWaitCallback(epoch, myEpoch);
             return false;
         }
+        onOpenBarrierCallback();
         /* No more threads left to enter, so I'm the last one reaching this epoch;
            reset the barrier, increment epoch, and return non-zero */
-        onOpenBarrierCallback();
-        numThreadsFinished = 0;
-        epoch = myEpoch+1; /* wakes up threads waiting to exit this epoch */
+        threadsLeft = numThreadsFinished -= myNumThreads;
+        ASSERT( threadsLeft == 0, "Broken barrier");
+        /* wakes up threads waiting to exit this epoch */
+        myEpoch -= epoch++;
+        ASSERT( myEpoch == 0, "Broken barrier");
         return true;
     }
+    bool timed_wait_noerror(double n_seconds) {
+        custom_wait(TimedWaitWhileEq(n_seconds), DummyCallback());
+        return n_seconds >= 0.0001;
+    }
     bool timed_wait(double n_seconds, const char *msg="Time is out while waiting on a barrier") {
         bool is_last = custom_wait(TimedWaitWhileEq(n_seconds), DummyCallback());
         ASSERT( n_seconds >= 0, msg); // TODO: refactor to avoid passing msg here and rising assertion
diff --git a/src/test/harness_checktype.h b/src/test/harness_checktype.h
index 232dec7..25ae08c 100644
--- a/src/test/harness_checktype.h
+++ b/src/test/harness_checktype.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef tbb_tests_harness_checktype_H
@@ -59,6 +51,7 @@ public:
     }
 
     operator int() const { return (int)my_id(); }
+    check_type& operator++() { ++id; return *this;; }
 
     ~check_type() { 
         AssertLive(); 
diff --git a/src/test/harness_concurrency.h b/src/test/harness_concurrency.h
index 7d0ca92..9b283f8 100644
--- a/src/test/harness_concurrency.h
+++ b/src/test/harness_concurrency.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef tbb_tests_harness_concurrency_H
diff --git a/src/test/harness_concurrency_checker.h b/src/test/harness_concurrency_checker.h
new file mode 100644
index 0000000..e795f10
--- /dev/null
+++ b/src/test/harness_concurrency_checker.h
@@ -0,0 +1,80 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef tbb_tests_harness_concurrency_checker_H
+#define tbb_tests_harness_concurrency_checker_H
+
+#include "harness_assert.h"
+#include "harness_barrier.h"
+#include "tbb/atomic.h"
+#include "tbb/mutex.h"
+#include "tbb/task.h"
+
+namespace Harness {
+
+/* note that if concurrency level is below than expected,
+   the execution takes WAIT_SEC seconds */
+class ConcurrencyChecker : public tbb::task {
+public:
+    struct State {
+        Harness::SpinBarrier barrier;
+        Harness::SpinBarrier join;
+        const double         wait_sec;
+        tbb::atomic<bool>    result;
+
+        State(unsigned nthreads, double w_s)
+            : barrier(nthreads), join(nthreads), wait_sec(w_s) {
+            result = true;
+        }
+        void check() {
+            if( !barrier.timed_wait_noerror(wait_sec) )
+                result = false;
+        }
+    };
+
+    ConcurrencyChecker(State *s) : st(s) { }
+
+    tbb::task* execute() {
+        if( st->result ) // skip if the time-out is detected already
+            st->check();
+        st->join.signal_nowait();
+        return NULL;
+    }
+private:
+    State *st;
+};
+
+bool CanReachConcurrencyLevel(int conc_level, double wait_timeout_sec = 30.)
+{
+    static tbb::mutex global_mutex;
+    // prevent concurrent calls to this function from deadlock due to the barrier
+    tbb::mutex::scoped_lock lock(global_mutex);
+    ConcurrencyChecker::State state(conc_level, wait_timeout_sec);
+
+    for( int i=1; i<conc_level; i++)
+        tbb::task::enqueue( *new(tbb::task::allocate_root()) ConcurrencyChecker(&state) );
+    state.check();
+    state.join.wait();
+    return state.result;
+}
+
+} // namespace Harness
+
+#endif /* tbb_tests_harness_concurrency_checker_H */
diff --git a/src/test/harness_concurrency_tracker.h b/src/test/harness_concurrency_tracker.h
index 2b31400..dacee0f 100644
--- a/src/test/harness_concurrency_tracker.h
+++ b/src/test/harness_concurrency_tracker.h
@@ -1,37 +1,32 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef tbb_tests_harness_concurrency_tracker_H
 #define tbb_tests_harness_concurrency_tracker_H
 
-#include "harness.h"
+#include "harness_assert.h"
+#include "harness_barrier.h"
 #include "tbb/atomic.h"
 #include "../tbb/tls.h"
+// Note: This file is used by RML tests which do not link TBB
+// Thus only header-only TBB features can be included
 
 namespace Harness {
 
diff --git a/src/test/harness_cpu.h b/src/test/harness_cpu.h
index c1bef23..bc2b812 100644
--- a/src/test/harness_cpu.h
+++ b/src/test/harness_cpu.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Declarations for simple estimate of CPU time being used by a program.
diff --git a/src/test/harness_defs.h b/src/test/harness_defs.h
index 2b4a4ae..054dd44 100644
--- a/src/test/harness_defs.h
+++ b/src/test/harness_defs.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_harness_defs_H
@@ -58,32 +50,36 @@
 //ICC has a bug in assumptions of the modifications made via atomic pointer
 #define __TBB_ICC_BUILTIN_ATOMICS_POINTER_ALIASING_BROKEN (TBB_USE_ICC_BUILTINS &&  __INTEL_COMPILER < 1400 && __INTEL_COMPILER > 1200)
 
-#if (_WIN32 && !__TBB_WIN8UI_SUPPORT) || (__linux__ && !__ANDROID__) || __FreeBSD_version >= 701000
+#if (_WIN32 && !__TBB_WIN8UI_SUPPORT) || (__linux__ && !__ANDROID__ && !__bg__) || __FreeBSD_version >= 701000
 #define __TBB_TEST_SKIP_AFFINITY 0
 #else
 #define __TBB_TEST_SKIP_AFFINITY 1
 #endif
 
 #if __INTEL_COMPILER
-  #define __TBB_LAMBDAS_PRESENT ( _TBB_CPP0X && __INTEL_COMPILER > 1100 )
-#elif __clang__
-  #define __TBB_LAMBDAS_PRESENT ( _TBB_CPP0X && __has_feature(cxx_lambdas))
-#elif __GNUC__
-  #define __TBB_LAMBDAS_PRESENT ( _TBB_CPP0X && __TBB_GCC_VERSION >= 40500 )
-#elif _MSC_VER
-  #define __TBB_LAMBDAS_PRESENT ( _MSC_VER >= 1600 )
-#endif
-
-#if __INTEL_COMPILER
+  #define __TBB_CPP11_REFERENCE_WRAPPER_PRESENT ( _TBB_CPP0X && __INTEL_COMPILER >= 1200 && \
+    ( _MSC_VER >= 1600 || __TBB_GCC_VERSION >= 40400 || ( __clang__ && __cplusplus >= 201103L ) ) )
   #define __TBB_RANGE_BASED_FOR_PRESENT ( _TBB_CPP0X && __INTEL_COMPILER >= 1300 )
+  #define __TBB_SCOPED_ENUM_PRESENT ( _TBB_CPP0X && __INTEL_COMPILER > 1100 )
 #elif __clang__
-  #define __TBB_RANGE_BASED_FOR_PRESENT ( __has_feature(__cxx_range_for))
+  #define __TBB_CPP11_REFERENCE_WRAPPER_PRESENT ( _TBB_CPP0X && __cplusplus >= 201103L && (__TBB_GCC_VERSION >= 40400 || _LIBCPP_VERSION) )
+  #define __TBB_RANGE_BASED_FOR_PRESENT ( _TBB_CPP0X && __has_feature(__cxx_range_for) )
+  #define __TBB_SCOPED_ENUM_PRESENT ( _TBB_CPP0X && __has_feature(cxx_strong_enums) )
 #elif __GNUC__
+  #define __TBB_CPP11_REFERENCE_WRAPPER_PRESENT ( _TBB_CPP0X && __TBB_GCC_VERSION >= 40400 )
   #define __TBB_RANGE_BASED_FOR_PRESENT ( _TBB_CPP0X && __TBB_GCC_VERSION >= 40500 )
+  #define __TBB_SCOPED_ENUM_PRESENT ( _TBB_CPP0X && __TBB_GCC_VERSION >= 40400 )
 #elif _MSC_VER
+  #define __TBB_CPP11_REFERENCE_WRAPPER_PRESENT ( _MSC_VER >= 1600 )
   #define __TBB_RANGE_BASED_FOR_PRESENT ( _MSC_VER >= 1700 )
+  #define __TBB_SCOPED_ENUM_PRESENT ( _MSC_VER >= 1700 )
 #endif
 
+//Due to libc++ limitations in C++03 mode, do not pass rvalues to std::make_shared()
+#define __TBB_CPP11_SMART_POINTERS_PRESENT ( _MSC_VER >= 1600 || _TBB_CPP0X && __TBB_GCC_VERSION >= 40400 || _LIBCPP_VERSION)
+#define __TBB_LAMBDAS_PRESENT __TBB_CPP11_LAMBDAS_PRESENT // TODO: replace the old macro in tests
+#define __TBB_TEST_SKIP_LAMBDA (__TBB_ICC_13_0_CPP11_STDLIB_SUPPORT_BROKEN || !__TBB_CPP11_LAMBDAS_PRESENT)
+
 #if __GNUC__ && __ANDROID__
   /** Android GCC does not support _thread keyword **/
   #define __TBB_THREAD_LOCAL_VARIABLES_PRESENT 0
@@ -91,21 +87,20 @@
   #define __TBB_THREAD_LOCAL_VARIABLES_PRESENT 1
 #endif
 
-#if __ANDROID__
-  /** Android Bionic library does not support posix_memalign() **/
-  #define __TBB_POSIX_MEMALIGN_PRESENT 0
-  /** Android Bionic library does not support pvalloc() **/
-  #define __TBB_PVALLOC_PRESENT 0
-#else
-  #define __TBB_POSIX_MEMALIGN_PRESENT 1
-  #define __TBB_PVALLOC_PRESENT 1
-#endif
-
-//MSVC 2013 is unable to properly resolve call to overloaded operator= with std::initilizer_list argument for std::pair list elements
-#define __TBB_CPP11_INIT_LIST_ASSIGN_OP_RESOLUTION_BROKEN     _MSC_FULL_VER <= 180021005 && _MSC_VER && !__INTEL_COMPILER
+//MSVC 2013 is unable to properly resolve call to overloaded operator= with std::initializer_list argument for std::pair list elements
+#define __TBB_CPP11_INIT_LIST_ASSIGN_OP_RESOLUTION_BROKEN (_MSC_FULL_VER <= 180030723 && _MSC_VER && !__INTEL_COMPILER)
+//MSVC 2013 is unable to manage lifetime of temporary objects passed to a std::initializer_list constructor properly
+#define __TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN (_MSC_FULL_VER < 180030501 && _MSC_VER && !__INTEL_COMPILER)
 //Implementation of C++11 std::placeholders in libstdc++ coming with gcc prior to 4.5 reveals bug in Intel Compiler 13 causing "multiple definition" link errors.
 #define __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN ((__INTEL_COMPILER == 1300 || __INTEL_COMPILER == 1310 )&& __GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION < 40500)
 
+//some compilers do not generate implicitly move constructor and assignment operator, as this feature (r-value reference 3.0) was added later
+#if __clang__ &&  !__INTEL_COMPILER
+  #define __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_BROKEN !__has_feature(cxx_implicit_moves)
+#else
+  #define __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_BROKEN  (__TBB_CPP11_RVALUE_REF_PRESENT && ( !__INTEL_COMPILER && _MSC_VER && _MSC_VER <=1800 || __INTEL_COMPILER && __INTEL_COMPILER < 1400))
+#endif
+
 #if __GNUC__ && __ANDROID__
   #define __TBB_EXCEPTION_TYPE_INFO_BROKEN ( __TBB_GCC_VERSION < 40600 )
 #elif _MSC_VER
@@ -120,6 +115,8 @@
 
 #define __TBB_CAS_8_CODEGEN_BROKEN (__TBB_x86_32 && __PIC__ && __TBB_GCC_VERSION == 40102 && !__INTEL_COMPILER)
 
+#define __TBB_THROW_FROM_DTOR_BROKEN (__clang__ &&  (__apple_build_version__ &&  __apple_build_version__ < 5000279 || __TBB_CLANG_VERSION && __TBB_CLANG_VERSION < 50000))
+
 #if __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN
   #define _EXCEPTION_PTR_H /* prevents exception_ptr.h inclusion */
   #define _GLIBCXX_NESTED_EXCEPTION_H /* prevents nested_exception.h inclusion */
@@ -150,6 +147,12 @@
     #endif
 #endif
 
+#ifndef TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    #if __TBB_CPF_BUILD
+        #define TBB_PREVIEW_FLOW_GRAPH_FEATURES 1
+    #endif
+#endif
+
 namespace Harness {
     //! Utility template function to prevent "unused" warnings by various compilers.
     template<typename T> void suppress_unused_warning( const T& ) {}
diff --git a/src/test/harness_dynamic_libs.h b/src/test/harness_dynamic_libs.h
index cd380e9..5384e6c 100644
--- a/src/test/harness_dynamic_libs.h
+++ b/src/test/harness_dynamic_libs.h
@@ -1,36 +1,36 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "tbb/tbb_config.h"
+
+// Include this header file before harness.h for HARNESS_SKIP_TEST to take effect
+#if !__TBB_DYNAMIC_LOAD_ENABLED
+#define HARNESS_SKIP_TEST 1
+#else
+
 #if _WIN32 || _WIN64
 #include "tbb/machine/windows_api.h"
 #else
 #include <dlfcn.h>
 #endif
+#include "harness_assert.h"
 
 namespace Harness {
 
@@ -118,3 +118,5 @@ FunctionAddress GetAddress(Harness::LIBRARY_HANDLE lib, const char *name)
 }
 
 }  // namespace Harness
+
+#endif // __TBB_DYNAMIC_LOAD_ENABLED
diff --git a/src/test/harness_eh.h b/src/test/harness_eh.h
index 1e3aa15..dc70e4a 100644
--- a/src/test/harness_eh.h
+++ b/src/test/harness_eh.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include <typeinfo>
diff --git a/src/test/harness_fp.h b/src/test/harness_fp.h
new file mode 100644
index 0000000..08df60e
--- /dev/null
+++ b/src/test/harness_fp.h
@@ -0,0 +1,172 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+// include system header to prevent standard library to be included under private=public first time
+#include <cstddef>
+#define private public
+#include "tbb/tbb_machine.h"
+#undef private
+#include "harness_assert.h"
+
+#if ( __TBB_x86_32 || __TBB_x86_64 ) && __TBB_CPU_CTL_ENV_PRESENT && !defined(__TBB_WIN32_USE_CL_BUILTINS)
+
+const int FE_TONEAREST = 0x0000,
+          FE_DOWNWARD = 0x0400,
+          FE_UPWARD = 0x0800,
+          FE_TOWARDZERO = 0x0c00,
+          FE_RND_MODE_MASK = FE_TOWARDZERO,
+          SSE_RND_MODE_MASK = FE_RND_MODE_MASK << 3,
+          SSE_DAZ = 0x0040,
+          SSE_FTZ = 0x8000,
+          SSE_MODE_MASK = SSE_DAZ | SSE_FTZ,
+          SSE_STATUS_MASK = 0x3F;
+
+const int NumSseModes = 4;
+const int SseModes[NumSseModes] = { 0, SSE_DAZ, SSE_FTZ, SSE_DAZ | SSE_FTZ };
+
+#if _WIN64 && !__TBB_X86_MSVC_INLINE_ASM_AVAILABLE && !__MINGW64__
+// MinGW uses inline implementation from tbb/machine/linux_intel64.h
+// and when inline asm is not available, the library uses out of line assembly which is not exported
+// thus reimplementing them here
+
+#include <float.h>
+
+inline void __TBB_get_cpu_ctl_env ( tbb::internal::cpu_ctl_env* fe ) {
+    fe->x87cw = short(_control87(0, 0) & _MCW_RC) << 2;
+    fe->mxcsr = _mm_getcsr();
+}
+inline void __TBB_set_cpu_ctl_env ( const tbb::internal::cpu_ctl_env* fe ) {
+    ASSERT( (fe->x87cw & FE_RND_MODE_MASK) == ((fe->x87cw & FE_RND_MODE_MASK) >> 2 & _MCW_RC) << 2, "Check float.h constants" );
+    _control87( (fe->x87cw & FE_RND_MODE_MASK) >> 6, _MCW_RC );
+    _mm_setcsr( fe->mxcsr );
+}
+
+#endif /*  _WIN64 && !__TBB_X86_MSVC_INLINE_ASM_AVAILABLE && !__MINGW64__ */
+
+inline int GetRoundingMode ( bool checkConsistency = true ) {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    ASSERT( !checkConsistency || (ctl.mxcsr & SSE_RND_MODE_MASK) >> 3 == (ctl.x87cw & FE_RND_MODE_MASK), NULL );
+    return ctl.x87cw & FE_RND_MODE_MASK;
+}
+
+inline void SetRoundingMode ( int mode ) {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    ctl.mxcsr = (ctl.mxcsr & ~SSE_RND_MODE_MASK) | (mode & FE_RND_MODE_MASK) << 3;
+    ctl.x87cw = short((ctl.x87cw & ~FE_RND_MODE_MASK) | (mode & FE_RND_MODE_MASK));
+    ctl.set_env();
+}
+
+inline int GetSseMode () {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    return ctl.mxcsr & SSE_MODE_MASK;
+}
+
+inline void SetSseMode ( int mode ) {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    ctl.mxcsr = (ctl.mxcsr & ~SSE_MODE_MASK) | (mode & SSE_MODE_MASK);
+    ctl.set_env();
+}
+
+#elif defined(_M_ARM) || defined(__TBB_WIN32_USE_CL_BUILTINS)
+const int NumSseModes = 1;
+const int SseModes[NumSseModes] = { 0 };
+
+inline int GetSseMode () { return 0; }
+inline void SetSseMode ( int ) {}
+
+const int FE_TONEAREST = _RC_NEAR,
+          FE_DOWNWARD = _RC_DOWN,
+          FE_UPWARD = _RC_UP,
+          FE_TOWARDZERO = _RC_CHOP;
+
+inline int GetRoundingMode ( bool = true ) {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    return ctl.my_ctl;
+}
+inline void SetRoundingMode ( int mode ) {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.my_ctl = mode;
+    ctl.set_env();
+}
+
+#else /* Other archs */
+
+#include <fenv.h>
+
+const int RND_MODE_MASK = FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO;
+
+const int NumSseModes = 1;
+const int SseModes[NumSseModes] = { 0 };
+
+inline int GetRoundingMode ( bool = true ) { return fegetround(); }
+inline void SetRoundingMode ( int rnd ) { fesetround(rnd); }
+
+inline int GetSseMode () { return 0; }
+inline void SetSseMode ( int ) {}
+
+#endif /* Other archs */
+
+const int NumRoundingModes = 4;
+const int RoundingModes[NumRoundingModes] = { FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO };
+const int numFPModes = NumRoundingModes*NumSseModes;
+
+inline void SetFPMode( int mode ) {
+    SetRoundingMode( RoundingModes[mode/NumSseModes%NumRoundingModes] );
+    SetSseMode( SseModes[mode%NumSseModes] );
+}
+
+#define AssertFPMode( mode ) { \
+    ASSERT( GetRoundingMode() == RoundingModes[mode/NumSseModes%NumRoundingModes], "FPU control state has not been set correctly." ); \
+    ASSERT( GetSseMode() == SseModes[mode%NumSseModes], "SSE control state has not been set correctly." ); \
+}
+
+inline int SetNextFPMode( int mode, int step = 1 ) {
+    const int nextMode = (mode+step)%numFPModes;
+    SetFPMode( nextMode );
+    return nextMode;
+}
+
+class FPModeContext {
+    int origSse, origRounding;
+    int currentMode;
+public:
+    FPModeContext(int newMode) {
+        origSse = GetSseMode();
+        origRounding = GetRoundingMode();
+        SetFPMode(currentMode = newMode);
+    }
+    ~FPModeContext() {
+        assertFPMode();
+        SetRoundingMode(origRounding);
+        SetSseMode(origSse);
+    }
+    int setNextFPMode() {
+        assertFPMode();
+        return currentMode = SetNextFPMode(currentMode);
+    }
+    void assertFPMode() {
+        AssertFPMode(currentMode);
+    }
+};
diff --git a/src/test/harness_graph.h b/src/test/harness_graph.h
index e90a068..58712fb 100644
--- a/src/test/harness_graph.h
+++ b/src/test/harness_graph.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /** @file harness_graph.cpp     
@@ -39,6 +31,31 @@
 #include "tbb/atomic.h"
 #include "tbb/concurrent_unordered_map.h"
 #include "tbb/task.h"
+#include "tbb/task_scheduler_init.h"
+
+#define WAIT_MAX 100000
+#define BACKOFF_WAIT(ex,msg) \
+{ \
+    int wait_cnt = 0; \
+    tbb::internal::atomic_backoff backoff; \
+    do { \
+        backoff.pause(); \
+        ++wait_cnt; \
+    } \
+    while( (ex) && (wait_cnt < WAIT_MAX)); \
+    ASSERT(wait_cnt < WAIT_MAX, msg); \
+}
+#define BACKOFF_WAIT_NOASSERT(ex,msg) \
+{ \
+    int wait_cnt = 0; \
+    tbb::internal::atomic_backoff backoff; \
+    do { \
+        backoff.pause(); \
+        ++wait_cnt; \
+    } \
+    while( (ex) && (wait_cnt < WAIT_MAX)); \
+    if(wait_cnt >= WAIT_MAX) REMARK("%s\n",msg); \
+}
 
 // Needed conversion to and from continue_msg, but didn't want to add
 // conversion operators to the class, since we don't want it in general,
@@ -280,7 +297,20 @@ struct harness_counting_receiver : public tbb::flow::receiver<T>, NoCopy {
         ASSERT( n == num_copies*max_value, NULL );
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    built_predecessors_type mbp;
+    /*override*/ built_predecessors_type &built_predecessors() { return mbp; }
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    /*override*/void internal_add_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void internal_delete_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void copy_predecessors(predecessor_list_type &) { }
+    /*override*/size_t predecessor_count() { return 0; }
+    /*override*/void clear_predecessors() { my_count = 0; };
+    /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) { my_count = 0; }
+#else
     /*override*/void reset_receiver() { my_count = 0; }
+#endif
 
 };
 
@@ -336,8 +366,20 @@ struct harness_mapped_receiver : public tbb::flow::receiver<T>, NoCopy {
             ASSERT( n == num_copies*max_value, NULL );
         }
     }
-
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    built_predecessors_type mbp;
+    /*override*/ built_predecessors_type &built_predecessors() { return mbp; }
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    /*override*/void internal_add_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void internal_delete_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void copy_predecessors(predecessor_list_type &) { }
+    /*override*/size_t predecessor_count() { return 0; }
+    /*override*/void clear_predecessors() { my_count = 0; };
+    /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) { my_count = 0; if(my_map) delete my_map; my_map = new map_type; }
+#else
     /*override*/void reset_receiver() { my_count = 0; if(my_map) delete my_map; my_map = new map_type; }
+#endif
 
 };
 
@@ -374,6 +416,18 @@ struct harness_counting_sender : public tbb::flow::sender<T>, NoCopy {
         return true;
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::sender<T>::successor_list_type successor_list_type;
+    typedef typename tbb::flow::sender<T>::built_successors_type built_successors_type;
+    built_successors_type bst;
+    /*override*/ built_successors_type &built_successors() { return bst; }
+    /* override */ void internal_add_built_successor( successor_type &) {}
+    /* override */ void internal_delete_built_successor( successor_type &) {}
+    /* override */ void copy_successors(successor_list_type &) { }
+    /*override*/ void clear_successors() { my_receiver = NULL; }
+    /* override */ size_t successor_count() { return 0; }
+#endif
+
     /* override */ bool try_get( T & v ) { 
         size_t i = my_count.fetch_and_increment();
         if ( i < my_limit ) {
@@ -418,6 +472,528 @@ struct harness_counting_sender : public tbb::flow::sender<T>, NoCopy {
 
 };
 
+// test for resets of buffer-type nodes.
+tbb::atomic<int> serial_fn_state0;
+tbb::atomic<int> serial_fn_state1;
+tbb::atomic<int> serial_continue_state0;
+
+template<typename T>
+struct serial_fn_body {
+    tbb::atomic<int> *_flag;
+    serial_fn_body(tbb::atomic<int> &myatomic) : _flag(&myatomic) { }
+    T operator()(const T& in) {
+        if(*_flag == 0) {
+            *_flag = 1;
+            // wait until we are released
+            tbb::internal::atomic_backoff backoff;
+            do {
+                backoff.pause();
+            } while(*_flag == 1);
+        }
+        // return value
+        return in;
+    }
+};
+
+template<typename T>
+struct serial_continue_body {
+    tbb::atomic<int> *_flag;
+    serial_continue_body(tbb::atomic<int> &myatomic) : _flag(&myatomic) {}
+    T operator()(const tbb::flow::continue_msg& /*in*/) {
+        // signal we have received a value
+        *_flag = 1;
+        // wait until we are released
+        tbb::internal::atomic_backoff backoff;
+        do {
+            backoff.pause();
+        } while(*_flag == 1);
+        // return value
+        return (T)1;
+    }
+};
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
+
+// walk two lists via iterator, match elements of each, in possibly-different ordder, and
+// return true if all elements of sv appear in tv.
+template<typename SV, typename TV>
+bool lists_match(SV &sv, TV &tv) {
+    if(sv.size() != tv.size()) {
+        return false;
+    }
+    std::vector<bool> bv(sv.size(), false);
+    for(typename TV::iterator itv = tv.begin(); itv != tv.end(); ++itv) {
+        int ibv = 0;
+        for(typename SV::iterator isv = sv.begin(); isv != sv.end(); ++isv) {
+            if(!bv[ibv]) {
+                if(*itv == *isv) {
+                    bv[ibv] = true;
+                    goto found_it;;
+                }
+            }
+            ++ibv;
+        }
+        return false;
+found_it:
+        continue;
+    }
+    return true;
+}
+
+template<typename T, typename BufferType>
+void test_resets() {
+    const int NN = 3;
+    tbb::task_scheduler_init init(4);
+    tbb::task_group_context   tgc;
+    tbb::flow::graph          g(tgc);
+    BufferType                b0(g);
+    tbb::flow::queue_node<T>  q0(g);
+    T j;
+    bool nFound[NN];
+    
+    // reset empties buffer
+    for(T i = 0; i < NN; ++i) {
+        b0.try_put(i);
+        nFound[(int)i] = false;
+    }
+    g.wait_for_all();
+    g.reset();
+    ASSERT(!b0.try_get(j), "reset did not empty buffer");
+
+    // reset doesn't delete edge
+
+    tbb::flow::make_edge(b0,q0);
+    g.reset();
+    for(T i = 0; i < NN; ++i) {
+        b0.try_put(i);
+    }
+
+    g.wait_for_all();
+    for( T i = 0; i < NN; ++i) {
+        ASSERT(q0.try_get(j), "Missing value from buffer");
+        ASSERT(!nFound[(int)j], "Duplicate value found");
+        nFound[(int)j] = true;
+    }
+
+    for(int ii = 0; ii < NN; ++ii) {
+        ASSERT(nFound[ii], "missing value");
+    }
+    ASSERT(!q0.try_get(j), "Extra values in output");
+
+    // reset reverses a reversed edge.
+    // we will use a serial rejecting node to get the edge to reverse.
+    tbb::flow::function_node<T, T, tbb::flow::rejecting> sfn(g, tbb::flow::serial, serial_fn_body<T>(serial_fn_state0));
+    tbb::flow::queue_node<T> outq(g);
+    tbb::flow::remove_edge(b0,q0);
+    tbb::flow::make_edge(b0, sfn);
+    tbb::flow::make_edge(sfn,outq);
+    g.wait_for_all();  // wait for all the tasks started by building the graph are done.
+    serial_fn_state0 = 0;
+
+    // b0 ------> sfn ------> outq
+
+    for(int icnt = 0; icnt < 2; ++icnt) {
+        g.wait_for_all();
+        serial_fn_state0 = 0;
+        b0.try_put((T)0);  // will start sfn
+        // wait until function_node starts
+        BACKOFF_WAIT(serial_fn_state0 == 0,"Timed out waiting for function_node to start");
+        // now the function_node is executing.
+        // this will start a task to forward the second item
+        // to the serial function node
+        b0.try_put((T)1);  // first item will be consumed by task completing the execution
+        BACKOFF_WAIT_NOASSERT(g.root_task()->ref_count() >= 3,"Timed out waiting try_put task to wind down");
+        b0.try_put((T)2);  // second item will remain after cancellation
+        // now wait for the task that attempts to forward the buffer item to
+        // complete.
+        BACKOFF_WAIT_NOASSERT(g.root_task()->ref_count() >= 3,"Timed out waiting for tasks to wind down");
+        // now cancel the graph.
+        ASSERT(tgc.cancel_group_execution(), "task group already cancelled");
+        serial_fn_state0 = 0;  // release the function_node.
+        g.wait_for_all();  // wait for all the tasks to complete.
+        // check that at most one output reached the queue_node
+        T outt;
+        T outt2;
+        bool got_item1 = outq.try_get(outt);
+        bool got_item2 = outq.try_get(outt2);
+        // either the output queue was empty (if the function_node tested for cancellation before putting the
+        // result to the queue) or there was one element in the queue (the 0).
+        ASSERT(!got_item1 || ((int)outt == 0 && !got_item2), "incorrect output from function_node");
+        // the edge between the buffer and the function_node should be reversed, and the last
+        // message we put in the buffer should still be there.  We can't directly test for the
+        // edge reversal.
+        got_item1 = b0.try_get(outt);
+        ASSERT(got_item1, " buffer lost a message");
+        ASSERT(2 == (int)outt || 1 == (int)outt, " buffer had incorrect message");  // the one not consumed by the node.
+        ASSERT(g.is_cancelled(), "Graph was not cancelled");
+        g.reset();
+    }  // icnt
+
+    // reset with remove_edge removes edge.  (icnt ==0 => forward edge, 1 => reversed edge
+    for(int icnt = 0; icnt < 2; ++icnt) {
+        if(icnt == 1) {
+            // set up reversed edge
+            tbb::flow::make_edge(b0, sfn);
+            tbb::flow::make_edge(sfn,outq);
+            serial_fn_state0 = 0;
+            b0.try_put((T)0);  // starts up the function node
+            b0.try_put((T)1);  // shoyuld reverse the edge
+            BACKOFF_WAIT(serial_fn_state0 == 0,"Timed out waiting for edge reversal");
+            ASSERT(tgc.cancel_group_execution(), "task group already cancelled");
+            serial_fn_state0 = 0;  // release the function_node.
+            g.wait_for_all();  // wait for all the tasks to complete.
+        }
+        g.reset(tbb::flow::rf_clear_edges);
+        // test that no one is a successor to the buffer now.
+        serial_fn_state0 = 1;  // let the function_node go if it gets an input message
+        b0.try_put((T)23);
+        g.wait_for_all();
+        ASSERT((int)serial_fn_state0 == 1, "function_node executed when it shouldn't");
+        T outt;
+        ASSERT(b0.try_get(outt) && (T)23 == outt, "node lost its input"); 
+    }
+}
+
+template< typename NODE_TYPE >
+class test_buffer_base_extract {
+protected:
+    tbb::flow::graph &g;
+    NODE_TYPE &in0;
+    NODE_TYPE &in1;
+    NODE_TYPE &middle;
+    NODE_TYPE &out0;
+    NODE_TYPE &out1;
+    NODE_TYPE *ins[2];
+    NODE_TYPE *outs[2];
+    typename NODE_TYPE::successor_type *ms_ptr;
+    typename NODE_TYPE::predecessor_type *mp_ptr;
+
+    typename NODE_TYPE::predecessor_list_type in0_p_list;
+    typename NODE_TYPE::successor_list_type in0_s_list;
+    typename NODE_TYPE::predecessor_list_type in1_p_list;
+    typename NODE_TYPE::successor_list_type in1_s_list;
+    typename NODE_TYPE::predecessor_list_type out0_p_list;
+    typename NODE_TYPE::successor_list_type out0_s_list;
+    typename NODE_TYPE::predecessor_list_type out1_p_list;
+    typename NODE_TYPE::successor_list_type out1_s_list;
+    typename NODE_TYPE::predecessor_list_type mp_list;
+    typename NODE_TYPE::predecessor_list_type::iterator mp_list_iter;
+    typename NODE_TYPE::successor_list_type ms_list;
+    typename NODE_TYPE::successor_list_type::iterator ms_list_iter;
+
+    virtual void set_up_lists() {
+        in0_p_list.clear(); 
+        in0_s_list.clear();
+        in1_p_list.clear(); 
+        in1_s_list.clear();
+        mp_list.clear(); 
+        ms_list.clear();
+        out0_p_list.clear(); 
+        out0_s_list.clear();
+        out1_p_list.clear(); 
+        out1_s_list.clear();
+        in0.copy_predecessors(in0_p_list);
+        in0.copy_successors(in0_s_list);
+        in1.copy_predecessors(in1_p_list);
+        in1.copy_successors(in1_s_list);
+        middle.copy_predecessors(mp_list);
+        middle.copy_successors(ms_list);
+        out0.copy_predecessors(out0_p_list);
+        out0.copy_successors(out0_s_list);
+        out1.copy_predecessors(out1_p_list);
+        out1.copy_successors(out1_s_list);
+    }
+
+    void make_and_validate_full_graph() {
+        /*     in0           out0  */
+        /*         \       /       */
+        /*           middle        */
+        /*         /       \       */
+        /*     in1           out1  */
+        tbb::flow::make_edge( in0, middle );
+        tbb::flow::make_edge( in1, middle );
+        tbb::flow::make_edge( middle, out0 );
+        tbb::flow::make_edge( middle, out1 );
+
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 1 && in0_s_list.size() == 1 && *(in0_s_list.begin()) == ms_ptr, "expected 1 successor" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_ptr, "expected 1 successor" );
+        ASSERT( middle.predecessor_count() == 2 && mp_list.size() == 2, "expected 2 predecessors" );
+        ASSERT( middle.successor_count() == 2 && ms_list.size() == 2, "expected 2 successors" );
+        ASSERT( out0.predecessor_count() == 1 && out0_p_list.size() == 1 && *(out0_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        int first_pred = *(mp_list.begin()) == ins[0] ? 0 : ( *(mp_list.begin()) == ins[1] ? 1 : -1 );
+        mp_list_iter = mp_list.begin(); ++mp_list_iter;
+        int second_pred = *mp_list_iter == ins[0] ? 0 : ( *mp_list_iter == ins[1] ? 1 : -1 );
+        ASSERT( first_pred != -1 && second_pred != -1 && first_pred != second_pred, "bad predecessor(s) for middle" ); 
+
+        int first_succ = *(ms_list.begin()) == outs[0] ? 0 : ( *(ms_list.begin()) == outs[1] ? 1 : -1 );
+        ms_list_iter = ++(ms_list.begin());
+        int second_succ = *ms_list_iter == outs[0] ? 0 : ( *ms_list_iter == outs[1] ? 1 : -1 );
+        ASSERT( first_succ != -1 && second_succ != -1 && first_succ != second_succ, "bad successor(s) for middle" ); 
+ 
+        in0.try_put(1);
+        in1.try_put(2);
+        g.wait_for_all();
+
+        int r = 0;
+        int v = 0;
+    
+        ASSERT( in0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( in1.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( middle.try_get(v) == false, "buffer should not have a value" );
+        while ( out0.try_get(v) ) {
+            ASSERT( (v == 1 || v == 2) && (v&r) == 0, "duplicate value" );
+            r |= v;
+            g.wait_for_all();
+        }
+        while ( out1.try_get(v) ) {
+            ASSERT( (v == 1 || v == 2) && (v&r) == 0, "duplicate value" );
+            r |= v;
+            g.wait_for_all();
+        }
+        ASSERT( r == 3, "not all values received" );
+        g.wait_for_all();
+    }
+
+    void validate_half_graph() {
+        /*     in0           out0  */
+        /*                         */
+        /*           middle        */
+        /*         /       \       */
+        /*     in1           out1  */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_ptr, "expected 1 successor" );
+        ASSERT( middle.predecessor_count() == 1 && mp_list.size() == 1, "expected 1 predecessor" );
+        ASSERT( middle.successor_count() == 1 && ms_list.size() == 1, "expected 1 successor" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+    
+        ASSERT( middle.predecessor_count() == 1 && mp_list.size() == 1, "expected two predecessors" );
+        ASSERT( middle.successor_count() == 1 && ms_list.size() == 1, "expected two successors" );
+    
+        ASSERT( *(mp_list.begin()) == ins[1], "incorrect predecessor" );
+        ASSERT( *(ms_list.begin()) == outs[1], "incorrect successor" );
+    
+        in0.try_put(1);
+        in1.try_put(2);
+        g.wait_for_all();
+    
+        int v = 0;
+        ASSERT( in0.try_get(v) == true && v == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( middle.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out1.try_get(v) == true && v == 2, "buffer should have a value of 2" );
+        g.wait_for_all();
+    }
+
+    void validate_empty_graph() {
+        /*     in0           out0  */
+        /*                         */
+        /*           middle        */
+        /*                         */
+        /*     in1           out1  */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 0 && in1_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( middle.predecessor_count() == 0 && mp_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( middle.successor_count() == 0 && ms_list.size() == 0, "expected 0 successors" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 0 && out1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+    
+        ASSERT( middle.predecessor_count() == 0 && mp_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( middle.successor_count() == 0 && ms_list.size() == 0, "expected 0 successors" );
+    
+        in0.try_put(1);
+        in1.try_put(2);
+        g.wait_for_all();
+    
+        int v = 0;
+        ASSERT( in0.try_get(v) == true && v == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v) == true && v == 2, "buffer should have a value of 2" );
+        ASSERT( middle.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out1.try_get(v) == false, "buffer should not have a value" );
+        g.wait_for_all();
+    }
+
+    // forbid the ecompiler generation of operator= (VS2012 warning)
+    test_buffer_base_extract& operator=(test_buffer_base_extract & /*other*/);
+
+public:
+
+    test_buffer_base_extract(tbb::flow::graph &_g, NODE_TYPE &i0, NODE_TYPE &i1, NODE_TYPE &m, NODE_TYPE &o0, NODE_TYPE &o1) : 
+        g(_g), in0(i0), in1(i1), middle(m), out0(o0), out1(o1) {
+        ins[0] = &in0;
+        ins[1] = &in1;
+        outs[0] = &out0;
+        outs[1] = &out1;
+        ms_ptr = static_cast< typename NODE_TYPE::successor_type * >(&middle);
+        mp_ptr = static_cast< typename NODE_TYPE::predecessor_type *>(&middle);
+    }
+ 
+    virtual ~test_buffer_base_extract() {}
+
+    void run_tests() {
+        make_and_validate_full_graph();
+
+        in0.extract();
+        out0.extract();
+        validate_half_graph();
+
+        in1.extract();
+        out1.extract();
+        validate_empty_graph();
+
+        make_and_validate_full_graph();
+
+        middle.extract();
+        validate_empty_graph();
+
+        make_and_validate_full_graph();
+    }
+   
+};
+
+template< typename NODE_TYPE >
+class test_buffer_extract : public test_buffer_base_extract<NODE_TYPE> {
+protected:
+    tbb::flow::graph my_g;
+    NODE_TYPE my_in0;
+    NODE_TYPE my_in1;
+    NODE_TYPE my_middle;
+    NODE_TYPE my_out0;
+    NODE_TYPE my_out1;
+public:
+    test_buffer_extract() : test_buffer_base_extract<NODE_TYPE>( my_g, my_in0, my_in1, my_middle, my_out0, my_out1), 
+                            my_in0(my_g), my_in1(my_g), my_middle(my_g), my_out0(my_g), my_out1(my_g) { }
+};
+
+template< >
+class test_buffer_extract< tbb::flow::sequencer_node<int> > : public test_buffer_base_extract< tbb::flow::sequencer_node<int> > {
+protected:
+    typedef tbb::flow::sequencer_node<int> my_node_t;
+    tbb::flow::graph my_g;
+    my_node_t my_in0;
+    my_node_t my_in1;
+    my_node_t my_middle;
+    my_node_t my_out0;
+    my_node_t my_out1;
+
+    typedef tbb::atomic<size_t> count_t;
+    count_t middle_count;
+    count_t out0_count;
+    count_t out1_count;
+
+    struct always_zero { size_t operator()(int) { return 0; } };
+    struct always_inc { 
+        count_t *c;
+        always_inc(count_t &_c) : c(&_c) {}
+        size_t operator()(int) { 
+            return c->fetch_and_increment();
+        } 
+    };
+
+    /*override*/void set_up_lists() {
+        middle_count = 0;
+        out0_count = 0;
+        out1_count = 0;
+        my_g.reset(); // reset the sequencer nodes to start at 0 again
+        test_buffer_base_extract< my_node_t >::set_up_lists();
+    }
+
+
+public:
+    test_buffer_extract() : test_buffer_base_extract<my_node_t>( my_g, my_in0, my_in1, my_middle, my_out0, my_out1), 
+                            my_in0(my_g, always_zero()), my_in1(my_g, always_zero()), my_middle(my_g, always_inc(middle_count)), 
+                            my_out0(my_g, always_inc(out0_count)), my_out1(my_g, always_inc(out1_count)) { 
+    }
+};
+
+// test for simple node that has one input, one output (overwrite_node, write_once_node, limiter_node)
+// decrement tests have to be done separately.
+template<template< class > class NType, typename ItemType>
+void test_extract_on_node() {
+    tbb::flow::graph g;
+    ItemType dont_care;
+    NType<ItemType> node0(g);
+    tbb::flow::queue_node<ItemType> q0(g);
+    tbb::flow::queue_node<ItemType> q1(g);
+    tbb::flow::queue_node<ItemType> q2(g);
+    for( int i = 0; i < 2; ++i) {
+        tbb::flow::make_edge(q0,node0);
+        tbb::flow::make_edge(q1,node0);
+        tbb::flow::make_edge(node0, q2);
+        q0.try_put(ItemType(i));
+        g.wait_for_all();
+    
+        /* q0               */
+        /*   \              */
+        /*    \             */
+        /*      node0 -- q2 */
+        /*    /             */
+        /*   /              */
+        /* q1               */
+    
+        ASSERT(node0.predecessor_count() == 2 && q0.successor_count() == 1 && q1.successor_count() == 1, "bad predecessor count");
+        ASSERT(node0.successor_count() == 1 && q2.predecessor_count() == 1, "bad successor count");
+
+        ASSERT(q2.try_get(dont_care) && int(dont_care) == i, "item not forwarded");
+        typename NType<ItemType>::successor_list_type sv, sv1;
+        typename NType<ItemType>::predecessor_list_type pv, pv1;
+    
+        pv1.push_back(&q0);
+        pv1.push_back(&q1);
+        sv1.push_back(&q2);
+        node0.copy_predecessors(pv);
+        node0.copy_successors(sv);
+        ASSERT(lists_match(pv,pv1), "predecessor vector incorrect");
+        ASSERT(lists_match(sv,sv1), "successor vector incorrect");
+    
+        if(i == 0) {
+            node0.extract();
+        }
+        else {
+            q0.extract();
+            q1.extract();
+            q2.extract();
+        }
+
+        q0.try_put(ItemType(2));
+        g.wait_for_all();
+        ASSERT(!q2.try_get(dont_care), "node0 not disconnected");
+        ASSERT(q0.try_get(dont_care), "q0 empty (should have one item)");
+
+        node0.copy_predecessors(pv);
+        node0.copy_successors(sv);
+        ASSERT(node0.predecessor_count() == 0 && q0.successor_count() == 0 && q1.successor_count() == 0, "error in pred count after extract");
+        ASSERT(pv.size() == 0, "error in pred array count after extract");
+        ASSERT(node0.successor_count() == 0 && q2.predecessor_count() == 0, "error in succ count after extract");
+        ASSERT(sv.size() == 0, "error in succ array count after extract");
+        g.wait_for_all();
+    }
+}
+
+#endif  // TBB_PREVIEW_FLOW_GRAPH_FEATURES
 #endif
 
 
diff --git a/src/test/harness_inject_scheduler.h b/src/test/harness_inject_scheduler.h
index 90d5634..7f89bf3 100644
--- a/src/test/harness_inject_scheduler.h
+++ b/src/test/harness_inject_scheduler.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Used in tests that work with TBB scheduler but do not link to the TBB library.
@@ -32,6 +24,13 @@
 #ifndef harness_inject_scheduler_H
 #define harness_inject_scheduler_H
 
+#if HARNESS_DEFINE_PRIVATE_PUBLIC
+#include <string> // merely prevents LNK2019 error to happen (on ICL+VC9 configurations)
+#include <algorithm> // include it first to avoid error on define below
+#define private public
+#define protected public
+#endif
+
 // Suppress usage of #pragma comment
 #define __TBB_NO_IMPLICIT_LINKAGE 1
 
@@ -79,4 +78,9 @@ int TestMain () {
 #define TestMain TestMainSkipped
 #endif
 
+#if HARNESS_DEFINE_PRIVATE_PUBLIC
+#undef protected
+#undef private
+#endif
+
 #endif /* harness_inject_scheduler_H */
diff --git a/src/test/harness_iterator.h b/src/test/harness_iterator.h
index 27aed90..a16dd6a 100644
--- a/src/test/harness_iterator.h
+++ b/src/test/harness_iterator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef harness_iterator_H
diff --git a/src/test/harness_m128.h b/src/test/harness_m128.h
index 2d19ccb..e20d057 100644
--- a/src/test/harness_m128.h
+++ b/src/test/harness_m128.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Header that sets HAVE_m128/HAVE_m256 if vector types (__m128/__m256) are available
diff --git a/src/test/harness_memory.h b/src/test/harness_memory.h
index fc293f7..145d0ba 100644
--- a/src/test/harness_memory.h
+++ b/src/test/harness_memory.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Declarations for simple estimate of the memory being used by a program.
@@ -50,7 +42,7 @@ const size_t shared_size = SHARED_TEXT_REGION_SIZE+SHARED_DATA_REGION_SIZE;
 const size_t shared_size = 0;
 #endif
 
-#elif _WIN32 && !_XBOX
+#elif _WIN32 && !_XBOX && !__TBB_WIN8UI_SUPPORT
 #include <windows.h>
 #include <psapi.h>
 #if _MSC_VER
diff --git a/src/test/harness_mic.h b/src/test/harness_mic.h
index 67061c6..2157766 100644
--- a/src/test/harness_mic.h
+++ b/src/test/harness_mic.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef tbb_test_harness_mic_H
diff --git a/src/test/harness_report.h b/src/test/harness_report.h
index 2de6687..ea70080 100644
--- a/src/test/harness_report.h
+++ b/src/test/harness_report.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Just the tracing portion of the harness.
@@ -54,6 +46,7 @@
 
 #include <cstdarg>
 
+// Need to include "tbb/tbb_config.h" to obtain the definition of __TBB_DEFINE_MIC.
 #include "tbb/tbb_config.h"
 
 #if __TBB_DEFINE_MIC
@@ -175,4 +168,9 @@ namespace Harness {
 /** On heterogeneous platforms redirects its output to the host side. **/
 #define REPORT TRACENL
 
+//! printf style reporting macro
+/** Produces output only when invoked first time.
+    Only one instance of this macro is allowed per source code line. **/
+#define REPORT_ONCE (Harness::internal::not_the_first_call<__LINE__>()) ? (void)0 : TRACENL
+
 #endif /* tbb_tests_harness_report_H */
diff --git a/src/test/harness_runtime_loader.h b/src/test/harness_runtime_loader.h
index c96a273..a01d8dc 100644
--- a/src/test/harness_runtime_loader.h
+++ b/src/test/harness_runtime_loader.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef harness_runtime_loader_H
diff --git a/src/test/harness_task.h b/src/test/harness_task.h
index 411ecb7..5c43234 100644
--- a/src/test/harness_task.h
+++ b/src/test/harness_task.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/task.h"
diff --git a/src/test/harness_tbb_independence.h b/src/test/harness_tbb_independence.h
index 42609fb..3b931da 100644
--- a/src/test/harness_tbb_independence.h
+++ b/src/test/harness_tbb_independence.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef harness_tbb_independence_H
diff --git a/src/test/harness_test_cases_framework.h b/src/test/harness_test_cases_framework.h
index e6b8ca2..c48ef5e 100644
--- a/src/test/harness_test_cases_framework.h
+++ b/src/test/harness_test_cases_framework.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef tbb_harness_test_cases_framework_H
@@ -34,7 +26,6 @@
 #endif
 
 #undef DO_ITT_NOTIFY
-#undef TBB_DO_ITT_EVENTS
 
 #include "harness.h"
 //#include "harness_report.h"
diff --git a/src/test/harness_tsx.h b/src/test/harness_tsx.h
index 90e0326..fba4b78 100644
--- a/src/test/harness_tsx.h
+++ b/src/test/harness_tsx.h
@@ -1,39 +1,30 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Header that includes TSX-specific test functions
 
 #if __TBB_TSX_AVAILABLE 
-
-#if (__INTEL_COMPILER || __GNUC__ || _MSC_VER)
+#define __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER (__INTEL_COMPILER || __GNUC__ || _MSC_VER || __SUNPRO_CC)
+#if __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER
 
 #include "harness_defs.h"
-#include "tbb/tbb_config.h"
 
 inline static bool IsInsideTx()
 {
@@ -43,37 +34,37 @@ inline static bool IsInsideTx()
 #if _MSC_VER
 #include <intrin.h> // for __cpuid
 #endif
+// TODO: consider reusing tbb_misc.cpp:cpu_has_speculation() instead of code duplication.
 bool have_TSX() {
     bool result = false;
     const int hle_ebx_mask = 1<<4;
     const int rtm_ebx_mask = 1<<11;
 #if _MSC_VER
     int info[4] = {0,0,0,0};
-    const int EBX = 1;
+    const int reg_ebx = 1;
     int old_ecx = 0;
     __cpuidex(info, 7, old_ecx);
-    result = (info[EBX] & hle_ebx_mask)!=0;
-    if( result ) ASSERT( (info[EBX] & rtm_ebx_mask)!=0, NULL );
-#elif __GNUC__
-    int EBX = 0;
+    result = (info[reg_ebx] & hle_ebx_mask)!=0;
+    if( result ) ASSERT( (info[reg_ebx] & rtm_ebx_mask)!=0, NULL );
+#elif __GNUC__ || __SUNPRO_CC
+    int32_t reg_ebx = 0;
     int32_t reg_eax = 7;
     int32_t reg_ecx = 0;
     __asm__ __volatile__ ( "movl %%ebx, %%esi\n"
                            "cpuid\n"
                            "movl %%ebx, %0\n"
                            "movl %%esi, %%ebx\n"
-                           : "=a"(EBX) : "0" (reg_eax), "c" (reg_ecx) : "esi",
+                           : "=a"(reg_ebx) : "0" (reg_eax), "c" (reg_ecx) : "esi",
 #if __TBB_x86_64
                            "ebx",
 #endif
                            "edx"
                            );
-    result = (EBX & hle_ebx_mask)!=0 ;
-    if( result ) ASSERT( (EBX & rtm_ebx_mask)!=0, NULL );
+    result = (reg_ebx & hle_ebx_mask)!=0 ;
+    if( result ) ASSERT( (reg_ebx & rtm_ebx_mask)!=0, NULL );
 #endif
     return result;
 }
 
-#endif /* __INTEL_COMPILER || __GNUC__ || _MSC_VER */
-
+#endif /* __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER */
 #endif /* __TBB_TSX_AVAILABLE */
diff --git a/src/test/test_ScalableAllocator.cpp b/src/test/test_ScalableAllocator.cpp
index dca4d75..e68b9fe 100644
--- a/src/test/test_ScalableAllocator.cpp
+++ b/src/test/test_ScalableAllocator.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test whether scalable_allocator complies with the requirements in 20.1.5 of ISO C++ Standard (1998).
@@ -33,8 +25,8 @@
 
 #include "harness_assert.h"
 #if !__TBB_SOURCE_DIRECTLY_INCLUDED
-// Currently pools high-level interface has dependency to TBB library
-// to get atomics. For sake of testing add rudementary implementation of them.
+// harness_allocator.h requires atimics. We do not want dependency 
+// to TBB library to get atomics, so add rudimentary implementation of them.
 #include "harness_tbb_independence.h"
 #endif
 #include "tbb/memory_pool.h"
@@ -99,9 +91,9 @@ void TestZeroSpaceMemoryPool()
     try {
         tbb::memory_pool<NullAllocator> pool;
         ASSERT(0, "Useless allocator with no memory must not be created");
-    } catch (std::bad_alloc) {
+    } catch (std::runtime_error) {
     } catch (...) {
-        ASSERT(0, "wrong exception type; expected bad_alloc");
+        ASSERT(0, "wrong exception type; expected runtime_error");
     }
 }
 
@@ -144,11 +136,20 @@ void TestSmallFixedSizePool()
    that can be fulfilled from the pool. 16B allocation fits in 16KB slabs,
    so it requires at least 16KB. Requirement of 9KB allocation is more modest.
 */
-            allocated = pool.malloc( 16 ) || pool.malloc( 9*1024 );
-            ASSERT(allocated, "If pool created, it must be useful.");
-        } catch (std::bad_alloc) {
+            try {
+                allocated = pool.malloc( 16 ) || pool.malloc( 9*1024 );
+                ASSERT(allocated, "If pool created, it must be useful.");
+            } catch (std::bad_alloc) {
+            } catch (...) {
+                ASSERT(0, "wrong exception type; expected bad_alloc");
+            }
+        } catch (std::runtime_error) {
+            // This occurs when no space in buf for internal pool
+            // structures. Can't predict exact size for this.
+        } catch (std::invalid_argument) {
+            ASSERT(!sz, "expect std::invalid_argument for zero-sized pool only");
         } catch (...) {
-            ASSERT(0, "wrong exception type; expected bad_alloc");
+            ASSERT(0, "wrong exception type;");
         }
 #else
 /* Do not test high-level pool interface because pool ctor emit exception
@@ -177,9 +178,9 @@ void TestSmallFixedSizePool()
     try {
         tbb::fixed_pool pool(NULL, 10*1024*1024);
         ASSERT(0, "Useless allocator with no memory must not be created");
-    } catch (std::bad_alloc) {
+    } catch (std::invalid_argument) {
     } catch (...) {
-        ASSERT(0, "wrong exception type; expected bad_alloc");
+        ASSERT(0, "wrong exception type; expected invalid_argument");
     }
 #endif
 }
diff --git a/src/test/test_ScalableAllocator_STL.cpp b/src/test/test_ScalableAllocator_STL.cpp
index 5bd35a8..51cb6cc 100644
--- a/src/test/test_ScalableAllocator_STL.cpp
+++ b/src/test/test_ScalableAllocator_STL.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test whether scalable_allocator works with some of the host's STL containers.
@@ -33,11 +25,6 @@
 #define TBB_PREVIEW_MEMORY_POOL 1
 
 #include "harness_assert.h"
-#if !__TBB_SOURCE_DIRECTLY_INCLUDED
-// Currently pools high-level interface has dependency to TBB library
-// to get atomics. For sake of testing add rudementary implementation of them.
-#include "harness_tbb_independence.h"
-#endif
 #include "tbb/memory_pool.h"
 #include "tbb/scalable_allocator.h"
 
diff --git a/src/test/test_aggregator.cpp b/src/test/test_aggregator.cpp
index efe558e..a4c5a48 100644
--- a/src/test/test_aggregator.cpp
+++ b/src/test/test_aggregator.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef TBB_PREVIEW_AGGREGATOR
diff --git a/src/test/test_aligned_space.cpp b/src/test/test_aligned_space.cpp
index 81e489f..f332d00 100644
--- a/src/test/test_aligned_space.cpp
+++ b/src/test/test_aligned_space.cpp
@@ -1,35 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
 
-#if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#if __TBB_GCC_STRICT_ALIASING_BROKEN
+    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
 #endif
 
 //! Wrapper around T where all members are private.
diff --git a/src/test/test_allocator.h b/src/test/test_allocator.h
index bd7cc3e..61bf2fe 100644
--- a/src/test/test_allocator.h
+++ b/src/test/test_allocator.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Basic testing of an allocator
@@ -141,6 +133,19 @@ void TestBasic( A& a ) {
     ASSERT( NumberOfFoo==n, "destructor for Foo not called?" );
     a.deallocate(p,1);
 
+#if TBB_USE_EXCEPTIONS
+    size_t too_big = (~size_t(0) - 1024*1024)/sizeof(T);
+    bool exception_caught = false;
+    typename A::pointer p1 = NULL;
+    try {
+        p1 = a.allocate(too_big);
+    } catch ( std::bad_alloc ) {
+        exception_caught = true;
+    }
+    ASSERT( exception_caught, "allocate expected to throw bad_alloc" );
+    a.deallocate(p1, too_big);
+#endif // TBB_USE_EXCEPTIONS
+
     #if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
     {
         typedef typename A:: template rebind<std::pair<typename A::value_type, typename A::value_type> >::other pair_allocator_type;
@@ -228,7 +233,7 @@ void Test(A &a) {
 }
 
 template<typename Allocator>
-int TestMain(const Allocator &a = Allocator() ) {
+int TestMain(const Allocator &a = Allocator()) {
     NumberOfFoo = 0;
     typename Allocator::template rebind<Foo<char,1> >::other a1(a);
     typename Allocator::template rebind<Foo<double,1> >::other a2(a);
@@ -236,4 +241,3 @@ int TestMain(const Allocator &a = Allocator() ) {
     Test<Foo<float,23> >( a2 );
     return 0;
 }
-
diff --git a/src/test/test_allocator_STL.h b/src/test/test_allocator_STL.h
index 24c4a1b..cc0dd8f 100644
--- a/src/test/test_allocator_STL.h
+++ b/src/test/test_allocator_STL.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Tests for compatibility with the host's STL.
@@ -81,6 +73,35 @@ void TestMap(const typename Map::allocator_type &a) {
     #pragma warning (pop)
 #endif
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct MoveOperationTracker {
+    int my_value;
+
+    MoveOperationTracker( int value = 0 ) : my_value( value ) {}
+    MoveOperationTracker(const MoveOperationTracker&) {
+        ASSERT( false, "Copy constructor is called" );
+    }
+    MoveOperationTracker(MoveOperationTracker&& m) __TBB_NOEXCEPT( true ) : my_value( m.my_value ) {
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker const&) {
+        ASSERT( false, "Copy assigment operator is called" );
+        return *this;
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker&& m) __TBB_NOEXCEPT( true ) {
+        my_value = m.my_value;
+        return *this;
+    }
+
+    bool operator==(int value) const {
+        return my_value == value;
+    }
+
+    bool operator==(const MoveOperationTracker& m) const {
+        return my_value == m.my_value;
+    }
+};
+#endif /*  __TBB_CPP11_RVALUE_REF_PRESENT */
+
 template<typename Allocator>
 void TestAllocatorWithSTL(const Allocator &a = Allocator() ) {
     typedef typename Allocator::template rebind<int>::other Ai;
@@ -95,6 +116,13 @@ void TestAllocatorWithSTL(const Allocator &a = Allocator() ) {
     TestSequence<std::list  <int,Ai> >(a);
     TestSequence<std::vector<int,Ai> >(a);
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    typedef typename Allocator::template rebind<MoveOperationTracker>::other Amot;
+    TestSequence<std::deque <MoveOperationTracker, Amot> >(a);
+    TestSequence<std::list  <MoveOperationTracker, Amot> >(a);
+    TestSequence<std::vector<MoveOperationTracker, Amot> >(a);
+#endif
+
     // Associative containers
     TestSet<std::set     <int, std::less<int>, Ai> >(a);
     TestSet<std::multiset<int, std::less<int>, Ai> >(a);
diff --git a/src/test/test_assembly.cpp b/src/test/test_assembly.cpp
index c6d40df..eb74a8e 100644
--- a/src/test/test_assembly.cpp
+++ b/src/test/test_assembly.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Program for basic correctness testing of assembly-language routines.
diff --git a/src/test/test_async_node.cpp b/src/test/test_async_node.cpp
new file mode 100644
index 0000000..11fe696
--- /dev/null
+++ b/src/test/test_async_node.cpp
@@ -0,0 +1,207 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef TBB_PREVIEW_FLOW_GRAPH_NODES
+    #define TBB_PREVIEW_FLOW_GRAPH_NODES 1
+#endif
+
+#include "harness.h"
+
+#if __TBB_PREVIEW_ASYNC_NODE
+
+#include "tbb/concurrent_queue.h"
+#include "tbb/flow_graph.h"
+#include "tbb/task.h"
+
+#include "tbb/tbb_thread.h"
+
+#include <assert.h>
+
+const size_t NUMBER_OF_SIGNALS = 10;
+
+tbb::atomic<size_t> async_body_exec_count;
+tbb::atomic<size_t> async_activity_processed_signnals_count;
+tbb::atomic<size_t> end_body_exec_count;
+
+struct signal_type {
+    size_t signal;
+    tbb::task* prev_task;
+};
+
+struct async_result_type {
+    size_t signal;
+    tbb::tbb_thread::id async_thread_id;
+};
+
+typedef tbb::flow::async_node< signal_type, async_result_type > async_node_type;
+
+template< typename Input, typename Output >
+class AsyncActivity {
+public:
+    typedef Input input_type;
+    typedef Output output_type;
+    typedef typename async_node_type::async_gateway_type async_gateway_type;
+    struct work_type {
+        input_type input;
+        async_gateway_type* callback;
+    };
+
+    class ServiceThreadBody {
+    public:
+        ServiceThreadBody( AsyncActivity* activity ) : my_activity( activity ) {}
+
+        void operator()() {
+            my_activity->process();
+        }
+    private:
+        AsyncActivity* my_activity;
+    };
+
+    AsyncActivity() {
+        my_quit = false;
+        tbb::tbb_thread( ServiceThreadBody( this ) ).swap( my_service_thread );
+    }
+
+private:
+    AsyncActivity( const AsyncActivity& ) {
+    }
+
+public:
+    ~AsyncActivity() {
+        stop();
+        my_service_thread.join();
+    }
+
+    void submit( input_type input, async_gateway_type& callback ) {
+        work_type work = { input, &callback };
+        my_work_queue.push( work );
+    }
+
+    void process() {
+        do {
+            work_type work;
+            if( my_work_queue.try_pop( work ) ) {
+                Harness::Sleep(500);
+                
+                ++async_activity_processed_signnals_count;
+                
+                async_result_type async_result;
+                async_result.signal = work.input.signal;
+                async_result.async_thread_id = tbb::this_tbb_thread::get_id();
+                
+                work.callback->async_try_put( async_result );
+                work.callback->async_commit();
+            }
+        } while( my_quit == false || !my_work_queue.empty());
+    }
+
+    void stop() {
+        my_quit = true;
+    }
+
+private:
+    tbb::concurrent_queue< work_type > my_work_queue;
+
+    tbb::atomic< bool > my_quit;
+
+    tbb::tbb_thread my_service_thread;
+};
+
+class StartBody {
+public:
+    signal_type operator()( size_t input ) {
+        //Harness::Sleep(100);
+
+        signal_type output;
+        output.signal = input;
+        output.prev_task = &tbb::task::self(); 
+        return output;
+    }
+};
+
+
+template< typename Output >
+class AsyncBody {
+public:
+    typedef AsyncActivity< signal_type, Output > async_activity_type;
+    
+    AsyncBody( async_activity_type* async_activity ) : my_async_activity( async_activity ) {
+    }
+
+    AsyncBody( const AsyncBody& other ) : my_async_activity( other.my_async_activity ) {
+    }
+
+    void operator()( signal_type input, async_node_type::async_gateway_type& my_node ) {
+        ++async_body_exec_count;
+       
+        tbb::task* current_task = &tbb::task::self();
+        ASSERT(input.prev_task != current_task, "async_node body was not executed in separate task");
+        
+        input.prev_task = current_task;
+        my_async_activity->submit( input, my_node );
+        my_node.async_reserve();
+    }
+
+private:
+    async_activity_type* my_async_activity;
+};
+
+/* TODO: once the task_arena submit is possible, we need to check that
+ * the StartBody and EndBody run in the same arena. */
+class EndBody {
+public:
+    void operator()( async_result_type input ) {
+        ASSERT( input.async_thread_id != tbb::this_tbb_thread::get_id(), "end_node body executed in service thread" );
+        ++end_body_exec_count;
+    }
+};
+
+#endif // __TBB_PREVIEW_ASYNC_NODE 
+
+int TestMain() {
+#if __TBB_PREVIEW_ASYNC_NODE
+    AsyncActivity< signal_type, async_result_type > async_activity;
+
+    tbb::flow::graph g;
+
+    tbb::flow::function_node< size_t, signal_type > start_node( g, tbb::flow::unlimited, StartBody() );
+    
+    async_node_type async_node_obj( g, AsyncBody< async_result_type >( &async_activity ) );
+
+    tbb::flow::function_node< async_result_type > end_node(g, tbb::flow::unlimited, EndBody() );
+
+    make_edge( start_node, async_node_obj );
+    make_edge( async_node_obj, end_node );
+
+    for (size_t i = 0; i < NUMBER_OF_SIGNALS; ++i) {
+        start_node.try_put( i );
+    }
+
+    g.wait_for_all();
+
+    ASSERT( async_body_exec_count == NUMBER_OF_SIGNALS, "AsyncBody procesed wrong number of signals" );
+    ASSERT( async_activity_processed_signnals_count == NUMBER_OF_SIGNALS, "AsyncActivity processed wrong number of signals" );
+    ASSERT( end_body_exec_count == NUMBER_OF_SIGNALS, "EndBody processed wrong number of signals");
+
+    return Harness::Done;
+#else
+    return Harness::Skipped;
+#endif
+}
diff --git a/src/test/test_atomic.cpp b/src/test/test_atomic.cpp
index 1506fcd..3ea4ebd 100644
--- a/src/test/test_atomic.cpp
+++ b/src/test/test_atomic.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
@@ -54,11 +46,15 @@ using std::memcmp;
     #pragma warning( disable: 4127 4310 )
 #endif
 
-#if __TBB_GCC_STRICT_ALIASING_BROKEN && __TBB_GCC_WARNING_SUPPRESSION_PRESENT
-    // Suppress crazy warnings about strict aliasing
+#if __TBB_GCC_STRICT_ALIASING_BROKEN
     #pragma GCC diagnostic ignored "-Wstrict-aliasing"
 #endif
 
+// Intel(R) Compiler have an issue when a scoped enum with a specified underlying type has negative values.
+#define __TBB_ICC_SCOPED_ENUM_WITH_UNDERLYING_TYPE_NEGATIVE_VALUE_BROKEN ( _MSC_VER && !__TBB_DEBUG && __INTEL_COMPILER && __INTEL_COMPILER <= 1500 )
+// Intel(R) Compiler have an issue with __atomic_load_explicit from a scoped enum with a specified underlying type.
+#define __TBB_ICC_SCOPED_ENUM_WITH_UNDERLYING_TYPE_ATOMIC_LOAD_BROKEN ( TBB_USE_ICC_BUILTINS && !__TBB_DEBUG && __INTEL_COMPILER && __INTEL_COMPILER <= 1500 )
+
 enum LoadStoreExpression {
     UseOperators,
     UseImplicitAcqRel,
@@ -304,7 +300,7 @@ namespace initialization_tests {
     template<typename T>
     struct test_initialization_fixture{
         typedef tbb::atomic<T> atomic_t;
-        tbb::aligned_space<atomic_t,1> non_zeroed_storage;
+        tbb::aligned_space<atomic_t> non_zeroed_storage;
         enum {fill_value = 0xFF };
         test_initialization_fixture(){
             memset(non_zeroed_storage.begin(),fill_value,sizeof(non_zeroed_storage));
@@ -380,7 +376,7 @@ namespace test_constexpr_initialization_helper {
     struct white_box_ad_hoc_type {
         int _int;
         constexpr white_box_ad_hoc_type(int a =0) : _int(a) {};
-        constexpr operator int() const { return _int;}
+        constexpr operator int() const { return _int; }
     };
 }
 //some white boxing
@@ -389,7 +385,7 @@ namespace tbb { namespace internal {
     struct atomic_impl<test_constexpr_initialization_helper::white_box_ad_hoc_type>: atomic_impl<int> {
         atomic_impl() = default;
         constexpr atomic_impl(test_constexpr_initialization_helper::white_box_ad_hoc_type value):atomic_impl<int>(value){}
-        constexpr operator int(){ return this->my_storage.my_value;}
+        constexpr operator int() const { return this->my_storage.my_value; }
     };
 }}
 
@@ -695,14 +691,65 @@ void TestAtomicBool() {
     TestParallel<bool>( "bool" );
 }
 
+template<typename EnumType>
+struct HasImplicitConversionToInt {
+    typedef bool yes;
+    typedef int no;
+    __TBB_STATIC_ASSERT( sizeof(yes) != sizeof(no), "The helper needs two types of different sizes to work." );
+
+    static yes detect( int );
+    static no detect( ... );
+
+    enum { value = (sizeof(yes) == sizeof(detect( EnumType() ))) };
+};
+
 enum Color {Red=0,Green=1,Blue=-1};
 
 void TestAtomicEnum() {
     REMARK("testing atomic<Color>\n");
     TestOperations<Color>(Red,Green,Blue);
     TestParallel<Color>( "Color" );
+    __TBB_STATIC_ASSERT( HasImplicitConversionToInt< tbb::atomic<Color> >::value, "The implicit conversion is expected." );
 }
 
+#if __TBB_SCOPED_ENUM_PRESENT
+enum class ScopedColor1 {ScopedRed,ScopedGreen,ScopedBlue=-1};
+// TODO: extend the test to cover 2 byte scoped enum as well
+#if __TBB_ICC_SCOPED_ENUM_WITH_UNDERLYING_TYPE_NEGATIVE_VALUE_BROKEN
+enum class ScopedColor2 : char {ScopedZero, ScopedOne,ScopedRed=42,ScopedGreen=-1,ScopedBlue=127};
+#else
+enum class ScopedColor2 : char {ScopedZero, ScopedOne,ScopedRed=-128,ScopedGreen=-1,ScopedBlue=127};
+#endif
+
+// TODO: replace the hack of getting symbolic enum name with a better implementation
+std::string enum_strings[] = {"ScopedZero","ScopedOne","ScopedRed","ScopedGreen","ScopedBlue"};
+template<>
+std::string to_string<ScopedColor1>(const ScopedColor1& a){
+    return enum_strings[a==ScopedColor1::ScopedBlue? 4 : (int)a+2];
+}
+template<>
+std::string to_string<ScopedColor2>(const ScopedColor2& a){
+    return enum_strings[a==ScopedColor2::ScopedRed? 2 : 
+        a==ScopedColor2::ScopedGreen? 3 : a==ScopedColor2::ScopedBlue? 4 : (int)a ];
+}
+
+void TestAtomicScopedEnum() {
+    REMARK("testing atomic<ScopedColor>\n");
+    TestOperations<ScopedColor1>(ScopedColor1::ScopedRed,ScopedColor1::ScopedGreen,ScopedColor1::ScopedBlue);
+    TestParallel<ScopedColor1>( "ScopedColor1" );
+#if __TBB_ICC_SCOPED_ENUM_WITH_UNDERLYING_TYPE_ATOMIC_LOAD_BROKEN
+    REPORT("Known issue: the operation tests for a scoped enum with a specified underlying type are skipped.\n");
+#else
+    TestOperations<ScopedColor2>(ScopedColor2::ScopedRed,ScopedColor2::ScopedGreen,ScopedColor2::ScopedBlue);
+    TestParallel<ScopedColor2>( "ScopedColor2" );
+#endif
+    __TBB_STATIC_ASSERT( !HasImplicitConversionToInt< tbb::atomic<ScopedColor1> >::value, "The implicit conversion is not expected." );
+    __TBB_STATIC_ASSERT( !HasImplicitConversionToInt< tbb::atomic<ScopedColor1> >::value, "The implicit conversion is not expected." );
+    __TBB_STATIC_ASSERT( sizeof(tbb::atomic<ScopedColor1>) == sizeof(ScopedColor1), "tbb::atomic instantiated with scoped enum should have the same size as scoped enum." );
+    __TBB_STATIC_ASSERT( sizeof(tbb::atomic<ScopedColor2>) == sizeof(ScopedColor2), "tbb::atomic instantiated with scoped enum should have the same size as scoped enum." );
+}
+#endif /* __TBB_SCOPED_ENUM_PRESENT */
+
 template<typename T>
 void TestAtomicFloat( const char* name ) {
     REMARK("testing atomic<%s>\n", name );
@@ -1005,7 +1052,7 @@ int TestMain () {
 #   elif __TBB_CAS_8_CODEGEN_BROKEN
          REPORT("Known issue: compiler generates incorrect code for 64-bit atomics on this configuration\n");
 #   else
-         REPORT("64-bit atomics not supported\n");
+         REPORT("Known issue: 64-bit atomics are not supported\n");
          ASSERT(sizeof(long long)==8, "type long long is not 64 bits");
 #   endif
     TestAtomicInteger<unsigned long>("unsigned long");
@@ -1032,6 +1079,9 @@ int TestMain () {
     TestAtomicPointerToTypeOfUnknownSize<void*>( "void*" );
     TestAtomicBool();
     TestAtomicEnum();
+#   if __TBB_SCOPED_ENUM_PRESENT
+    TestAtomicScopedEnum();
+#   endif
     TestAtomicFloat<float>("float");
 #   if __TBB_64BIT_ATOMICS && !__TBB_CAS_8_CODEGEN_BROKEN
         TestAtomicFloat<double>("double");
@@ -1125,6 +1175,19 @@ bool special_sum<bool>(intptr_t arg1, intptr_t arg2) {
     return ((arg1!=0) + arg2)!=0;
 }
 
+#if __TBB_SCOPED_ENUM_PRESENT
+// The specialization for scoped enumerators is required
+// because scoped enumerators prohibit implicit conversion to int
+template<>
+ScopedColor1 special_sum<ScopedColor1>(intptr_t arg1, intptr_t arg2) {
+    return (ScopedColor1)(arg1 + arg2);
+}
+template<>
+ScopedColor2 special_sum<ScopedColor2>(intptr_t arg1, intptr_t arg2) {
+    return (ScopedColor2)(arg1 + arg2);
+}
+#endif
+
 volatile int One = 1;
 
 inline bool IsRelaxed ( LoadStoreExpression e ) {
@@ -1218,7 +1281,7 @@ public:
                     trait::load( flag, s->flag );
                     message = s->message;
                 }
-                if( flag ) {
+                if ( flag != T(0) ) {
                     if( flag!=(T)-1 ) {
                         REPORT("ERROR: flag!=(T)-1 k=%d i=%d trial=%x type=%s (atomicity problem?)\n", k, i, trial, name );
                         ParallelError = true;
@@ -1233,11 +1296,11 @@ public:
                     // to the first thread's flag being reordered after the last
                     // thread's store(-1) into it.
                     if ( IsRelaxed(E) ) {
-                        while( s_next->flag.template load<tbb::relaxed>() != 0 )
+                        while( s_next->flag.template load<tbb::relaxed>() != T(0) )
                             __TBB_Yield();
                     }
                     else
-                        ASSERT( s_next->flag == 0, NULL );
+                        ASSERT( s_next->flag == T(0), NULL );
                     // Set message and then the flag
                     if( trial&2 ) {
                         // COMPLICATED_ZERO here tempts compiler to sink store below setting of flag
@@ -1274,8 +1337,8 @@ void TestLoadAndStoreFences( const char* name ) {
             NativeParallelFor( p, hammer_load_store_type( fam, 100, p, name, trial ) );
             if ( !IsRelaxed(E) ) {
                 for( int k=0; k<p; ++k ) {
-                    ASSERT( fam[k].message==(k==0 ? (T)-1 : 0), "incomplete round-robin?" );
-                    ASSERT( fam[k].flag==(k==0 ? (T)-1 : 0), "incomplete round-robin?" );
+                    ASSERT( fam[k].message==(k==0 ? (T)-1 : T(0)), "incomplete round-robin?" );
+                    ASSERT( fam[k].flag==(k==0 ? (T)-1 : T(0)), "incomplete round-robin?" );
                 }
             }
         }
@@ -1376,13 +1439,29 @@ class SparseValueSet<float>: public SparseFloatSet<float> {};
 template<>
 class SparseValueSet<double>: public SparseFloatSet<double> {};
 
+#if __TBB_SCOPED_ENUM_PRESENT
+//! Commonality inherited by specializations for scoped enumerator types.
+template<typename EnumType>
+class SparseEnumValueSet {
+public:
+    EnumType get( int i ) const {return i%3==0 ? EnumType::ScopedRed : i%3==1 ? EnumType::ScopedGreen : EnumType::ScopedBlue;}
+    bool contains( EnumType e ) const {return e==EnumType::ScopedRed || e==EnumType::ScopedGreen || e==EnumType::ScopedBlue;}
+};
+template<>
+class SparseValueSet<ScopedColor1> : public SparseEnumValueSet<ScopedColor1> {};
+template<>
+class SparseValueSet<ScopedColor2> : public SparseEnumValueSet<ScopedColor2> {};
+#endif
+
 template<typename T, bool aligned>
 class HammerAssignment: AlignedAtomic<T,aligned> {
     tbb::atomic<T>& x;
     const char* name;
     SparseValueSet<T> set;
 public:
-    HammerAssignment(const char* name_ ) : x(HammerAssignment::construct_atomic()), name(name_) {}
+    HammerAssignment(const char* name_ ) : x(HammerAssignment::construct_atomic()), name(name_) {
+        x = set.get(0);
+    }
     void operator()( int k ) const {
         const int n = 1000000;
         if( k ) {
@@ -1423,36 +1502,11 @@ void TestAssignment( const char* name ) {
     NativeParallelFor( 2, HammerAssignment<T,aligned>(name ) );
 }
 
-static const unsigned Primes[] = {
-    0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5, 0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b,
-    0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231, 0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b,
-    0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801, 0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3,
-    0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed, 0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b,
-    0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9, 0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7,
-    0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7, 0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7,
-    0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b, 0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b,
-    0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3, 0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f
-};
-
-class FastRandom {
-    unsigned x, a;
-public:
-    unsigned short get() {
-        unsigned short r = (unsigned short)(x>>16);
-        x = x*a+1;
-        return r;
-    }
-    FastRandom( unsigned seed ) {
-        x = seed;
-        a = Primes[seed % (sizeof(Primes)/sizeof(Primes[0]))];
-    }
-};
-
 template <typename T, bool aligned, LoadStoreExpression E>
 class DekkerArbitrationBody : NoAssign, Harness::NoAfterlife {
     typedef LoadStoreTraits<T, E> trait;
 
-    mutable FastRandom my_rand;
+    mutable Harness::FastRandom my_rand;
     static const unsigned short c_rand_ceil = 10;
     mutable AlignedAtomic<T,aligned> s_ready_storage[2];
     mutable AlignedAtomic<T,aligned> s_turn_storage;
diff --git a/src/test/test_blocked_range.cpp b/src/test/test_blocked_range.cpp
index f782aba..42cb5e8 100644
--- a/src/test/test_blocked_range.cpp
+++ b/src/test/test_blocked_range.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/blocked_range.h"
@@ -47,15 +39,15 @@ AbstractValueType MakeAbstractValueType( int i ) {
 }
 
 std::size_t operator-( const AbstractValueType& u, const AbstractValueType& v ) {
-    return GetValueOf(u)-GetValueOf(v);
+    return GetValueOf(u) - GetValueOf(v);
 }
 
 bool operator<( const AbstractValueType& u, const AbstractValueType& v ) {
-    return GetValueOf(u)<GetValueOf(v);
+    return GetValueOf(u) < GetValueOf(v);
 }
 
 AbstractValueType operator+( const AbstractValueType& u, std::size_t offset ) {
-    return MakeAbstractValueType(GetValueOf(u)+int(offset));
+    return MakeAbstractValueType(GetValueOf(u) + int(offset));
 }
 
 static void SerialTest() {
@@ -119,22 +111,60 @@ void ParallelTest() {
 #if __TBB_RANGE_BASED_FOR_PRESENT
 #include "test_range_based_for.h"
 #include <functional>
-void TestRangeBasedFor(){
+void TestRangeBasedFor() {
     using namespace range_based_for_support_tests;
     REMARK("testing range based for loop compatibility \n");
 
-    int int_array[100] = {0};
+    size_t int_array[100] = {0};
     const size_t sequence_length = Harness::array_length(int_array);
 
-    for (int i =0; i< sequence_length; ++i){
-        int_array[i]=i + 1;
+    for (size_t i = 0; i < sequence_length; ++i) {
+        int_array[i] = i + 1;
     }
 
-    const tbb::blocked_range<int*> r(int_array, Harness::end(int_array), 1);
+    const tbb::blocked_range<size_t*> r(int_array, Harness::end(int_array), 1);
 
-    ASSERT(range_based_for_accumulate<int>(r, std::plus<int>(), 0) == gauss_summ_of_int_sequence(sequence_length), "incorrect accumulated value generated via range based for ?");
+    ASSERT(range_based_for_accumulate<size_t>(r, std::plus<size_t>(), size_t(0)) == gauss_summ_of_int_sequence(sequence_length), "incorrect accumulated value generated via range based for ?");
 }
 #endif //if __TBB_RANGE_BASED_FOR_PRESENT
+
+#if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+
+void TestProportionalSplitOverflow()
+{
+    REMARK("Testing overflow during proportional split - ");
+    using tbb::blocked_range;
+    using tbb::proportional_split;
+
+    blocked_range<size_t> r1(0, size_t(-1) / 2);
+    size_t size = r1.size();
+    size_t begin = r1.begin();
+    size_t end = r1.end();
+
+    proportional_split p(1, 3);
+    blocked_range<size_t> r2(r1, p);
+
+    // overflow-free computation
+    size_t parts = p.left() + p.right();
+    size_t int_part = size / parts;
+    size_t fraction = size - int_part * parts; // fraction < parts
+    size_t right_idx = int_part * p.right() + fraction * p.right() / parts + 1;
+    size_t newRangeBegin = end - right_idx;
+
+    // Division in 'right_idx' very likely is inexact also.
+    size_t tolerance = 1;
+    size_t diff = (r2.begin() < newRangeBegin) ? (newRangeBegin - r2.begin()) : (r2.begin() - newRangeBegin);
+    bool is_split_correct = diff <= tolerance;
+    bool test_passed = (r1.begin() == begin && r1.end() == r2.begin() && is_split_correct &&
+                        r2.end() == end);
+    if (!test_passed) {
+        REPORT("Incorrect split of blocked range[%lu, %lu) into r1[%lu, %lu) and r2[%lu, %lu), "
+               "must be r1[%lu, %lu) and r2[%lu, %lu)\n", begin, end, r1.begin(), r1.end(), r2.begin(), r2.end(), begin, newRangeBegin, newRangeBegin, end);
+        ASSERT(test_passed, NULL);
+    }
+    REMARK("OK\n");
+}
+#endif /* __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES */
 //------------------------------------------------------------------------
 // Test driver
 #include "tbb/task_scheduler_init.h"
@@ -150,5 +180,9 @@ int TestMain () {
         TestRangeBasedFor();
     #endif //if __TBB_RANGE_BASED_FOR_PRESENT
 
+    #if __TBB_USE_PROPORTIONAL_SPLIT_IN_BLOCKED_RANGES
+        TestProportionalSplitOverflow();
+    #endif
+
     return Harness::Done;
 }
diff --git a/src/test/test_blocked_range2d.cpp b/src/test/test_blocked_range2d.cpp
index bd06c2b..1574fe9 100644
--- a/src/test/test_blocked_range2d.cpp
+++ b/src/test/test_blocked_range2d.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/blocked_range2d.h"
diff --git a/src/test/test_blocked_range3d.cpp b/src/test/test_blocked_range3d.cpp
index d154be5..9a89848 100644
--- a/src/test/test_blocked_range3d.cpp
+++ b/src/test/test_blocked_range3d.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/blocked_range3d.h"
diff --git a/src/test/test_broadcast_node.cpp b/src/test/test_broadcast_node.cpp
index 0b89a6e..546f85b 100644
--- a/src/test/test_broadcast_node.cpp
+++ b/src/test/test_broadcast_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
@@ -69,7 +61,20 @@ public:
         return const_cast<tbb::task *>(tbb::flow::interface7::SUCCESSFULLY_ENQUEUED);
     }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    built_predecessors_type mbp;
+    /*override*/ built_predecessors_type &built_predecessors() { return mbp; }
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    /*override*/void internal_add_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void internal_delete_built_predecessor(tbb::flow::sender<T> &) {}
+    /*override*/void copy_predecessors(predecessor_list_type &) {}
+    /*override*/size_t predecessor_count() { return 0; }
+    /*override*/void clear_predecessors() { }
+    /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) { }
+#else
     /*override*/void reset_receiver() { }
+#endif
 
 };
 
@@ -78,13 +83,26 @@ void test_serial_broadcasts() {
 
     tbb::flow::graph g;
     tbb::flow::broadcast_node<T> b(g);
-    
+
     for ( int num_receivers = 1; num_receivers < R; ++num_receivers ) {
         counting_array_receiver<T> *receivers = new counting_array_receiver<T>[num_receivers];
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(b.successor_count() == 0, NULL);
+        ASSERT(b.predecessor_count() == 0, NULL);
+        typename tbb::flow::broadcast_node<T>::successor_list_type my_succs;
+        b.copy_successors(my_succs);
+        ASSERT(my_succs.size() == 0, NULL);
+        typename tbb::flow::broadcast_node<T>::predecessor_list_type my_preds;
+        b.copy_predecessors(my_preds);
+        ASSERT(my_preds.size() == 0, NULL);
+#endif
 
         for ( int r = 0; r < num_receivers; ++r ) {
             tbb::flow::make_edge( b, receivers[r] );
         } 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT( b.successor_count() == (size_t)num_receivers, NULL);
+#endif
 
         for (int n = 0; n < N; ++n ) {
             ASSERT( b.try_put( (T)n ), NULL );
@@ -161,6 +179,146 @@ void test_parallel_broadcasts(int p) {
     run_parallel_broadcasts(p, b_copy);
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+// broadcast_node does not allow successors to try_get from it (it does not allow
+// the flow edge to switch) so we only need test the forward direction.
+template<typename T>
+void test_resets() {
+    tbb::flow::graph g;
+    tbb::flow::broadcast_node<T> b0(g);
+    tbb::flow::broadcast_node<T> b1(g);
+    tbb::flow::queue_node<T> q0(g);
+    tbb::flow::make_edge(b0,b1);
+    tbb::flow::make_edge(b1,q0);
+    T j;
+
+    // test standard reset
+    for(int testNo = 0; testNo < 2; ++testNo) {
+        for(T i= 0; i <= 3; i += 1) {
+            b0.try_put(i);
+        }
+        g.wait_for_all();
+        for(T i= 0; i <= 3; i += 1) {
+            ASSERT(q0.try_get(j) && j == i, "Bad value in queue");
+        }
+        ASSERT(!q0.try_get(j), "extra value in queue");
+
+        // reset the graph.  It should work as before.
+        if (testNo == 0) g.reset();
+    }
+
+    g.reset(tbb::flow::rf_clear_edges);
+    for(T i= 0; i <= 3; i += 1) {
+        b0.try_put(i);
+    }
+    g.wait_for_all();
+    ASSERT(!q0.try_get(j), "edge between nodes not removed");
+    for(T i= 0; i <= 3; i += 1) {
+        b1.try_put(i);
+    }
+    g.wait_for_all();
+    ASSERT(!q0.try_get(j), "edge between nodes not removed");
+}
+
+void test_extract() {
+    int dont_care;
+    tbb::flow::graph g;
+    tbb::flow::broadcast_node<int> b0(g);
+    tbb::flow::broadcast_node<int> b1(g);
+    tbb::flow::broadcast_node<int> b2(g);
+    tbb::flow::broadcast_node<int> b3(g);
+    tbb::flow::broadcast_node<int> b4(g);
+    tbb::flow::broadcast_node<int> b5(g);
+    tbb::flow::queue_node<int> q0(g);
+    tbb::flow::make_edge(b0,b1);
+    tbb::flow::make_edge(b0,b2);
+    tbb::flow::make_edge(b1,b3);
+    tbb::flow::make_edge(b1,b4);
+    tbb::flow::make_edge(b2,b4);
+    tbb::flow::make_edge(b2,b5);
+    tbb::flow::make_edge(b3,q0);
+    tbb::flow::make_edge(b4,q0);
+    tbb::flow::make_edge(b5,q0);
+
+    /*          b3       */
+    /*         /  \      */
+    /*        b1   \     */
+    /*       / \    \    */
+    /*     b0   b4---q0  */
+    /*       \ /    /    */
+    /*        b2   /     */
+    /*         \  /      */
+    /*          b5       */
+
+    g.wait_for_all();
+    b0.try_put(1);
+    g.wait_for_all();
+    for( int i = 0; i < 4; ++i ) {
+        int j;
+        ASSERT(q0.try_get(j) && j == 1, "missing or incorrect message");
+    }
+    ASSERT(!q0.try_get(dont_care), "extra message in queue");
+    ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 2, "improper count for b0");
+    ASSERT(b1.predecessor_count() == 1 && b1.successor_count() == 2, "improper count for b1");
+    ASSERT(b2.predecessor_count() == 1 && b2.successor_count() == 2, "improper count for b2");
+    ASSERT(b3.predecessor_count() == 1 && b3.successor_count() == 1, "improper count for b3");
+    ASSERT(b4.predecessor_count() == 2 && b4.successor_count() == 1, "improper count before extract of b4");
+    ASSERT(b5.predecessor_count() == 1 && b5.successor_count() == 1, "improper count for b5");
+    b4.extract();  // remove from tree of nodes.
+    ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 2, "improper count for b0 after");
+    ASSERT(b1.predecessor_count() == 1 && b1.successor_count() == 1, "improper succ count for b1 after");
+    ASSERT(b2.predecessor_count() == 1 && b2.successor_count() == 1, "improper succ count for b2 after");
+    ASSERT(b3.predecessor_count() == 1 && b3.successor_count() == 1, "improper succ count for b3 after");
+    ASSERT(b4.predecessor_count() == 0 && b4.successor_count() == 0, "improper succ count after extract");
+    ASSERT(b5.predecessor_count() == 1 && b5.successor_count() == 1, "improper succ count for b5 after");
+
+    /*          b3       */
+    /*         /  \      */
+    /*        b1   \     */
+    /*       /      \    */
+    /*     b0        q0  */
+    /*       \      /    */
+    /*        b2   /     */
+    /*         \  /      */
+    /*          b5       */
+
+    b0.try_put(1);
+    g.wait_for_all();
+    for( int i = 0; i < 2; ++i ) {
+        int j;
+        ASSERT(q0.try_get(j) && j == 1, "missing or incorrect message");
+    }
+    ASSERT(!q0.try_get(dont_care), "extra message in queue");
+    tbb::flow::make_edge(b0,b4);
+    tbb::flow::make_edge(b4,q0);
+    g.wait_for_all();
+    ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 3, "improper count for b0 after");
+    ASSERT(b1.predecessor_count() == 1 && b1.successor_count() == 1, "improper succ count for b1 after");
+    ASSERT(b2.predecessor_count() == 1 && b2.successor_count() == 1, "improper succ count for b2 after");
+    ASSERT(b3.predecessor_count() == 1 && b3.successor_count() == 1, "improper succ count for b3 after");
+    ASSERT(b4.predecessor_count() == 1 && b4.successor_count() == 1, "improper succ count after extract");
+    ASSERT(b5.predecessor_count() == 1 && b5.successor_count() == 1, "improper succ count for b5 after");
+
+    /*          b3       */
+    /*         /  \      */
+    /*        b1   \     */
+    /*       /      \    */
+    /*     b0---b4---q0  */
+    /*       \      /    */
+    /*        b2   /     */
+    /*         \  /      */
+    /*          b5       */
+
+    b0.try_put(1);
+    g.wait_for_all();
+    for( int i = 0; i < 3; ++i ) {
+        int j;
+        ASSERT(q0.try_get(j) && j == 1, "missing or incorrect message");
+    }
+    ASSERT(!q0.try_get(dont_care), "extra message in queue");
+}
+#endif  // TBB_PREVIEW_FLOW_GRAPH_FEATURES
+
 int TestMain() { 
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -176,5 +334,12 @@ int TestMain() {
        test_parallel_broadcasts<float>(p);
        test_parallel_broadcasts<int_convertable_type>(p);
    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   test_resets<int>();
+   test_resets<float>();
+   test_extract();
+#endif
+
    return Harness::Done;
 }
diff --git a/src/test/test_buffer_node.cpp b/src/test/test_buffer_node.cpp
index 5f277e9..805de8c 100644
--- a/src/test/test_buffer_node.cpp
+++ b/src/test/test_buffer_node.cpp
@@ -1,37 +1,32 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
 #include "tbb/flow_graph.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
-
-#include <cstdio>
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#include "harness_graph.h"
+#include <vector>
+#include <algorithm>
+#endif
 
 #define N 1000
 #define C 10
@@ -350,6 +345,18 @@ int test_serial() {
     ASSERT( j == bogus_value, NULL );
 
     tbb::flow::make_edge(b, b2);
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT( b.successor_count() == 1, NULL);
+    ASSERT( b.predecessor_count() == 0, NULL);
+    ASSERT( b2.successor_count() == 0, NULL);
+    ASSERT( b2.predecessor_count() == 1, NULL);
+    typename tbb::flow::buffer_node<T>::successor_list_type my_succs;
+    b.copy_successors(my_succs);
+    ASSERT(my_succs.size() == 1, NULL);
+    typename tbb::flow::buffer_node<T>::predecessor_list_type my_preds;
+    b.copy_predecessors(my_preds);
+    ASSERT(my_preds.size() == 0, NULL);
+#endif
 
     vsum = T(0);
     for (int i = 0; i < N; ++i) {
@@ -428,5 +435,10 @@ int TestMain() {
     } 
     stop = tbb::tick_count::now();
     REMARK("Buffer_Node Time=%6.6f\n", (stop-start).seconds());
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_resets<int,tbb::flow::buffer_node<int> >();
+    test_resets<float,tbb::flow::buffer_node<float> >();
+    test_buffer_extract<tbb::flow::buffer_node<int> >().run_tests();
+#endif
     return Harness::Done;
 }
diff --git a/src/test/test_cache_aligned_allocator.cpp b/src/test/test_cache_aligned_allocator.cpp
index a526ad3..645f853 100644
--- a/src/test/test_cache_aligned_allocator.cpp
+++ b/src/test/test_cache_aligned_allocator.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test whether cache_aligned_allocator works with some of the host's STL containers.
diff --git a/src/test/test_cache_aligned_allocator_STL.cpp b/src/test/test_cache_aligned_allocator_STL.cpp
index 03ed83a..ebce6e4 100644
--- a/src/test/test_cache_aligned_allocator_STL.cpp
+++ b/src/test/test_cache_aligned_allocator_STL.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test whether cache_aligned_allocator works with some of the host's STL containers.
diff --git a/src/test/test_cilk_common.h b/src/test/test_cilk_common.h
index 6313d7c..85f8826 100644
--- a/src/test/test_cilk_common.h
+++ b/src/test/test_cilk_common.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // This file is a common part of test_cilk_interop and test_cilk_dynamic_load tests
diff --git a/src/test/test_cilk_dynamic_load.cpp b/src/test/test_cilk_dynamic_load.cpp
index 4f7507e..4fbd27e 100644
--- a/src/test/test_cilk_dynamic_load.cpp
+++ b/src/test/test_cilk_dynamic_load.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
diff --git a/src/test/test_cilk_interop.cpp b/src/test/test_cilk_interop.cpp
index 0ff38cd..00d27f6 100644
--- a/src/test/test_cilk_interop.cpp
+++ b/src/test/test_cilk_interop.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
diff --git a/src/test/test_combinable.cpp b/src/test/test_combinable.cpp
index 14aa6b3..59be641 100644
--- a/src/test/test_combinable.cpp
+++ b/src/test/test_combinable.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 0
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #define __TBB_EXTRA_DEBUG 1 // for concurrent_hash_map
 #include "tbb/combinable.h"
 #include "tbb/task_scheduler_init.h"
@@ -61,7 +56,6 @@ static tbb::atomic<int> destruction_counter;
 
 const int REPETITIONS = 10;
 const int N = 100000;
-const int VALID_NUMBER_OF_KEYS = 100;
 const double EXPECTED_SUM = (REPETITIONS + 1) * N;
 
 //
diff --git a/src/test/test_composite_node.cpp b/src/test/test_composite_node.cpp
new file mode 100644
index 0000000..ac4d5bd
--- /dev/null
+++ b/src/test/test_composite_node.cpp
@@ -0,0 +1,541 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef TBB_PREVIEW_FLOW_GRAPH_NODES
+    #define TBB_PREVIEW_FLOW_GRAPH_NODES 1
+#endif
+
+#include "harness.h"
+#if __TBB_PREVIEW_COMPOSITE_NODE 
+
+#include "tbb/flow_graph.h"
+#include <tuple>
+#include <cmath>
+#include <vector>
+
+struct passthru_body {
+    int operator()( int i ) {
+        return i;
+    }
+};
+
+class src_body{
+    int start;
+    int finish;
+    int step;
+public:
+    src_body(int f, int s) : start(1), finish(f), step(s) {} 
+    bool operator()(int &a) {
+       a = start;
+       if (start <= finish) {
+           a = start;
+           start+=step;
+           return true;
+       } 
+       else {
+           return false;
+       };  
+   }
+};
+
+struct m_fxn_body{
+    void operator()(int, tbb::flow::multifunction_node<int, tbb::flow::tuple<int,int> >::output_ports_type ) {}
+};
+
+struct ct_body {
+ct_body(){}
+    void operator()(tbb::flow::continue_msg){}
+};
+
+struct seq_body {
+int operator()(int i){return i;}
+};
+
+template<int N, typename T1, typename T2>
+struct compare { 
+    static void compare_refs(T1 tuple1, T2 tuple2) {
+    ASSERT( &tbb::flow::get<N>(tuple1) == &tbb::flow::get<N>(tuple2), "ports not set correctly");
+    compare<N-1, T1, T2>::compare_refs(tuple1, tuple2);
+    }
+};
+
+template<typename T1, typename T2>
+struct compare<1, T1, T2> { 
+    static void compare_refs(T1 tuple1, T2 tuple2) {
+    ASSERT(&tbb::flow::get<0>(tuple1) == &tbb::flow::get<0>(tuple2), "port 0 not correctly set");
+    }
+};
+
+void add_all_nodes (){
+    tbb::flow::graph g;
+
+    typedef tbb::flow::tuple<tbb::flow::continue_msg, tbb::flow::tuple<int, int>, int, int, int, int, 
+                             int, int, int, int, int, int, int, int > InputTupleType; 
+
+    typedef tbb::flow::tuple<tbb::flow::continue_msg, tbb::flow::tuple<int, int>, tbb::flow::tagged_msg<size_t, int, float>, 
+                             int, int, int, int, int, int, int, int, int, int, int, int >  OutputTupleType;
+
+    typedef tbb::flow::tuple< > EmptyTupleType;
+
+    typedef tbb::flow::composite_node<InputTupleType, OutputTupleType > input_output_type;
+    typedef tbb::flow::composite_node<InputTupleType, EmptyTupleType > input_only_type;
+    typedef tbb::flow::composite_node<EmptyTupleType, OutputTupleType > output_only_type;
+
+    const size_t NUM_INPUTS = tbb::flow::tuple_size<InputTupleType>::value;
+    const size_t NUM_OUTPUTS = tbb::flow::tuple_size<OutputTupleType>::value;
+
+    //node types
+    tbb::flow::continue_node<tbb::flow::continue_msg> ct(g, ct_body());
+    tbb::flow::split_node< tbb::flow::tuple<int, int> > s(g);
+    tbb::flow::source_node<int> src(g, src_body(20,5), false);
+    tbb::flow::function_node<int, int> fxn(g, tbb::flow::unlimited, passthru_body());
+    tbb::flow::multifunction_node<int, tbb::flow::tuple<int, int> > m_fxn(g, tbb::flow::unlimited, m_fxn_body());
+    tbb::flow::broadcast_node<int> bc(g);
+    tbb::flow::limiter_node<int> lim(g, 2);
+    tbb::flow::indexer_node<int, float> ind(g);
+    tbb::flow::join_node< tbb::flow::tuple< int, int >, tbb::flow::queueing > j(g);
+    tbb::flow::queue_node<int> q(g);
+    tbb::flow::buffer_node<int> bf(g);
+    tbb::flow::priority_queue_node<int> pq(g);
+    tbb::flow::write_once_node<int> wo(g);
+    tbb::flow::overwrite_node<int> ovw(g);
+    tbb::flow::sequencer_node<int> seq(g, seq_body());
+
+    #if !(__GNUC__==4 && __GNUC_MINOR__==4  && !defined(__clang__)) 
+    // upcasting of a tuple of reference from derived to base fails on gcc4.4 (and all icc in this environment)
+    // if std::tie is used to create the tuple of references
+    auto input_tuple = std::tie(ct, s, m_fxn, fxn, bc, tbb::flow::input_port<0>(j), lim, q, tbb::flow::input_port<0>(ind), 
+                                pq, ovw, wo, bf, seq);
+    auto output_tuple = std::tie(ct,j, ind, fxn, src, bc, tbb::flow::output_port<0>(s), lim, tbb::flow::output_port<0>(m_fxn), 
+                                 q, pq, ovw, wo, bf, seq );
+    #else
+    input_output_type::input_ports_type input_tuple(ct, s, m_fxn, fxn, bc, tbb::flow::input_port<0>(j), lim, q, 
+                                                    tbb::flow::input_port<0>(ind), pq, ovw, wo, bf, seq);
+
+    input_output_type::output_ports_type output_tuple(ct,j, ind, fxn, src, bc, tbb::flow::output_port<0>(s),
+                                                      lim, tbb::flow::output_port<0>(m_fxn), q, pq, ovw, wo, bf, seq);
+    #endif
+
+    //composite_node with both input_ports and output_ports 
+    input_output_type a_node(g);
+    a_node.set_external_ports(input_tuple, output_tuple); 
+   
+    bool a_visible_nodes_added = false;
+    a_visible_nodes_added = a_node.add_visible_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(a_visible_nodes_added == true, "not all nodes were added"); 
+
+    bool a_nodes_added = false;
+    a_nodes_added = a_node.add_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(a_nodes_added == true, "not all nodes were added");
+    
+    auto a_node_input_ports_ptr = a_node.input_ports();
+    compare<NUM_INPUTS-1, decltype(a_node_input_ports_ptr), decltype(input_tuple)>::compare_refs(a_node_input_ports_ptr, input_tuple);
+    ASSERT (NUM_INPUTS == tbb::flow::tuple_size<decltype(a_node_input_ports_ptr)>::value, "not all declared input ports were bound to nodes");
+
+    auto a_node_output_ports_ptr = a_node.output_ports();
+    compare<NUM_OUTPUTS-1, decltype(a_node_output_ports_ptr), decltype(output_tuple)>::compare_refs(a_node_output_ports_ptr, output_tuple);
+    ASSERT(NUM_OUTPUTS == tbb::flow::tuple_size<decltype(a_node_output_ports_ptr)>::value, "not all declared output ports were bound to nodes");
+
+    //composite_node with only input_ports
+    input_only_type b_node(g); 
+    b_node.set_external_ports(input_tuple);
+
+    bool b_visible_nodes_added = false;
+    b_visible_nodes_added = b_node.add_visible_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(b_visible_nodes_added == true, "not all nodes were added");
+
+    bool b_nodes_added = false;
+    b_nodes_added = b_node.add_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(b_nodes_added == true, "not all nodes were added");
+
+    auto b_node_input_ports_ptr = b_node.input_ports();
+    compare<NUM_INPUTS-1, decltype(b_node_input_ports_ptr), decltype(input_tuple)>::compare_refs(b_node_input_ports_ptr, input_tuple);
+    ASSERT (NUM_INPUTS == tbb::flow::tuple_size<decltype(b_node_input_ports_ptr)>::value, "not all declared input ports were bound to nodes");
+
+    //composite_node with only output_ports
+    output_only_type c_node(g); 
+    c_node.set_external_ports(output_tuple);
+
+    bool c_visible_nodes_added = false;
+    c_visible_nodes_added = c_node.add_visible_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(c_visible_nodes_added == true, "not all nodes were added");
+
+    bool c_nodes_added = false;
+    c_nodes_added = c_node.add_nodes(src, fxn, m_fxn, bc, lim, ind, s, ct, j, q, bf, pq, wo, ovw, seq);
+    ASSERT(c_nodes_added == true, "not all nodes were added");
+
+    auto c_node_output_ports_ptr = c_node.output_ports();
+    compare<NUM_OUTPUTS-1, decltype(c_node_output_ports_ptr), decltype(output_tuple)>::compare_refs(c_node_output_ports_ptr, output_tuple);
+    ASSERT (NUM_OUTPUTS == tbb::flow::tuple_size<decltype(c_node_output_ports_ptr)>::value, "not all declared input ports were bound to nodes");
+}
+
+struct tiny_node : public tbb::flow::composite_node< tbb::flow::tuple< int >, tbb::flow::tuple< int > > {
+    tbb::flow::function_node< int, int > f1;
+    tbb::flow::function_node< int, int > f2;
+    typedef tbb::flow::composite_node< tbb::flow::tuple< int >, tbb::flow::tuple< int > > base_type;
+
+public:
+    tiny_node(tbb::flow::graph &g, bool hidden = false) : base_type(g), f1(g, tbb::flow::unlimited, passthru_body() ), f2(g, tbb::flow::unlimited, passthru_body() ) {
+        tbb::flow::make_edge( f1, f2 );
+        
+        tbb::flow::tuple<tbb::flow::function_node< int, int >& > input_tuple(f1);
+        tbb::flow::tuple<tbb::flow::function_node< int, int >& > output_tuple(f2);
+        base_type::set_external_ports( input_tuple, output_tuple );
+        bool nodes_added = false;
+
+        if(hidden)
+            nodes_added  = base_type::add_nodes(f1, f2);
+        else
+            nodes_added = base_type::add_visible_nodes(f1, f2);
+
+        ASSERT(nodes_added == true, "nodes not added properly");
+    }
+};
+
+int test_tiny(bool hidden = false) {
+    tbb::flow::graph g;
+    tbb::flow::function_node< int, int > f0( g, tbb::flow::unlimited, passthru_body() );
+    tiny_node t(g, hidden);
+    ASSERT(&tbb::flow::input_port<0>(t) == &t.f1, "f1 not bound to input port 0 in composite_node t");
+    ASSERT(&tbb::flow::output_port<0>(t) == &t.f2, "f2 not bound to output port 0 in composite_node t");
+
+    tiny_node t1(g, hidden);
+    ASSERT(&tbb::flow::get<0>(t1.input_ports()) == &t1.f1, "f1 not bound to input port 0 in composite_node t1");
+    ASSERT(&tbb::flow::get<0>(t1.output_ports()) == &t1.f2, "f2 not bound to output port 0 in composite_node t1");
+
+    tiny_node t2(g, hidden);
+    ASSERT(&tbb::flow::input_port<0>(t2) == &t2.f1, "f1 not bound to input port 0 in composite_node t2");
+    ASSERT(&tbb::flow::output_port<0>(t2) == &t2.f2, "f2 not bound to output port 0 in composite_node t2");
+
+    tbb::flow::function_node< int, int > f3( g, tbb::flow::unlimited, passthru_body() );
+    tbb::flow::make_edge( f0, t );
+    tbb::flow::make_edge( t, t1 );
+    tbb::flow::make_edge( t1, t2 );
+    tbb::flow::make_edge( t2 , f3 );
+    tbb::flow::queue_node<int> q(g);
+    tbb::flow::make_edge(f3, q);
+    f0.try_put(1);
+    g.wait_for_all();
+
+    int i, j =0;
+    q.try_get(i);
+    ASSERT( i == 1, "item did not go through graph");  
+    q.try_get(j);
+    ASSERT( !j, "unexpected item in graph");
+    g.wait_for_all();
+
+    tbb::flow::remove_edge(f3, q);
+    tbb::flow::remove_edge(t2, f3);
+    tbb::flow::remove_edge(t1, t2);
+
+    tbb::flow::make_edge( t1 , f3 );
+    tbb::flow::make_edge(f3, q);
+   
+    f0.try_put(2);
+    g.wait_for_all();
+
+    q.try_get(i);
+    ASSERT( i == 2, "item did not go through graph after removal of edge");  
+    q.try_get(j);
+    ASSERT( !j, "unexpected item in graph after removal of edge");
+
+    return 0; 
+}
+
+class adder_node : public tbb::flow::composite_node< tbb::flow::tuple< int, int >, tbb::flow::tuple< int > > {
+public: 
+    tbb::flow::join_node< tbb::flow::tuple< int, int >, tbb::flow::queueing > j;
+    tbb::flow::function_node< tbb::flow::tuple< int, int >, int > f;
+private:
+    typedef tbb::flow::composite_node< tbb::flow::tuple< int, int >, tbb::flow::tuple< int > > base_type;
+
+    struct f_body {
+        int operator()( const tbb::flow::tuple< int, int > &t ) {
+            return tbb::flow::get<0>(t) + tbb::flow::get<1>(t);
+        }
+    };
+
+public:
+    adder_node(tbb::flow::graph &g, bool hidden = false) : base_type(g), j(g), f(g, tbb::flow::unlimited, f_body() ) {
+        tbb::flow::make_edge( j, f );
+        
+        base_type::input_ports_type input_tuple(tbb::flow::input_port<0>(j), tbb::flow::input_port<1>(j) );  
+        base_type::output_ports_type output_tuple(f);
+        base_type::set_external_ports( input_tuple, output_tuple );
+        bool nodes_added = false;
+       
+        if (hidden)
+           nodes_added = base_type::add_nodes(j, f);
+        else
+           nodes_added = base_type::add_visible_nodes(j, f);
+
+        ASSERT(nodes_added == true, "either j or f not added"); 
+    }
+};
+
+struct square_body { int operator()(int v) { return v*v; } };
+struct cube_body { int operator()(int v) { return v*v*v; } };
+int adder_sum(int i) {
+    return (int)(pow(3*pow(i,3) + pow(i, 2),2)); 
+}
+int test_adder(bool hidden = false) {
+    tbb::flow::graph g;
+    tbb::flow::function_node<int,int> s(g, tbb::flow::unlimited, square_body());
+    tbb::flow::function_node<int,int> c(g, tbb::flow::unlimited, cube_body());
+    tbb::flow::function_node<int,int> p(g, tbb::flow::unlimited, passthru_body());
+
+    adder_node a0(g, hidden);
+    ASSERT(&tbb::flow::input_port<0>(a0) == &tbb::flow::input_port<0>(a0.j), "input_port 0 of j not bound to input port 0 in composite_node a0");
+    ASSERT(&tbb::flow::input_port<1>(a0) == &tbb::flow::input_port<1>(a0.j), "input_port 1 of j not bound to input port 1 in composite_node a0");
+    ASSERT(&tbb::flow::output_port<0>(a0) == &a0.f, "f not bound to output port 0 in composite_node a0");
+
+    adder_node a1(g, hidden);
+    ASSERT(&tbb::flow::get<0>(a0.input_ports()) == &tbb::flow::input_port<0>(a0.j), "input_port 0 of j not bound to input port 0 in composite_node a1");
+    ASSERT(&tbb::flow::get<1>(a0.input_ports()) == &tbb::flow::input_port<1>(a0.j), "input_port1 of j not bound to input port 1 in composite_node a1");
+    ASSERT(&tbb::flow::get<0>(a0.output_ports()) == &a0.f, "f not bound to output port 0 in composite_node a1");
+
+    adder_node a2(g, hidden);
+    ASSERT(&tbb::flow::input_port<0>(a2) == &tbb::flow::input_port<0>(a2.j), "input_port 0 of j not bound to input port 0 in composite_node a2");
+    ASSERT(&tbb::flow::input_port<1>(a2) == &tbb::flow::input_port<1>(a2.j), "input_port 1 of j not bound to input port 1 in composite_node a2");
+    ASSERT(&tbb::flow::output_port<0>(a2) == &a2.f, "f not bound to output port 0 in composite_node a2");
+
+    adder_node a3(g, hidden);
+    ASSERT(&tbb::flow::get<0>(a3.input_ports()) == &tbb::flow::input_port<0>(a3.j), "input_port 0 of j not bound to input port 0 in composite_node a3");
+    ASSERT(&tbb::flow::get<1>(a3.input_ports()) == &tbb::flow::input_port<1>(a3.j), "input_port1 of j not bound to input port 1 in composite_node a3");
+    ASSERT(&tbb::flow::get<0>(a3.output_ports()) == &a3.f, "f not bound to output port 0 in composite_node a3");
+
+    tbb::flow::function_node<int,int> s2(g, tbb::flow::unlimited, square_body());
+    tbb::flow::queue_node<int> q(g);
+ 
+    tbb::flow::make_edge( s, tbb::flow::input_port<0>(a0) );
+    tbb::flow::make_edge( c, tbb::flow::input_port<1>(a0) );
+
+    tbb::flow::make_edge( c, tbb::flow::input_port<0>(a1) );
+    tbb::flow::make_edge( c, tbb::flow::input_port<1>(a1) );
+
+    tbb::flow::make_edge( tbb::flow::output_port<0>(a0), tbb::flow::input_port<0>(a2) );
+    tbb::flow::make_edge( tbb::flow::output_port<0>(a1), tbb::flow::input_port<1>(a2) );
+
+    tbb::flow::make_edge( tbb::flow::output_port<0>(a2), s2 );
+    tbb::flow::make_edge( s2, q );
+      
+    int sum_total=0;
+    int result=0;
+    for ( int i = 1; i < 4; ++i ) {
+       s.try_put(i);
+       c.try_put(i);
+       sum_total += adder_sum(i);
+    g.wait_for_all();
+    }
+
+    int j;
+    for ( int i = 1; i < 4; ++i ) {
+        q.try_get(j);
+        result += j;  
+    }
+    g.wait_for_all();
+    ASSERT(result == sum_total, "the sum from the graph does not match the calculated value");
+
+    tbb::flow::remove_edge(s2, q);
+    tbb::flow::remove_edge( a2, s2 );
+    tbb::flow::make_edge( a0, a3 );
+    tbb::flow::make_edge( a1, tbb::flow::input_port<1>(a3) );
+    tbb::flow::make_edge( a3, s2 );
+    tbb::flow::make_edge( s2, q );
+
+    sum_total=0;
+    result=0;
+    for ( int i = 10; i < 20; ++i ) {
+       s.try_put(i);
+       c.try_put(i);
+       sum_total += adder_sum(i);
+    g.wait_for_all();
+    }
+
+    for ( int i = 10; i < 20; ++i ) {
+        q.try_get(j);
+        result += j;  
+    }
+    g.wait_for_all();
+    ASSERT(result == sum_total, "the new sum after the replacement of the nodes does not match the calculated value");
+
+    return 0; 
+}
+
+template< typename T >
+class prefix_node : public tbb::flow::composite_node< tbb::flow::tuple< T, T, T, T, T >, tbb::flow::tuple< T, T, T, T, T > > {
+    typedef tbb::flow::tuple< T, T, T, T, T > my_tuple_t;
+public:
+    tbb::flow::join_node< my_tuple_t, tbb::flow::queueing > j;
+    tbb::flow::split_node< my_tuple_t > s;
+private:
+    tbb::flow::function_node< my_tuple_t, my_tuple_t > f;
+    typedef tbb::flow::composite_node< my_tuple_t, my_tuple_t > base_type;
+
+    struct f_body {
+        my_tuple_t operator()( const my_tuple_t &t ) {
+            return my_tuple_t( tbb::flow::get<0>(t),
+                               tbb::flow::get<0>(t) + tbb::flow::get<1>(t),
+                               tbb::flow::get<0>(t) + tbb::flow::get<1>(t) + tbb::flow::get<2>(t),
+                               tbb::flow::get<0>(t) + tbb::flow::get<1>(t) + tbb::flow::get<2>(t) + tbb::flow::get<3>(t),
+                               tbb::flow::get<0>(t) + tbb::flow::get<1>(t) + tbb::flow::get<2>(t) + tbb::flow::get<3>(t) + tbb::flow::get<4>(t) );
+        }
+    };
+
+public:
+    prefix_node(tbb::flow::graph &g, bool hidden = false ) : base_type(g), j(g), s(g), f(g, tbb::flow::serial, f_body() ) {
+        tbb::flow::make_edge( j, f );
+        tbb::flow::make_edge( f, s );
+        bool nodes_added = false;
+
+    typename base_type::input_ports_type input_tuple(tbb::flow::input_port<0>(j), tbb::flow::input_port<1>(j), tbb::flow::input_port<2>(j), tbb::flow::input_port<3>(j), tbb::flow::input_port<4>(j));
+
+    typename base_type::output_ports_type output_tuple(tbb::flow::output_port<0>(s), tbb::flow::output_port<1>(s), tbb::flow::output_port<2>(s), tbb::flow::output_port<3>(s), tbb::flow::output_port<4>(s));
+
+    base_type::set_external_ports(input_tuple, output_tuple);
+
+        if(hidden)
+            nodes_added = base_type::add_nodes(j,s,f);
+        else
+            nodes_added = base_type::add_visible_nodes(j,s,f);
+        
+        ASSERT(nodes_added == true, "nodes not properly added");
+    }
+};
+
+int test_prefix(bool hidden = false) {
+    tbb::flow::graph g;
+    prefix_node<double> p(g, hidden);
+
+    ASSERT(&tbb::flow::get<0>(p.input_ports()) == &tbb::flow::input_port<0>(p.j), "input port 0 of j is not bound to input port 0 of composite node p");
+    ASSERT(&tbb::flow::input_port<1>(p.j) == &tbb::flow::input_port<1>(p.j), "input port 1 of j is not bound to input port 1 of composite node p");
+    ASSERT(&tbb::flow::get<2>(p.input_ports()) == &tbb::flow::input_port<2>(p.j), "input port 2 of j is not bound to input port 2 of composite node p");
+    ASSERT(&tbb::flow::input_port<3>(p.j) == &tbb::flow::input_port<3>(p.j), "input port 3 of j is not bound to input port 3 of composite node p");
+    ASSERT(&tbb::flow::get<4>(p.input_ports()) == &tbb::flow::input_port<4>(p.j), "input port 4 of j is not bound to input port 4 of composite node p");
+    
+
+    ASSERT(&tbb::flow::get<0>(p.output_ports()) == &tbb::flow::output_port<0>(p.s), "output port 0 of s is not bound to output port 0 of composite node p");
+    ASSERT(&tbb::flow::output_port<1>(p.s) == &tbb::flow::output_port<1>(p.s), "output port 1 of s is not bound to output port 1 of composite node p");
+    ASSERT(&tbb::flow::get<2>(p.output_ports()) == &tbb::flow::output_port<2>(p.s), "output port 2 of s is not bound to output port 2 of composite node p");
+    ASSERT(&tbb::flow::output_port<3>(p.s) == &tbb::flow::output_port<3>(p.s), "output port 3 of s is not bound to output port 3 of composite node p");
+    ASSERT(&tbb::flow::get<4>(p.output_ports()) == &tbb::flow::output_port<4>(p.s), "output port 4 of s is not bound to output port 4 of composite node p");
+
+    std::vector< tbb::flow::queue_node<double> > v( 5, tbb::flow::queue_node<double>(g) );
+    tbb::flow::make_edge( tbb::flow::output_port<0>(p), v[0] );
+    tbb::flow::make_edge( tbb::flow::output_port<1>(p), v[1] );
+    tbb::flow::make_edge( tbb::flow::output_port<2>(p), v[2] );
+    tbb::flow::make_edge( tbb::flow::output_port<3>(p), v[3] );
+    tbb::flow::make_edge( tbb::flow::output_port<4>(p), v[4] );
+
+    for(  double offset = 1; offset < 10000; offset *= 10 ) {
+        tbb::flow::input_port<0>(p).try_put( offset );
+        tbb::flow::input_port<1>(p).try_put( offset + 1 );
+        tbb::flow::input_port<2>(p).try_put( offset + 2 );
+        tbb::flow::input_port<3>(p).try_put( offset + 3 );
+        tbb::flow::input_port<4>(p).try_put( offset + 4 );
+    }
+    g.wait_for_all();
+
+    double x;
+    while ( v[0].try_get(x) ) {
+        g.wait_for_all();
+        for ( int i = 1; i < 5; ++i ) {
+            v[i].try_get(x);
+            g.wait_for_all();
+        }
+    }
+    return 0; 
+}
+
+void input_only_output_only_composite(bool hidden) {
+    tbb::flow::graph g;
+    tbb::flow::composite_node<tbb::flow::tuple<int>, tbb::flow::tuple<int> > input_output(g, "aaaaa");
+    typedef tbb::flow::composite_node<tbb::flow::tuple<int>, tbb::flow::tuple<> > input_only_composite;
+    typedef tbb::flow::composite_node<tbb::flow::tuple<>, tbb::flow::tuple<int> > output_only_composite;
+    typedef tbb::flow::source_node<int> src_type;
+    typedef tbb::flow::queue_node<int> q_type;
+    typedef tbb::flow::function_node<int, int> f_type;
+
+    int num = 0;
+    int finish=1000;
+    int step = 4;
+    bool a_in_nodes_added = false;
+    bool a_out_nodes_added = false;
+
+    input_only_composite a_in(g);
+    output_only_composite a_out(g);
+
+    src_type src(g, src_body(finish, step), false);
+    q_type que(g);
+    f_type f(g, 1, passthru_body());
+
+    tbb::flow::tuple<f_type& > input_tuple(f);
+    a_in.set_external_ports(input_tuple);
+    ASSERT(&tbb::flow::get<0>(a_in.input_ports()) == &f, "f not bound to input port 0 in composite_node a_in");
+
+    tbb::flow::tuple<src_type&> output_tuple(src); 
+    a_out.set_external_ports(output_tuple);
+    ASSERT(&tbb::flow::get<0>(a_out.output_ports()) == &src, "src not bound to output port 0 in composite_node a_out");
+    
+    if(hidden) { 
+        a_in_nodes_added = a_in.add_nodes(f, que); 
+        a_out_nodes_added = a_out.add_nodes(src); 
+    } else {
+        a_in_nodes_added = a_in.add_visible_nodes(f, que); 
+        a_out_nodes_added = a_out.add_visible_nodes(src);
+
+        ASSERT(a_in_nodes_added == true, "either f or que was not properly added to a_in");
+        ASSERT(a_out_nodes_added == true, "src node not properly added to a_out");  
+    }    
+
+    tbb::flow::make_edge(a_out, a_in);
+    tbb::flow::make_edge(f, que);
+    src.activate();
+    g.wait_for_all();
+
+    for(int i = 1; i<finish/step; ++i) {
+        que.try_get(num);
+        ASSERT(num == 4*i - 3, "number does not match position in sequence");
+    }
+    g.wait_for_all();
+}
+
+#endif // __TBB_PREVIEW_COMPOSITE_NODE
+
+int TestMain() {
+
+#if __TBB_PREVIEW_COMPOSITE_NODE 
+
+    add_all_nodes();
+    test_tiny(false);
+    test_tiny(true);
+    test_adder(false);
+    test_adder(true);
+    test_prefix(false);
+    test_prefix(true);
+    input_only_output_only_composite(true);
+    input_only_output_only_composite(false);
+
+    return Harness::Done; 
+#else 
+    return Harness::Skipped; 
+#endif 
+
+}
diff --git a/src/test/test_concurrent_hash_map.cpp b/src/test/test_concurrent_hash_map.cpp
index 12d31a6..2c79281 100644
--- a/src/test/test_concurrent_hash_map.cpp
+++ b/src/test/test_concurrent_hash_map.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef TBB_USE_PERFORMANCE_WARNINGS
@@ -35,6 +27,7 @@
 // Hence we include a few other headers before doing the abusive edit.
 #include "tbb/tbb_stddef.h" /* Defines runtime_warning */
 #include "harness_assert.h" /* Prerequisite for defining hooked_warning */
+#include "test_container_move_support.h"
 
 // The symbol internal::runtime_warning is normally an entry point into the TBB library.
 // Here for sake of testing, we define it to be hooked_warning, a routine peculiar to this unit test.
@@ -114,7 +107,7 @@ public:
     }
     int value_of() const {return key;}
 };
-
+//TODO: unify with Harness::Foo ?
 tbb::atomic<long> MyDataCount;
 long MyDataCountLimit = 0;
 
@@ -216,6 +209,8 @@ typedef local_counting_allocator<std::allocator<MyData> > MyAllocator;
 typedef tbb::concurrent_hash_map<MyKey,MyData,MyHashCompare,MyAllocator> MyTable;
 typedef tbb::concurrent_hash_map<MyKey,MyData2,MyHashCompare> MyTable2;
 typedef tbb::concurrent_hash_map<MyKey,MyData,YourHashCompare> YourTable;
+typedef tbb::concurrent_hash_map<MyKey,MyData,MyHashCompare,MyAllocator> MyTable;
+typedef tbb::concurrent_hash_map<MyKey,Foo,MyHashCompare> DataStateTrackedTable;
 
 template<typename MyTable>
 inline void CheckAllocator(MyTable &table, size_t expected_allocs, size_t expected_frees, bool exact = true) {
@@ -260,6 +255,42 @@ struct Insert {
     }
 };
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct RvalueInsert {
+    static void apply( DataStateTrackedTable& table, int i ) {
+        DataStateTrackedTable::accessor a;
+        ASSERT( (table.insert( a, std::make_pair(MyKey::make(i), Foo(i + 1)))),"already present while should not ?" );
+        ASSERT( (*a).second == i + 1, NULL );
+        ASSERT( (*a).second.state == Harness::StateTrackableBase::MoveInitialized, "");
+    }
+};
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+struct Emplace {
+    static void apply( DataStateTrackedTable& table, int i ) {
+        DataStateTrackedTable::accessor a;
+        ASSERT( (table.emplace( a, MyKey::make(i), (i + 1))),"already present while should not ?" );
+        ASSERT( (*a).second == i + 1, NULL );
+        ASSERT( (*a).second.state == Harness::StateTrackableBase::DirectInitialized, "");
+    }
+};
+#endif // __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+struct InsertInitList {
+    static void apply( MyTable& table, int i ) {
+        if ( UseKey( i ) ) {
+            // TODO: investigate why the following sequence causes an additional allocation sometimes:
+            // table.insert( MyTable::value_type( MyKey::make( i ), i*i ) );
+            // table.insert( MyTable::value_type( MyKey::make( i ), i*i+1 ) );
+            std::initializer_list<MyTable::value_type> il = { MyTable::value_type( MyKey::make( i ), i*i )/*, MyTable::value_type( MyKey::make( i ), i*i+1 ) */ };
+            table.insert( il );
+        }
+    }
+};
+#endif /* __TBB_INITIALIZER_LISTS_PRESENT */
+
 struct Find {
     static void apply( MyTable& table, int i ) {
         MyTable::accessor a;
@@ -365,7 +396,7 @@ struct FakeExclusive : NoAssign {
     void operator()( int i ) const {
         if(i) {
             YourTable::const_accessor real_ca;
-            // const accessor on non-const table aquired as reader (shared)
+            // const accessor on non-const table acquired as reader (shared)
             ASSERT( table.find(real_ca,MyKey::make(1)), NULL );
             barrier.wait(); // item can be erased
             Harness::Sleep(10); // let it enter the erase
@@ -373,9 +404,9 @@ struct FakeExclusive : NoAssign {
         } else {
             YourTable::accessor fake_ca;
             const YourTable &const_table = table;
-            // non-const accessor on const table aquired as reader (shared)
+            // non-const accessor on const table acquired as reader (shared)
             ASSERT( const_table.find(fake_ca,MyKey::make(1)), NULL );
-            barrier.wait(); // readers aquired
+            barrier.wait(); // readers acquired
             // can mistakenly remove the item while other readers still refers to it
             table.erase( fake_ca );
         }
@@ -506,30 +537,42 @@ void TestInsertFindErase( int nthread ) {
     ParallelTraverseTable(table,n,0);
     CheckAllocator(table, 0, 100);
 
-    DoConcurrentOperations<Insert,MyTable>(table,n,"insert",nthread);
-    ASSERT( MyDataCount==m, NULL );
-    TraverseTable(table,n,m);
-    ParallelTraverseTable(table,n,m);
-    CheckAllocator(table, m, 100);
+    int expected_allocs = 0, expected_frees = 100;
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    for ( int i = 0; i < 2; ++i ) {
+        if ( i==0 )
+            DoConcurrentOperations<InsertInitList, MyTable>( table, n, "insert(std::initializer_list)", nthread );
+        else
+#endif
+            DoConcurrentOperations<Insert, MyTable>( table, n, "insert", nthread );
+        ASSERT( MyDataCount == m, NULL );
+        TraverseTable( table, n, m );
+        ParallelTraverseTable( table, n, m );
+        expected_allocs += m;
+        CheckAllocator( table, expected_allocs, expected_frees );
 
-    DoConcurrentOperations<Find,MyTable>(table,n,"find",nthread);
-    ASSERT( MyDataCount==m, NULL );
-    CheckAllocator(table, m, 100);
+        DoConcurrentOperations<Find, MyTable>( table, n, "find", nthread );
+        ASSERT( MyDataCount == m, NULL );
+        CheckAllocator( table, expected_allocs, expected_frees );
 
-    DoConcurrentOperations<FindConst,MyTable>(table,n,"find(const)",nthread);
-    ASSERT( MyDataCount==m, NULL );
-    CheckAllocator(table, m, 100);
+        DoConcurrentOperations<FindConst, MyTable>( table, n, "find(const)", nthread );
+        ASSERT( MyDataCount == m, NULL );
+        CheckAllocator( table, expected_allocs, expected_frees );
 
-    EraseCount=0;
-    DoConcurrentOperations<Erase,MyTable>(table,n,"erase",nthread);
-    ASSERT( EraseCount==m, NULL );
-    ASSERT( MyDataCount==0, NULL );
-    TraverseTable(table,n,0);
-    CheckAllocator(table, m, m+100);
-
-    bad_hashing = true;
-    table.clear();
-    bad_hashing = false;
+        EraseCount = 0;
+        DoConcurrentOperations<Erase, MyTable>( table, n, "erase", nthread );
+        ASSERT( EraseCount == m, NULL );
+        ASSERT( MyDataCount == 0, NULL );
+        TraverseTable( table, n, 0 );
+        expected_frees += m;
+        CheckAllocator( table, expected_allocs, expected_frees );
+
+        bad_hashing = true;
+        table.clear();
+        bad_hashing = false;
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    }
+#endif
 
     if(nthread > 1) {
         YourTable ie_table;
@@ -916,15 +959,24 @@ void TestExceptions() {
 #if __TBB_INITIALIZER_LISTS_PRESENT
 #include "test_initializer_list.h"
 
+struct test_insert {
+    template<typename container_type, typename element_type>
+    static void do_test( std::initializer_list<element_type> il, container_type const& expected ) {
+        container_type vd;
+        vd.insert( il );
+        ASSERT( vd == expected, "inserting with an initializer list failed" );
+    }
+};
+
 void TestInitList(){
     using namespace initializer_list_support_tests;
     REMARK("testing initializer_list methods \n");
 
     typedef tbb::concurrent_hash_map<int,int> ch_map_type;
-    std::initializer_list<ch_map_type::value_type > pairs_il = {{1,1},{2,2},{3,3},{4,4},{5,5}};
+    std::initializer_list<ch_map_type::value_type> pairs_il = {{1,1},{2,2},{3,3},{4,4},{5,5}};
 
-    TestInitListSupportWithoutAssign<ch_map_type>(pairs_il);
-    TestInitListSupportWithoutAssign<ch_map_type>({});
+    TestInitListSupportWithoutAssign<ch_map_type, test_insert>( pairs_il );
+    TestInitListSupportWithoutAssign<ch_map_type, test_insert>( {} );
 }
 #endif //if __TBB_INITIALIZER_LISTS_PRESENT
 
@@ -946,12 +998,369 @@ void TestRangeBasedFor(){
     ASSERT( range_based_for_accumulate(a_ch_map, pair_second_summer(), 0) == gauss_summ_of_int_sequence(sequence_length), "incorrect accumulated value generated via range based for ?");
 }
 #endif //if __TBB_RANGE_BASED_FOR_PRESENT
-//------------------------------------------------------------------------
-// Test driver
-//------------------------------------------------------------------------
+
+#include "harness_defs.h"
+
+// The helper to run a test only when a default construction is present.
+template <bool default_construction_present> struct do_default_construction_test {
+    template<typename FuncType> void operator() ( FuncType func ) const { func(); }
+};
+template <> struct do_default_construction_test<false> {
+    template<typename FuncType> void operator()( FuncType ) const {}
+};
+
+template <typename Table>
+class test_insert_by_key : NoAssign {
+    typedef typename Table::value_type value_type;
+    Table &my_c;
+    const value_type &my_value;
+public:
+    test_insert_by_key( Table &c, const value_type &value ) : my_c(c), my_value(value) {}
+    void operator()() const {
+        {
+            typename Table::accessor a;
+            ASSERT( my_c.insert( a, my_value.first ), NULL );
+            ASSERT( Harness::IsEqual()(a->first, my_value.first), NULL );
+            a->second = my_value.second;
+        } {
+            typename Table::const_accessor ca;
+            ASSERT( !my_c.insert( ca, my_value.first ), NULL );
+            ASSERT( Harness::IsEqual()(ca->first, my_value.first), NULL);
+            ASSERT( Harness::IsEqual()(ca->second, my_value.second), NULL);
+        }
+    }
+};
+
+#include <vector>
+#include <list>
+#include <algorithm>
+
+template <typename Table, typename Iterator, typename Range = typename Table::range_type>
+class test_range : NoAssign {
+    typedef typename Table::value_type value_type;
+    Table &my_c;
+    const std::list<value_type> &my_lst;
+    std::vector< tbb::atomic<bool> >& my_marks;
+public:
+    test_range( Table &c, const std::list<value_type> &lst, std::vector< tbb::atomic<bool> > &marks ) : my_c(c), my_lst(lst), my_marks(marks) {
+        std::fill( my_marks.begin(), my_marks.end(), false );
+    }
+    void operator()( const Range &r ) const { do_test_range( r.begin(), r.end() ); }
+    void do_test_range( Iterator i, Iterator j ) const {
+        for ( Iterator it = i; it != j; ) {
+            Iterator it_prev = it++;
+            typename std::list<value_type>::const_iterator it2 = std::search( my_lst.begin(), my_lst.end(), it_prev, it, Harness::IsEqual() );
+            ASSERT( it2 != my_lst.end(), NULL );
+            typename std::list<value_type>::difference_type dist = std::distance( my_lst.begin(), it2 );
+            ASSERT( !my_marks[dist], NULL );
+            my_marks[dist] = true;
+        }
+    }
+};
+
+template <bool default_construction_present, typename Table>
+class check_value : NoAssign {
+    typedef typename Table::const_iterator const_iterator;
+    typedef typename Table::iterator iterator;
+    typedef typename Table::size_type size_type;
+    Table &my_c;
+public:
+    check_value( Table &c ) : my_c(c) {}
+    void operator()(const typename Table::value_type &value ) {
+        const Table &const_c = my_c;
+        ASSERT( my_c.count( value.first ) == 1, NULL );
+        { // tests with a const accessor.
+            typename Table::const_accessor ca;
+            // find
+            ASSERT( my_c.find( ca, value.first ), NULL);
+            ASSERT( !ca.empty() , NULL);
+            ASSERT( Harness::IsEqual()(ca->first, value.first), NULL );
+            ASSERT( Harness::IsEqual()(ca->second, value.second), NULL );
+            // erase
+            ASSERT( my_c.erase( ca ), NULL );
+            ASSERT( my_c.count( value.first ) == 0, NULL );
+            // insert (pair)
+            ASSERT( my_c.insert( ca, value ), NULL);
+            ASSERT( Harness::IsEqual()(ca->first, value.first), NULL );
+            ASSERT( Harness::IsEqual()(ca->second, value.second), NULL );
+        } { // tests with a non-const accessor.
+            typename Table::accessor a;
+            // find
+            ASSERT( my_c.find( a, value.first ), NULL);
+            ASSERT( !a.empty() , NULL);
+            ASSERT( Harness::IsEqual()(a->first, value.first), NULL );
+            ASSERT( Harness::IsEqual()(a->second, value.second), NULL );
+            // erase
+            ASSERT( my_c.erase( a ), NULL );
+            ASSERT( my_c.count( value.first ) == 0, NULL );
+            // insert
+            ASSERT( my_c.insert( a, value ), NULL);
+            ASSERT( Harness::IsEqual()(a->first, value.first), NULL );
+            ASSERT( Harness::IsEqual()(a->second, value.second), NULL );
+        }
+        // erase by key
+        ASSERT( my_c.erase( value.first ), NULL );
+        ASSERT( my_c.count( value.first ) == 0, NULL );
+        do_default_construction_test<default_construction_present>()(test_insert_by_key<Table>( my_c, value ));
+        // insert by value
+        ASSERT( my_c.insert( value ) != default_construction_present, NULL );
+        // equal_range
+        std::pair<iterator,iterator> r1 = my_c.equal_range( value.first );
+        iterator r1_first_prev = r1.first++;
+        ASSERT( Harness::IsEqual()( *r1_first_prev, value ) && Harness::IsEqual()( r1.first, r1.second ), NULL );
+        std::pair<const_iterator,const_iterator> r2 = const_c.equal_range( value.first );
+        const_iterator r2_first_prev = r2.first++;
+        ASSERT( Harness::IsEqual()( *r2_first_prev, value ) && Harness::IsEqual()( r2.first, r2.second ), NULL );
+    }
+};
 
 #include "tbb/task_scheduler_init.h"
 
+template <typename Value, typename U = Value>
+struct CompareTables {
+    template <typename T>
+    static bool IsEqual( const T& t1, const T& t2 ) {
+        return (t1 == t2) && !(t1 != t2);
+    }
+};
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+template <typename U>
+struct CompareTables< std::pair<const std::weak_ptr<U>, std::weak_ptr<U> > > {
+    template <typename T>
+    static bool IsEqual( const T&, const T& ) {
+        /* do nothing for std::weak_ptr */
+        return true;
+    }
+};
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+
+template <bool default_construction_present, typename Table>
+void Examine( Table c, const std::list<typename Table::value_type> &lst) {
+    typedef const Table const_table;
+    typedef typename Table::const_iterator const_iterator;
+    typedef typename Table::iterator iterator;
+    typedef typename Table::value_type value_type;
+    typedef typename Table::size_type size_type;
+
+    ASSERT( !c.empty(), NULL );
+    ASSERT( c.size() == lst.size(), NULL );
+    ASSERT( c.max_size() >= c.size(), NULL );
+
+    const check_value<default_construction_present,Table> cv(c);
+    std::for_each( lst.begin(), lst.end(), cv );
+
+    std::vector< tbb::atomic<bool> > marks( lst.size() );
+
+    test_range<Table,iterator>( c, lst, marks ).do_test_range( c.begin(), c.end() );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    test_range<const_table,const_iterator>( c, lst, marks ).do_test_range( c.begin(), c.end() );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    tbb::task_scheduler_init init;
+
+    typedef typename Table::range_type range_type;
+    tbb::parallel_for( c.range(), test_range<Table,typename range_type::iterator,range_type>( c, lst, marks ) );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    const_table const_c = c;
+    ASSERT( CompareTables<value_type>::IsEqual( c, const_c ), NULL );
+
+    typedef typename const_table::const_range_type const_range_type;
+    tbb::parallel_for( c.range(), test_range<const_table,typename const_range_type::iterator,const_range_type>( const_c, lst, marks ) );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    const size_type new_bucket_count = 2*c.bucket_count();
+    c.rehash( new_bucket_count );
+    ASSERT( c.bucket_count() >= new_bucket_count, NULL );
+
+    Table c2;
+    typename std::list<value_type>::const_iterator begin5 = lst.begin();
+    std::advance( begin5, 5 );
+    c2.insert( lst.begin(), begin5 );
+    std::for_each( lst.begin(), begin5, check_value<default_construction_present, Table>( c2 ) );
+
+    c2.swap( c );
+    ASSERT( CompareTables<value_type>::IsEqual( c2, const_c ), NULL );
+    ASSERT( c.size() == 5, NULL );
+    std::for_each( lst.begin(), lst.end(), check_value<default_construction_present,Table>(c2) );
+
+    tbb::swap( c, c2 );
+    ASSERT( CompareTables<value_type>::IsEqual( c, const_c ), NULL );
+    ASSERT( c2.size() == 5, NULL );
+
+    c2.clear();
+    ASSERT( CompareTables<value_type>::IsEqual( c2, Table() ), NULL );
+
+    typename Table::allocator_type a = c.get_allocator();
+    value_type *ptr = a.allocate(1);
+    ASSERT( ptr, NULL );
+    a.deallocate( ptr, 1 );
+}
+
+template <bool default_construction_present, typename Value>
+void TypeTester( const std::list<Value> &lst ) {
+    __TBB_ASSERT( lst.size() >= 5, "Array should have at least 5 elements" );
+    typedef typename Value::first_type first_type;
+    typedef typename Value::second_type second_type;
+    typedef tbb::concurrent_hash_map<first_type,second_type> ch_map;
+    // Construct an empty hash map.
+    ch_map c1;
+    c1.insert( lst.begin(), lst.end() );
+    Examine<default_construction_present>( c1, lst );
+#if __TBB_INITIALIZER_LISTS_PRESENT && !__TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+    // Constructor from initializer_list.
+    typename std::list<Value>::const_iterator it = lst.begin();
+    ch_map c2( {*it++, *it++, *it++} );
+    c2.insert( it, lst.end() );
+    Examine<default_construction_present>( c2, lst );
+#endif
+    // Copying constructor.
+    ch_map c3(c1);
+    Examine<default_construction_present>( c3, lst );
+    // Construct with non-default allocator
+    typedef tbb::concurrent_hash_map< first_type,second_type,tbb::tbb_hash_compare<first_type>,debug_allocator<Value> > ch_map_debug_alloc;
+    ch_map_debug_alloc c4;
+    c4.insert( lst.begin(), lst.end() );
+    Examine<default_construction_present>( c4, lst );
+    // Copying constructor for vector with different allocator type.
+    ch_map_debug_alloc c5(c4);
+    Examine<default_construction_present>( c5, lst );
+    // Construction empty table with n preallocated buckets.
+    ch_map c6( lst.size() );
+    c6.insert( lst.begin(), lst.end() );
+    Examine<default_construction_present>( c6, lst );
+    ch_map_debug_alloc c7( lst.size() );
+    c7.insert( lst.begin(), lst.end() );
+    Examine<default_construction_present>( c7, lst );
+    // Construction with copying iteration range and given allocator instance.
+    ch_map c8( c1.begin(), c1.end() );
+    Examine<default_construction_present>( c8, lst );
+    debug_allocator<Value> allocator;
+    ch_map_debug_alloc c9( lst.begin(), lst.end(), allocator );
+    Examine<default_construction_present>( c9, lst );
+}
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+namespace tbb {
+    template<> struct tbb_hash_compare< const std::shared_ptr<int> > {
+        static size_t hash( const std::shared_ptr<int>& ptr ) { return static_cast<size_t>( *ptr ) * interface5::internal::hash_multiplier; }
+        static bool equal( const  std::shared_ptr<int>& ptr1, const  std::shared_ptr<int>& ptr2 ) { return ptr1 == ptr2; }
+    };
+    template<> struct tbb_hash_compare< const std::weak_ptr<int> > {
+        static size_t hash( const std::weak_ptr<int>& ptr ) { return static_cast<size_t>( *ptr.lock() ) * interface5::internal::hash_multiplier; }
+        static bool equal( const std::weak_ptr<int>& ptr1, const  std::weak_ptr<int>& ptr2 ) { return ptr1.lock() == ptr2.lock(); }
+    };
+}
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+
+void TestCPP11Types() {
+    const int NUMBER = 10;
+
+    typedef std::pair<const int, int> int_int_t;
+    std::list<int_int_t> arrIntInt;
+    for ( int i=0; i<NUMBER; ++i ) arrIntInt.push_back( int_int_t(i, NUMBER-i) );
+    TypeTester</*default_construction_present = */true>( arrIntInt );
+
+#if __TBB_CPP11_REFERENCE_WRAPPER_PRESENT
+    typedef std::pair<const std::reference_wrapper<const int>, int> ref_int_t;
+    std::list<ref_int_t> arrRefInt;
+    for ( std::list<int_int_t>::iterator it = arrIntInt.begin(); it != arrIntInt.end(); ++it )
+        arrRefInt.push_back( ref_int_t( it->first, it->second ) );
+    TypeTester</*default_construction_present = */true>( arrRefInt );
+
+    typedef std::pair< const int, std::reference_wrapper<int> > int_ref_t;
+    std::list<int_ref_t> arrIntRef;
+    for ( std::list<int_int_t>::iterator it = arrIntInt.begin(); it != arrIntInt.end(); ++it )
+        arrIntRef.push_back( int_ref_t( it->first, it->second ) );
+    TypeTester</*default_construction_present = */false>( arrIntRef );
+#else
+    REPORT("Known issue: C++11 reference wrapper tests are skipped.\n");
+#endif /* __TBB_CPP11_REFERENCE_WRAPPER_PRESENT */
+
+    typedef std::pair< const int, tbb::atomic<int> > int_tbb_t;
+    std::list<int_tbb_t> arrIntTbb;
+    for ( int i=0; i<NUMBER; ++i ) {
+        tbb::atomic<int> b;
+        b = NUMBER-i;
+        arrIntTbb.push_back( int_tbb_t(i, b) );
+    }
+    TypeTester</*default_construction_present = */true>( arrIntTbb );
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    typedef std::pair< const std::shared_ptr<int>, std::shared_ptr<int> > shr_shr_t;
+    std::list<shr_shr_t> arrShrShr;
+    for ( int i=0; i<NUMBER; ++i ) {
+        const int NUMBER_minus_i = NUMBER - i;
+        arrShrShr.push_back( shr_shr_t( std::make_shared<int>(i), std::make_shared<int>(NUMBER_minus_i) ) );
+    }
+    TypeTester< /*default_construction_present = */true>( arrShrShr );
+
+    typedef std::pair< const std::weak_ptr<int>, std::weak_ptr<int> > wk_wk_t;
+    std::list< wk_wk_t > arrWkWk;
+    std::copy( arrShrShr.begin(), arrShrShr.end(), std::back_inserter(arrWkWk) );
+    TypeTester< /*default_construction_present = */true>( arrWkWk );
+#else
+    REPORT("Known issue: C++11 smart pointer tests are skipped.\n");
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+}
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#include "test_container_move_support.h"
+
+struct hash_map_move_traits : default_container_traits {
+    enum{ expected_number_of_items_to_allocate_for_steal_move = 0 };
+
+    template<typename T>
+    struct hash_compare {
+        bool equal( const T& lhs, const T& rhs ) const {
+            return lhs==rhs;
+        }
+        size_t hash( const T& k ) const {
+            return tbb::tbb_hasher(k);
+        }
+    };
+    template<typename element_type, typename allocator_type>
+    struct apply {
+        typedef tbb::concurrent_hash_map<element_type, element_type, hash_compare<element_type>, allocator_type > type;
+    };
+
+    typedef FooPairIterator init_iterator_type;
+    template<typename hash_map_type, typename iterator>
+    static bool equal(hash_map_type const& c, iterator begin, iterator end){
+        bool equal_sizes = ( static_cast<size_t>(std::distance(begin, end)) == c.size() );
+        if (!equal_sizes)
+            return false;
+
+        for (iterator it = begin; it != end; ++it ){
+            if (c.count( (*it).first) == 0){
+                return false;
+            }
+        }
+        return true;
+    }
+};
+
+void TestMoveSupport(){
+    TestMoveConstructor<hash_map_move_traits>();
+    TestConstructorWithMoveIterators<hash_map_move_traits>();
+    TestMoveAssignOperator<hash_map_move_traits>();
+#if TBB_USE_EXCEPTIONS
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure<hash_map_move_traits>();
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorExceptionInElementCtor<hash_map_move_traits>();
+#else
+    REPORT("Known issue: exception safety tests for C++11 move semantics support are skipped.\n");
+#endif //TBB_USE_EXCEPTIONS
+}
+#else
+void TestMoveSupport(){
+    REPORT("Known issue: tests for C++11 move semantics support are skipped.\n");
+}
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+//------------------------------------------------------------------------
+// Test driver
+//------------------------------------------------------------------------
 int TestMain () {
     if( MinThread<0 ) {
         REPORT("ERROR: must use at least one thread\n");
@@ -977,6 +1386,24 @@ int TestMain () {
     TestExceptions();
 #endif /* TBB_USE_EXCEPTIONS */
 
+    TestMoveSupport();
+    {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        tbb::task_scheduler_init init( 1 );
+        int n=250000;
+        {
+            DataStateTrackedTable table;
+            DoConcurrentOperations<RvalueInsert, DataStateTrackedTable>( table, n, "rvalue ref insert", 1 );
+        }
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+        {
+            DataStateTrackedTable table;
+            DoConcurrentOperations<Emplace, DataStateTrackedTable>( table, n, "emplace", 1 );
+        }
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+    }
+
     // Do concurrency tests.
     for( int nthread=MinThread; nthread<=MaxThread; ++nthread ) {
         tbb::task_scheduler_init init( nthread );
@@ -988,5 +1415,7 @@ int TestMain () {
         tbb::internal::runtime_warning("none\nERROR: it must not be executed");
     }
 
+    TestCPP11Types();
+
     return Harness::Done;
 }
diff --git a/src/test/test_concurrent_lru_cache.cpp b/src/test/test_concurrent_lru_cache.cpp
index a97a979..1dedbf4 100644
--- a/src/test/test_concurrent_lru_cache.cpp
+++ b/src/test/test_concurrent_lru_cache.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _MSC_VER
@@ -103,7 +95,7 @@ namespace helpers{
     template <typename counter_type = size_t>
     struct object_instances_counting_type{
         counter_type * m_p_count;
-        object_instances_counting_type(): m_p_count (new counter_type){*m_p_count =1; } //to overcome absense of constructor in tbb::atomic
+        object_instances_counting_type(): m_p_count (new counter_type){*m_p_count =1; } //to overcome absence of constructor in tbb::atomic
         ~object_instances_counting_type(){ if (! --(*m_p_count)){delete(m_p_count);}}
         object_instances_counting_type(object_instances_counting_type const& other): m_p_count(other.m_p_count){
             ++(*m_p_count);
@@ -150,16 +142,16 @@ namespace helpers{
 
             };
             TEST_CASE_WITH_FIXTURE(test_object_instances_counting_type_copy,native_for_single_op_repeated_fixture){
-                struct _{ static void copy(object_instances_counting_concurrent_type& source){
-                    object_instances_counting_concurrent_type copy(source);
+                struct _{ static void copy(object_instances_counting_concurrent_type& a_source){
+                    object_instances_counting_concurrent_type copy(a_source);
                     helpers::prevent_optimizing_out(copy);
                 }};
                 run_native_for_and_assert_source_is_unique(&_::copy,"reference counting during copy construction/destruction is not thread safe ?");
             }
             TEST_CASE_WITH_FIXTURE(test_object_instances_counting_type_assignment,native_for_single_op_repeated_fixture){
-                struct _{ static void assign(object_instances_counting_concurrent_type& source){
+                struct _{ static void assign(object_instances_counting_concurrent_type& a_source){
                     object_instances_counting_concurrent_type assigned;
-                    assigned = source;
+                    assigned = a_source;
                     helpers::prevent_optimizing_out(assigned);
                 }};
                 run_native_for_and_assert_source_is_unique(&_::assign,"reference counting during assigning/destruction is not thread safe ?");
@@ -400,7 +392,7 @@ namespace concurrency_tests{
 
         }};
         static const size_t repeat_number = 2;
-        static const size_t number_of_threads = 8 * tbb::task_scheduler_init::default_num_threads(); //have 8x over subscription
+        static const size_t number_of_threads = 4 * tbb::task_scheduler_init::default_num_threads(); //have 4x over subscription
         static const size_t repeats_per_thread = 4;
 
         for (size_t i=0; i < repeat_number; i++){
diff --git a/src/test/test_concurrent_monitor.cpp b/src/test/test_concurrent_monitor.cpp
index e97f492..40e5eb2 100644
--- a/src/test/test_concurrent_monitor.cpp
+++ b/src/test/test_concurrent_monitor.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 6
+#define HARNESS_DEFAULT_MAX_THREADS 8
+
 #include "tbb/concurrent_monitor.h"
 #include "tbb/atomic.h"
 #include "tbb/task_scheduler_init.h"
diff --git a/src/test/test_concurrent_priority_queue.cpp b/src/test/test_concurrent_priority_queue.cpp
index 0e59927..6ea9cc8 100644
--- a/src/test/test_concurrent_priority_queue.cpp
+++ b/src/test/test_concurrent_priority_queue.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
@@ -33,7 +25,12 @@
 #include "harness.h"
 #include <functional>
 #include <algorithm>
+#include "harness_allocator.h"
 #include <vector>
+#include "test_container_move_support.h"
+
+// std::is_copy_constructible<T>::value returns 'true' for non copyable type when MSVC compiler is used.
+#define __TBB_IS_COPY_CONSTRUCTIBLE_BROKEN ( _MSC_VER && (_MSC_VER <= 1700 || _MSC_VER <= 1800 && !__INTEL_COMPILER) )
 
 #if _MSC_VER==1500 && !__INTEL_COMPILER
     // VS2008/VC9 seems to have an issue; limits pull in math.h
@@ -57,7 +54,6 @@
 using namespace tbb;
 
 const size_t MAX_ITER = 10000;
-const int MAX_PRIO = 100000000;
 
 tbb::atomic<unsigned int> counter;
 
@@ -99,6 +95,27 @@ int my_throwing_type::throw_flag = 0;
 
 typedef concurrent_priority_queue<my_throwing_type, my_less > cpq_ex_test_type;
 
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT
+const size_t push_selector_variants = 3;
+#elif __TBB_CPP11_RVALUE_REF_PRESENT
+const size_t push_selector_variants = 2;
+#else
+const size_t push_selector_variants = 1;
+#endif
+
+template <typename Q, typename E>
+void push_selector(Q& q, E e, size_t i) {
+    switch (i%push_selector_variants) {
+    case 0: q->push(e); break;
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    case 1: q->push(tbb::internal::move(e)); break;
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    case 2: q->emplace(e); break;
+#endif
+#endif
+    }
+}
+
 template<typename T, typename C>
 class FillBody : NoAssign {
     int nThread;
@@ -111,7 +128,7 @@ public:
         T elem = my_min + T(threadID);
         for (size_t i=0; i<MAX_ITER; ++i) {
             // do some pushes
-            q->push(elem);
+            push_selector(q, elem, i);
             if (elem == my_max) elem = my_min;
             elem = elem + T(nThread);
         }
@@ -148,9 +165,9 @@ public:
     FloggerBody(int nThread_, concurrent_priority_queue<T, C> *q_) : 
         nThread(nThread_), q(q_) {}  
     void operator()(const int threadID) const {
-        T elem = T(threadID);
+        T elem = T(threadID+1);
         for (size_t i=0; i<MAX_ITER; ++i) {
-            q->push(elem);
+            push_selector(q, elem, i);
             (void) q->try_pop(elem);
         }
     }
@@ -158,9 +175,9 @@ public:
 
 namespace equality_comparison_helpers {
     struct to_vector{
-        template <typename element_type>
-        std::vector<element_type> operator()(tbb::concurrent_priority_queue<element_type> const& source) const{
-            tbb::concurrent_priority_queue<element_type>  cpq((source));
+        template <typename element_type, typename compare_t, typename allocator_t>
+        std::vector<element_type> operator()(tbb::concurrent_priority_queue<element_type, compare_t, allocator_t> const& source) const{
+            tbb::concurrent_priority_queue<element_type, compare_t, allocator_t>  cpq((source));
             std::vector<element_type> v; v.reserve(cpq.size());
             element_type element;
             while (cpq.try_pop(element)){ v.push_back(element);}
@@ -171,14 +188,14 @@ namespace equality_comparison_helpers {
 }
 //TODO: make CPQ more testable instead of hacking ad-hoc operator ==
 //operator == is required for __TBB_TEST_INIT_LIST_SUITE
-template <typename element_type>
-bool operator==(tbb::concurrent_priority_queue<element_type> const& lhs, tbb::concurrent_priority_queue<element_type> const& rhs){
+template <typename element_type, typename compare_t, typename allocator_t>
+bool operator==(tbb::concurrent_priority_queue<element_type, compare_t, allocator_t> const& lhs, tbb::concurrent_priority_queue<element_type, compare_t, allocator_t> const& rhs){
     using equality_comparison_helpers::to_vector;
     return to_vector()(lhs) == to_vector()(rhs);
 }
 
-template <typename element_type, typename  range>
-bool operator==(tbb::concurrent_priority_queue<element_type> const& lhs, range const & rhs ){
+template <typename range, typename element_type, typename compare_t, typename allocator_t>
+bool operator==(tbb::concurrent_priority_queue<element_type, compare_t, allocator_t> const& lhs, range const & rhs ){
     using equality_comparison_helpers::to_vector;
     return to_vector()(lhs) == std::vector<element_type>(rhs.begin(),rhs.end());
 }
@@ -326,7 +343,7 @@ void TestSerialPushPop() {
     q = new concurrent_priority_queue<int, std::less<int> >(MAX_ITER);
     REMARK("Testing serial push.\n");
     for (size_t i=0; i<MAX_ITER; ++i) {
-        q->push(e);
+        push_selector(q, e, i);
         e = e*-1 + int(i);
     }
     REMARK("Pushing complete.\n");
@@ -342,6 +359,7 @@ void TestSerialPushPop() {
         ASSERT(q->size()==MAX_ITER-count, "FAILED swap/size test.");
         ASSERT(!q->empty() || count==MAX_ITER, "FAILED swap/empty test.");
     }
+    ASSERT(!q->try_pop(e), "FAILED: successful pop from the empty queue.");
     REMARK("Popping complete.\n");
     delete q;
 }
@@ -442,44 +460,46 @@ void TestExceptions() {
     REMARK("Assignment exceptions testing complete.\n");
 #ifndef __TBB_ITERATOR_DEBUGGING_EXCEPTIONS_BROKEN
     REMARK("Testing push exceptions.\n");
-    my_throwing_type::throw_flag = 0;
-    pq = new cpq_ex_test_type(3);
-    try {
-        pq->push(elem);
-        pq->push(elem);
-        pq->push(elem);
-    } catch(...) {
-        ASSERT(false, "FAILED: Push should not throw exception... yet.\n");
-    }
-    try { // should crash on copy during expansion of vector
-        my_throwing_type::throw_flag = 1;
-        pq->push(elem);
-        REMARK("FAILED: Push did not throw exception.\n");
-    } catch(...) {
-        ASSERT(!pq->empty(), "FAILED: pq should not be empty.\n");
-        ASSERT(pq->size()==3, "FAILED: pq should be only three elements.\n");
-        ASSERT(pq->try_pop(elem), "FAILED: pq is not functional.\n");
-    }
-    delete pq;
+    for (size_t i=0; i<push_selector_variants; ++i) {
+        my_throwing_type::throw_flag = 0;
+        pq = new cpq_ex_test_type(3);
+        try {
+            push_selector(pq, elem, i);
+            push_selector(pq, elem, i);
+            push_selector(pq, elem, i);
+        } catch(...) {
+            ASSERT(false, "FAILED: Push should not throw exception... yet.\n");
+        }
+        try { // should crash on copy during expansion of vector
+            my_throwing_type::throw_flag = 1;
+            push_selector(pq, elem, i);
+            REMARK("FAILED: Push did not throw exception.\n");
+        } catch(...) {
+            ASSERT(!pq->empty(), "FAILED: pq should not be empty.\n");
+            ASSERT(pq->size()==3, "FAILED: pq should be only three elements.\n");
+            ASSERT(pq->try_pop(elem), "FAILED: pq is not functional.\n");
+        }
+        delete pq;
 
-    my_throwing_type::throw_flag = 0;
-    pq = new cpq_ex_test_type(3);
-    try {
-        pq->push(elem);
-        pq->push(elem);
-    } catch(...) {
-        ASSERT(false, "FAILED: Push should not throw exception... yet.\n");
-    }
-    try { // should crash on push copy of element
-        my_throwing_type::throw_flag = 1;
-        pq->push(elem);
-        REMARK("FAILED: Push did not throw exception.\n");
-    } catch(...) {
-        ASSERT(!pq->empty(), "FAILED: pq should not be empty.\n");
-        ASSERT(pq->size()==2, "FAILED: pq should be only two elements.\n");
-        ASSERT(pq->try_pop(elem), "FAILED: pq is not functional.\n");
+        my_throwing_type::throw_flag = 0;
+        pq = new cpq_ex_test_type(3);
+        try {
+            push_selector(pq, elem, i);
+            push_selector(pq, elem, i);
+        } catch(...) {
+            ASSERT(false, "FAILED: Push should not throw exception... yet.\n");
+        }
+        try { // should crash on push copy of element
+            my_throwing_type::throw_flag = 1;
+            push_selector(pq, elem, i);
+            REMARK("FAILED: Push did not throw exception.\n");
+        } catch(...) {
+            ASSERT(!pq->empty(), "FAILED: pq should not be empty.\n");
+            ASSERT(pq->size()==2, "FAILED: pq should be only two elements.\n");
+            ASSERT(pq->try_pop(elem), "FAILED: pq is not functional.\n");
+        }
+        delete pq;
     }
-    delete pq;
     REMARK("Push exceptions testing complete.\n");
 #endif
 }
@@ -495,39 +515,547 @@ void TestFlogger(int nThreads, T /*max*/, C /*compare*/) {
     delete q;
 }
 
-void TestCpqOnNThreads(int nThreads) {
+#if __TBB_INITIALIZER_LISTS_PRESENT
+#include "test_initializer_list.h"
+
+void TestInitList(){
+    REMARK("testing initializer_list methods \n");
+    using namespace initializer_list_support_tests;
+    TestInitListSupport<tbb::concurrent_priority_queue<char> >({1,2,3,4,5});
+    TestInitListSupport<tbb::concurrent_priority_queue<int> >({});
+}
+#endif //if __TBB_INITIALIZER_LISTS_PRESENT
+
+struct special_member_calls_t {
+    size_t copy_constructor_called_times;
+    size_t move_constructor_called_times;
+    size_t copy_assignment_called_times;
+    size_t move_assignment_called_times;
+    
+    bool friend operator==(special_member_calls_t const& lhs, special_member_calls_t const& rhs){
+        return 
+                lhs.copy_constructor_called_times == rhs.copy_constructor_called_times 
+             && lhs.move_constructor_called_times == rhs.move_constructor_called_times
+             && lhs.copy_assignment_called_times == rhs.copy_assignment_called_times
+             && lhs.move_assignment_called_times == rhs.move_assignment_called_times;
+    }
+    
+};
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct MoveOperationTracker {
+    static size_t copy_constructor_called_times;
+    static size_t move_constructor_called_times;
+    static size_t copy_assignment_called_times;
+    static size_t move_assignment_called_times;
+
+    static special_member_calls_t special_member_calls(){
+        special_member_calls_t calls = {copy_constructor_called_times, move_constructor_called_times, copy_assignment_called_times, move_assignment_called_times};
+        return calls;
+    }
+    static size_t value_counter;
+
+    size_t value;
+
+    MoveOperationTracker() : value(++value_counter) {}
+    MoveOperationTracker( const size_t value_ ) : value( value_ ) {}
+    ~MoveOperationTracker() __TBB_NOEXCEPT( true ) {
+        value = 0;
+    }
+    MoveOperationTracker(const MoveOperationTracker& m) : value(m.value) {
+        ASSERT(m.value, "The object has been moved or destroyed");
+        ++copy_constructor_called_times;
+    }
+    MoveOperationTracker(MoveOperationTracker&& m) __TBB_NOEXCEPT(true) : value(m.value) {
+        ASSERT(m.value, "The object has been moved or destroyed");
+        m.value = 0;
+        ++move_constructor_called_times;
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker const& m) {
+        ASSERT(m.value, "The object has been moved or destroyed");
+        value = m.value;
+        ++copy_assignment_called_times;
+        return *this;
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker&& m) __TBB_NOEXCEPT(true) {
+        ASSERT(m.value, "The object has been moved or destroyed");
+        value = m.value;
+        m.value = 0;
+        ++move_assignment_called_times;
+        return *this;
+    }
+
+    bool operator<(MoveOperationTracker const &m) const {
+        ASSERT(value, "The object has been moved or destroyed");
+        ASSERT(m.value, "The object has been moved or destroyed");
+        return value < m.value;
+    }
+
+    friend bool operator==(MoveOperationTracker const &lhs, MoveOperationTracker const &rhs){
+        return !(lhs < rhs) && !(rhs <lhs);
+    }
+};
+size_t MoveOperationTracker::copy_constructor_called_times = 0;
+size_t MoveOperationTracker::move_constructor_called_times = 0;
+size_t MoveOperationTracker::copy_assignment_called_times = 0;
+size_t MoveOperationTracker::move_assignment_called_times = 0;
+size_t MoveOperationTracker::value_counter = 0;
+
+template<typename allocator = tbb::cache_aligned_allocator<MoveOperationTracker> >
+struct cpq_src_fixture : NoAssign {
+    enum {default_container_size = 100};
+    typedef concurrent_priority_queue<MoveOperationTracker, std::less<MoveOperationTracker>, typename allocator:: template rebind<MoveOperationTracker>::other > cpq_t;
+
+    cpq_t cpq_src;
+    const size_t  container_size;
+
+    void init(){
+        size_t &mcct = MoveOperationTracker::move_constructor_called_times;
+        size_t &ccct = MoveOperationTracker::copy_constructor_called_times;
+        size_t &cact = MoveOperationTracker::copy_assignment_called_times;
+        size_t &mact = MoveOperationTracker::move_assignment_called_times;
+        mcct = ccct = cact = mact = 0;
+
+        for (size_t i=1; i <= container_size; ++i){
+            cpq_src.push(MoveOperationTracker(i));
+        }
+        ASSERT(cpq_src.size() == container_size, "error in test setup ?" );
+    }
+
+    cpq_src_fixture(size_t size = default_container_size) : container_size(size){
+        init();
+    }
+
+    cpq_src_fixture(typename cpq_t::allocator_type const& a, size_t size = default_container_size) : cpq_src(a), container_size(size){
+        init();
+    }
+
+};
+
+
+void TestStealingMoveConstructor(){
+    typedef cpq_src_fixture<> fixture_t;
+    fixture_t fixture;
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+
+    special_member_calls_t previous = MoveOperationTracker::special_member_calls();
+    fixture_t::cpq_t dst(std::move(fixture.cpq_src));
+    ASSERT(previous == MoveOperationTracker::special_member_calls(), "stealing move constructor should not create any new elements");
+
+    ASSERT(dst == src_copy, "cpq content changed during stealing move ?");
+}
+
+void TestStealingMoveConstructorOtherAllocatorInstance(){
+    typedef two_memory_arenas_fixture<MoveOperationTracker> arena_fixture_t;
+    typedef cpq_src_fixture<arena_fixture_t::allocator_t > fixture_t;
+
+    arena_fixture_t arena_fixture(8 * fixture_t::default_container_size, "TestStealingMoveConstructorOtherAllocatorInstance");
+    fixture_t fixture(arena_fixture.source_allocator);
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+
+    special_member_calls_t previous = MoveOperationTracker::special_member_calls();
+    fixture_t::cpq_t dst(std::move(fixture.cpq_src), arena_fixture.source_allocator);
+    ASSERT(previous == MoveOperationTracker::special_member_calls(), "stealing move constructor should not create any new elements");
+
+    ASSERT(dst == src_copy, "cpq content changed during stealing move ?");
+}
+
+void TestPerElementMoveConstructorOtherAllocatorInstance(){
+    typedef two_memory_arenas_fixture<MoveOperationTracker> arena_fixture_t;
+    typedef cpq_src_fixture<arena_fixture_t::allocator_t > fixture_t;
+
+    arena_fixture_t arena_fixture(8 * fixture_t::default_container_size, "TestPerElementMoveConstructorOtherAllocatorInstance");
+    fixture_t fixture(arena_fixture.source_allocator);
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+
+    special_member_calls_t move_ctor_called_cpq_size_times = MoveOperationTracker::special_member_calls();
+    move_ctor_called_cpq_size_times.move_constructor_called_times += fixture.container_size;
+
+    fixture_t::cpq_t dst(std::move(fixture.cpq_src), arena_fixture.dst_allocator);
+    ASSERT(move_ctor_called_cpq_size_times == MoveOperationTracker::special_member_calls(), "Per element move constructor should move initialize all new elements");
+    ASSERT(dst == src_copy, "cpq content changed during move ?");
+}
+
+void TestgMoveConstructor(){
+    TestStealingMoveConstructor();
+    TestStealingMoveConstructorOtherAllocatorInstance();
+    TestPerElementMoveConstructorOtherAllocatorInstance();
+}
+
+void TestStealingMoveAssignOperator(){
+    typedef cpq_src_fixture<> fixture_t;
+    fixture_t fixture;
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+
+    fixture_t::cpq_t dst;
+    special_member_calls_t previous = MoveOperationTracker::special_member_calls();
+    dst = std::move(fixture.cpq_src);
+    ASSERT(previous == MoveOperationTracker::special_member_calls(), "stealing move assign operator should not create any new elements");
+
+    ASSERT(dst == src_copy, "cpq content changed during stealing move ?");
+}
+
+void TestStealingMoveAssignOperatorWithStatefulAllocator(){
+    //Use stateful allocator which is propagated on assignment , i.e. POCMA = true
+    typedef two_memory_arenas_fixture<MoveOperationTracker, /*pocma =*/Harness::true_type> arena_fixture_t;
+    typedef cpq_src_fixture<arena_fixture_t::allocator_t > fixture_t;
+
+    arena_fixture_t arena_fixture(8 * fixture_t::default_container_size, "TestStealingMoveAssignOperatorWithStatefullAllocator");
+    fixture_t fixture(arena_fixture.source_allocator);
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+    fixture_t::cpq_t dst(arena_fixture.dst_allocator);
+
+    special_member_calls_t previous = MoveOperationTracker::special_member_calls();
+    dst = std::move(fixture.cpq_src);
+    ASSERT(previous == MoveOperationTracker::special_member_calls(), "stealing move assignment operator should not create any new elements");
+
+    ASSERT(dst == src_copy, "cpq content changed during stealing move ?");
+}
+
+void TestPerElementMoveAssignOperator(){
+    //use stateful allocator which is not propagate on assignment , i.e. POCMA = false
+    typedef two_memory_arenas_fixture<MoveOperationTracker, /*pocma =*/Harness::false_type> arena_fixture_t;
+    typedef cpq_src_fixture<arena_fixture_t::allocator_t > fixture_t;
+
+    arena_fixture_t arena_fixture(8 * fixture_t::default_container_size, "TestPerElementMoveAssignOperator");
+    fixture_t fixture(arena_fixture.source_allocator);
+    fixture_t::cpq_t src_copy(fixture.cpq_src);
+    fixture_t::cpq_t dst(arena_fixture.dst_allocator);
+
+    special_member_calls_t move_ctor_called_cpq_size_times = MoveOperationTracker::special_member_calls();
+    move_ctor_called_cpq_size_times.move_constructor_called_times += fixture.container_size;
+    dst = std::move(fixture.cpq_src);
+    ASSERT(move_ctor_called_cpq_size_times == MoveOperationTracker::special_member_calls(), "per element move assignment should move initialize new elements");
+
+    ASSERT(dst == src_copy, "cpq content changed during per element move ?");
+}
+
+void TestgMoveAssignOperator(){
+    TestStealingMoveAssignOperator();
+#if    __TBB_ALLOCATOR_TRAITS_PRESENT
+    TestStealingMoveAssignOperatorWithStatefulAllocator();
+#endif //__TBB_ALLOCATOR_TRAITS_PRESENT
+    TestPerElementMoveAssignOperator();
+}
+
+struct ForwardInEmplaceTester {
+    int a;
+    static bool moveCtorCalled;
+    ForwardInEmplaceTester( int a_val ) : a( a_val ) {}
+    ForwardInEmplaceTester( ForwardInEmplaceTester&& obj, int a_val ) : a( obj.a ) {
+        moveCtorCalled = true;
+        obj.a = a_val;
+    }
+    bool operator<( ForwardInEmplaceTester const& ) const { return true; }
+};
+bool ForwardInEmplaceTester::moveCtorCalled = false;
+
+struct NoDefaultCtorType {
+    size_t value1, value2;
+    NoDefaultCtorType( size_t value1_, size_t value2_ ) : value1( value1_ ), value2( value2_ ) {}
+    bool operator<(NoDefaultCtorType const &m) const {
+        return value1+value2 < m.value1+m.value2;
+    }
+};
+
+void TestMoveSupportInPushPop() {
+    REMARK("Testing Move Support in Push/Pop...");
+    size_t &mcct = MoveOperationTracker::move_constructor_called_times;
+    size_t &ccct = MoveOperationTracker::copy_constructor_called_times;
+    size_t &cact = MoveOperationTracker::copy_assignment_called_times;
+    size_t &mact = MoveOperationTracker::move_assignment_called_times;
+    mcct = ccct = cact = mact = 0;
+
+    concurrent_priority_queue<MoveOperationTracker> q1;
+
+    ASSERT(mcct == 0, "Value must be zero-initialized");
+    ASSERT(ccct == 0, "Value must be zero-initialized");
+
+    q1.push(MoveOperationTracker());
+    ASSERT(mcct > 0, "Not working push(T&&)?");
+    ASSERT(ccct == 0, "Copying of arg occurred during push(T&&)");
+
+    MoveOperationTracker ob;
+    const size_t prev_mcct = mcct;
+    q1.push(std::move(ob));
+    ASSERT(mcct > prev_mcct, "Not working push(T&&)?");
+    ASSERT(ccct == 0, "Copying of arg occurred during push(T&&)");
+
+    ASSERT(cact == 0, "Copy assignment called during push(T&&)");
+    const size_t prev_mact = mact;
+    q1.try_pop(ob);
+    ASSERT(cact == 0, "Copy assignment called during try_pop(T&)");
+    ASSERT(mact > prev_mact, "Move assignment was not called during try_pop(T&)");
+
+    REMARK(" works.\n");
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    REMARK("Testing Emplace...");
+
+    concurrent_priority_queue<NoDefaultCtorType> q2;
+    q2.emplace(15, 3);
+    q2.emplace(2, 35);
+    q2.emplace(8, 8);
+
+    NoDefaultCtorType o(0, 0);
+    q2.try_pop(o);
+    ASSERT(o.value1 == 2 && o.value2 == 35, "Unexpected data popped; possible emplace() failure.");
+    q2.try_pop(o);
+    ASSERT(o.value1 == 15 && o.value2 == 3, "Unexpected data popped; possible emplace() failure.");
+    q2.try_pop(o);
+    ASSERT(o.value1 == 8 && o.value2 == 8, "Unexpected data popped; possible emplace() failure.");
+    ASSERT(!q2.try_pop(o), "The queue should be empty.");
+
+    concurrent_priority_queue<ForwardInEmplaceTester> q3;
+    ASSERT( ForwardInEmplaceTester::moveCtorCalled == false, NULL );
+    q3.emplace( tbb::internal::move( ForwardInEmplaceTester(5) ), 2 );
+    ASSERT( ForwardInEmplaceTester::moveCtorCalled == true, "Not used std::forward in emplace()?" );
+    ForwardInEmplaceTester obj( 0 );
+    q3.try_pop( obj );
+    ASSERT( obj.a == 5, "Not used std::forward in emplace()?" );
+    ASSERT(!q3.try_pop( obj ), "The queue should be empty.");
+
+    REMARK(" works.\n");
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+}
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+void TestCpqOnNThreads( int nThreads ) {
     std::less<int> int_compare;
     my_less data_compare;
 
     TestConstructorsDestructorsAccessors();
     TestAssignmentClearSwap();
-    TestSerialPushPop(); 
+    TestSerialPushPop();
 
-    TestParallelPushPop(nThreads, INT_MAX, INT_MIN, int_compare);
-    TestParallelPushPop(nThreads, (unsigned char)CHAR_MAX, (unsigned char)CHAR_MIN, int_compare);
-    TestParallelPushPop(nThreads, DATA_MAX, DATA_MIN, data_compare);
+    TestParallelPushPop( nThreads, INT_MAX, INT_MIN, int_compare );
+    TestParallelPushPop( nThreads, (unsigned char)CHAR_MAX, (unsigned char)CHAR_MIN, int_compare );
+    TestParallelPushPop( nThreads, DATA_MAX, DATA_MIN, data_compare );
 
-    TestFlogger(nThreads, INT_MAX, int_compare);
-    TestFlogger(nThreads, (unsigned char)CHAR_MAX, int_compare);
-    TestFlogger(nThreads, DATA_MAX, data_compare);
+    TestFlogger( nThreads, INT_MAX, int_compare );
+    TestFlogger( nThreads, (unsigned char)CHAR_MAX, int_compare );
+    TestFlogger( nThreads, DATA_MAX, data_compare );
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    MoveOperationTracker::copy_assignment_called_times = 0;
+    TestFlogger( nThreads, MoveOperationTracker(), std::less<MoveOperationTracker>() );
+    ASSERT( MoveOperationTracker::copy_assignment_called_times == 0, "Copy assignment called during try_pop(T&)?" );
+#endif
 
 #if TBB_USE_EXCEPTIONS && !__TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN
     TestExceptions();
 #else
-    REPORT("Known issue: exception handling tests are skipped.\n");
+    REPORT( "Known issue: exception handling tests are skipped.\n" );
 #endif
 }
 
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+struct SmartPointersCompare {
+    template <typename Type> bool operator() (const std::shared_ptr<Type> &t1, const std::shared_ptr<Type> &t2) {
+        return *t1 < *t2;
+    }
+    template <typename Type> bool operator() (const std::weak_ptr<Type> &t1, const std::weak_ptr<Type> &t2) {
+        return *t1.lock().get() < *t2.lock().get();
+    }
+    template <typename Type> bool operator() (const std::unique_ptr<Type> &t1, const std::unique_ptr<Type> &t2) {
+        return *t1 < *t2;
+    }
+};
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+// The helper calls copying or moving push operator if an element has copy constructor.
+// Otherwise it calls only moving push operator.
+template <bool hasCopyCtor>
+struct QueuePushHelper {
+    template <typename Q, typename T>
+    static void push( Q &q, T &&t ) {
+        q.push( std::forward<T>(t) );
+    }
+};
+template <>
+template <typename Q, typename T>
+void QueuePushHelper<false>::push( Q &q, T &&t ) {
+    q.push( std::move(t) );
+}
+#else
+template <bool hasCopyCtor>
+struct QueuePushHelper {
+    template <typename Q, typename T>
+    static void push( Q &q, const T &t ) {
+        q.push( t );
+    }
+};
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+template <bool hasCopyCtor, typename Queue>
+void Examine(Queue &q1, Queue &q2, const std::vector<typename Queue::value_type> &vecSorted) {
+    typedef typename Queue::value_type ValueType;
+
+    ASSERT(!q1.empty() && q1.size() == vecSorted.size(), NULL);
+
+    ValueType elem;
+
+    q2.clear();
+    ASSERT(q2.empty() && !q2.size() && !q2.try_pop(elem), NULL);
+
+    typename std::vector<ValueType>::const_reverse_iterator it1;
+    for (it1 = vecSorted.rbegin(); q1.try_pop(elem); it1++) {
+        ASSERT( Harness::IsEqual()(elem, *it1), NULL );
+        if ( std::distance(vecSorted.rbegin(), it1) % 2 )
+            QueuePushHelper<hasCopyCtor>::push(q2,elem);
+        else
+            QueuePushHelper<hasCopyCtor>::push(q2,tbb::internal::move(elem));
+    }
+    ASSERT(it1 == vecSorted.rend(), NULL);
+    ASSERT(q1.empty() && !q1.size(), NULL);
+    ASSERT(!q2.empty() && q2.size() == vecSorted.size(), NULL);
+
+    q1.swap(q2);
+    ASSERT(q2.empty() && !q2.size(), NULL);
+    ASSERT(!q1.empty() && q1.size() == vecSorted.size(), NULL);
+    for (it1 = vecSorted.rbegin(); q1.try_pop(elem); it1++) ASSERT(Harness::IsEqual()(elem, *it1), NULL);
+    ASSERT(it1 == vecSorted.rend(), NULL);
+
+    typename Queue::allocator_type a = q1.get_allocator();
+    ValueType *ptr = a.allocate(1);
+    ASSERT(ptr, NULL);
+    a.deallocate(ptr, 1);
+}
+
+template <typename Queue>
+void Examine(const Queue &q, const std::vector<typename Queue::value_type> &vecSorted) {
+    Queue q1(q), q2(q);
+    Examine</*hasCopyCtor=*/true>( q1, q2, vecSorted );
+}
+
+template <typename ValueType, typename Compare>
+void TypeTester(const std::vector<ValueType> &vec, Compare comp) {
+    typedef tbb::concurrent_priority_queue<ValueType, Compare> Queue;
+    typedef tbb::concurrent_priority_queue< ValueType, Compare, debug_allocator<ValueType> > QueueDebugAlloc;
+    __TBB_ASSERT(vec.size() >= 5, "Array should have at least 5 elements");
+
+    std::vector<ValueType> vecSorted(vec);
+    std::sort( vecSorted.begin(), vecSorted.end(), comp );
+
+    // Construct an empty queue.
+    Queue q1;
+    q1.assign(vec.begin(), vec.end());
+    Examine(q1, vecSorted);
 #if __TBB_INITIALIZER_LISTS_PRESENT
-#include "test_initializer_list.h"
+    // Constructor from initializer_list.
+    Queue q2({ vec[0], vec[1], vec[2] });
+    for (typename std::vector<ValueType>::const_iterator it = vec.begin() + 3; it != vec.end(); ++it) q2.push(*it);
+    Examine(q2, vecSorted);
+    Queue q3;
+    q3 = { vec[0], vec[1], vec[2] };
+    for (typename std::vector<ValueType>::const_iterator it = vec.begin() + 3; it != vec.end(); ++it) q3.push(*it);
+    Examine(q3, vecSorted);
+#endif
+    // Copying constructor.
+    Queue q4(q1);
+    Examine(q4, vecSorted);
+    // Construct with non-default allocator.
+    QueueDebugAlloc q5;
+    q5.assign(vec.begin(), vec.end());
+    Examine(q5, vecSorted);
+    // Copying constructor for vector with different allocator type.
+    QueueDebugAlloc q6(q5);
+    Examine(q6, vecSorted);
+    // Construction with copying iteration range and given allocator instance.
+    Queue q7(vec.begin(), vec.end());
+    Examine(q7, vecSorted);
+    typename QueueDebugAlloc::allocator_type a;
+    QueueDebugAlloc q8(a);
+    q8.assign(vec.begin(), vec.end());
+    Examine(q8, vecSorted);
+}
 
-void TestInitList(){
-    REMARK("testing initializer_list methods \n");
-    using namespace initializer_list_support_tests;
-    TestInitListSupport<tbb::concurrent_priority_queue<char> >({1,2,3,4,5});
-    TestInitListSupport<tbb::concurrent_priority_queue<int> >({});
+#if __TBB_CPP11_SMART_POINTERS_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT
+template <typename T>
+void TypeTesterUniquePtr(const std::vector<T> &vec) {
+    __TBB_ASSERT(vec.size() >= 5, "Array should have at least 5 elements");
+
+    typedef std::unique_ptr<T> ValueType;
+    typedef tbb::concurrent_priority_queue<ValueType, SmartPointersCompare> Queue;
+    typedef tbb::concurrent_priority_queue< ValueType, SmartPointersCompare, debug_allocator<ValueType> > QueueDebugAlloc;
+
+    std::vector<ValueType> vecSorted;
+    for ( typename std::vector<T>::const_iterator it = vec.begin(); it != vec.end(); ++it ) {
+        vecSorted.push_back( ValueType(new T(*it)) );
+    }
+    std::sort( vecSorted.begin(), vecSorted.end(), SmartPointersCompare() );
+
+    Queue q1, q1Copy;
+    QueueDebugAlloc q2, q2Copy;
+    for ( typename std::vector<T>::const_iterator it = vec.begin(); it != vec.end(); ++it ) {
+        q1.push( ValueType(new T(*it)) );
+        q1Copy.push( ValueType(new T(*it)) );
+        q2.push( ValueType(new T(*it)) );
+        q2Copy.push( ValueType(new T(*it)) );
+    }
+    Examine</*isCopyCtor=*/false>(q1, q1Copy, vecSorted);
+    Examine</*isCopyCtor=*/false>(q2, q2Copy, vecSorted);
+
+    Queue q3Copy;
+    QueueDebugAlloc q4Copy;
+
+    q1.clear();
+    q2.clear();
+    for ( typename std::vector<T>::const_iterator it = vec.begin(); it != vec.end(); ++it ) {
+        q1.emplace( new T(*it) );
+        q3Copy.emplace( new T(*it) );
+        q2.emplace( new T(*it) );
+        q4Copy.emplace( new T(*it) );
+    }
+
+    Queue q3( std::move(q1) );
+    QueueDebugAlloc q4( std::move(q2) );
+    Examine</*isCopyCtor=*/false>(q3, q3Copy, vecSorted);
+    Examine</*isCopyCtor=*/false>(q4, q4Copy, vecSorted);
+}
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT */
+
+template <typename ValueType>
+void TypeTester(const std::vector<ValueType> &vec) { TypeTester(vec, std::less<ValueType>()); }
+
+void TestTypes() {
+    const int NUMBER = 10;
+
+    Harness::FastRandom rnd(1234);
+
+    std::vector<int> arrInt;
+    for (int i = 0; i<NUMBER; ++i) arrInt.push_back(rnd.get());
+    std::vector< tbb::atomic<int> > arrTbb;
+    for (int i = 0; i<NUMBER; ++i) {
+        tbb::atomic<int> a;
+        a = rnd.get();
+        arrTbb.push_back(a);
+    }
+
+    TypeTester(arrInt);
+    TypeTester(arrTbb);
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    std::vector< std::shared_ptr<int> > arrShr;
+    for (int i = 0; i<NUMBER; ++i) {
+        const int rnd_get = rnd.get();
+        arrShr.push_back(std::make_shared<int>(rnd_get));
+    }
+    std::vector< std::weak_ptr<int> > arrWk;
+    std::copy(arrShr.begin(), arrShr.end(), std::back_inserter(arrWk));
+    TypeTester(arrShr, SmartPointersCompare());
+    TypeTester(arrWk, SmartPointersCompare());
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT
+#if __TBB_IS_COPY_CONSTRUCTIBLE_BROKEN
+    REPORT( "Known issue: std::is_copy_constructible is broken for move-only types. So the std::unique_ptr test is skipped.\n" );
+#else
+    TypeTesterUniquePtr(arrInt);
+#endif /* __TBB_IS_COPY_CONSTRUCTIBLE_BROKEN */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_IS_COPY_CONSTRUCTIBLE_PRESENT */
+#else
+    REPORT( "Known issue: C++11 smart pointer tests are skipped.\n" );
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
 }
-#endif //if __TBB_INITIALIZER_LISTS_PRESENT
 
 int TestMain() {
     if (MinThread < 1)
@@ -536,6 +1064,18 @@ int TestMain() {
     TestHelpers();
 #if __TBB_INITIALIZER_LISTS_PRESENT
     TestInitList();
+#else
+    REPORT("Known issue: initializer list tests are skipped.\n");
+#endif
+
+    TestTypes();
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestgMoveConstructor();
+    TestgMoveAssignOperator();
+    TestMoveSupportInPushPop();
+#else
+    REPORT("Known issue: move support tests are skipped.\n");
 #endif
 
     for (int p = MinThread; p <= MaxThread; ++p) {
diff --git a/src/test/test_concurrent_queue.cpp b/src/test/test_concurrent_queue.cpp
index 1a99dd9..885899a 100644
--- a/src/test/test_concurrent_queue.cpp
+++ b/src/test/test_concurrent_queue.cpp
@@ -1,49 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define NOMINMAX
 #include "harness_defs.h"
-#include "test_concurrent_queue.h"
 #include "tbb/concurrent_queue.h"
 #include "tbb/tick_count.h"
 #include "harness.h"
 #include "harness_allocator.h"
 
-#if _MSC_VER==1500 && !__INTEL_COMPILER
-    // VS2008/VC9 seems to have an issue; limits pull in math.h
-    #pragma warning( push )
-    #pragma warning( disable: 4985 )
-#endif
-#include <limits>
-#if _MSC_VER==1500 && !__INTEL_COMPILER
-    #pragma warning( pop )
-#endif
-
+#include <vector>
 
 static tbb::atomic<long> FooConstructed;
 static tbb::atomic<long> FooDestroyed;
@@ -112,8 +94,8 @@ public:
         ++FooExConstructed;
         serial = serial_source++;
     }
-
     FooEx( const FooEx& item ) : state(LIVE) {
+        ASSERT( item.state == LIVE, NULL );
         ++FooExConstructed;
         if( MaxFooCount && (FooExConstructed-FooExDestroyed) >= MaxFooCount ) // in push()
             throw Foo_exception();
@@ -132,6 +114,12 @@ public:
         if( MaxFooCount==2*Threshold && (FooExConstructed-FooExDestroyed) <= MaxFooCount/4 ) // in pop()
             throw Foo_exception();
     }
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    void operator=( FooEx&& item ) {
+        operator=( item );
+        item.serial = 0;
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
 } ;
 #endif /* TBB_USE_EXCEPTIONS */
 
@@ -147,14 +135,28 @@ static tbb::atomic<long> PopKind[3];
 
 const int M = 10000;
 
-#if TBB_DEPRECATED
-#define CALL_BLOCKING_POP(q,v) (q)->pop(v)
-#define CALL_TRY_POP(q,v,i) (((i)&0x2)?q->try_pop(v):q->pop_if_present(v))
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_RVALUE_REF_PRESENT
+const size_t push_selector_variants = 3;
+#elif __TBB_CPP11_RVALUE_REF_PRESENT
+const size_t push_selector_variants = 2;
 #else
-#define CALL_BLOCKING_POP(q,v) while( !(q)->try_pop(v) ) __TBB_Yield()
-#define CALL_TRY_POP(q,v,i) q->try_pop(v)
+const size_t push_selector_variants = 1;
 #endif
 
+template<typename CQ, typename ValueType, typename CounterType>
+void push( CQ& q, ValueType v, CounterType i ) {
+    switch( i % push_selector_variants ) {
+    case 0: q.push( v ); break;
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    case 1: q.push( std::move(v) ); break;
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    case 2: q.emplace( v ); break;
+#endif
+#endif
+    default: ASSERT( false, NULL ); break;
+    }
+}
+
 template<typename CQ,typename T>
 struct Body: NoAssign {
     CQ* queue;
@@ -173,15 +175,15 @@ struct Body: NoAssign {
             f.serial = DEAD;
             bool prepopped = false;
             if( j&1 ) {
-                prepopped = CALL_TRY_POP(queue,f,j);
+                prepopped = queue->try_pop( f );
                 ++pop_kind[prepopped];
             }
             T g;
             g.thread_id = thread_id;
             g.serial = j+1;
-            queue->push( g );
+            push( *queue, g, j );
             if( !prepopped ) {
-                CALL_BLOCKING_POP(queue,f);
+                while( !(queue)->try_pop(f) ) __TBB_Yield();
                 ++pop_kind[2];
             }
             ASSERT( f.thread_id<=nthread, NULL );
@@ -195,14 +197,21 @@ struct Body: NoAssign {
     }
 };
 
-#if !TBB_DEPRECATED
 // Define wrapper classes to test tbb::concurrent_queue<T>
 template<typename T, typename A = tbb::cache_aligned_allocator<T> >
-class ConcQWithSizeWrapper : public tbb::concurrent_queue<T> {
+class ConcQWithSizeWrapper : public tbb::concurrent_queue<T, A> {
 public:
     ConcQWithSizeWrapper() {}
+    ConcQWithSizeWrapper( const ConcQWithSizeWrapper& q ) : tbb::concurrent_queue<T, A>( q ) {}
+    ConcQWithSizeWrapper(const A& a) : tbb::concurrent_queue<T, A>( a ) {}
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    ConcQWithSizeWrapper(ConcQWithSizeWrapper&& q) : tbb::concurrent_queue<T>( std::move(q) ) {}
+    ConcQWithSizeWrapper(ConcQWithSizeWrapper&& q, const A& a)
+        : tbb::concurrent_queue<T, A>( std::move(q), a ) { }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
     template<typename InputIterator>
-    ConcQWithSizeWrapper( InputIterator begin, InputIterator end, const A& a = A()) : tbb::concurrent_queue<T>(begin,end,a) {}
+    ConcQWithSizeWrapper( InputIterator begin, InputIterator end, const A& a = A())
+        : tbb::concurrent_queue<T, A>(begin,end,a) {}
     size_t size() const { return this->unsafe_size(); }
 };
 
@@ -225,12 +234,136 @@ public:
     size_t capacity() const { return my_capacity; }
     void   set_capacity( const int n ) { my_capacity = n; }
     bool   try_push( const T& source ) { this->push( source ); return (size_t)source.serial<my_capacity; }
-    //bool   push_if_not_full( const T& source ) { return try_push(source); }
     bool   try_pop( T& dest ) { this->tbb::concurrent_queue<T>::try_pop( dest ); return (size_t)dest.serial<my_capacity; }
-    //void   pop( T& dest ) { this->try_pop( dest ); }
     size_t my_capacity;
 };
-#endif /* !TBB_DEPRECATED */
+
+template <typename Queue>
+void AssertEquality(Queue &q, const std::vector<typename Queue::value_type> &vec) {
+    ASSERT(q.size() == typename Queue::size_type(vec.size()), NULL);
+    ASSERT(std::equal(q.unsafe_begin(), q.unsafe_end(), vec.begin(), Harness::IsEqual()), NULL);
+}
+
+template <typename Queue>
+void AssertEmptiness(Queue &q) {
+    ASSERT(q.empty(), NULL);
+    ASSERT(!q.size(), NULL);
+    typename Queue::value_type elem;
+    ASSERT(!q.try_pop(elem), NULL);
+}
+
+enum push_t { push_op, try_push_op };
+
+template<push_t push_op>
+struct pusher {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename CQ, typename VType>
+    static bool push( CQ& queue, VType&& val ) {
+        queue.push( std::forward<VType>( val ) );
+        return true;
+    }
+#else
+    template<typename CQ, typename VType>
+    static bool push( CQ& queue, const VType& val ) {
+        queue.push( val );
+        return true;
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+};
+
+template<>
+struct pusher< try_push_op > {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename CQ, typename VType>
+    static bool push( CQ& queue, VType&& val ) {
+        return queue.try_push( std::forward<VType>( val ) );
+    }
+#else
+    template<typename CQ, typename VType>
+    static bool push( CQ& queue, const VType& val ) {
+        return queue.try_push( val );
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+};
+
+enum pop_t { pop_op, try_pop_op };
+
+template<pop_t pop_op>
+struct popper {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename CQ, typename VType>
+    static bool pop( CQ& queue, VType&& val ) {
+        if( queue.empty() ) return false;
+        queue.pop( std::forward<VType>( val ) );
+        return true;
+    }
+#else
+    template<typename CQ, typename VType>
+    static bool pop( CQ& queue, VType& val ) {
+        if( queue.empty() ) return false;
+        queue.pop( val );
+        return true;
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+};
+
+template<>
+struct popper< try_pop_op > {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename CQ, typename VType>
+    static bool pop( CQ& queue, VType&& val ) {
+        return queue.try_pop( std::forward<VType>( val ) );
+    }
+#else
+    template<typename CQ, typename VType>
+    static bool pop( CQ& queue, VType& val ) {
+        return queue.try_pop( val );
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+};
+
+template <push_t push_op, typename Queue>
+void FillTest(Queue &q, const std::vector<typename Queue::value_type> &vec) {
+    for (typename std::vector<typename Queue::value_type>::const_iterator it = vec.begin(); it != vec.end(); ++it)
+        ASSERT(pusher<push_op>::push(q, *it), NULL);
+    AssertEquality(q, vec);
+}
+
+template <pop_t pop_op, typename Queue>
+void EmptyTest(Queue &q, const std::vector<typename Queue::value_type> &vec) {
+    typedef typename Queue::value_type value_type;
+
+    value_type elem;
+    typename std::vector<value_type>::const_iterator it = vec.begin();
+    while (popper<pop_op>::pop(q, elem)) {
+        ASSERT(Harness::IsEqual()(elem, *it), NULL);
+        ++it;
+    }
+    ASSERT(it == vec.end(), NULL);
+    AssertEmptiness(q);
+}
+
+template <typename T, typename A>
+void bounded_queue_specific_test(tbb::concurrent_queue<T, A> &, const std::vector<T> &) { /* do nothing */ }
+
+template <typename T, typename A>
+void bounded_queue_specific_test(tbb::concurrent_bounded_queue<T, A> &q, const std::vector<T> &vec) {
+    typedef typename tbb::concurrent_bounded_queue<T, A>::size_type size_type;
+
+    FillTest<try_push_op>(q, vec);
+    tbb::concurrent_bounded_queue<T, A> q2 = q;
+    EmptyTest<pop_op>(q, vec);
+
+    // capacity
+    q2.set_capacity(size_type(vec.size()));
+    ASSERT(q2.capacity() == size_type(vec.size()), NULL);
+    ASSERT(q2.size() == size_type(vec.size()), NULL);
+    ASSERT(!q2.try_push(vec[0]), NULL);
+
+#if TBB_USE_EXCEPTIONS
+    q.abort();
+#endif
+}
 
 template<typename CQ, typename T>
 void TestPushPop( size_t prefill, ptrdiff_t capacity, int nthread ) {
@@ -251,7 +384,7 @@ void TestPushPop( size_t prefill, ptrdiff_t capacity, int nthread ) {
             T f;
             f.thread_id = nthread;
             f.serial = 1+int(i);
-            queue.push(f);
+            push(queue, f, i);
             ASSERT( unsigned(queue.size())==i+1, NULL );
             ASSERT( !queue.empty(), NULL );
         }
@@ -272,8 +405,8 @@ void TestPushPop( size_t prefill, ptrdiff_t capacity, int nthread ) {
             ASSERT( int(queue.size())==i, NULL );
             sum += f.serial-1;
         }
-        ASSERT( queue.empty(), NULL );
-        ASSERT( queue.size()==0, NULL );
+        ASSERT( queue.empty(), "The queue should be empty" );
+        ASSERT( queue.size()==0, "The queue should have zero size" );
         if( sum!=expected )
             REPORT("sum=%d expected=%d\n",sum,expected);
         ASSERT( T::get_n_constructed()==T::get_n_destroyed(), NULL );
@@ -316,17 +449,20 @@ void TestPushPop( size_t prefill, ptrdiff_t capacity, int nthread ) {
 class Bar {
     state_t state;
 public:
+    static size_t construction_num, destruction_num;
     ptrdiff_t my_id;
     Bar() : state(LIVE), my_id(-1) {}
-    Bar(size_t _i) : state(LIVE), my_id(_i) {}
+    Bar(size_t _i) : state(LIVE), my_id(_i) { construction_num++; }
     Bar( const Bar& a_bar ) : state(LIVE) {
         ASSERT( a_bar.state==LIVE, NULL );
         my_id = a_bar.my_id;
+        construction_num++;
     }
     ~Bar() {
         ASSERT( state==LIVE, NULL );
         state = DEAD;
         my_id = DEAD;
+        destruction_num++;
     }
     void operator=( const Bar& a_bar ) {
         ASSERT( a_bar.state==LIVE, NULL );
@@ -336,6 +472,9 @@ public:
     friend bool operator==(const Bar& bar1, const Bar& bar2 ) ;
 } ;
 
+size_t Bar::construction_num = 0;
+size_t Bar::destruction_num = 0;
+
 bool operator==(const Bar& bar1, const Bar& bar2) {
     ASSERT( bar1.state==LIVE, NULL );
     ASSERT( bar2.state==LIVE, NULL );
@@ -434,22 +573,6 @@ bool operator==(const BarEx& bar1, const BarEx& bar2) {
 }
 #endif /* TBB_USE_EXCEPTIONS */
 
-#if TBB_DEPRECATED
-
-#if __INTEL_COMPILER==1200 && _MSC_VER==1600
-// A workaround due to ICL 12.0 with /Qvc10 generating buggy code in TestIterator
-#define CALL_BEGIN(q,i) q.begin()
-#define CALL_END(q,i)   q.end()
-#else
-#define CALL_BEGIN(q,i) (((i)&0x1)?q.begin():q.unsafe_begin())
-#define CALL_END(q,i)   (((i)&0x1)?q.end():q.unsafe_end())
-#endif
-
-#else
-#define CALL_BEGIN(q,i) q.unsafe_begin()
-#define CALL_END(q,i)   q.unsafe_end()
-#endif /* TBB_DEPRECATED */
-
 template<typename CQ, typename T, typename TIter, typename CQ_EX, typename T_EX>
 void TestConstructors ()
 {
@@ -461,8 +584,8 @@ void TestConstructors ()
     for( size_t size=0; size<1001; ++size ) {
         for( size_t i=0; i<size; ++i )
             src_queue.push(T(i+(i^size)));
-        typename CQ::const_iterator sqb( CALL_BEGIN(src_queue,size) );
-        typename CQ::const_iterator sqe( CALL_END(src_queue,size));
+        typename CQ::const_iterator sqb( src_queue.unsafe_begin() );
+        typename CQ::const_iterator sqe( src_queue.unsafe_end()   );
 
         CQ dst_queue(sqb, sqe);
 
@@ -485,8 +608,8 @@ void TestConstructors ()
         ASSERT( sab==TIter(bar_array+0), NULL );
         ASSERT( sae==TIter(bar_array+size), NULL );
 
-        dqb = CALL_BEGIN(dst_queue2,size);
-        dqe = CALL_END(dst_queue2,size);
+        dqb = dst_queue2.unsafe_begin();
+        dqe = dst_queue2.unsafe_end();
         TIter v_iter(sab);
         for( ; dqb != dqe; ++dqb, ++v_iter )
             ASSERT( *dqb == *v_iter, "unexpected element" );
@@ -510,14 +633,14 @@ void TestConstructors ()
 
         ASSERT( src_queue.size()==dst_queue4.size(), NULL );
 
-        dqb = CALL_BEGIN(dst_queue4,i);
-        dqe = CALL_END(dst_queue4,i);
-        iter = CALL_BEGIN(src_queue,i);
+        dqb = dst_queue4.unsafe_begin();
+        dqe = dst_queue4.unsafe_end();
+        iter = src_queue.unsafe_begin();
 
         for( ; dqb != dqe; ++dqb, ++iter )
             ASSERT( *dqb == *iter, "unexpected element" );
 
-        ASSERT( iter==CALL_END(src_queue,i), "different size?" );
+        ASSERT( iter==src_queue.unsafe_end(), "different size?" );
     }
 
     CQ dst_queue5( src_queue );
@@ -579,17 +702,145 @@ void TestConstructors ()
 
         ASSERT( src_queue_ex.size()==dst_queue_ex.size(), NULL );
 
-        typename CQ_EX::const_iterator dqb_ex  = CALL_BEGIN(dst_queue_ex, size);
-        typename CQ_EX::const_iterator dqe_ex  = CALL_END(dst_queue_ex, size);
-        typename CQ_EX::const_iterator iter_ex = CALL_BEGIN(src_queue_ex, size);
+        typename CQ_EX::const_iterator dqb_ex  = dst_queue_ex.unsafe_begin();
+        typename CQ_EX::const_iterator dqe_ex  = dst_queue_ex.unsafe_end();
+        typename CQ_EX::const_iterator iter_ex = src_queue_ex.unsafe_begin();
 
         for( ; dqb_ex != dqe_ex; ++dqb_ex, ++iter_ex )
             ASSERT( *dqb_ex == *iter_ex, "unexpected element" );
-        ASSERT( iter_ex==CALL_END(src_queue_ex,size), "different size?" );
+        ASSERT( iter_ex==src_queue_ex.unsafe_end(), "different size?" );
     }
 #endif /* TBB_USE_EXCEPTIONS */
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    // Testing work of move constructors
+    src_queue.clear();
+
+    typedef typename CQ::size_type qsize_t;
+    for( qsize_t size = 0; size < 1001; ++size ) {
+        for( qsize_t i = 0; i < size; ++i )
+            src_queue.push( T(i + (i ^ size)) );
+        std::vector<const T*> locations(size);
+        typename CQ::const_iterator qit = src_queue.unsafe_begin();
+        for( qsize_t i = 0; i < size; ++i, ++qit )
+            locations[i] = &(*qit);
+
+        qsize_t size_of_queue = src_queue.size();
+        CQ dst_queue( std::move(src_queue) );
+
+        ASSERT( src_queue.empty() && src_queue.size() == 0, "not working move constructor?" );
+        ASSERT( size == size_of_queue && size_of_queue == dst_queue.size(),
+                "not working move constructor?" );
+
+        qit = dst_queue.unsafe_begin();
+        for( qsize_t i = 0; i < size; ++i, ++qit )
+            ASSERT( locations[i] == &(*qit), "there was data movement during move constructor" );
+
+        for( qsize_t i = 0; i < size; ++i ) {
+            T test(i + (i ^ size));
+            T popped;
+            bool pop_result = dst_queue.try_pop( popped );
+
+            ASSERT( pop_result, NULL );
+            ASSERT( test == popped, NULL );
+        }
+    }
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
 }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+template<class T>
+class allocator: public tbb::cache_aligned_allocator<T> {
+public:
+    size_t m_unique_id;
+
+    allocator() : m_unique_id( 0 ) {}
+
+    allocator(size_t unique_id) { m_unique_id = unique_id; }
+
+    template<typename U>
+    allocator(const allocator<U>& a) throw() { m_unique_id = a.m_unique_id; }
+
+    template<typename U>
+    struct rebind { typedef allocator<U> other; };
+
+    friend bool operator==(const allocator& lhs, const allocator& rhs) {
+        return lhs.m_unique_id == rhs.m_unique_id;
+    }
+};
+
+// Checks operability of the queue the data was moved from
+template<typename T, typename CQ>
+void TestQueueOperabilityAfterDataMove( CQ& queue ) {
+    const size_t size = 10;
+    std::vector<T> v(size);
+    for( size_t i = 0; i < size; ++i ) v[i] = T( i * i + i );
+
+    FillTest<push_op>(queue, v);
+    EmptyTest<try_pop_op>(queue, v);
+    bounded_queue_specific_test(queue, v);
+}
+
+template<class CQ, class T>
+void TestMoveConstructors() {
+    T::construction_num = T::destruction_num = 0;
+    CQ src_queue( allocator<T>(0) );
+    const size_t size = 10;
+    for( size_t i = 0; i < size; ++i )
+        src_queue.push( T(i + (i ^ size)) );
+
+    ASSERT( T::construction_num == 2 * size, NULL );
+    ASSERT( T::destruction_num == size, NULL );
+    const T* locations[size];
+    typename CQ::const_iterator qit = src_queue.unsafe_begin();
+    for( size_t i = 0; i < size; ++i, ++qit )
+        locations[i] = &(*qit);
+
+    // Ensuring allocation operation takes place during move when allocators are different
+    CQ dst_queue( std::move(src_queue), allocator<T>(1) );
+    ASSERT( T::construction_num == 2 * size + size, NULL );
+    ASSERT( T::destruction_num == 2 * size + size, NULL );
+
+    TestQueueOperabilityAfterDataMove<T>( src_queue );
+
+    qit = dst_queue.unsafe_begin();
+    for( size_t i = 0; i < size; ++i, ++qit ) {
+        ASSERT( locations[i] != &(*qit), "item was not moved" );
+        locations[i] = &(*qit);
+    }
+
+    T::construction_num = T::destruction_num = 0;
+    // Ensuring there is no allocation operation during move with equal allocators
+    CQ dst_queue2( std::move(dst_queue), allocator<T>(1) );
+    ASSERT( T::construction_num == 0, NULL );
+    ASSERT( T::destruction_num == 0, NULL );
+
+    TestQueueOperabilityAfterDataMove<T>( dst_queue );
+
+    qit = dst_queue2.unsafe_begin();
+    for( size_t i = 0; i < size; ++i, ++qit ) {
+        ASSERT( locations[i] == &(*qit), "item was moved" );
+    }
+
+    for( size_t i = 0; i < size; ++i) {
+        T test(i + (i ^ size));
+        T popped;
+        bool pop_result = dst_queue2.try_pop( popped );
+        ASSERT( pop_result, NULL );
+        ASSERT( test == popped, NULL );
+    }
+    ASSERT( dst_queue2.empty(), NULL );
+    ASSERT( dst_queue2.size() == 0, NULL );
+}
+
+void TestMoveConstruction() {
+    REMARK("Testing move constructors with specified allocators...");
+    TestMoveConstructors< ConcQWithSizeWrapper< Bar, allocator<Bar> >, Bar >();
+    TestMoveConstructors< tbb::concurrent_bounded_queue< Bar, allocator<Bar> >, Bar >();
+    REMARK(" work\n");
+}
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
 template<typename Iterator1, typename Iterator2>
 void TestIteratorAux( Iterator1 i, Iterator2 j, int size ) {
     // Now test iteration
@@ -648,10 +899,10 @@ void TestIterator() {
     CQ queue;
     const CQ& const_queue = queue;
     for( int j=0; j<500; ++j ) {
-        TestIteratorAux( CALL_BEGIN(queue,j)      , CALL_END(queue,j)      , j );
-        TestIteratorAux( CALL_BEGIN(const_queue,j), CALL_END(const_queue,j), j );
-        TestIteratorAux( CALL_BEGIN(const_queue,j), CALL_END(queue,j)      , j );
-        TestIteratorAux( CALL_BEGIN(queue,j)      , CALL_END(const_queue,j), j );
+        TestIteratorAux( queue.unsafe_begin()      , queue.unsafe_end()      , j );
+        TestIteratorAux( const_queue.unsafe_begin(), const_queue.unsafe_end(), j );
+        TestIteratorAux( const_queue.unsafe_begin(), queue.unsafe_end()      , j );
+        TestIteratorAux( queue.unsafe_begin()      , const_queue.unsafe_end(), j );
         Foo f;
         f.serial = j+1;
         queue.push(f);
@@ -684,17 +935,6 @@ void TestEmptyQueue() {
     ASSERT( size_t(queue.capacity())>=size_t(-1)/(sizeof(void*)+sizeof(T)), NULL );
 }
 
-#ifdef CALL_TRY_POP
-#undef CALL_TRY_POP
-#endif
-#if TBB_DEPRECATED
-#define CALL_TRY_PUSH(q,f,i) (((i)&0x1)?(q).push_if_not_full(f):(q).try_push(f))
-#define CALL_TRY_POP(q,f) (q).pop_if_present(f)
-#else
-#define CALL_TRY_PUSH(q,f,i) (q).try_push(f)
-#define CALL_TRY_POP(q,f) (q).try_pop(f)
-#endif
-
 template<typename CQ,typename T>
 void TestFullQueue() {
     for( int n=0; n<10; ++n ) {
@@ -704,12 +944,12 @@ void TestFullQueue() {
         for( int i=0; i<=n; ++i ) {
             T f;
             f.serial = i;
-            bool result = CALL_TRY_PUSH( queue, f, i );
+            bool result = queue.try_push( f );
             ASSERT( result==(i<n), NULL );
         }
         for( int i=0; i<=n; ++i ) {
             T f;
-            bool result = CALL_TRY_POP( queue, f );
+            bool result = queue.try_pop( f );
             ASSERT( result==(i<n), NULL );
             ASSERT( !result || f.serial==i, NULL );
         }
@@ -717,12 +957,6 @@ void TestFullQueue() {
     }
 }
 
-#if TBB_DEPRECATED
-#define CALL_PUSH_IF_NOT_FULL(q,v,i) (((i)&0x1)?q.push_if_not_full(v):(q.push(v), true))
-#else
-#define CALL_PUSH_IF_NOT_FULL(q,v,i) (q.push(v), true)
-#endif
-
 template<typename CQ>
 void TestClear() {
     FooConstructed = 0;
@@ -735,8 +969,7 @@ void TestClear() {
     for( size_t i=0; i<n; ++i ) {
         Foo f;
         f.serial = int(i);
-        bool result = CALL_PUSH_IF_NOT_FULL(queue, f, i);
-        ASSERT( result, NULL );
+        queue.push( f );
     }
     ASSERT( unsigned(queue.size())==n, NULL );
     queue.clear();
@@ -744,8 +977,7 @@ void TestClear() {
     for( size_t i=0; i<n; ++i ) {
         Foo f;
         f.serial = int(i);
-        bool result = CALL_PUSH_IF_NOT_FULL(queue, f, i);
-        ASSERT( result, NULL );
+        queue.push( f );
     }
     ASSERT( unsigned(queue.size())==n, NULL );
     queue.clear();
@@ -753,18 +985,16 @@ void TestClear() {
     for( size_t i=0; i<n; ++i ) {
         Foo f;
         f.serial = int(i);
-        bool result = CALL_PUSH_IF_NOT_FULL(queue, f, i);
-        ASSERT( result, NULL );
+        queue.push( f );
     }
     ASSERT( unsigned(queue.size())==n, NULL );
 }
 
-#if TBB_DEPRECATED
 template<typename T>
 struct TestNegativeQueueBody: NoAssign {
-    tbb::concurrent_queue<T>& queue;
+    tbb::concurrent_bounded_queue<T>& queue;
     const int nthread;
-    TestNegativeQueueBody( tbb::concurrent_queue<T>& q, int n ) : queue(q), nthread(n) {}
+    TestNegativeQueueBody( tbb::concurrent_bounded_queue<T>& q, int n ) : queue(q), nthread(n) {}
     void operator()( int k ) const {
         if( k==0 ) {
             int number_of_pops = nthread-1;
@@ -790,10 +1020,9 @@ struct TestNegativeQueueBody: NoAssign {
 //! Test a queue with a negative size.
 template<typename T>
 void TestNegativeQueue( int nthread ) {
-    tbb::concurrent_queue<T> queue;
+    tbb::concurrent_bounded_queue<T> queue;
     NativeParallelFor( nthread, TestNegativeQueueBody<T>(queue,nthread) );
 }
-#endif /* TBB_DEPRECATED */
 
 #if TBB_USE_EXCEPTIONS
 template<typename CQ,typename A1,typename A2,typename T>
@@ -818,7 +1047,7 @@ void TestExceptionBody() {
                 A2::set_limits(N/2);
                 for( int k=0; k<N; k++ ) {
                     if( i==0 )
-                        queue0.push( T() );
+                        push(queue0, T(), i);
                     else
                         queue1.push( k );
                 }
@@ -846,7 +1075,7 @@ void TestExceptionBody() {
                     switch(m) {
                     case m_push:
                             for( int k=0; k<N; k++ ) {
-                                queue_test.push( T() );
+                                push( queue_test, T(), k );
                                 n_pushed++;
                             }
                             break;
@@ -858,7 +1087,7 @@ void TestExceptionBody() {
                                 n_popped++;
                             }
                             n_pushed = 0;
-                            A2::set_limits(); 
+                            A2::set_limits();
                             break;
                     }
                     if( !t && m==m_push ) ASSERT(false, "should throw an exception");
@@ -869,7 +1098,7 @@ void TestExceptionBody() {
                                 long tc = MaxFooCount;
                                 MaxFooCount = 0;
                                 for( int k=0; k<(int)tc; k++ ) {
-                                    queue_test.push( T() );
+                                    push( queue_test, T(), k );
                                     n_pushed++;
                                 }
                                 MaxFooCount = tc;
@@ -880,7 +1109,7 @@ void TestExceptionBody() {
                             n_pushed -= (n_popped+1); // including one that threw an exception
                             ASSERT( n_pushed>=0, "n_pushed cannot be less than 0" );
                             for( int k=0; k<1000; k++ ) {
-                                queue_test.push( T() );
+                                push( queue_test, T(), k );
                                 n_pushed++;
                             }
                             ASSERT( !queue_test.empty(), "queue must not be empty" );
@@ -920,12 +1149,8 @@ void TestExceptions() {
 #elif TBB_USE_EXCEPTIONS
     typedef static_counting_allocator<std::allocator<FooEx>, size_t> allocator_t;
     typedef static_counting_allocator<std::allocator<char>, size_t> allocator_char_t;
-#if !TBB_DEPRECATED
     TestExceptionBody<ConcQWithSizeWrapper<FooEx, allocator_t>,allocator_t,allocator_char_t,FooEx>();
     TestExceptionBody<tbb::concurrent_bounded_queue<FooEx, allocator_t>,allocator_t,allocator_char_t,FooEx>();
-#else
-    TestExceptionBody<tbb::concurrent_queue<FooEx, allocator_t>,allocator_t,allocator_char_t,FooEx>();
-#endif
 #endif /* TBB_USE_EXCEPTIONS */
 }
 
@@ -998,59 +1223,38 @@ void TestVectorTypes() {
 void TestEmptiness()
 {
     REMARK(" Test Emptiness\n");
-#if !TBB_DEPRECATED
     TestEmptyQueue<ConcQWithCapacity<char>, char>();
     TestEmptyQueue<ConcQWithCapacity<Foo>, Foo>();
     TestEmptyQueue<tbb::concurrent_bounded_queue<char>, char>();
     TestEmptyQueue<tbb::concurrent_bounded_queue<Foo>, Foo>();
-#else
-    TestEmptyQueue<tbb::concurrent_queue<char>, char>();
-    TestEmptyQueue<tbb::concurrent_queue<Foo>, Foo>();
-#endif
 }
 
 void TestFullness()
 {
     REMARK(" Test Fullness\n");
-#if !TBB_DEPRECATED
     TestFullQueue<ConcQWithCapacity<Foo>,Foo>();
     TestFullQueue<tbb::concurrent_bounded_queue<Foo>,Foo>();
-#else
-    TestFullQueue<tbb::concurrent_queue<Foo>,Foo>();
-#endif
 }
 
 void TestClearWorks() 
 {
     REMARK(" Test concurrent_queue::clear() works\n");
-#if !TBB_DEPRECATED
     TestClear<ConcQWithCapacity<Foo> >();
     TestClear<tbb::concurrent_bounded_queue<Foo> >();
-#else
-    TestClear<tbb::concurrent_queue<Foo> >();
-#endif
 }
 
 void TestQueueTypeDeclaration()
 {
     REMARK(" Test concurrent_queue's types work\n");
-#if !TBB_DEPRECATED
     TestConcurrentQueueType<tbb::concurrent_queue<Foo> >();
     TestConcurrentQueueType<tbb::concurrent_bounded_queue<Foo> >();
-#else
-    TestConcurrentQueueType<tbb::concurrent_queue<Foo> >();
-#endif
 }
 
 void TestQueueIteratorWorks()
 {
     REMARK(" Test concurrent_queue's iterators work\n");
-#if !TBB_DEPRECATED
     TestIterator<tbb::concurrent_queue<Foo> >();
     TestIterator<tbb::concurrent_bounded_queue<Foo> >();
-#else
-    TestIterator<tbb::concurrent_queue<Foo> >();
-#endif
 }
 
 #if TBB_USE_EXCEPTIONS
@@ -1063,18 +1267,13 @@ class Empty;
 void TestQueueConstructors() 
 {
     REMARK(" Test concurrent_queue's constructors work\n");
-#if !TBB_DEPRECATED
     TestConstructors<ConcQWithSizeWrapper<Bar>,Bar,BarIterator,ConcQWithSizeWrapper<BAR_EX>,BAR_EX>();
     TestConstructors<tbb::concurrent_bounded_queue<Bar>,Bar,BarIterator,tbb::concurrent_bounded_queue<BAR_EX>,BAR_EX>();
-#else
-    TestConstructors<tbb::concurrent_queue<Bar>,Bar,BarIterator,tbb::concurrent_queue<BAR_EX>,BAR_EX>();
-#endif
 }
 
 void TestQueueWorksWithPrimitiveTypes()
 {
     REMARK(" Test concurrent_queue works with primitive types\n");
-#if !TBB_DEPRECATED
     TestPrimitiveTypes<tbb::concurrent_queue<char>, char>( MaxThread, (char)1 );
     TestPrimitiveTypes<tbb::concurrent_queue<int>, int>( MaxThread, (int)-12 );
     TestPrimitiveTypes<tbb::concurrent_queue<float>, float>( MaxThread, (float)-1.2f );
@@ -1083,33 +1282,19 @@ void TestQueueWorksWithPrimitiveTypes()
     TestPrimitiveTypes<tbb::concurrent_bounded_queue<int>, int>( MaxThread, (int)-12 );
     TestPrimitiveTypes<tbb::concurrent_bounded_queue<float>, float>( MaxThread, (float)-1.2f );
     TestPrimitiveTypes<tbb::concurrent_bounded_queue<double>, double>( MaxThread, (double)-4.3 );
-#else
-    TestPrimitiveTypes<tbb::concurrent_queue<char>, char>( MaxThread, (char)1 );
-    TestPrimitiveTypes<tbb::concurrent_queue<int>, int>( MaxThread, (int)-12 );
-    TestPrimitiveTypes<tbb::concurrent_queue<float>, float>( MaxThread, (float)-1.2f );
-    TestPrimitiveTypes<tbb::concurrent_queue<double>, double>( MaxThread, (double)-4.3 );
-#endif
 }
 
 void TestQueueWorksWithSSE()
 {
     REMARK(" Test concurrent_queue works with SSE data\n");
 #if HAVE_m128
-#if !TBB_DEPRECATED
     TestVectorTypes<ClassWithSSE, tbb::concurrent_queue<ClassWithSSE> >();
     TestVectorTypes<ClassWithSSE, tbb::concurrent_bounded_queue<ClassWithSSE> >();
-#else
-    TestVectorTypes<ClassWithSSE, tbb::concurrent_queue<ClassWithSSE> >();
-#endif
 #endif /* HAVE_m128 */
 #if HAVE_m256
     if( have_AVX() ) {
-#if !TBB_DEPRECATED
         TestVectorTypes<ClassWithAVX, tbb::concurrent_queue<ClassWithAVX> >();
         TestVectorTypes<ClassWithAVX, tbb::concurrent_bounded_queue<ClassWithAVX> >();
-#else
-        TestVectorTypes<ClassWithAVX, tbb::concurrent_queue<ClassWithAVX> >();
-#endif
     }
 #endif /* HAVE_m256 */
 }
@@ -1119,17 +1304,8 @@ void TestConcurrentPushPop()
     REMARK(" Test concurrent_queue's concurrent push and pop\n");
     for( int nthread=MinThread; nthread<=MaxThread; ++nthread ) {
         REMARK(" Testing with %d thread(s)\n", nthread );
-#if TBB_DEPRECATED
         TestNegativeQueue<Foo>(nthread);
         for( size_t prefill=0; prefill<64; prefill+=(1+prefill/3) ) {
-            TestPushPop<tbb::concurrent_queue<Foo>,Foo>(prefill,ptrdiff_t(-1),nthread);
-            TestPushPop<tbb::concurrent_queue<Foo>,Foo>(prefill,ptrdiff_t(1),nthread);
-            TestPushPop<tbb::concurrent_queue<Foo>,Foo>(prefill,ptrdiff_t(2),nthread);
-            TestPushPop<tbb::concurrent_queue<Foo>,Foo>(prefill,ptrdiff_t(10),nthread);
-            TestPushPop<tbb::concurrent_queue<Foo>,Foo>(prefill,ptrdiff_t(100),nthread);
-        }
-#else
-        for( size_t prefill=0; prefill<64; prefill+=(1+prefill/3) ) {
             TestPushPop<ConcQPushPopWrapper<Foo>,Foo>(prefill,ptrdiff_t(-1),nthread);
             TestPushPop<ConcQPushPopWrapper<Foo>,Foo>(prefill,ptrdiff_t(1),nthread);
             TestPushPop<ConcQPushPopWrapper<Foo>,Foo>(prefill,ptrdiff_t(2),nthread);
@@ -1143,7 +1319,6 @@ void TestConcurrentPushPop()
             TestPushPop<tbb::concurrent_bounded_queue<Foo>,Foo>(prefill,ptrdiff_t(10),nthread);
             TestPushPop<tbb::concurrent_bounded_queue<Foo>,Foo>(prefill,ptrdiff_t(100),nthread);
         }
-#endif /* !TBB_DEPRECATED */
     }
 }
 
@@ -1269,71 +1444,229 @@ void TestAbort() {
 #endif
 }
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct MoveOperationTracker {
+    static size_t copy_constructor_called_times;
+    static size_t move_constructor_called_times;
+    static size_t copy_assignment_called_times;
+    static size_t move_assignment_called_times;
 
-template <typename Q>
-class FloggerBody : NoAssign {
-    Q *q;
-public:
-    FloggerBody(Q *q_) : q(q_) {}  
-    void operator()(const int threadID) const {
-        typedef typename Q::value_type value_type;
-        value_type elem = value_type(threadID);
-        for (size_t i=0; i<275; ++i) {
-            q->push(elem);
-            (void) q->try_pop(elem);
-        }
+    MoveOperationTracker() {}
+    MoveOperationTracker(const MoveOperationTracker&) {
+        ++copy_constructor_called_times;
+    }
+    MoveOperationTracker(MoveOperationTracker&&) {
+        ++move_constructor_called_times;
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker const&) {
+        ++copy_assignment_called_times;
+        return *this;
+    }
+    MoveOperationTracker& operator=(MoveOperationTracker&&) {
+        ++move_assignment_called_times;
+        return *this;
     }
 };
+size_t MoveOperationTracker::copy_constructor_called_times = 0;
+size_t MoveOperationTracker::move_constructor_called_times = 0;
+size_t MoveOperationTracker::copy_assignment_called_times = 0;
+size_t MoveOperationTracker::move_assignment_called_times = 0;
+
+template <class CQ, push_t push_op, pop_t pop_op>
+void TestMoveSupport() {
+    size_t &mcct = MoveOperationTracker::move_constructor_called_times;
+    size_t &ccct = MoveOperationTracker::copy_constructor_called_times;
+    size_t &cact = MoveOperationTracker::copy_assignment_called_times;
+    size_t &mact = MoveOperationTracker::move_assignment_called_times;
+    mcct = ccct = cact = mact = 0;
+
+    CQ q;
+
+    ASSERT(mcct == 0, "Value must be zero-initialized");
+    ASSERT(ccct == 0, "Value must be zero-initialized");
+    ASSERT(pusher<push_op>::push( q, MoveOperationTracker() ), NULL);
+    ASSERT(mcct == 1, "Not working push(T&&) or try_push(T&&)?");
+    ASSERT(ccct == 0, "Copying of arg occurred during push(T&&) or try_push(T&&)");
+
+    MoveOperationTracker ob;
+    ASSERT(pusher<push_op>::push( q, std::move(ob) ), NULL);
+    ASSERT(mcct == 2, "Not working push(T&&) or try_push(T&&)?");
+    ASSERT(ccct == 0, "Copying of arg occurred during push(T&&) or try_push(T&&)");
+
+    ASSERT(cact == 0, "Copy assignment called during push(T&&) or try_push(T&&)");
+    ASSERT(mact == 0, "Move assignment called during push(T&&) or try_push(T&&)");
+
+    bool result = popper<pop_op>::pop( q, ob );
+    ASSERT(result, NULL);
+    ASSERT(cact == 0, "Copy assignment called during try_pop(T&&)");
+    ASSERT(mact == 1, "Move assignment was not called during try_pop(T&&)");
+}
 
-template <typename HackedQRep, typename Q>
-void TestFloggerHelp(HackedQRep* hack_rep, Q* q, size_t items_per_page) {
-    size_t nq = HackedQRep::n_queue;
-    size_t hack_val = std::numeric_limits<std::size_t>::max() & ~( nq * items_per_page - 1 );
-    hack_rep->head_counter = hack_val;
-    hack_rep->tail_counter = hack_val;
-    size_t k = hack_rep->tail_counter & -(ptrdiff_t)nq;
-
-    for (size_t i=0; i<nq; ++i) {
-        hack_rep->array[i].head_counter = k;
-        hack_rep->array[i].tail_counter = k;
-    }
-    NativeParallelFor(MaxThread, FloggerBody<Q>(q));
-    ASSERT(q->empty(), "FAILED flogger/empty test.");
-    delete q;
+void TestMoveSupportInPushPop() {
+    REMARK("Testing Move Support in Push/Pop...");
+    TestMoveSupport< tbb::concurrent_queue<MoveOperationTracker>, push_op, try_pop_op >();
+    TestMoveSupport< tbb::concurrent_bounded_queue<MoveOperationTracker>, push_op, pop_op >();
+    TestMoveSupport< tbb::concurrent_bounded_queue<MoveOperationTracker>, try_push_op, try_pop_op >();
+    REMARK(" works.\n");
 }
 
-template <typename T>
-void TestFlogger(T /*max*/) {
-    { // test strict_ppl::concurrent_queue or deprecated::concurrent_queue
-        tbb::concurrent_queue<T>* q = new tbb::concurrent_queue<T>;
-#if !TBB_DEPRECATED
-        REMARK("Wraparound on strict_ppl::concurrent_queue...");
-        hacked_concurrent_queue_rep* hack_rep = ((hacked_concurrent_queue<T>*)(void*)q)->my_rep;
-        TestFloggerHelp(hack_rep, q, hack_rep->items_per_page);
-        REMARK(" works.\n");
-#else
-        REMARK("Wraparound on deprecated::concurrent_queue...");
-        hacked_bounded_concurrent_queue* hack_q = (hacked_bounded_concurrent_queue*)(void*)q;
-        hacked_bounded_concurrent_queue_rep* hack_rep = hack_q->my_rep;
-        TestFloggerHelp(hack_rep, q, hack_q->items_per_page);
-        REMARK(" works.\n");
-#endif
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+class NonTrivialConstructorType {
+public:
+    NonTrivialConstructorType( int a = 0 ) : m_a( a ), m_str( "" ) {}
+    NonTrivialConstructorType( const std::string& str ) : m_a( 0 ), m_str( str ) {}
+    NonTrivialConstructorType( int a, const std::string& str ) : m_a( a ), m_str( str ) {}
+    int get_a() const { return m_a; }
+    std::string get_str() const { return m_str; }
+private:
+    int m_a;
+    std::string m_str;
+};
+
+enum emplace_t { emplace_op, try_emplace_op };
+
+template< emplace_t emplace_op >
+struct emplacer {
+    template< typename CQ, typename... Args>
+    static void emplace( CQ& queue, Args&&... val ) { queue.emplace( std::forward<Args>( val )... ); }
+};
+
+template<>
+struct emplacer< try_emplace_op > {
+    template<typename CQ, typename... Args>
+    static void emplace( CQ& queue, Args&&... val ) {
+        bool result = queue.try_emplace( std::forward<Args>( val )... );
+        ASSERT( result, "try_emplace error\n" );
     }
-    { // test tbb::concurrent_bounded_queue
-        tbb::concurrent_bounded_queue<T>* q = new tbb::concurrent_bounded_queue<T>;
-        REMARK("Wraparound on tbb::concurrent_bounded_queue...");
-        hacked_bounded_concurrent_queue* hack_q = (hacked_bounded_concurrent_queue*)(void*)q;
-        hacked_bounded_concurrent_queue_rep* hack_rep = hack_q->my_rep;
-        TestFloggerHelp(hack_rep, q, hack_q->items_per_page);
-        REMARK(" works.\n");
+};
+
+template<typename CQ, emplace_t emplace_op>
+void TestEmplaceInQueue() {
+    CQ cq;
+    std::string test_str = "I'm being emplaced!";
+    {
+        emplacer<emplace_op>::emplace( cq, 5 );
+        ASSERT( cq.size() == 1, NULL );
+        NonTrivialConstructorType popped( -1 );
+        bool result = cq.try_pop( popped );
+        ASSERT( result, NULL );
+        ASSERT( popped.get_a() == 5, NULL );
+        ASSERT( popped.get_str() == std::string( "" ), NULL );
+    }
+
+    ASSERT( cq.empty(), NULL );
+
+    {
+        NonTrivialConstructorType popped( -1 );
+        emplacer<emplace_op>::emplace( cq, std::string(test_str) );
+        bool result = cq.try_pop( popped );
+        ASSERT( result, NULL );
+        ASSERT( popped.get_a() == 0, NULL );
+        ASSERT( popped.get_str() == test_str, NULL );
+    }
+
+    ASSERT( cq.empty(), NULL );
+
+    {
+        NonTrivialConstructorType popped( -1, "" );
+        emplacer<emplace_op>::emplace( cq, 5, std::string(test_str) );
+        bool result = cq.try_pop( popped );
+        ASSERT( result, NULL );
+        ASSERT( popped.get_a() == 5, NULL );
+        ASSERT( popped.get_str() == test_str, NULL );
     }
 }
+void TestEmplace() {
+    REMARK("Testing support for 'emplace' method...");
+    TestEmplaceInQueue< ConcQWithSizeWrapper<NonTrivialConstructorType>, emplace_op >();
+    TestEmplaceInQueue< tbb::concurrent_bounded_queue<NonTrivialConstructorType>, emplace_op >();
+    TestEmplaceInQueue< tbb::concurrent_bounded_queue<NonTrivialConstructorType>, try_emplace_op >();
+    REMARK(" works.\n");
+}
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+template <typename Queue>
+void Examine(Queue q, const std::vector<typename Queue::value_type> &vec) {
+    typedef typename Queue::value_type value_type;
+
+    AssertEquality(q, vec);
 
-void TestWraparound() {
-    REMARK("Testing Wraparound...\n");
-    TestFlogger(std::numeric_limits<int>::max());
-    TestFlogger(std::numeric_limits<unsigned char>::max());
-    REMARK("Done Testing Wraparound.\n");
+    const Queue cq = q;
+    AssertEquality(cq, vec);
+
+    q.clear();
+    AssertEmptiness(q);
+
+    FillTest<push_op>(q, vec);
+    EmptyTest<try_pop_op>(q, vec);
+
+    bounded_queue_specific_test(q, vec);
+
+    typename Queue::allocator_type a = q.get_allocator();
+    value_type *ptr = a.allocate(1);
+    ASSERT(ptr, NULL);
+    a.deallocate(ptr, 1);
+}
+
+template <typename Queue, typename QueueDebugAlloc>
+void TypeTester(const std::vector<typename Queue::value_type> &vec) {
+    typedef typename std::vector<typename Queue::value_type>::const_iterator iterator;
+    ASSERT(vec.size() >= 5, "Array should have at least 5 elements");
+    // Construct an empty queue.
+    Queue q1;
+    for (iterator it = vec.begin(); it != vec.end(); ++it) q1.push(*it);
+    Examine(q1, vec);
+    // Copying constructor.
+    Queue q3(q1);
+    Examine(q3, vec);
+    // Construct with non-default allocator.
+    QueueDebugAlloc q4;
+    for (iterator it = vec.begin(); it != vec.end(); ++it) q4.push(*it);
+    Examine(q4, vec);
+    // Copying constructor with the same allocator type.
+    QueueDebugAlloc q5(q4);
+    Examine(q5, vec);
+    // Construction with given allocator instance.
+    typename QueueDebugAlloc::allocator_type a;
+    QueueDebugAlloc q6(a);
+    for (iterator it = vec.begin(); it != vec.end(); ++it) q6.push(*it);
+    Examine(q6, vec);
+    // Construction with copying iteration range and given allocator instance.
+    QueueDebugAlloc q7(q1.unsafe_begin(), q1.unsafe_end(), a);
+    Examine<QueueDebugAlloc>(q7, vec);
+}
+
+template <typename value_type>
+void TestTypes(const std::vector<value_type> &vec) {
+    TypeTester< ConcQWithSizeWrapper<value_type>, ConcQWithSizeWrapper<value_type, debug_allocator<value_type> > >(vec);
+    TypeTester< tbb::concurrent_bounded_queue<value_type>, tbb::concurrent_bounded_queue<value_type, debug_allocator<value_type> > >(vec);
+}
+
+void TestTypes() {
+    const int NUMBER = 10;
+
+    std::vector<int> arrInt;
+    for (int i = 0; i < NUMBER; ++i) arrInt.push_back(i);
+    std::vector< tbb::atomic<int> > arrTbb;
+    for (int i = 0; i < NUMBER; ++i) {
+        tbb::atomic<int> a;
+        a = i;
+        arrTbb.push_back(a);
+    }
+    TestTypes(arrInt);
+    TestTypes(arrTbb);
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    std::vector< std::shared_ptr<int> > arrShr;
+    for (int i = 0; i < NUMBER; ++i) arrShr.push_back(std::make_shared<int>(i));
+    std::vector< std::weak_ptr<int> > arrWk;
+    std::copy(arrShr.begin(), arrShr.end(), std::back_inserter(arrWk));
+    TestTypes(arrShr);
+    TestTypes(arrWk);
+#else
+    REPORT("Known issue: C++11 smart pointer tests are skipped.\n");
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
 }
 
 int TestMain () {
@@ -1360,7 +1693,15 @@ int TestMain () {
 
     TestAbort();
 
-    TestWraparound();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestMoveSupportInPushPop();
+    TestMoveConstruction();
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    TestEmplace();
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+    TestTypes();
 
     return Harness::Done;
 }
diff --git a/src/test/test_concurrent_queue.h b/src/test/test_concurrent_queue.h
deleted file mode 100644
index d0cc75d..0000000
--- a/src/test/test_concurrent_queue.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-#include "tbb/atomic.h"
-#include "tbb/cache_aligned_allocator.h"
-#include "tbb/spin_mutex.h"
-#include "tbb/tbb_machine.h"
-
-#include "tbb/concurrent_monitor.h"
-
-struct hacked_micro_queue {
-    tbb::atomic<uintptr_t> head_page;
-    tbb::atomic<size_t> head_counter;
-
-    tbb::atomic<uintptr_t> tail_page;
-    tbb::atomic<size_t> tail_counter;
-
-    tbb::spin_mutex page_mutex;
- };
-
-// hacks for strict_ppl::concurrent_queue
-struct hacked_concurrent_queue_rep {
-    static const size_t phi = 3;
-    static const size_t n_queue = 8;
-
-    tbb::atomic<size_t> head_counter;
-    char pad1[tbb::internal::NFS_MaxLineSize-sizeof(tbb::atomic<size_t>)];
-    tbb::atomic<size_t> tail_counter;
-    char pad2[tbb::internal::NFS_MaxLineSize-sizeof(tbb::atomic<size_t>)];
-
-    size_t items_per_page;
-    size_t item_size;
-    tbb::atomic<size_t> n_invalid_entries;
-    char pad3[tbb::internal::NFS_MaxLineSize-sizeof(size_t)-sizeof(size_t)-sizeof(tbb::atomic<size_t>)];
-
-    hacked_micro_queue array[n_queue];
-};
-
-struct hacked_concurrent_queue_page_allocator {
-    size_t foo;
-};
-
-template <typename T>
-struct hacked_concurrent_queue : public hacked_concurrent_queue_page_allocator {
-    hacked_concurrent_queue_rep* my_rep;
-    typename tbb::cache_aligned_allocator<T>::template rebind<char>::other my_allocator;
-};
-
-// hacks for concurrent_bounded_queue and deprecated::concurrent_queue
-struct hacked_bounded_concurrent_queue_rep {
-    static const size_t phi = 3;
-    static const size_t n_queue = 8;
-
-    tbb::atomic<size_t> head_counter;
-    char cmon_items_avail[ sizeof(tbb::internal::concurrent_monitor) ];
-    tbb::atomic<size_t> n_invalid_entries;
-    char pad1[tbb::internal::NFS_MaxLineSize-((sizeof(tbb::atomic<size_t>)+sizeof(tbb::internal::concurrent_monitor)+sizeof(tbb::atomic<size_t>))&(tbb::internal::NFS_MaxLineSize-1))];
-
-    tbb::atomic<size_t> tail_counter;
-    char cmon_slots_avail[ sizeof(tbb::internal::concurrent_monitor) ];
-    char pad2[tbb::internal::NFS_MaxLineSize-((sizeof(tbb::atomic<size_t>)+sizeof(tbb::internal::concurrent_monitor))&(tbb::internal::NFS_MaxLineSize-1))];
-    hacked_micro_queue array[n_queue];
-
-    static const ptrdiff_t infinite_capacity = ptrdiff_t(~size_t(0)/2);
-};
-
-struct hacked_bounded_concurrent_queue  {
-    size_t foo;
-    hacked_bounded_concurrent_queue_rep* my_rep;
-    ptrdiff_t my_capacity;
-    size_t items_per_page;
-    size_t item_size;
-};
diff --git a/src/test/test_concurrent_queue_whitebox.cpp b/src/test/test_concurrent_queue_whitebox.cpp
new file mode 100644
index 0000000..b501946
--- /dev/null
+++ b/src/test/test_concurrent_queue_whitebox.cpp
@@ -0,0 +1,101 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define HARNESS_DEFINE_PRIVATE_PUBLIC 1
+#include "harness_inject_scheduler.h"
+#define private public
+#define protected public
+#include "tbb/concurrent_queue.h"
+#include "../tbb/concurrent_queue.cpp"
+#undef protected
+#undef private
+#include "harness.h"
+
+#if _MSC_VER==1500 && !__INTEL_COMPILER
+    // VS2008/VC9 seems to have an issue; limits pull in math.h
+    #pragma warning( push )
+    #pragma warning( disable: 4985 )
+#endif
+#include <limits>
+#if _MSC_VER==1500 && !__INTEL_COMPILER
+    #pragma warning( pop )
+#endif
+
+template <typename Q>
+class FloggerBody : NoAssign {
+    Q& q;
+    size_t elem_num;
+public:
+    FloggerBody(Q& q_, size_t elem_num_) : q(q_), elem_num(elem_num_) {}
+    void operator()(const int threadID) const {
+        typedef typename Q::value_type value_type;
+        value_type elem = value_type(threadID);
+        for (size_t i = 0; i < elem_num; ++i) {
+            q.push(elem);
+            (void) q.try_pop(elem);
+        }
+    }
+};
+
+template <typename Q>
+void TestFloggerHelp(Q& q, size_t items_per_page) {
+    size_t nq = q.my_rep->n_queue;
+    size_t reserved_elem_num = nq * items_per_page - 1;
+    size_t hack_val = std::numeric_limits<std::size_t>::max() & ~reserved_elem_num;
+    q.my_rep->head_counter = hack_val;
+    q.my_rep->tail_counter = hack_val;
+    size_t k = q.my_rep->tail_counter & -(ptrdiff_t)nq;
+
+    for (size_t i=0; i<nq; ++i) {
+        q.my_rep->array[i].head_counter = k;
+        q.my_rep->array[i].tail_counter = k;
+    }
+    NativeParallelFor(MaxThread, FloggerBody<Q>(q, reserved_elem_num + 20)); // to induce the overflow occurrence
+    ASSERT(q.empty(), "FAILED flogger/empty test.");
+    ASSERT(q.my_rep->head_counter < hack_val, "FAILED wraparound test.");
+}
+
+template <typename T>
+void TestFlogger() {
+    {
+        tbb::concurrent_queue<T> q;
+        REMARK("Wraparound on strict_ppl::concurrent_queue...");
+        TestFloggerHelp(q, q.my_rep->items_per_page);
+        REMARK(" works.\n");
+    }
+    {
+        tbb::concurrent_bounded_queue<T> q;
+        REMARK("Wraparound on tbb::concurrent_bounded_queue...");
+        TestFloggerHelp(q, q.items_per_page);
+        REMARK(" works.\n");
+    }
+}
+
+void TestWraparound() {
+    REMARK("Testing Wraparound...\n");
+    TestFlogger<int>();
+    TestFlogger<unsigned char>();
+    REMARK("Done Testing Wraparound.\n");
+}
+
+int TestMain () {
+    TestWraparound();
+    return Harness::Done;
+}
diff --git a/src/test/test_concurrent_unordered.cpp b/src/test/test_concurrent_unordered.cpp
deleted file mode 100644
index 72f7211..0000000
--- a/src/test/test_concurrent_unordered.cpp
+++ /dev/null
@@ -1,843 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-/* Some tests in this source file are based on PPL tests provided by Microsoft. */
-#include "harness_defs.h"
-#if !(__TBB_TEST_SECONDARY && __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN)
-
-#define __TBB_EXTRA_DEBUG 1
-#include "tbb/concurrent_unordered_map.h"
-#include "tbb/concurrent_unordered_set.h"
-#include "harness_assert.h"
-
-#if __TBB_TEST_SECONDARY
-
-#include "harness_runtime_loader.h"
-
-#else // __TBB_TEST_SECONDARY
-
-#include "tbb/parallel_for.h"
-#include "tbb/tick_count.h"
-#include "harness.h"
-// Test that unordered containers do not require keys have default constructors.
-#define __HARNESS_CHECKTYPE_DEFAULT_CTOR 0
-#include "harness_checktype.h"
-#undef  __HARNESS_CHECKTYPE_DEFAULT_CTOR
-#include "harness_allocator.h"
-
-
-using namespace std;
-
-typedef local_counting_allocator<debug_allocator<std::pair<const int,int>,std::allocator> > MyAllocator;
-typedef tbb::concurrent_unordered_map<int, int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMap;
-typedef tbb::concurrent_unordered_map<int, check_type<int>, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyCheckedMap;
-typedef tbb::concurrent_unordered_multimap<int, int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMultiMap;
-typedef tbb::concurrent_unordered_multimap<int, check_type<int>, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyCheckedMultiMap;
-typedef tbb::concurrent_unordered_set<int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MySet;
-typedef tbb::concurrent_unordered_set<check_type<int>, tbb::tbb_hash<check_type<int> >, std::equal_to<check_type<int> >, MyAllocator> MyCheckedSet;
-typedef tbb::concurrent_unordered_multiset<int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMultiSet;
-typedef tbb::concurrent_unordered_multiset<check_type<int>, tbb::tbb_hash<check_type<int> >, std::equal_to<check_type<int> >, MyAllocator> MyCheckedMultiSet;
-
-#define CheckAllocatorE(t,a,f) CheckAllocator(t,a,f,true,__LINE__)
-#define CheckAllocatorA(t,a,f) CheckAllocator(t,a,f,false,__LINE__)
-template<typename MyTable>
-inline void CheckAllocator(MyTable &table, size_t expected_allocs, size_t expected_frees, bool exact = true, int line = 0) {
-    typename MyTable::allocator_type a = table.get_allocator();
-    REMARK("#%d checking allocators: items %u/%u, allocs %u/%u\n", line,
-        unsigned(a.items_allocated), unsigned(a.items_freed), unsigned(a.allocations), unsigned(a.frees) );
-    ASSERT( a.items_allocated == a.allocations, NULL); ASSERT( a.items_freed == a.frees, NULL);
-    if(exact) {
-        ASSERT( a.allocations == expected_allocs, NULL); ASSERT( a.frees == expected_frees, NULL);
-    } else {
-        ASSERT( a.allocations >= expected_allocs, NULL); ASSERT( a.frees >= expected_frees, NULL);
-        ASSERT( a.allocations - a.frees == expected_allocs - expected_frees, NULL );
-    }
-}
-
-// value generator for cumap
-template <typename K, typename V = std::pair<const K, K> >
-struct ValueFactory {
-    static V make(const K &value) { return V(value, value); }
-    static K key(const V &value) { return value.first; }
-    static K get(const V& value) { return value.second; }
-};
-
-// generator for cuset
-template <typename T>
-struct ValueFactory<T, T> {
-    static T make(const T &value) { return value; }
-    static T key(const T &value) { return value; }
-    static T get(const T &value) { return value; }
-};
-
-template <typename T>
-struct Value : ValueFactory<typename T::key_type, typename T::value_type> {};
-
-#if _MSC_VER
-#pragma warning(disable: 4189) // warning 4189 -- local variable is initialized but not referenced
-#pragma warning(disable: 4127) // warning 4127 -- while (true) has a constant expression in it
-#endif
-
-template<typename ContainerType, typename Iterator, typename RangeType>
-std::pair<int,int> CheckRecursiveRange(RangeType range) {
-    std::pair<int,int> sum(0, 0); // count, sum
-    for( Iterator i = range.begin(), e = range.end(); i != e; ++i ) {
-        ++sum.first; sum.second += Value<ContainerType>::get(*i);
-    }
-    if( range.is_divisible() ) {
-        RangeType range2( range, tbb::split() );
-        std::pair<int,int> sum1 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range );
-        std::pair<int,int> sum2 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range2 );
-        sum1.first += sum2.first; sum1.second += sum2.second;
-        ASSERT( sum == sum1, "Mismatched ranges after division");
-    }
-    return sum;
-}
-
-template <typename T>
-struct SpecialTests {
-    static void Test(const char *str) {REMARK("skipped -- specialized %s tests\n", str);}
-};
-
-template <>
-struct SpecialTests <MyMap>
-{
-    static void Test(const char *str)
-    {
-        MyMap cont(0);
-        const MyMap &ccont(cont);
-
-        // mapped_type& operator[](const key_type& k);
-        cont[1] = 2;
-
-        // bool empty() const;    
-        ASSERT(!ccont.empty(), "Concurrent container empty after adding an element");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 1, "Concurrent container size incorrect");
-
-        ASSERT(cont[1] == 2, "Concurrent container value incorrect");
-
-        // mapped_type& at( const key_type& k );
-        // const mapped_type& at(const key_type& k) const;
-        ASSERT(cont.at(1) == 2, "Concurrent container value incorrect");
-        ASSERT(ccont.at(1) == 2, "Concurrent container value incorrect");
-
-        // iterator find(const key_type& k);
-        MyMap::const_iterator it = cont.find(1);
-        ASSERT(it != cont.end() && Value<MyMap>::get(*(it)) == 2, "Element with key 1 not properly found");
-        cont.unsafe_erase(it);
-        it = cont.find(1);
-        ASSERT(it == cont.end(), "Element with key 1 not properly erased");
-
-        REMARK("passed -- specialized %s tests\n", str);
-    }
-};
-
-// test assumes the unordered multimap puts items in ascending order, and the insertions
-// occur at the end of a range.  This assumption may not always be valid.
-template <>
-struct SpecialTests <MyMultiMap>
-{
-#define VALUE1 7
-#define VALUE2 2
-    static void Test(const char *str)
-    {
-        MyMultiMap cont(0);
-        const MyMultiMap &ccont(cont);
-        // mapped_type& operator[](const key_type& k);
-        cont.insert(make_pair(1, VALUE1));
-
-        // bool empty() const;    
-        ASSERT(!ccont.empty(), "Concurrent container empty after adding an element");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 1, "Concurrent container size incorrect");
-        ASSERT((*(cont.begin())).second == VALUE1, "Concurrent container value incorrect");
-        ASSERT((*(cont.equal_range(1)).first).second == VALUE1, "Improper value from equal_range");
-        ASSERT((cont.equal_range(1)).second == cont.end(), "Improper iterator from equal_range");
-
-        cont.insert(make_pair(1,VALUE2));
-
-        // bool empty() const;    
-        ASSERT(!ccont.empty(), "Concurrent container empty after adding an element");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 2, "Concurrent container size incorrect");
-        ASSERT((*(cont.begin())).second == VALUE1, "Concurrent container value incorrect");
-        ASSERT((*(cont.equal_range(1)).first).second == VALUE1, "Improper value from equal_range");
-        ASSERT((cont.equal_range(1)).second == cont.end(), "Improper iterator from equal_range");
-
-        // check that the second value is part of the range.
-        // though I am not sure there are guarantees what order the insertions appear in the range
-        // if the order differs the ASSERT above will fail already.
-        std::pair<MyMultiMap::iterator, MyMultiMap::iterator> range = cont.equal_range(1);
-        MyMultiMap::iterator ii = range.first;
-        ++ii;
-        ASSERT((*ii).second == VALUE2, "Improper value for second insertion");
-
-        cont.insert(make_pair(0, 4));
-
-        // bool empty() const;    
-        ASSERT(!ccont.empty(), "Concurrent container empty after adding an element");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 3, "Concurrent container size incorrect");
-        ASSERT((*(cont.begin())).second == 4, "Concurrent container value incorrect");
-        ASSERT((*(cont.equal_range(1)).first).second == VALUE1, "Improper value from equal_range");
-        ASSERT((cont.equal_range(1)).second == cont.end(), "Improper iterator from equal_range");
-
-        REMARK("passed -- specialized %s tests\n", str);
-    }
-};
-
-#if __TBB_INITIALIZER_LISTS_PRESENT
-//these operator== are used implicitly in  test_initializer_list.h.
-//For some unknown reason clang is not able to find the if they a declared after the
-//inclusion of test_initializer_list.h.
-template<typename container_type>
-bool equal_containers(container_type const& lhs, container_type const& rhs){
-    if (lhs.size() != rhs.size()){
-        return false;
-    }
-    return std::equal(lhs.begin(),lhs.end(),lhs.begin());
-}
-
-template<typename T>
-bool operator==(tbb::concurrent_unordered_set<T> const& lhs, tbb::concurrent_unordered_set<T> const& rhs){
-    return equal_containers(lhs,rhs);
-}
-
-template<typename T>
-bool operator==(tbb::concurrent_unordered_multiset<T> const& lhs, tbb::concurrent_unordered_multiset<T> const& rhs){
-    return equal_containers(lhs,rhs);
-}
-
-template<typename Key, typename Value>
-bool operator==(tbb::concurrent_unordered_map<Key,Value> const& lhs, tbb::concurrent_unordered_map<Key,Value> const& rhs){
-    return equal_containers(lhs,rhs);
-}
-
-template<typename Key, typename Value>
-bool operator==(tbb::concurrent_unordered_multimap<Key,Value> const& lhs, tbb::concurrent_unordered_multimap<Key,Value> const& rhs){
-    return equal_containers(lhs,rhs);
-}
-
-#include "test_initializer_list.h"
-
-void TestInitList(){
-    using namespace initializer_list_support_tests;
-    REMARK("testing initializer_list methods \n");
-
-    std::initializer_list<int> il = {1,2,3,4,5};
-
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_set<int> >(il);
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_set<int> >({});
-
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_multiset<int> >(il);
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_multiset<int> >({});
-
-    typedef tbb::concurrent_unordered_map<int,int>::value_type value_type;
-    std::initializer_list<value_type > pairs_il = {{1,1},{2,2},{3,3},{4,4},{5,5}};
-
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_map<int,int> >(pairs_il);
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_map<int,int> >({});
-
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_multimap<int,int> >(pairs_il);
-    TestInitListSupportWithoutAssign<tbb::concurrent_unordered_multimap<int,int> >({});
-}
-#endif //if __TBB_INITIALIZER_LISTS_PRESENT
-
-#if __TBB_RANGE_BASED_FOR_PRESENT
-#include "test_range_based_for.h"
-void TestRangeBasedFor(){
-    using namespace range_based_for_support_tests;
-
-    REMARK("testing range based for loop compatibility \n");
-    typedef tbb::concurrent_unordered_map<int,int> cu_map;
-    cu_map a_cu_map;
-    const int sequence_length = 100;
-    for (int i =1; i<= sequence_length; ++i){
-        a_cu_map.insert(cu_map::value_type(i,i));
-    }
-
-    ASSERT( range_based_for_accumulate(a_cu_map, pair_second_summer(), 0) == gauss_summ_of_int_sequence(sequence_length), "incorrect accumulated value generated via range based for ?");
-}
-#endif //if __TBB_RANGE_BASED_FOR_PRESENT
-
-template<typename T>
-void test_basic(const char * str)
-{
-    T cont;
-    const T &ccont(cont);
-
-    // bool empty() const;
-    ASSERT(ccont.empty(), "Concurrent container not empty after construction");
-
-    // size_type size() const;
-    ASSERT(ccont.size() == 0, "Concurrent container not empty after construction");
-
-    // size_type max_size() const;
-    ASSERT(ccont.max_size() > 0, "Concurrent container max size invalid");
-
-    //iterator begin();
-    //iterator end();
-    ASSERT(cont.begin() == cont.end(), "Concurrent container iterators invalid after construction");
-    ASSERT(ccont.begin() == ccont.end(), "Concurrent container iterators invalid after construction");
-    ASSERT(cont.cbegin() == cont.cend(), "Concurrent container iterators invalid after construction");
-
-    //std::pair<iterator, bool> insert(const value_type& obj);
-    std::pair<typename T::iterator, bool> ins = cont.insert(Value<T>::make(1));
-    ASSERT(ins.second == true && Value<T>::get(*(ins.first)) == 1, "Element 1 not properly inserted");
-
-    // bool empty() const;
-    ASSERT(!ccont.empty(), "Concurrent container empty after adding an element");
-
-    // size_type size() const;
-    ASSERT(ccont.size() == 1, "Concurrent container size incorrect");
-
-    std::pair<typename T::iterator, bool> ins2 = cont.insert(Value<T>::make(1));
-
-    if (T::allow_multimapping)
-    {
-        // std::pair<iterator, bool> insert(const value_type& obj);
-        ASSERT(ins2.second == true && Value<T>::get(*(ins2.first)) == 1, "Element 1 not properly inserted");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 2, "Concurrent container size incorrect");
-
-        // size_type count(const key_type& k) const;
-        ASSERT(ccont.count(1) == 2, "Concurrent container count(1) incorrect");
-
-        // std::pair<iterator, iterator> equal_range(const key_type& k);
-        std::pair<typename T::iterator, typename T::iterator> range = cont.equal_range(1);
-        typename T::iterator it = range.first;
-        ASSERT(it != cont.end() && Value<T>::get(*it) == 1, "Element 1 not properly found");
-        unsigned int count = 0;
-        for (; it != range.second; it++)
-        {
-            count++;
-            ASSERT(Value<T>::get(*it) == 1, "Element 1 not properly found");
-        }
-
-        ASSERT(count == 2, "Range doesn't have the right number of elements");
-    }
-    else
-    {
-        // std::pair<iterator, bool> insert(const value_type& obj);
-        ASSERT(ins2.second == false && ins2.first == ins.first, "Element 1 should not be re-inserted");
-
-        // size_type size() const;
-        ASSERT(ccont.size() == 1, "Concurrent container size incorrect");
-
-        // size_type count(const key_type& k) const;
-        ASSERT(ccont.count(1) == 1, "Concurrent container count(1) incorrect");
-
-        // std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
-        // std::pair<iterator, iterator> equal_range(const key_type& k);
-        std::pair<typename T::iterator, typename T::iterator> range = cont.equal_range(1);
-        typename T::iterator i = range.first;
-        ASSERT(i != cont.end() && Value<T>::get(*i) == 1, "Element 1 not properly found");
-        ASSERT(++i == range.second, "Range doesn't have the right number of elements");
-    }
-
-    // const_iterator find(const key_type& k) const;
-    // iterator find(const key_type& k);
-    typename T::iterator it = cont.find(1);
-    ASSERT(it != cont.end() && Value<T>::get(*(it)) == 1, "Element 1 not properly found");
-    ASSERT(ccont.find(1) == it, "Element 1 not properly found");
-
-    // iterator insert(const_iterator hint, const value_type& obj);
-    typename T::iterator it2 = cont.insert(ins.first, Value<T>::make(2));
-    ASSERT(Value<T>::get(*it2) == 2, "Element 2 not properly inserted");
-
-    // T(const T& _Umap)
-    T newcont = ccont;
-    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Copy construction did not copy the elements properly");
-
-    // size_type unsafe_erase(const key_type& k);
-    typename T::size_type size = cont.unsafe_erase(1);
-    ASSERT(T::allow_multimapping ? (size == 2) : (size == 1), "Erase did not remove the right number of elements");
-
-    // iterator unsafe_erase(const_iterator position);
-    typename T::iterator it4 = cont.unsafe_erase(cont.find(2));
-    ASSERT(it4 == cont.end() && cont.size() == 0, "Erase did not remove the last element properly");
-
-    // template<class InputIterator> void insert(InputIterator first, InputIterator last);
-    cont.insert(newcont.begin(), newcont.end());
-    ASSERT(T::allow_multimapping ? (cont.size() == 3) : (cont.size() == 2), "Range insert did not copy the elements properly");
-
-    // iterator unsafe_erase(const_iterator first, const_iterator last);
-    std::pair<typename T::iterator, typename T::iterator> range2 = newcont.equal_range(1);
-    newcont.unsafe_erase(range2.first, range2.second);
-    ASSERT(newcont.size() == 1, "Range erase did not erase the elements properly");
-
-    // void clear();
-    newcont.clear();
-    ASSERT(newcont.begin() == newcont.end() && newcont.size() == 0, "Clear did not clear the container");
-
-    // T& operator=(const T& _Umap)
-    newcont = ccont;
-    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Assignment operator did not copy the elements properly");
-
-    // void rehash(size_type n);
-    newcont.rehash(16);
-    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Rehash should not affect the container elements");
-
-    // float load_factor() const;
-    // float max_load_factor() const;
-    ASSERT(ccont.load_factor() <= ccont.max_load_factor(), "Load factor invalid");
-
-    // void max_load_factor(float z);
-    cont.max_load_factor(16.0f);
-    ASSERT(ccont.max_load_factor() == 16.0f, "Max load factor not properly changed");
-
-    // hasher hash_function() const;
-    ccont.hash_function();
-
-    // key_equal key_eq() const;
-    ccont.key_eq();
-
-    cont.clear();
-    CheckAllocatorA(cont, 1, 0); // one dummy is always allocated
-    for (int i = 0; i < 256; i++)
-    {
-        std::pair<typename T::iterator, bool> ins3 = cont.insert(Value<T>::make(i));
-        ASSERT(ins3.second == true && Value<T>::get(*(ins3.first)) == i, "Element 1 not properly inserted");
-    }
-    ASSERT(cont.size() == 256, "Wrong number of elements inserted");
-    ASSERT((256 == CheckRecursiveRange<T,typename T::iterator>(cont.range()).first), NULL);
-    ASSERT((256 == CheckRecursiveRange<T,typename T::const_iterator>(ccont.range()).first), NULL);
-
-    // size_type unsafe_bucket_count() const;
-    ASSERT(ccont.unsafe_bucket_count() == 16, "Wrong number of buckets");
-
-    // size_type unsafe_max_bucket_count() const;
-    ASSERT(ccont.unsafe_max_bucket_count() > 65536, "Wrong max number of buckets");
-
-    for (unsigned int i = 0; i < 256; i++)
-    {
-        typename T::size_type buck = ccont.unsafe_bucket(i);
-
-        // size_type unsafe_bucket(const key_type& k) const;
-        ASSERT(buck < 16, "Wrong bucket mapping");
-    }
-
-    for (unsigned int i = 0; i < 16; i++)
-    {
-        // size_type unsafe_bucket_size(size_type n);
-        ASSERT(cont.unsafe_bucket_size(i) == 16, "Wrong number elements in a bucket");
-
-        // local_iterator unsafe_begin(size_type n);
-        // const_local_iterator unsafe_begin(size_type n) const;
-        // local_iterator unsafe_end(size_type n);
-        // const_local_iterator unsafe_end(size_type n) const;
-        // const_local_iterator unsafe_cbegin(size_type n) const;
-        // const_local_iterator unsafe_cend(size_type n) const;
-        unsigned int count = 0;
-        for (typename T::iterator bit = cont.unsafe_begin(i); bit != cont.unsafe_end(i); bit++)
-        {
-            count++;
-        }
-        ASSERT(count == 16, "Bucket iterators are invalid");
-    }
-
-    // void swap(T&);
-    cont.swap(newcont);
-    ASSERT(newcont.size() == 256, "Wrong number of elements after swap");
-    ASSERT(newcont.count(200) == 1, "Element with key 200 not present after swap");
-    ASSERT(newcont.count(16) == 1, "Element with key 16 not present after swap");
-    ASSERT(newcont.count(99) == 1, "Element with key 99 not present after swap");
-    ASSERT(T::allow_multimapping ? (cont.size() == 3) : (cont.size() == 2), "Wrong number of elements after swap");
-
-    REMARK("passed -- basic %s tests\n", str);
-
-#if defined (VERBOSE)
-    REMARK("container dump debug:\n");
-    cont._Dump();
-    REMARK("container dump release:\n");
-    cont.dump();
-    REMARK("\n");
-#endif
-
-    SpecialTests<T>::Test(str);
-}
-
-void test_machine() {
-    ASSERT(__TBB_ReverseByte(0)==0, NULL );
-    ASSERT(__TBB_ReverseByte(1)==0x80, NULL );
-    ASSERT(__TBB_ReverseByte(0xFE)==0x7F, NULL );
-    ASSERT(__TBB_ReverseByte(0xFF)==0xFF, NULL );
-}
-
-template<typename T>
-class FillTable: NoAssign {
-    T &table;
-    const int items;
-    bool my_asymptotic;
-    typedef std::pair<typename T::iterator, bool> pairIB;
-public:
-    FillTable(T &t, int i, bool asymptotic) : table(t), items(i), my_asymptotic(asymptotic) {
-        ASSERT( !(items&1) && items > 100, NULL);
-    }
-    void operator()(int threadn) const {
-        if( threadn == 0 ) { // Fill even keys forward (single thread)
-            bool last_inserted = true;
-            for( int i = 0; i < items; i+=2 ) {
-                pairIB pib = table.insert(Value<T>::make(my_asymptotic?1:i));
-                ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic?1:i), "Element not properly inserted");
-                ASSERT( last_inserted || !pib.second, "Previous key was not inserted but this is inserted" );
-                last_inserted = pib.second;
-            }
-        } else if( threadn == 1 ) { // Fill even keys backward (single thread)
-            bool last_inserted = true;
-            for( int i = items-2; i >= 0; i-=2 ) {
-                pairIB pib = table.insert(Value<T>::make(my_asymptotic?1:i));
-                ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic?1:i), "Element not properly inserted");
-                ASSERT( last_inserted || !pib.second, "Previous key was not inserted but this is inserted" );
-                last_inserted = pib.second;
-            }
-        } else if( !(threadn&1) ) { // Fill odd keys forward (multiple threads)
-            for( int i = 1; i < items; i+=2 ) {
-                pairIB pib = table.insert(Value<T>::make(my_asymptotic?1:i));
-                ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic?1:i), "Element not properly inserted");
-            }
-        } else { // Check odd keys backward (multiple threads)
-            if (!my_asymptotic) {
-                bool last_found = false;
-                for( int i = items-1; i >= 0; i-=2 ) {
-                    typename T::iterator it = table.find(i);
-                    if( it != table.end() ) { // found
-                        ASSERT(Value<T>::get(*it) == i, "Element not properly inserted");
-                        last_found = true;
-                    } else ASSERT( !last_found, "Previous key was found but this is not" );
-                }
-            }
-        }
-    }
-};
-
-typedef tbb::atomic<unsigned char> AtomicByte;
-
-template<typename ContainerType, typename RangeType>
-struct ParallelTraverseBody: NoAssign {
-    const int n;
-    AtomicByte* const array;
-    ParallelTraverseBody( AtomicByte an_array[], int a_n ) : 
-        n(a_n), array(an_array)
-    {}
-    void operator()( const RangeType& range ) const {
-        for( typename RangeType::iterator i = range.begin(); i!=range.end(); ++i ) {
-            int k = Value<ContainerType>::key(*i);
-            ASSERT( k == Value<ContainerType>::get(*i), NULL );
-            ASSERT( 0<=k && k<n, NULL ); 
-            array[k]++;
-        }
-    }
-};
-
-// if multimapping, oddCount is the value that each odd-indexed array element should have.
-// not meaningful for non-multimapped case.
-void CheckRange( AtomicByte array[], int n, bool allowMultiMapping, int oddCount ) {
-    if(allowMultiMapping) {
-        for( int k = 0; k<n; ++k) {
-            if(k%2) {
-                if( array[k] != oddCount ) {
-                    REPORT("array[%d]=%d (should be %d)\n", k, int(array[k]), oddCount);
-                    ASSERT(false,NULL);
-                }
-            }
-            else {
-                if(array[k] != 2) {
-                    REPORT("array[%d]=%d\n", k, int(array[k]));
-                    ASSERT(false,NULL);
-                }
-            }
-        }
-    }
-    else {
-        for( int k=0; k<n; ++k ) {
-            if( array[k] != 1 ) {
-                REPORT("array[%d]=%d\n", k, int(array[k]));
-                ASSERT(false,NULL);
-            }
-        }
-    }
-}
-
-template<typename T>
-class CheckTable: NoAssign {
-    T &table;
-public:
-    CheckTable(T &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        int c = (int)table.count( i );
-        ASSERT( c, "must exist" );
-    }
-};
-
-template<typename T>
-class AssignBody: NoAssign {
-    T &table;
-public:
-    AssignBody(T &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        table[i] = i;
-    }
-};
-
-template<>
-class AssignBody<MyCheckedMap>: NoAssign {
-    MyCheckedMap &table;
-public:
-    AssignBody(MyCheckedMap &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        table.insert(MyCheckedMap::value_type(i, check_type<int>(i)));
-    }
-};
-
-template<>
-class AssignBody<MySet>: NoAssign {
-    MySet &table;
-public:
-    AssignBody(MySet &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        table.insert(i);
-    }
-};
-
-template<>
-class AssignBody<MyCheckedSet>: NoAssign {
-    MyCheckedSet &table;
-public:
-    AssignBody(MyCheckedSet &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        table.insert(check_type<int>(i));
-    }
-};
-
-// multiset: for i, inserts i i%3+1 times
-template<>
-class AssignBody<MyMultiSet>: NoAssign {
-    MyMultiSet &table;
-public:
-    AssignBody(MyMultiSet &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        int num = i % 3 + 1;
-        for( int j = 0; j < num; ++j) {
-            table.insert(i);
-        }
-    }
-};
-
-// multiset: for i, inserts i i%3+1 times
-template<>
-class AssignBody<MyCheckedMultiSet>: NoAssign {
-    MyCheckedMultiSet &table;
-public:
-    AssignBody(MyCheckedMultiSet &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        int num = i % 3 + 1;
-        for( int j = 0; j < num; ++j) {
-            table.insert(i);
-        }
-    }
-};
-
-// for multimap insert (i%3)+1 items  [i,3*i], [i,3*i+1] ..
-template<>
-class AssignBody<MyMultiMap>: NoAssign {
-    MyMultiMap &table;
-public:
-    AssignBody(MyMultiMap &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        for(int j = 0; j < (i % 3) + 1; ++j) {
-            table.insert(std::pair<int,int>(i,3*i+j-1));
-        }
-    }
-};
-
-// for multimap insert (i%3)+1 items  [i,3*i], [i,3*i+1] ..
-template<>
-class AssignBody<MyCheckedMultiMap>: NoAssign {
-    MyCheckedMultiMap &table;
-public:
-    AssignBody(MyCheckedMultiMap &t) : NoAssign(), table(t) {}
-    void operator()(int i) const {
-        for(int j = 0; j < (i % 3) + 1; ++j) {
-            table.insert(std::pair<int,int>(i,3*i+j-1));
-        }
-    }
-};
-
-template<typename T>
-void test_concurrent(const char *tablename, bool asymptotic = false) {
-#if TBB_USE_ASSERT
-    int items = 2000;
-#else
-    int items = 20000;
-#endif
-    int nItemsInserted = 0;
-    int nThreads = 0;
-    T table(items/1000);
-    #if __bgp__
-    nThreads = 6;
-    #else
-    nThreads = 16;
-    #endif
-    if(T::allow_multimapping) {
-        // even passes (threads 0 & 1) put N/2 items each
-        // odd passes  (threads > 1)   put N/2 if thread is odd, else checks if even.
-        items = 4*items / (nThreads + 2);  // approximately same number of items inserted.
-        nItemsInserted = items + (nThreads-2) * items / 4;
-    }
-    else {
-        nItemsInserted = items;
-    }
-    REMARK("%s items == %d\n", tablename, items);
-    tbb::tick_count t0 = tbb::tick_count::now();
-    NativeParallelFor( nThreads, FillTable<T>(table, items, asymptotic) );
-    tbb::tick_count t1 = tbb::tick_count::now();
-    REMARK( "time for filling '%s' by %d items = %g\n", tablename, table.size(), (t1-t0).seconds() );
-    ASSERT( int(table.size()) == nItemsInserted, NULL);
-
-    if(!asymptotic) {
-        AtomicByte* array = new AtomicByte[items];
-        memset( array, 0, items*sizeof(AtomicByte) );
-
-        typename T::range_type r = table.range();
-        std::pair<int,int> p = CheckRecursiveRange<T,typename T::iterator>(r);
-        ASSERT((nItemsInserted == p.first), NULL);
-        tbb::parallel_for( r, ParallelTraverseBody<T, typename T::const_range_type>( array, items ));
-        CheckRange( array, items, T::allow_multimapping, (nThreads - 1)/2 );
-
-        const T &const_table = table;
-        memset( array, 0, items*sizeof(AtomicByte) );
-        typename T::const_range_type cr = const_table.range();
-        ASSERT((nItemsInserted == CheckRecursiveRange<T,typename T::const_iterator>(cr).first), NULL);
-        tbb::parallel_for( cr, ParallelTraverseBody<T, typename T::const_range_type>( array, items ));
-        CheckRange( array, items, T::allow_multimapping, (nThreads - 1) / 2 );
-        delete[] array;
-
-        tbb::parallel_for( 0, items, CheckTable<T>( table ) );
-    }
-
-    table.clear();
-    CheckAllocatorA(table, items+1, items); // one dummy is always allocated
-
-    for(int i=0; i<1000; ++i) {
-        tbb::parallel_for( 0, 8, AssignBody<T>( table ) );
-        table.clear();
-    }
-}
-#endif //#if !__TBB_TEST_SECONDARY
-
-
-namespace test_select_size_t_constant{
-    __TBB_STATIC_ASSERT((tbb::internal::select_size_t_constant<1234,1234>::value == 1234),"select_size_t_constant::value is not compile time constant");
-//    There will be two constant used in the test 32 bit and 64 bit one.
-//    The 64 bit constant should chosen so that it 32 bit halves adds up to the 32 bit one ( first constant used in the test).
-//    % ~0U is used to sum up 32bit halves of the 64 constant.  ("% ~0U" essentially adds the 32-bit "digits", like "%9" adds
-//    the digits (modulo 9) of a number in base 10).
-//    So iff select_size_t_constant is correct result of the calculation below will be same on both 32bit and 64bit platforms.
-    __TBB_STATIC_ASSERT((tbb::internal::select_size_t_constant<0x12345678U,0x091A2B3C091A2B3CULL>::value % ~0U == 0x12345678U),
-            "select_size_t_constant have chosen the wrong constant");
-
-}
-
-#if !__TBB_TEST_SECONDARY
-#define INITIALIZATION_TIME_TEST_NAMESPACE            initialization_time_test
-#define TEST_INITIALIZATION_TIME_OPERATIONS_NAME      test_initialization_time_operations
-void test_initialization_time_operations_external();
-#else
-#define INITIALIZATION_TIME_TEST_NAMESPACE            initialization_time_test_external
-#define TEST_INITIALIZATION_TIME_OPERATIONS_NAME      test_initialization_time_operations_external
-#endif
-
-namespace INITIALIZATION_TIME_TEST_NAMESPACE{
-    tbb::concurrent_unordered_set<int> static_init_time_set;
-    int any_non_zero_value = 89432;
-    bool static_init_time_inserted = (static_init_time_set.insert(any_non_zero_value)).second;
-    bool static_init_time_found = ((static_init_time_set.find(any_non_zero_value)) != static_init_time_set.end());
-}
-void TEST_INITIALIZATION_TIME_OPERATIONS_NAME(){
-    using namespace INITIALIZATION_TIME_TEST_NAMESPACE;
-    #define LOCATION ",in function: " __TBB_STRING(TEST_INITIALIZATION_TIME_OPERATIONS_NAME)
-    ASSERT(static_init_time_inserted,"failed to insert an item during initialization of global objects" LOCATION);
-    ASSERT(static_init_time_found,"failed to find an item during initialization of global objects" LOCATION);
-
-    bool static_init_time_found_in_main = ((static_init_time_set.find(any_non_zero_value)) != static_init_time_set.end());
-    ASSERT(static_init_time_found_in_main,"failed to find during main() an item inserted during initialization of global objects" LOCATION);
-    #undef LOCATION
-}
-
-#if !__TBB_TEST_SECONDARY
-int TestMain () {
-    test_machine();
-    test_basic<MyMap>("concurrent unordered Map");
-    test_concurrent<MyMap>("concurrent unordered Map");
-    test_basic<MySet>("concurrent unordered Set");
-    test_concurrent<MySet>("concurrent unordered Set");
-    test_basic<MyMultiMap>("concurrent unordered MultiMap");
-    test_concurrent<MyMultiMap>("concurrent unordered MultiMap");
-    test_concurrent<MyMultiMap>("concurrent unordered MultiMap asymptotic", true);
-    test_basic<MyMultiSet>("concurrent unordered MultiSet");
-    test_concurrent<MyMultiSet>("concurrent unordered MultiSet");
-    test_concurrent<MyMultiSet>("concurrent unordered MultiSet asymptotic", true);
-
-    { Check<MyCheckedSet::value_type> checkit; test_basic<MyCheckedSet>("concurrent_unordered_set (checked)"); }
-    { Check<MyCheckedSet::value_type> checkit; test_concurrent<MyCheckedSet>("concurrent unordered set (checked)"); }
-
-    { Check<MyCheckedMultiSet::value_type> checkit; test_basic<MyCheckedMultiSet>("concurrent_unordered_multiset (checked)"); }
-    { Check<MyCheckedMultiSet::value_type> checkit; test_concurrent<MyCheckedMultiSet>("concurrent unordered multiset (checked)"); }
-
-    { Check<MyCheckedMap::value_type> checkit; test_basic<MyCheckedMap>("concurrent unordered map (checked)"); }
-    { Check<MyCheckedMap::value_type> checkit; test_concurrent<MyCheckedMap>("concurrent unordered map (checked)"); }
-
-    { Check<MyCheckedMultiMap::value_type> checkit; test_basic<MyCheckedMultiMap>("concurrent unordered MultiMap (checked)"); }
-    { Check<MyCheckedMultiMap::value_type> checkit; test_concurrent<MyCheckedMultiMap>("concurrent unordered MultiMap (checked)"); }
-
-    test_initialization_time_operations();
-    #if !__TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN
-        test_initialization_time_operations_external();
-    #else
-        REPORT("Known issue: global objects initialization time tests skipped.\n");
-    #endif //!__TBB_CPP11_STD_PLACEHOLDERS_LINKING_BROKEN
-
-    #if __TBB_INITIALIZER_LISTS_PRESENT
-        TestInitList();
-    #endif
-
-    #if __TBB_RANGE_BASED_FOR_PRESENT
-        TestRangeBasedFor();
-    #endif
-
-    return Harness::Done;
-}
-#endif //#if !__TBB_TEST_SECONDARY
-#endif //!(__TBB_TEST_SECONDARY && __TBB_CPP11_STD_PLACEHOLDERS_LINKING_BROKEN)
diff --git a/src/test/test_concurrent_unordered_common.h b/src/test/test_concurrent_unordered_common.h
new file mode 100644
index 0000000..37e2106
--- /dev/null
+++ b/src/test/test_concurrent_unordered_common.h
@@ -0,0 +1,925 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+/* Some tests in this source file are based on PPL tests provided by Microsoft. */
+#include "tbb/parallel_for.h"
+#include "tbb/tick_count.h"
+#include "harness.h"
+#include "test_container_move_support.h"
+// Test that unordered containers do not require keys have default constructors.
+#define __HARNESS_CHECKTYPE_DEFAULT_CTOR 0
+#include "harness_checktype.h"
+#undef  __HARNESS_CHECKTYPE_DEFAULT_CTOR
+#include "harness_allocator.h"
+
+template<typename T>
+struct degenerate_hash {
+    size_t operator()(const T& /*a*/) const {
+        return 1;
+    }
+};
+
+// TestInitListSupportWithoutAssign with an empty initializer list causes internal error in Intel Compiler.
+#define __TBB_ICC_EMPTY_INIT_LIST_TESTS_BROKEN (__INTEL_COMPILER && __INTEL_COMPILER <= 1500)
+
+typedef local_counting_allocator<debug_allocator<std::pair<const int,int>,std::allocator> > MyAllocator;
+
+#define CheckAllocatorE(t,a,f) CheckAllocator(t,a,f,true,__LINE__)
+#define CheckAllocatorA(t,a,f) CheckAllocator(t,a,f,false,__LINE__)
+template<typename MyTable>
+inline void CheckAllocator(MyTable &table, size_t expected_allocs, size_t expected_frees, bool exact = true, int line = 0) {
+    typename MyTable::allocator_type a = table.get_allocator();
+    REMARK("#%d checking allocators: items %u/%u, allocs %u/%u\n", line,
+        unsigned(a.items_allocated), unsigned(a.items_freed), unsigned(a.allocations), unsigned(a.frees) );
+    ASSERT( a.items_allocated == a.allocations, NULL); ASSERT( a.items_freed == a.frees, NULL);
+    if(exact) {
+        ASSERT( a.allocations == expected_allocs, NULL); ASSERT( a.frees == expected_frees, NULL);
+    } else {
+        ASSERT( a.allocations >= expected_allocs, NULL); ASSERT( a.frees >= expected_frees, NULL);
+        ASSERT( a.allocations - a.frees == expected_allocs - expected_frees, NULL );
+    }
+}
+
+template<typename T>
+struct strip_const { typedef T type; };
+
+template<typename T>
+struct strip_const<const T> { typedef T type; };
+
+// value generator for cumap
+template <typename K, typename V = std::pair<const K, K> >
+struct ValueFactory {
+    typedef typename strip_const<K>::type Kstrip;
+    static V make(const K &value) { return V(value, value); }
+    static Kstrip key(const V &value) { return value.first; }
+    static Kstrip get(const V &value) { return (Kstrip)value.second; }
+};
+
+// generator for cuset
+template <typename T>
+struct ValueFactory<T, T> {
+    static T make(const T &value) { return value; }
+    static T key(const T &value) { return value; }
+    static T get(const T &value) { return value; }
+};
+
+template <typename T>
+struct Value : ValueFactory<typename T::key_type, typename T::value_type> {};
+
+#if _MSC_VER
+#pragma warning(disable: 4189) // warning 4189 -- local variable is initialized but not referenced
+#pragma warning(disable: 4127) // warning 4127 -- while (true) has a constant expression in it
+#endif
+
+template<typename ContainerType, typename Iterator, typename RangeType>
+std::pair<intptr_t,intptr_t> CheckRecursiveRange(RangeType range) {
+    std::pair<intptr_t,intptr_t> sum(0, 0); // count, sum
+    for( Iterator i = range.begin(), e = range.end(); i != e; ++i ) {
+        ++sum.first; sum.second += Value<ContainerType>::get(*i);
+    }
+    if( range.is_divisible() ) {
+        RangeType range2( range, tbb::split() );
+        std::pair<intptr_t,intptr_t> sum1 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range );
+        std::pair<intptr_t,intptr_t> sum2 = CheckRecursiveRange<ContainerType,Iterator, RangeType>( range2 );
+        sum1.first += sum2.first; sum1.second += sum2.second;
+        ASSERT( sum == sum1, "Mismatched ranges after division");
+    }
+    return sum;
+}
+
+template <typename T>
+struct SpecialTests {
+    static void Test(const char *str) {REMARK("skipped -- specialized %s tests\n", str);}
+};
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+template<typename container_type>
+bool equal_containers( container_type const& lhs, container_type const& rhs ) {
+    if ( lhs.size() != rhs.size() ) {
+        return false;
+    }
+    return std::equal( lhs.begin(), lhs.end(), rhs.begin(), Harness::IsEqual() );
+}
+
+#include "test_initializer_list.h"
+
+template <typename Table, typename MultiTable>
+void TestInitList( std::initializer_list<typename Table::value_type> il ) {
+    using namespace initializer_list_support_tests;
+    REMARK("testing initializer_list methods \n");
+
+    TestInitListSupportWithoutAssign<Table,test_special_insert>(il);
+    TestInitListSupportWithoutAssign<MultiTable, test_special_insert>( il );
+
+#if __TBB_ICC_EMPTY_INIT_LIST_TESTS_BROKEN
+    REPORT( "Known issue: TestInitListSupportWithoutAssign with an empty initializer list is skipped.\n");
+#else
+    TestInitListSupportWithoutAssign<Table, test_special_insert>( {} );
+    TestInitListSupportWithoutAssign<MultiTable, test_special_insert>( {} );
+#endif
+}
+#endif //if __TBB_INITIALIZER_LISTS_PRESENT
+
+template<Harness::StateTrackableBase::State desired_state, typename T>
+void check_value_state(/* typename do_check_element_state =*/ tbb::internal::true_type, T const& t, const char* filename, int line )
+{
+    ASSERT_CUSTOM(is_state_f<desired_state>()(t), "", filename, line);
+}
+
+template<Harness::StateTrackableBase::State desired_state, typename T>
+void check_value_state(/* typename do_check_element_state =*/ tbb::internal::false_type, T const&, const char* , int ) {/*do nothing*/}
+#define ASSERT_VALUE_STATE(do_check_element_state,state,value) check_value_state<state>(do_check_element_state,value,__FILE__,__LINE__)
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+template<typename T, typename do_check_element_state>
+void test_rvalue_insert()
+{
+    typedef T container_t;
+
+    container_t cont;
+
+    std::pair<typename container_t::iterator, bool> ins = cont.insert(Value<container_t>::make(1));
+    ASSERT(ins.second == true && Value<container_t>::get(*(ins.first)) == 1, "Element 1 has not been inserted properly");
+    ASSERT_VALUE_STATE(do_check_element_state(),Harness::StateTrackableBase::MoveInitialized,*ins.first);
+
+    typename container_t::iterator it2 = cont.insert(ins.first, Value<container_t>::make(2));
+    ASSERT(Value<container_t>::get(*(it2)) == 2, "Element 2 has not been inserted properly");
+    ASSERT_VALUE_STATE(do_check_element_state(),Harness::StateTrackableBase::MoveInitialized,*it2);
+
+}
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+
+namespace emplace_helpers {
+template<typename container_t, typename arg_t, typename value_t>
+std::pair<typename container_t::iterator, bool> call_emplace_impl(container_t& c, arg_t&& k, value_t *){
+    //this a set
+    return c.emplace(std::forward<arg_t>(k));
+}
+
+template<typename container_t, typename arg_t, typename first_t, typename second_t>
+std::pair<typename container_t::iterator, bool> call_emplace_impl(container_t& c, arg_t&& k, std::pair<first_t, second_t> *){
+    //this is a map
+    return c.emplace(k, std::forward<arg_t>(k));
+}
+
+template<typename container_t, typename arg_t>
+std::pair<typename container_t::iterator, bool> call_emplace(container_t& c, arg_t&& k){
+    typename container_t::value_type * selector = NULL;
+    return call_emplace_impl(c, std::forward<arg_t>(k), selector);
+}
+
+template<typename container_t, typename arg_t, typename value_t>
+typename container_t::iterator call_emplace_hint_impl(container_t& c, typename container_t::const_iterator hint, arg_t&& k, value_t *){
+    //this a set
+    return c.emplace_hint(hint, std::forward<arg_t>(k));
+}
+
+template<typename container_t, typename arg_t, typename first_t, typename second_t>
+typename container_t::iterator call_emplace_hint_impl(container_t& c, typename container_t::const_iterator hint, arg_t&& k, std::pair<first_t, second_t> *){
+    //this is a map
+    return c.emplace_hint(hint, k, std::forward<arg_t>(k));
+}
+
+template<typename container_t, typename arg_t>
+typename container_t::iterator call_emplace_hint(container_t& c, typename container_t::const_iterator hint, arg_t&& k){
+    typename container_t::value_type * selector = NULL;
+    return call_emplace_hint_impl(c, hint, std::forward<arg_t>(k), selector);
+}
+}
+template<typename T, typename do_check_element_state>
+void test_emplace_insert(){
+    typedef T container_t;
+
+    container_t cont;
+
+    std::pair<typename container_t::iterator, bool> ins = emplace_helpers::call_emplace(cont, 1);
+    ASSERT(ins.second == true && Value<container_t>::get(*(ins.first)) == 1, "Element 1 has not been inserted properly");
+    ASSERT_VALUE_STATE(do_check_element_state(),Harness::StateTrackableBase::DirectInitialized,*ins.first);
+
+    typename container_t::iterator it2 = emplace_helpers::call_emplace_hint(cont, ins.first, 2);
+    ASSERT(Value<container_t>::get(*(it2)) == 2, "Element 2 has not been inserted properly");
+    ASSERT_VALUE_STATE(do_check_element_state(),Harness::StateTrackableBase::DirectInitialized,*it2);
+}
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
+template<typename T, typename do_check_element_state>
+void test_basic(const char * str, do_check_element_state)
+{
+    T cont;
+    const T &ccont(cont);
+
+    // bool empty() const;
+    ASSERT(ccont.empty(), "Concurrent container is not empty after construction");
+
+    // size_type size() const;
+    ASSERT(ccont.size() == 0, "Concurrent container is not empty after construction");
+
+    // size_type max_size() const;
+    ASSERT(ccont.max_size() > 0, "Concurrent container max size is invalid");
+
+    //iterator begin();
+    //iterator end();
+    ASSERT(cont.begin() == cont.end(), "Concurrent container iterators are invalid after construction");
+    ASSERT(ccont.begin() == ccont.end(), "Concurrent container iterators are invalid after construction");
+    ASSERT(cont.cbegin() == cont.cend(), "Concurrent container iterators are invalid after construction");
+
+    //std::pair<iterator, bool> insert(const value_type& obj);
+    std::pair<typename T::iterator, bool> ins = cont.insert(Value<T>::make(1));
+    ASSERT(ins.second == true && Value<T>::get(*(ins.first)) == 1, "Element 1 has not been inserted properly");
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    test_rvalue_insert<T,do_check_element_state>();
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    test_emplace_insert<T,do_check_element_state>();
+#endif // __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
+
+    // bool empty() const;
+    ASSERT(!ccont.empty(), "Concurrent container is empty after adding an element");
+
+    // size_type size() const;
+    ASSERT(ccont.size() == 1, "Concurrent container size is incorrect");
+
+    std::pair<typename T::iterator, bool> ins2 = cont.insert(Value<T>::make(1));
+
+    if (T::allow_multimapping)
+    {
+        // std::pair<iterator, bool> insert(const value_type& obj);
+        ASSERT(ins2.second == true && Value<T>::get(*(ins2.first)) == 1, "Element 1 has not been inserted properly");
+
+        // size_type size() const;
+        ASSERT(ccont.size() == 2, "Concurrent container size is incorrect");
+
+        // size_type count(const key_type& k) const;
+        ASSERT(ccont.count(1) == 2, "Concurrent container count(1) is incorrect");
+
+        // std::pair<iterator, iterator> equal_range(const key_type& k);
+        std::pair<typename T::iterator, typename T::iterator> range = cont.equal_range(1);
+        typename T::iterator it = range.first;
+        ASSERT(it != cont.end() && Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        unsigned int count = 0;
+        for (; it != range.second; it++)
+        {
+            count++;
+            ASSERT(Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        }
+
+        ASSERT(count == 2, "Range doesn't have the right number of elements");
+    }
+    else
+    {
+        // std::pair<iterator, bool> insert(const value_type& obj);
+        ASSERT(ins2.second == false && ins2.first == ins.first, "Element 1 should not be re-inserted");
+
+        // size_type size() const;
+        ASSERT(ccont.size() == 1, "Concurrent container size is incorrect");
+
+        // size_type count(const key_type& k) const;
+        ASSERT(ccont.count(1) == 1, "Concurrent container count(1) is incorrect");
+
+        // std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
+        // std::pair<iterator, iterator> equal_range(const key_type& k);
+        std::pair<typename T::iterator, typename T::iterator> range = cont.equal_range(1);
+        typename T::iterator it = range.first;
+        ASSERT(it != cont.end() && Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        ASSERT(++it == range.second, "Range doesn't have the right number of elements");
+    }
+
+    // const_iterator find(const key_type& k) const;
+    // iterator find(const key_type& k);
+    typename T::iterator it = cont.find(1);
+    ASSERT(it != cont.end() && Value<T>::get(*(it)) == 1, "Element 1 has not been found properly");
+    ASSERT(ccont.find(1) == it, "Element 1 has not been found properly");
+
+    // iterator insert(const_iterator hint, const value_type& obj);
+    typename T::iterator it2 = cont.insert(ins.first, Value<T>::make(2));
+    ASSERT(Value<T>::get(*it2) == 2, "Element 2 has not been inserted properly");
+
+    // T(const T& _Umap)
+    T newcont = ccont;
+    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Copy construction has not copied the elements properly");
+
+    // size_type unsafe_erase(const key_type& k);
+    typename T::size_type size = cont.unsafe_erase(1);
+    ASSERT(T::allow_multimapping ? (size == 2) : (size == 1), "Erase has not removed the right number of elements");
+
+    // iterator unsafe_erase(const_iterator position);
+    typename T::iterator it4 = cont.unsafe_erase(cont.find(2));
+    ASSERT(it4 == cont.end() && cont.size() == 0, "Erase has not removed the last element properly");
+
+    // template<class InputIterator> void insert(InputIterator first, InputIterator last);
+    cont.insert(newcont.begin(), newcont.end());
+    ASSERT(T::allow_multimapping ? (cont.size() == 3) : (cont.size() == 2), "Range insert has not copied the elements properly");
+
+    // iterator unsafe_erase(const_iterator first, const_iterator last);
+    std::pair<typename T::iterator, typename T::iterator> range2 = newcont.equal_range(1);
+    newcont.unsafe_erase(range2.first, range2.second);
+    ASSERT(newcont.size() == 1, "Range erase has not erased the elements properly");
+
+    // void clear();
+    newcont.clear();
+    ASSERT(newcont.begin() == newcont.end() && newcont.size() == 0, "Clear has not cleared the container");
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+#if __TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+    REPORT("Known issue: the test for insert with initializer_list is skipped.\n");
+#else
+    // void insert(const std::initializer_list<value_type> &il);
+    newcont.insert( { Value<T>::make( 1 ), Value<T>::make( 2 ), Value<T>::make( 1 ) } );
+    if (T::allow_multimapping) {
+        ASSERT(newcont.size() == 3, "Concurrent container size is incorrect");
+        ASSERT(newcont.count(1) == 2, "Concurrent container count(1) is incorrect");
+        ASSERT(newcont.count(2) == 1, "Concurrent container count(2) is incorrect");
+        std::pair<typename T::iterator, typename T::iterator> range = cont.equal_range(1);
+        it = range.first;
+        ASSERT(it != newcont.end() && Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        unsigned int count = 0;
+        for (; it != range.second; it++) {
+            count++;
+            ASSERT(Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        }
+        ASSERT(count == 2, "Range doesn't have the right number of elements");
+        range = newcont.equal_range(2); it = range.first;
+        ASSERT(it != newcont.end() && Value<T>::get(*it) == 2, "Element 2 has not been found properly");
+        count = 0;
+        for (; it != range.second; it++) {
+            count++;
+            ASSERT(Value<T>::get(*it) == 2, "Element 2 has not been found properly");
+        }
+        ASSERT(count == 1, "Range doesn't have the right number of elements");
+    } else {
+        ASSERT(newcont.size() == 2, "Concurrent container size is incorrect");
+        ASSERT(newcont.count(1) == 1, "Concurrent container count(1) is incorrect");
+        ASSERT(newcont.count(2) == 1, "Concurrent container count(2) is incorrect");
+        std::pair<typename T::iterator, typename T::iterator> range = newcont.equal_range(1);
+        it = range.first;
+        ASSERT(it != newcont.end() && Value<T>::get(*it) == 1, "Element 1 has not been found properly");
+        ASSERT(++it == range.second, "Range doesn't have the right number of elements");
+        range = newcont.equal_range(2); it = range.first;
+        ASSERT(it != newcont.end() && Value<T>::get(*it) == 2, "Element 2 has not been found properly");
+        ASSERT(++it == range.second, "Range doesn't have the right number of elements");
+    }
+#endif /* __TBB_CPP11_INIT_LIST_TEMP_OBJS_COMPILATION_BROKEN */
+#endif /* __TBB_INITIALIZER_LISTS_PRESENT */
+
+    // T& operator=(const T& _Umap)
+    newcont = ccont;
+    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Assignment operator has not copied the elements properly");
+
+    // void rehash(size_type n);
+    newcont.rehash(16);
+    ASSERT(T::allow_multimapping ? (newcont.size() == 3) : (newcont.size() == 2), "Rehash should not affect the container elements");
+
+    // float load_factor() const;
+    // float max_load_factor() const;
+    ASSERT(ccont.load_factor() <= ccont.max_load_factor(), "Load factor is invalid");
+
+    // void max_load_factor(float z);
+    cont.max_load_factor(16.0f);
+    ASSERT(ccont.max_load_factor() == 16.0f, "Max load factor has not been changed properly");
+
+    // hasher hash_function() const;
+    ccont.hash_function();
+
+    // key_equal key_eq() const;
+    ccont.key_eq();
+
+    cont.clear();
+    CheckAllocatorA(cont, 1, 0); // one dummy is always allocated
+    for (int i = 0; i < 256; i++)
+    {
+        std::pair<typename T::iterator, bool> ins3 = cont.insert(Value<T>::make(i));
+        ASSERT(ins3.second == true && Value<T>::get(*(ins3.first)) == i, "Element 1 has not been inserted properly");
+    }
+    ASSERT(cont.size() == 256, "Wrong number of elements have been inserted");
+    ASSERT((256 == CheckRecursiveRange<T,typename T::iterator>(cont.range()).first), NULL);
+    ASSERT((256 == CheckRecursiveRange<T,typename T::const_iterator>(ccont.range()).first), NULL);
+
+    // size_type unsafe_bucket_count() const;
+    ASSERT(ccont.unsafe_bucket_count() == 16, "Wrong number of buckets");
+
+    // size_type unsafe_max_bucket_count() const;
+    ASSERT(ccont.unsafe_max_bucket_count() > 65536, "Wrong max number of buckets");
+
+    for (unsigned int i = 0; i < 256; i++)
+    {
+        typename T::size_type buck = ccont.unsafe_bucket(i);
+
+        // size_type unsafe_bucket(const key_type& k) const;
+        ASSERT(buck < 16, "Wrong bucket mapping");
+    }
+
+    typename T::size_type bucketSizeSum = 0;
+    typename T::size_type iteratorSizeSum = 0;
+
+    for (unsigned int i = 0; i < 16; i++)
+    {
+        bucketSizeSum += cont.unsafe_bucket_size(i);
+        for (typename T::iterator bit = cont.unsafe_begin(i); bit != cont.unsafe_end(i); bit++) iteratorSizeSum++;
+    }
+    ASSERT(bucketSizeSum == 256, "sum of bucket counts incorrect");
+    ASSERT(iteratorSizeSum == 256, "sum of iterator counts incorrect");
+
+    // void swap(T&);
+    cont.swap(newcont);
+    ASSERT(newcont.size() == 256, "Wrong number of elements after swap");
+    ASSERT(newcont.count(200) == 1, "Element with key 200 is not present after swap");
+    ASSERT(newcont.count(16) == 1, "Element with key 16 is not present after swap");
+    ASSERT(newcont.count(99) == 1, "Element with key 99 is not present after swap");
+    ASSERT(T::allow_multimapping ? (cont.size() == 3) : (cont.size() == 2), "Wrong number of elements after swap");
+
+    REMARK("passed -- basic %s tests\n", str);
+
+#if defined (VERBOSE)
+    REMARK("container dump debug:\n");
+    cont._Dump();
+    REMARK("container dump release:\n");
+    cont.dump();
+    REMARK("\n");
+#endif
+
+    SpecialTests<T>::Test(str);
+}
+
+template<typename T>
+void test_basic(const char * str){
+    test_basic<T>(str, tbb::internal::false_type());
+}
+
+void test_machine() {
+    ASSERT(__TBB_ReverseByte(0)==0, NULL );
+    ASSERT(__TBB_ReverseByte(1)==0x80, NULL );
+    ASSERT(__TBB_ReverseByte(0xFE)==0x7F, NULL );
+    ASSERT(__TBB_ReverseByte(0xFF)==0xFF, NULL );
+}
+
+template<typename T>
+class FillTable: NoAssign {
+    T &table;
+    const int items;
+    bool my_asymptotic;
+    typedef std::pair<typename T::iterator, bool> pairIB;
+public:
+    FillTable(T &t, int i, bool asymptotic) : table(t), items(i), my_asymptotic(asymptotic) {
+        ASSERT( !(items&1) && items > 100, NULL);
+    }
+    void operator()(int threadn) const {
+        if( threadn == 0 ) { // Fill even keys forward (single thread)
+            bool last_inserted = true;
+            for( int i = 0; i < items; i+=2 ) {
+                pairIB pib = table.insert(Value<T>::make(my_asymptotic?1:i));
+                ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic?1:i), "Element not properly inserted");
+                ASSERT( last_inserted || !pib.second, "Previous key was not inserted but this is inserted" );
+                last_inserted = pib.second;
+            }
+        } else if( threadn == 1 ) { // Fill even keys backward (single thread)
+            bool last_inserted = true;
+            for( int i = items-2; i >= 0; i-=2 ) {
+                pairIB pib = table.insert(Value<T>::make(my_asymptotic?1:i));
+                ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic?1:i), "Element not properly inserted");
+                ASSERT( last_inserted || !pib.second, "Previous key was not inserted but this is inserted" );
+                last_inserted = pib.second;
+            }
+        } else if( !(threadn&1) ) { // Fill odd keys forward (multiple threads)
+            for( int i = 1; i < items; i+=2 )
+#if __TBB_INITIALIZER_LISTS_PRESENT && !__TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+                if ( i % 32 == 1 && i + 6 < items ) {
+                    if (my_asymptotic) {
+                        table.insert({ Value<T>::make(1), Value<T>::make(1), Value<T>::make(1) });
+                        ASSERT(Value<T>::get(*table.find(1)) == 1, "Element not properly inserted");
+                    }
+                    else {
+                        table.insert({ Value<T>::make(i), Value<T>::make(i + 2), Value<T>::make(i + 4) });
+                        ASSERT(Value<T>::get(*table.find(i)) == i, "Element not properly inserted");
+                        ASSERT(Value<T>::get(*table.find(i + 2)) == i + 2, "Element not properly inserted");
+                        ASSERT(Value<T>::get(*table.find(i + 4)) == i + 4, "Element not properly inserted");
+                    }
+                    i += 4;
+                } else
+#endif
+                {
+                    pairIB pib = table.insert(Value<T>::make(my_asymptotic ? 1 : i));
+                    ASSERT(Value<T>::get(*(pib.first)) == (my_asymptotic ? 1 : i), "Element not properly inserted");
+                }
+        } else { // Check odd keys backward (multiple threads)
+            if (!my_asymptotic) {
+                bool last_found = false;
+                for( int i = items-1; i >= 0; i-=2 ) {
+                    typename T::iterator it = table.find(i);
+                    if( it != table.end() ) { // found
+                        ASSERT(Value<T>::get(*it) == i, "Element not properly inserted");
+                        last_found = true;
+                    } else ASSERT( !last_found, "Previous key was found but this is not" );
+                }
+            }
+        }
+    }
+};
+
+typedef tbb::atomic<unsigned char> AtomicByte;
+
+template<typename ContainerType, typename RangeType>
+struct ParallelTraverseBody: NoAssign {
+    const int n;
+    AtomicByte* const array;
+    ParallelTraverseBody( AtomicByte an_array[], int a_n ) : 
+        n(a_n), array(an_array)
+    {}
+    void operator()( const RangeType& range ) const {
+        for( typename RangeType::iterator i = range.begin(); i!=range.end(); ++i ) {
+            int k = Value<ContainerType>::key(*i);
+            ASSERT( k == Value<ContainerType>::get(*i), NULL );
+            ASSERT( 0<=k && k<n, NULL ); 
+            array[k]++;
+        }
+    }
+};
+
+// if multimapping, oddCount is the value that each odd-indexed array element should have.
+// not meaningful for non-multimapped case.
+void CheckRange( AtomicByte array[], int n, bool allowMultiMapping, int oddCount ) {
+    if(allowMultiMapping) {
+        for( int k = 0; k<n; ++k) {
+            if(k%2) {
+                if( array[k] != oddCount ) {
+                    REPORT("array[%d]=%d (should be %d)\n", k, int(array[k]), oddCount);
+                    ASSERT(false,NULL);
+                }
+            }
+            else {
+                if(array[k] != 2) {
+                    REPORT("array[%d]=%d\n", k, int(array[k]));
+                    ASSERT(false,NULL);
+                }
+            }
+        }
+    }
+    else {
+        for( int k=0; k<n; ++k ) {
+            if( array[k] != 1 ) {
+                REPORT("array[%d]=%d\n", k, int(array[k]));
+                ASSERT(false,NULL);
+            }
+        }
+    }
+}
+
+template<typename T>
+class CheckTable: NoAssign {
+    T &table;
+public:
+    CheckTable(T &t) : NoAssign(), table(t) {}
+    void operator()(int i) const {
+        int c = (int)table.count( i );
+        ASSERT( c, "must exist" );
+    }
+};
+
+template<typename T>
+void test_concurrent(const char *tablename, bool asymptotic = false) {
+#if TBB_USE_ASSERT
+    int items = 2000;
+#else
+    int items = 20000;
+#endif
+    int nItemsInserted = 0;
+    int nThreads = 0;
+    T table(items/1000);
+    #if __bgp__
+    nThreads = 6;
+    #else
+    nThreads = 16;
+    #endif
+    if(T::allow_multimapping) {
+        // even passes (threads 0 & 1) put N/2 items each
+        // odd passes  (threads > 1)   put N/2 if thread is odd, else checks if even.
+        items = 4*items / (nThreads + 2);  // approximately same number of items inserted.
+        nItemsInserted = items + (nThreads-2) * items / 4;
+    }
+    else {
+        nItemsInserted = items;
+    }
+    REMARK("%s items == %d\n", tablename, items);
+    tbb::tick_count t0 = tbb::tick_count::now();
+    NativeParallelFor( nThreads, FillTable<T>(table, items, asymptotic) );
+    tbb::tick_count t1 = tbb::tick_count::now();
+    REMARK( "time for filling '%s' by %d items = %g\n", tablename, table.size(), (t1-t0).seconds() );
+    ASSERT( int(table.size()) == nItemsInserted, NULL);
+
+    if(!asymptotic) {
+        AtomicByte* array = new AtomicByte[items];
+        memset( array, 0, items*sizeof(AtomicByte) );
+
+        typename T::range_type r = table.range();
+        std::pair<intptr_t,intptr_t> p = CheckRecursiveRange<T,typename T::iterator>(r);
+        ASSERT((nItemsInserted == p.first), NULL);
+        tbb::parallel_for( r, ParallelTraverseBody<T, typename T::const_range_type>( array, items ));
+        CheckRange( array, items, T::allow_multimapping, (nThreads - 1)/2 );
+
+        const T &const_table = table;
+        memset( array, 0, items*sizeof(AtomicByte) );
+        typename T::const_range_type cr = const_table.range();
+        ASSERT((nItemsInserted == CheckRecursiveRange<T,typename T::const_iterator>(cr).first), NULL);
+        tbb::parallel_for( cr, ParallelTraverseBody<T, typename T::const_range_type>( array, items ));
+        CheckRange( array, items, T::allow_multimapping, (nThreads - 1) / 2 );
+        delete[] array;
+
+        tbb::parallel_for( 0, items, CheckTable<T>( table ) );
+    }
+
+    table.clear();
+    CheckAllocatorA(table, items+1, items); // one dummy is always allocated
+
+}
+
+// The helper to call a function only when a doCall == true.
+template <bool doCall> struct CallIf {
+    template<typename FuncType> void operator() ( FuncType func ) const { func(); }
+};
+template <> struct CallIf<false> {
+    template<typename FuncType> void operator()( FuncType ) const {}
+};
+
+#include <vector>
+#include <list>
+#include <algorithm>
+
+template <typename ValueType>
+class TestRange : NoAssign {
+    const std::list<ValueType> &my_lst;
+    std::vector< tbb::atomic<bool> > &my_marks;
+public:
+    TestRange( const std::list<ValueType> &lst, std::vector< tbb::atomic<bool> > &marks ) : my_lst( lst ), my_marks( marks ) {
+        std::fill( my_marks.begin(), my_marks.end(), false );
+    }
+    template <typename Range>
+    void operator()( const Range &r ) const { doTestRange( r.begin(), r.end() ); }
+    template<typename Iterator>
+    void doTestRange( Iterator i, Iterator j ) const {
+        for ( Iterator it = i; it != j; ) {
+            Iterator prev_it = it++;
+            typename std::list<ValueType>::const_iterator it2 = std::search( my_lst.begin(), my_lst.end(), prev_it, it, Harness::IsEqual() );
+            ASSERT( it2 != my_lst.end(), NULL );
+            typename std::list<ValueType>::difference_type dist = std::distance( my_lst.begin( ), it2 );
+            ASSERT( !my_marks[dist], NULL );
+            my_marks[dist] = true;
+        }
+    }
+};
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+namespace tbb {
+    template<> class tbb_hash< std::shared_ptr<int> > {
+    public:
+        size_t operator()( const std::shared_ptr<int>& key ) const { return tbb_hasher( *key ); }
+    };
+    template<> class tbb_hash< const std::shared_ptr<int> > {
+    public:
+        size_t operator()( const std::shared_ptr<int>& key ) const { return tbb_hasher( *key ); }
+    };
+    template<> class tbb_hash< std::weak_ptr<int> > {
+    public:
+        size_t operator()( const std::weak_ptr<int>& key ) const { return tbb_hasher( *key.lock( ) ); }
+    };
+    template<> class tbb_hash< const std::weak_ptr<int> > {
+    public:
+        size_t operator()( const std::weak_ptr<int>& key ) const { return tbb_hasher( *key.lock( ) ); }
+    };
+}
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+
+template <bool, typename Table>
+void TestMapSpecificMethods( Table &, const typename Table::value_type & ) { /* do nothing for a common case */ }
+
+template <bool defCtorPresent, typename Table>
+class CheckValue : NoAssign {
+    Table &my_c;
+public:
+    CheckValue( Table &c ) : my_c( c ) {}
+    void operator()( const typename Table::value_type &value ) {
+        typedef typename Table::iterator Iterator;
+        typedef typename Table::const_iterator ConstIterator;
+        const Table &constC = my_c;
+        ASSERT( my_c.count( Value<Table>::key( value ) ) == 1, NULL );
+        // find
+        ASSERT( Harness::IsEqual()(*my_c.find( Value<Table>::key( value ) ), value), NULL );
+        ASSERT( Harness::IsEqual()(*constC.find( Value<Table>::key( value ) ), value), NULL );
+        // erase
+        ASSERT( my_c.unsafe_erase( Value<Table>::key( value ) ), NULL );
+        ASSERT( my_c.count( Value<Table>::key( value ) ) == 0, NULL );
+        // insert
+        std::pair<Iterator, bool> res = my_c.insert( value );
+        ASSERT( Harness::IsEqual()(*res.first, value), NULL );
+        ASSERT( res.second, NULL);
+        // erase
+        Iterator it = res.first;
+        it++;
+        ASSERT( my_c.unsafe_erase( res.first ) == it, NULL );
+        // insert
+        ASSERT( Harness::IsEqual()(*my_c.insert( my_c.begin(), value ), value), NULL );
+        // equal_range
+        std::pair<Iterator, Iterator> r1 = my_c.equal_range( Value<Table>::key( value ) );
+        ASSERT( Harness::IsEqual()(*r1.first, value) && ++r1.first == r1.second, NULL );
+        std::pair<ConstIterator, ConstIterator> r2 = constC.equal_range( Value<Table>::key( value ) );
+        ASSERT( Harness::IsEqual()(*r2.first, value) && ++r2.first == r2.second, NULL );
+        TestMapSpecificMethods<defCtorPresent>( my_c, value );
+    }
+};
+
+#include "tbb/task_scheduler_init.h"
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#include "test_container_move_support.h"
+
+struct unordered_move_traits_base {
+    enum{ expected_number_of_items_to_allocate_for_steal_move = 3 };
+
+    template <typename unordered_type, typename iterator_type>
+    static unordered_type& construct_container(tbb::aligned_space<unordered_type> & storage, iterator_type begin, iterator_type end){
+        new (storage.begin()) unordered_type(begin, end);
+        return * storage.begin();
+    }
+
+    template <typename unordered_type, typename iterator_type, typename allocator_type>
+    static unordered_type& construct_container(tbb::aligned_space<unordered_type> & storage, iterator_type begin, iterator_type end, allocator_type const& a ){
+        size_t deault_n_of_buckets = 8; //can not use concurrent_unordered_base::n_of_buckets as it is inaccessible
+        new (storage.begin()) unordered_type(begin, end, deault_n_of_buckets, typename unordered_type::hasher(), typename unordered_type::key_equal(), a);
+        return * storage.begin();
+    }
+
+    template<typename unordered_type, typename iterator>
+    static bool equal(unordered_type const& c, iterator begin, iterator end){
+        bool equal_sizes = ( static_cast<size_t>(std::distance(begin, end)) == c.size() );
+        if (!equal_sizes)
+            return false;
+
+        for (iterator it = begin; it != end; ++it ){
+            if (c.find( Value<unordered_type>::key(*it)) == c.end()){
+                return false;
+            }
+        }
+        return true;
+    }
+};
+
+template<typename container_traits>
+void test_rvalue_ref_support(const char* /*container_name*/){
+    TestMoveConstructor<container_traits>();
+    TestMoveAssignOperator<container_traits>();
+#if TBB_USE_EXCEPTIONS
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure<container_traits>();
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorExceptionInElementCtor<container_traits>();
+#endif //TBB_USE_EXCEPTIONS
+}
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
+template <bool defCtorPresent, typename Table>
+void Examine( Table c, const std::list<typename Table::value_type> &lst ) {
+    typedef typename Table::size_type SizeType;
+    typedef typename Table::value_type ValueType;
+
+    ASSERT( !c.empty() && c.size() == lst.size() && c.max_size() >= c.size(), NULL );
+
+    std::for_each( lst.begin(), lst.end(), CheckValue<defCtorPresent, Table>( c ) );
+
+    std::vector< tbb::atomic<bool> > marks( lst.size() );
+
+    TestRange<ValueType>( lst, marks ).doTestRange( c.begin(), c.end() );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    TestRange<ValueType>( lst, marks ).doTestRange( c.begin(), c.end() );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    const Table constC = c;
+    ASSERT( c.size() == constC.size(), NULL );
+
+    TestRange<ValueType>( lst, marks ).doTestRange( constC.cbegin(), constC.cend() );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    tbb::task_scheduler_init init;
+
+    tbb::parallel_for( c.range(), TestRange<ValueType>( lst, marks ) );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    tbb::parallel_for( constC.range( ), TestRange<ValueType>( lst, marks ) );
+    ASSERT( std::find( marks.begin(), marks.end(), false ) == marks.end(), NULL );
+
+    const SizeType bucket_count = c.unsafe_bucket_count();
+    ASSERT( c.unsafe_max_bucket_count() >= bucket_count, NULL );
+    SizeType counter = SizeType( 0 );
+    for ( SizeType i = 0; i < bucket_count; ++i ) {
+        const SizeType size = c.unsafe_bucket_size( i );
+        typedef typename Table::difference_type diff_type;
+        ASSERT( std::distance( c.unsafe_begin( i ), c.unsafe_end( i ) ) == diff_type( size ), NULL );
+        ASSERT( std::distance( c.unsafe_cbegin( i ), c.unsafe_cend( i ) ) == diff_type( size ), NULL );
+        ASSERT( std::distance( constC.unsafe_begin( i ), constC.unsafe_end( i ) ) == diff_type( size ), NULL );
+        ASSERT( std::distance( constC.unsafe_cbegin( i ), constC.unsafe_cend( i ) ) == diff_type( size ), NULL );
+        counter += size;
+    }
+    ASSERT( counter == lst.size(), NULL );
+
+    typedef typename Table::value_type value_type;
+    for ( typename std::list<value_type>::const_iterator it = lst.begin(); it != lst.end(); ) {
+        const SizeType index = c.unsafe_bucket( Value<Table>::key( *it ) );
+        typename std::list<value_type>::const_iterator prev_it = it++;
+        ASSERT( std::search( c.unsafe_begin( index ), c.unsafe_end( index ), prev_it, it, Harness::IsEqual() ) != c.unsafe_end( index ), NULL );
+    }
+
+    c.rehash( 2 * bucket_count );
+    ASSERT( c.unsafe_bucket_count() > bucket_count, NULL );
+
+    ASSERT( c.load_factor() <= c.max_load_factor(), NULL );
+    c.max_load_factor( 1.0f );
+
+    Table c2;
+    typename std::list<value_type>::const_iterator begin5 = lst.begin();
+    std::advance( begin5, 5 );
+    c2.insert( lst.begin(), begin5 );
+    std::for_each( lst.begin(), begin5, CheckValue<defCtorPresent, Table>( c2 ) );
+
+    c2.swap( c );
+    ASSERT( c2.size() == lst.size(), NULL );
+    ASSERT( c.size() == 5, NULL );
+    std::for_each( lst.begin(), lst.end(), CheckValue<defCtorPresent, Table>( c2 ) );
+
+    c2.clear();
+    ASSERT( c2.size() == 0, NULL );
+
+    typename Table::allocator_type a = c.get_allocator();
+    value_type *ptr = a.allocate( 1 );
+    ASSERT( ptr, NULL );
+    a.deallocate( ptr, 1 );
+
+    c.hash_function();
+    c.key_eq();
+}
+
+template <bool defCtorPresent, typename Table, typename TableDebugAlloc>
+void TypeTester( const std::list<typename Table::value_type> &lst ) {
+    ASSERT( lst.size() >= 5, "Array should have at least 5 elements" );
+    ASSERT( lst.size() <= 100, "The test has O(n^2) complexity so a big number of elements can lead long execution time" );
+    // Construct an empty table.
+    Table c1;
+    c1.insert( lst.begin(), lst.end() );
+    Examine<defCtorPresent>( c1, lst );
+#if __TBB_INITIALIZER_LISTS_PRESENT && !__TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+    // Constructor from an initializer_list.
+    typename std::list<typename Table::value_type>::const_iterator it = lst.begin();
+    Table c2( { *it++, *it++, *it++ } );
+    c2.insert( it, lst.end( ) );
+    Examine<defCtorPresent>( c2, lst );
+#endif
+    // Copying constructor.
+    Table c3( c1 );
+    Examine<defCtorPresent>( c3, lst );
+    // Construct with non-default allocator
+    TableDebugAlloc c4;
+    c4.insert( lst.begin(), lst.end() );
+    Examine<defCtorPresent>( c4, lst );
+    // Copying constructor for a container with a different allocator type.
+    TableDebugAlloc c5( c4 );
+    Examine<defCtorPresent>( c5, lst );
+    // Construction empty table with n preallocated buckets.
+    Table c6( lst.size() );
+    c6.insert( lst.begin(), lst.end() );
+    Examine<defCtorPresent>( c6, lst );
+    TableDebugAlloc c7( lst.size( ) );
+    c7.insert( lst.begin(), lst.end() );
+    Examine<defCtorPresent>( c7, lst );
+    // Construction with a copying iteration range and a given allocator instance.
+    Table c8( c1.begin(), c1.end() );
+    Examine<defCtorPresent>( c8, lst );
+    typename TableDebugAlloc::allocator_type a;
+    TableDebugAlloc c9( a );
+    c9.insert( c7.begin(), c7.end() );
+    Examine<defCtorPresent>( c9, lst );
+}
+
+namespace test_select_size_t_constant{
+    __TBB_STATIC_ASSERT((tbb::internal::select_size_t_constant<1234,1234>::value == 1234),"select_size_t_constant::value is not compile time constant");
+//    There will be two constant used in the test 32 bit and 64 bit one.
+//    The 64 bit constant should chosen so that it 32 bit halves adds up to the 32 bit one ( first constant used in the test).
+//    % ~0U is used to sum up 32bit halves of the 64 constant.  ("% ~0U" essentially adds the 32-bit "digits", like "%9" adds
+//    the digits (modulo 9) of a number in base 10).
+//    So iff select_size_t_constant is correct result of the calculation below will be same on both 32bit and 64bit platforms.
+    __TBB_STATIC_ASSERT((tbb::internal::select_size_t_constant<0x12345678U,0x091A2B3C091A2B3CULL>::value % ~0U == 0x12345678U),
+            "select_size_t_constant have chosen the wrong constant");
+}
diff --git a/src/test/test_concurrent_unordered_map.cpp b/src/test/test_concurrent_unordered_map.cpp
new file mode 100644
index 0000000..fe2e023
--- /dev/null
+++ b/src/test/test_concurrent_unordered_map.cpp
@@ -0,0 +1,327 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define __TBB_EXTRA_DEBUG 1
+#if _MSC_VER
+#define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include "tbb/concurrent_unordered_map.h"
+#if __TBB_INITIALIZER_LISTS_PRESENT
+// These operator== are used implicitly in  test_initializer_list.h.
+// For some unknown reason clang is not able to find the if they a declared after the
+// inclusion of test_initializer_list.h.
+template<typename container_type>
+bool equal_containers( container_type const& lhs, container_type const& rhs );
+template<typename Key, typename Value>
+bool operator==( tbb::concurrent_unordered_map<Key, Value> const& lhs, tbb::concurrent_unordered_map<Key, Value> const& rhs ) {
+    return equal_containers( lhs, rhs );
+}
+template<typename Key, typename Value>
+bool operator==( tbb::concurrent_unordered_multimap<Key, Value> const& lhs, tbb::concurrent_unordered_multimap<Key, Value> const& rhs ) {
+    return equal_containers( lhs, rhs );
+}
+#endif /* __TBB_INITIALIZER_LISTS_PRESENT */
+#include "test_concurrent_unordered_common.h"
+
+typedef tbb::concurrent_unordered_map<int, int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMap;
+typedef tbb::concurrent_unordered_map<int, int, degenerate_hash<int>, std::equal_to<int>, MyAllocator> MyDegenerateMap;
+typedef tbb::concurrent_unordered_map<int, check_type<int>, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyCheckedMap;
+typedef tbb::concurrent_unordered_map<intptr_t, FooWithAssign, tbb::tbb_hash<intptr_t>, std::equal_to<intptr_t>, MyAllocator> MyCheckedStateMap;
+typedef tbb::concurrent_unordered_multimap<int, int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMultiMap;
+typedef tbb::concurrent_unordered_multimap<int, int, degenerate_hash<int>, std::equal_to<int>, MyAllocator> MyDegenerateMultiMap;
+typedef tbb::concurrent_unordered_multimap<int, check_type<int>, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyCheckedMultiMap;
+
+template <>
+struct SpecialTests <MyMap> {
+    static void Test( const char *str ) {
+        MyMap cont( 0 );
+        const MyMap &ccont( cont );
+
+        // mapped_type& operator[](const key_type& k);
+        cont[1] = 2;
+
+        // bool empty() const;    
+        ASSERT( !ccont.empty( ), "Concurrent container empty after adding an element" );
+
+        // size_type size() const;
+        ASSERT( ccont.size( ) == 1, "Concurrent container size incorrect" );
+
+        ASSERT( cont[1] == 2, "Concurrent container value incorrect" );
+
+        // mapped_type& at( const key_type& k );
+        // const mapped_type& at(const key_type& k) const;
+        ASSERT( cont.at( 1 ) == 2, "Concurrent container value incorrect" );
+        ASSERT( ccont.at( 1 ) == 2, "Concurrent container value incorrect" );
+
+        // iterator find(const key_type& k);
+        MyMap::const_iterator it = cont.find( 1 );
+        ASSERT( it != cont.end( ) && Value<MyMap>::get( *(it) ) == 2, "Element with key 1 not properly found" );
+        cont.unsafe_erase( it );
+        it = cont.find( 1 );
+        ASSERT( it == cont.end( ), "Element with key 1 not properly erased" );
+
+        REMARK( "passed -- specialized %s tests\n", str );
+    }
+};
+
+void
+check_multimap(MyMultiMap &m, int *targets, int tcount, int key) {
+    std::vector<bool> vfound(tcount,false);
+    std::pair<MyMultiMap::iterator, MyMultiMap::iterator> range = m.equal_range( key );
+    for(MyMultiMap::iterator it = range.first; it != range.second; ++it) {
+        bool found = false;
+        for( int i = 0; i < tcount; ++i) {
+            if((*it).second == targets[i]) {
+                if(!vfound[i])  { // we can insert duplicate values
+                    vfound[i] = found = true;
+                    break;
+                }
+            }
+        }
+        // just in case an extra value in equal_range...
+        ASSERT(found, "extra value from equal range");
+    }
+    for(int i = 0; i < tcount; ++i) ASSERT(vfound[i], "missing value");
+}
+
+template <>
+struct SpecialTests <MyMultiMap> {
+    static void Test( const char *str ) {
+        int one_values[] = { 7, 2, 13, 23, 13 };
+        int zero_values[] = { 4, 9, 13, 29, 42, 111};
+        int n_zero_values = sizeof(zero_values) / sizeof(int);
+        int n_one_values = sizeof(one_values) / sizeof(int);
+        MyMultiMap cont( 0 );
+        const MyMultiMap &ccont( cont );
+        // mapped_type& operator[](const key_type& k);
+        cont.insert( std::make_pair( 1, one_values[0] ) );
+
+        // bool empty() const;    
+        ASSERT( !ccont.empty( ), "Concurrent container empty after adding an element" );
+
+        // size_type size() const;
+        ASSERT( ccont.size( ) == 1, "Concurrent container size incorrect" );
+        ASSERT( (*(cont.begin( ))).second == one_values[0], "Concurrent container value incorrect" );
+        ASSERT( (*(cont.equal_range( 1 )).first).second == one_values[0], "Improper value from equal_range" );
+        ASSERT( (cont.equal_range( 1 )).second == cont.end( ), "Improper iterator from equal_range" );
+
+        cont.insert( std::make_pair( 1, one_values[1] ) );
+
+        // bool empty() const;    
+        ASSERT( !ccont.empty( ), "Concurrent container empty after adding an element" );
+
+        // size_type size() const;
+        ASSERT( ccont.size( ) == 2, "Concurrent container size incorrect" );
+        check_multimap(cont, one_values, 2, 1);
+
+        // insert the other {1,x} values
+        for( int i = 2; i < n_one_values; ++i ) {
+            cont.insert( std::make_pair( 1, one_values[i] ) );
+        }
+
+        check_multimap(cont, one_values, n_one_values, 1);
+        ASSERT( (cont.equal_range( 1 )).second == cont.end( ), "Improper iterator from equal_range" );
+
+        cont.insert( std::make_pair( 0, zero_values[0] ) );
+
+        // bool empty() const;    
+        ASSERT( !ccont.empty( ), "Concurrent container empty after adding an element" );
+
+        // size_type size() const;
+        ASSERT( ccont.size( ) == (size_t)(n_one_values+1), "Concurrent container size incorrect" );
+        check_multimap(cont, one_values, n_one_values, 1);
+        check_multimap(cont, zero_values, 1, 0);
+        ASSERT( (*(cont.begin( ))).second == zero_values[0], "Concurrent container value incorrect" );
+        // insert the rest of the zero values
+        for( int i = 1; i < n_zero_values; ++i) {
+            cont.insert( std::make_pair( 0, zero_values[i] ) );
+        }
+        check_multimap(cont, one_values, n_one_values, 1);
+        check_multimap(cont, zero_values, n_zero_values, 0);
+
+        // clear, reinsert interleaved
+        cont.clear();
+        int bigger_num = ( n_one_values > n_zero_values ) ? n_one_values : n_zero_values;
+        for( int i = 0; i < bigger_num; ++i ) {
+            if(i < n_one_values) cont.insert( std::make_pair( 1, one_values[i] ) );
+            if(i < n_zero_values) cont.insert( std::make_pair( 0, zero_values[i] ) );
+        }
+        check_multimap(cont, one_values, n_one_values, 1);
+        check_multimap(cont, zero_values, n_zero_values, 0);
+
+
+        REMARK( "passed -- specialized %s tests\n", str );
+    }
+};
+
+#if __TBB_RANGE_BASED_FOR_PRESENT
+#include "test_range_based_for.h"
+// Add the similar test for concurrent_unordered_set.
+void TestRangeBasedFor() {
+    using namespace range_based_for_support_tests;
+
+    REMARK( "testing range based for loop compatibility \n" );
+    typedef tbb::concurrent_unordered_map<int, int> cu_map;
+    cu_map a_cu_map;
+    const int sequence_length = 100;
+    for ( int i = 1; i <= sequence_length; ++i ) {
+        a_cu_map.insert( cu_map::value_type( i, i ) );
+    }
+
+    ASSERT( range_based_for_accumulate( a_cu_map, pair_second_summer(), 0 ) == gauss_summ_of_int_sequence( sequence_length ), "incorrect accumulated value generated via range based for ?" );
+}
+#endif /* __TBB_RANGE_BASED_FOR_PRESENT */
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct cu_map_type : unordered_move_traits_base {
+    template<typename element_type, typename allocator_type>
+    struct apply {
+        typedef tbb::concurrent_unordered_map<element_type, element_type, tbb::tbb_hash<element_type>, std::equal_to<element_type>, allocator_type > type;
+    };
+
+    typedef FooPairIterator init_iterator_type;
+};
+
+struct cu_multimap_type : unordered_move_traits_base {
+    template<typename element_type, typename allocator_type>
+    struct apply {
+        typedef tbb::concurrent_unordered_multimap<element_type, element_type, tbb::tbb_hash<element_type>, std::equal_to<element_type>, allocator_type > type;
+    };
+
+    typedef FooPairIterator init_iterator_type;
+};
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+template <typename Table>
+class TestOperatorSquareBrackets : NoAssign {
+    typedef typename Table::value_type ValueType;
+    Table &my_c;
+    const ValueType &my_value;
+public:
+    TestOperatorSquareBrackets( Table &c, const ValueType &value ) : my_c( c ), my_value( value ) {}
+    void operator()() const {
+        ASSERT( Harness::IsEqual()(my_c[my_value.first], my_value.second), NULL );
+    }
+};
+
+template <bool defCtorPresent, typename Key, typename Element, typename Hasher, typename Equality, typename Allocator>
+void TestMapSpecificMethods( tbb::concurrent_unordered_map<Key, Element, Hasher, Equality, Allocator> &c,
+    const typename tbb::concurrent_unordered_map<Key, Element, Hasher, Equality, Allocator>::value_type &value ) {
+    typedef tbb::concurrent_unordered_map<Key, Element, Hasher, Equality, Allocator> Table;
+    CallIf<defCtorPresent>()(TestOperatorSquareBrackets<Table>( c, value ));
+    ASSERT( Harness::IsEqual()(c.at( value.first ), value.second), NULL );
+    const Table &constC = c;
+    ASSERT( Harness::IsEqual()(constC.at( value.first ), value.second), NULL );
+}
+
+template <bool defCtorPresent, typename ValueType>
+void TestTypesMap( const std::list<ValueType> &lst ) {
+    typedef typename ValueType::first_type KeyType;
+    typedef typename ValueType::second_type ElemType;
+    TypeTester< defCtorPresent, tbb::concurrent_unordered_map<KeyType, ElemType, tbb::tbb_hash<KeyType>, Harness::IsEqual>,
+        tbb::concurrent_unordered_map< KeyType, ElemType, tbb::tbb_hash<KeyType>, Harness::IsEqual, debug_allocator<ValueType> > >( lst );
+    TypeTester< defCtorPresent, tbb::concurrent_unordered_multimap<KeyType, ElemType, tbb::tbb_hash<KeyType>, Harness::IsEqual>,
+        tbb::concurrent_unordered_multimap< KeyType, ElemType, tbb::tbb_hash<KeyType>, Harness::IsEqual, debug_allocator<ValueType> > >( lst );
+}
+
+void TestTypes() {
+    const int NUMBER = 10;
+
+    std::list< std::pair<const int, int> > arrIntInt;
+    for ( int i = 0; i < NUMBER; ++i ) arrIntInt.push_back( std::make_pair( i, NUMBER - i ) );
+    TestTypesMap</*def_ctor_present = */true>( arrIntInt );
+
+    std::list< std::pair< const int, tbb::atomic<int> > > arrIntTbb;
+    for ( int i = 0; i < NUMBER; ++i ) {
+        tbb::atomic<int> b;
+        b = NUMBER - i;
+        arrIntTbb.push_back( std::make_pair( i, b ) );
+    }
+    TestTypesMap</*defCtorPresent = */true>( arrIntTbb );
+
+#if __TBB_CPP11_REFERENCE_WRAPPER_PRESENT
+    std::list< std::pair<const std::reference_wrapper<const int>, int> > arrRefInt;
+    for ( std::list< std::pair<const int, int> >::iterator it = arrIntInt.begin(); it != arrIntInt.end(); ++it )
+        arrRefInt.push_back( std::make_pair( std::reference_wrapper<const int>( it->first ), it->second ) );
+    TestTypesMap</*defCtorPresent = */true>( arrRefInt );
+
+    std::list< std::pair<const int, std::reference_wrapper<int> > > arrIntRef;
+    for ( std::list< std::pair<const int, int> >::iterator it = arrIntInt.begin(); it != arrIntInt.end(); ++it ) {
+        // Using std::make_pair below causes compilation issues with early implementations of std::reference_wrapper.
+        arrIntRef.push_back( std::pair<const int, std::reference_wrapper<int> >( it->first, std::reference_wrapper<int>( it->second ) ) );
+    }
+    TestTypesMap</*defCtorPresent = */false>( arrIntRef );
+#endif /* __TBB_CPP11_REFERENCE_WRAPPER_PRESENT */
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    std::list< std::pair< const std::shared_ptr<int>, std::shared_ptr<int> > > arrShrShr;
+    for ( int i = 0; i < NUMBER; ++i ) {
+        const int NUMBER_minus_i = NUMBER - i;
+        arrShrShr.push_back( std::make_pair( std::make_shared<int>( i ), std::make_shared<int>( NUMBER_minus_i ) ) );
+    }
+    TestTypesMap</*defCtorPresent = */true>( arrShrShr );
+
+    std::list< std::pair< const std::weak_ptr<int>, std::weak_ptr<int> > > arrWkWk;
+    std::copy( arrShrShr.begin(), arrShrShr.end(), std::back_inserter( arrWkWk ) );
+    TestTypesMap</*defCtorPresent = */true>( arrWkWk );
+#else
+    REPORT( "Known issue: C++11 smart pointer tests are skipped.\n" );
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+}
+
+int TestMain() {
+    test_machine();
+
+    test_basic<MyMap>( "concurrent unordered Map" );
+    test_basic<MyDegenerateMap>( "concurrent unordered degenerate Map" );
+    test_concurrent<MyMap>( "concurrent unordered Map" );
+    test_concurrent<MyDegenerateMap>( "concurrent unordered degenerate Map" );
+    test_basic<MyMultiMap>( "concurrent unordered MultiMap" );
+    test_basic<MyDegenerateMultiMap>( "concurrent unordered degenerate MultiMap" );
+    test_concurrent<MyMultiMap>( "concurrent unordered MultiMap" );
+    test_concurrent<MyDegenerateMultiMap>( "concurrent unordered degenerate MultiMap" );
+    test_concurrent<MyMultiMap>( "concurrent unordered MultiMap asymptotic", true );
+
+    { Check<MyCheckedMap::value_type> checkit; test_basic<MyCheckedMap>( "concurrent unordered map (checked)" ); }
+    { Check<MyCheckedMap::value_type> checkit; test_concurrent<MyCheckedMap>( "concurrent unordered map (checked)" ); }
+    test_basic<MyCheckedStateMap>("concurrent unordered map (checked state of elements)", tbb::internal::true_type());
+
+    { Check<MyCheckedMultiMap::value_type> checkit; test_basic<MyCheckedMultiMap>( "concurrent unordered MultiMap (checked)" ); }
+    { Check<MyCheckedMultiMap::value_type> checkit; test_concurrent<MyCheckedMultiMap>( "concurrent unordered MultiMap (checked)" ); }
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    TestInitList< tbb::concurrent_unordered_map<int, int>,
+                  tbb::concurrent_unordered_multimap<int, int> >( {{1,1},{2,2},{3,3},{4,4},{5,5}} );
+#endif /* __TBB_INITIALIZER_LISTS_PRESENT */
+
+#if __TBB_RANGE_BASED_FOR_PRESENT
+    TestRangeBasedFor();
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    test_rvalue_ref_support<cu_map_type>( "concurrent unordered map" );
+    test_rvalue_ref_support<cu_multimap_type>( "concurrent unordered multimap" );
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+    
+    TestTypes();
+
+    return Harness::Done;
+}
diff --git a/src/test/test_concurrent_unordered_set.cpp b/src/test/test_concurrent_unordered_set.cpp
new file mode 100644
index 0000000..454bb70
--- /dev/null
+++ b/src/test/test_concurrent_unordered_set.cpp
@@ -0,0 +1,193 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#include "harness_defs.h"
+#if !(__TBB_TEST_SECONDARY && __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN)
+
+#if _MSC_VER
+#define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#define __TBB_EXTRA_DEBUG 1
+#include "tbb/concurrent_unordered_set.h"
+#include "harness_assert.h"
+
+#if __TBB_TEST_SECONDARY
+
+#include "harness_runtime_loader.h"
+
+#else // __TBB_TEST_SECONDARY
+#if __TBB_INITIALIZER_LISTS_PRESENT
+// These operator== are used implicitly in  test_initializer_list.h.
+// For some unknown reason clang is not able to find the if they a declared after the
+// inclusion of test_initializer_list.h.
+template<typename container_type>
+bool equal_containers( container_type const& lhs, container_type const& rhs );
+template<typename T>
+bool operator==(tbb::concurrent_unordered_set<T> const& lhs, tbb::concurrent_unordered_set<T> const& rhs) {
+    return equal_containers( lhs, rhs );
+}
+
+template<typename T>
+bool operator==(tbb::concurrent_unordered_multiset<T> const& lhs, tbb::concurrent_unordered_multiset<T> const& rhs) {
+    return equal_containers( lhs, rhs );
+}
+#endif /* __TBB_INITIALIZER_LISTS_PRESENT */
+#include "test_concurrent_unordered_common.h"
+
+typedef tbb::concurrent_unordered_set<int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MySet;
+typedef tbb::concurrent_unordered_set<int, degenerate_hash<int>, std::equal_to<int>, MyAllocator> MyDegenerateSet;
+typedef tbb::concurrent_unordered_set<check_type<int>, tbb::tbb_hash<check_type<int> >, std::equal_to<check_type<int> >, MyAllocator> MyCheckedSet;
+typedef tbb::concurrent_unordered_set<FooWithAssign, tbb::tbb_hash<Foo>, std::equal_to<FooWithAssign>, MyAllocator> MyCheckedStateSet;
+typedef tbb::concurrent_unordered_multiset<int, tbb::tbb_hash<int>, std::equal_to<int>, MyAllocator> MyMultiSet;
+typedef tbb::concurrent_unordered_multiset<int, degenerate_hash<int>, std::equal_to<int>, MyAllocator> MyDegenerateMultiSet;
+typedef tbb::concurrent_unordered_multiset<check_type<int>, tbb::tbb_hash<check_type<int> >, std::equal_to<check_type<int> >, MyAllocator> MyCheckedMultiSet;
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+struct cu_set_type : unordered_move_traits_base {
+    template<typename element_type, typename allocator_type>
+    struct apply {
+        typedef tbb::concurrent_unordered_set<element_type, tbb::tbb_hash<element_type>, std::equal_to<element_type>, allocator_type > type;
+    };
+
+    typedef FooIterator init_iterator_type;
+};
+
+struct cu_multiset_type : unordered_move_traits_base {
+    template<typename element_type, typename allocator_type>
+    struct apply {
+        typedef tbb::concurrent_unordered_multiset<element_type, tbb::tbb_hash<element_type>, std::equal_to<element_type>, allocator_type > type;
+    };
+
+    typedef FooIterator init_iterator_type;
+};
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+template <bool defCtorPresent, typename value_type>
+void TestTypesSet( const std::list<value_type> &lst ) {
+    TypeTester< defCtorPresent, tbb::concurrent_unordered_set<value_type, tbb::tbb_hash<value_type>, Harness::IsEqual>,
+        tbb::concurrent_unordered_set< value_type, tbb::tbb_hash<value_type>, Harness::IsEqual, debug_allocator<value_type> > >( lst );
+    TypeTester< defCtorPresent, tbb::concurrent_unordered_multiset<value_type, tbb::tbb_hash<value_type>, Harness::IsEqual>,
+        tbb::concurrent_unordered_multiset< value_type, tbb::tbb_hash<value_type>, Harness::IsEqual, debug_allocator<value_type> > >( lst );
+}
+
+void TestTypes( ) {
+    const int NUMBER = 10;
+
+    std::list<int> arrInt;
+    for ( int i = 0; i<NUMBER; ++i ) arrInt.push_back( i );
+    TestTypesSet</*defCtorPresent = */true>( arrInt );
+
+    std::list< tbb::atomic<int> > arrTbb(NUMBER);
+    int seq = 0;
+    for ( std::list< tbb::atomic<int> >::iterator it = arrTbb.begin(); it != arrTbb.end(); ++it, ++seq ) *it = seq;
+    TestTypesSet</*defCtorPresent = */true>( arrTbb );
+
+#if __TBB_CPP11_REFERENCE_WRAPPER_PRESENT
+    std::list< std::reference_wrapper<int> > arrRef;
+    for ( std::list<int>::iterator it = arrInt.begin( ); it != arrInt.end( ); ++it )
+        arrRef.push_back( std::reference_wrapper<int>(*it) );
+    TestTypesSet</*defCtorPresent = */false>( arrRef );
+#endif /* __TBB_CPP11_REFERENCE_WRAPPER_PRESENT */
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    std::list< std::shared_ptr<int> > arrShr;
+    for ( int i = 0; i<NUMBER; ++i ) arrShr.push_back( std::make_shared<int>( i ) );
+    TestTypesSet</*defCtorPresent = */true>( arrShr );
+
+    std::list< std::weak_ptr<int> > arrWk;
+    std::copy( arrShr.begin( ), arrShr.end( ), std::back_inserter( arrWk ) );
+    TestTypesSet</*defCtorPresent = */true>( arrWk );
+#else
+    REPORT( "Known issue: C++11 smart pointer tests are skipped.\n" );
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+}
+#endif // __TBB_TEST_SECONDARY
+
+#if !__TBB_TEST_SECONDARY
+#define INITIALIZATION_TIME_TEST_NAMESPACE            initialization_time_test
+#define TEST_INITIALIZATION_TIME_OPERATIONS_NAME      test_initialization_time_operations
+void test_initialization_time_operations_external();
+#else
+#define INITIALIZATION_TIME_TEST_NAMESPACE            initialization_time_test_external
+#define TEST_INITIALIZATION_TIME_OPERATIONS_NAME      test_initialization_time_operations_external
+#endif
+
+namespace INITIALIZATION_TIME_TEST_NAMESPACE {
+    tbb::concurrent_unordered_set<int> static_init_time_set;
+    int any_non_zero_value = 89432;
+    bool static_init_time_inserted = (static_init_time_set.insert( any_non_zero_value )).second;
+    bool static_init_time_found = ((static_init_time_set.find( any_non_zero_value )) != static_init_time_set.end( ));
+}
+void TEST_INITIALIZATION_TIME_OPERATIONS_NAME( ) {
+    using namespace INITIALIZATION_TIME_TEST_NAMESPACE;
+#define LOCATION ",in function: " __TBB_STRING(TEST_INITIALIZATION_TIME_OPERATIONS_NAME)
+    ASSERT( static_init_time_inserted, "failed to insert an item during initialization of global objects" LOCATION );
+    ASSERT( static_init_time_found, "failed to find an item during initialization of global objects" LOCATION );
+
+    bool static_init_time_found_in_main = ((static_init_time_set.find( any_non_zero_value )) != static_init_time_set.end( ));
+    ASSERT( static_init_time_found_in_main, "failed to find during main() an item inserted during initialization of global objects" LOCATION );
+#undef LOCATION
+}
+
+#if !__TBB_TEST_SECONDARY
+int TestMain() {
+    test_machine( );
+
+    test_basic<MySet>( "concurrent unordered Set" );
+    test_basic<MyDegenerateSet>( "concurrent unordered degenerate Set" );
+    test_concurrent<MySet>("concurrent unordered Set");
+    test_concurrent<MyDegenerateSet>( "concurrent unordered degenerate Set" );
+    test_basic<MyMultiSet>("concurrent unordered MultiSet");
+    test_basic<MyDegenerateMultiSet>("concurrent unordered degenerate MultiSet");
+    test_concurrent<MyMultiSet>( "concurrent unordered MultiSet" );
+    test_concurrent<MyDegenerateMultiSet>("concurrent unordered degenerate MultiSet");
+    test_concurrent<MyMultiSet>( "concurrent unordered MultiSet asymptotic", true );
+
+    { Check<MyCheckedSet::value_type> checkit; test_basic<MyCheckedSet>( "concurrent_unordered_set (checked)" ); }
+    { Check<MyCheckedSet::value_type> checkit; test_concurrent<MyCheckedSet>( "concurrent unordered set (checked)" ); }
+    test_basic<MyCheckedStateSet>("concurrent unordered set (checked element state)", tbb::internal::true_type());
+
+    { Check<MyCheckedMultiSet::value_type> checkit; test_basic<MyCheckedMultiSet>("concurrent_unordered_multiset (checked)"); }
+    { Check<MyCheckedMultiSet::value_type> checkit; test_concurrent<MyCheckedMultiSet>( "concurrent unordered multiset (checked)" ); }
+
+    test_initialization_time_operations( );
+#if !__TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN
+    test_initialization_time_operations_external( );
+#else
+    REPORT( "Known issue: global objects initialization time tests skipped.\n" );
+#endif //!__TBB_CPP11_STD_PLACEHOLDERS_LINKING_BROKEN
+
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    TestInitList< tbb::concurrent_unordered_set<int>,
+                  tbb::concurrent_unordered_multiset<int> >( {1,2,3,4,5} );
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    test_rvalue_ref_support<cu_set_type>( "concurrent unordered set" );
+    test_rvalue_ref_support<cu_multiset_type>( "concurrent unordered multiset" );
+#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+
+    TestTypes();
+
+    return Harness::Done;
+}
+#endif //#if !__TBB_TEST_SECONDARY
+#endif //!(__TBB_TEST_SECONDARY && __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN)
diff --git a/src/test/test_concurrent_vector.cpp b/src/test/test_concurrent_vector.cpp
index 85d20d3..2e68944 100644
--- a/src/test/test_concurrent_vector.cpp
+++ b/src/test/test_concurrent_vector.cpp
@@ -1,144 +1,53 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#if _MSC_VER
+#define _SCL_SECURE_NO_WARNINGS
+#endif
+
 #include "tbb/concurrent_vector.h"
 #include "tbb/tbb_allocator.h"
 #include "tbb/cache_aligned_allocator.h"
 #include "tbb/tbb_exception.h"
 #include <cstdio>
 #include <cstdlib>
+#include <functional>
+#include <vector>
+#include <numeric>
 #include "harness_report.h"
 #include "harness_assert.h"
 #include "harness_allocator.h"
+#include "harness_defs.h"
+#include "test_container_move_support.h"
+
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
+    // Workaround for overzealous compiler warnings in /Wp64 mode
+    #pragma warning (push)
+    #pragma warning (disable: 4800)
+#endif
 
 #if TBB_USE_EXCEPTIONS
 static bool known_issue_verbose = false;
 #define KNOWN_ISSUE(msg) if(!known_issue_verbose) known_issue_verbose = true, REPORT(msg)
 #endif /* TBB_USE_EXCEPTIONS */
 
-tbb::atomic<long> FooCount;
-long MaxFooCount = 0;
-
-//! Problem size
-const size_t N = 500000;
-
-//! Exception for concurrent_vector
-class Foo_exception : public std::bad_alloc {
-public:
-    virtual const char *what() const throw() { return "out of Foo limit"; }
-    virtual ~Foo_exception() throw() {}
-};
-
-static const int initial_value_of_bar = 42;
-struct Foo {
-    int my_bar;
-public:
-    enum State {
-        ZeroInitialized=0,
-        DefaultInitialized=0xDEFAUL,
-        CopyInitialized=0xC0314,
-        Destroyed=0xDEADF00
-    } state;
-    bool is_valid() const {
-        return state==DefaultInitialized||state==CopyInitialized;
-    }
-    bool is_valid_or_zero() const {
-        return is_valid()||(state==ZeroInitialized && !my_bar);
-    }
-    int& zero_bar() {
-        ASSERT( is_valid_or_zero(), NULL );
-        return my_bar;
-    }
-    int& bar() {
-        ASSERT( is_valid(), NULL );
-        return my_bar;
-    }
-    int bar() const {
-        ASSERT( is_valid(), NULL );
-        return my_bar;
-    }
-    Foo( int barr = initial_value_of_bar ) {
-        my_bar = barr;
-        if(MaxFooCount && FooCount >= MaxFooCount)
-            __TBB_THROW( Foo_exception() );
-        FooCount++;
-        state = DefaultInitialized;
-    }
-    Foo( const Foo& foo ) {
-        my_bar = foo.my_bar;
-        ASSERT( foo.is_valid_or_zero(), "bad source for copy" );
-        if(MaxFooCount && FooCount >= MaxFooCount)
-            __TBB_THROW( Foo_exception() );
-        FooCount++;
-        state = CopyInitialized;
-    }
-    ~Foo() {
-        ASSERT( is_valid_or_zero(), NULL );
-        my_bar = ~initial_value_of_bar;
-        if(state != ZeroInitialized) --FooCount;
-        state = Destroyed;
-    }
-    bool operator==(const Foo &f) const { return my_bar == f.my_bar; }
-    bool operator<(const Foo &f) const { return my_bar < f.my_bar; }
-    bool is_const() const {return true;}
-    bool is_const() {return false;}
-protected:
-    char reserve[1];
-    void operator=( const Foo& ) {}
-};
-
-class FooWithAssign: public Foo {
-public:
-    void operator=( const FooWithAssign& x ) {
-        my_bar = x.my_bar;
-        ASSERT( x.is_valid_or_zero(), "bad source for assignment" );
-        ASSERT( is_valid(), NULL );
-    }
-    bool operator==(const Foo &f) const { return my_bar == f.my_bar; }
-    bool operator<(const Foo &f) const { return my_bar < f.my_bar; }
-};
-
-class FooIterator: public std::iterator<std::input_iterator_tag,FooWithAssign> {
-    int x_bar;
-public:
-    FooIterator(int x) {
-        x_bar = x;
-    }
-    FooIterator &operator++() {
-        x_bar++; return *this;
-    }
-    FooWithAssign operator*() {
-        FooWithAssign foo; foo.bar() = x_bar;
-        return foo;
-    }
-    bool operator!=(const FooIterator &i) { return x_bar != i.x_bar; }
-};
-
 inline void NextSize( int& s ) {
     if( s<=32 ) ++s;
     else s += s/10;
@@ -163,7 +72,7 @@ void TestResizeAndCopy() {
     allocator_t::init_counters();
     for( int old_size=0; old_size<=128; NextSize( old_size ) ) {
         for( int new_size=0; new_size<=1280; NextSize( new_size ) ) {
-            long count = FooCount;
+            size_t count = FooCount;
             vector_t v;
             ASSERT( count==FooCount, NULL );
             v.assign(old_size/2, Foo() );
@@ -205,7 +114,7 @@ void TestCapacity() {
     allocator_t::init_counters();
     for( size_t old_size=0; old_size<=11000; old_size=(old_size<5 ? old_size+1 : 3*old_size) ) {
         for( size_t new_size=0; new_size<=11000; new_size=(new_size<5 ? new_size+1 : 3*new_size) ) {
-            long count = FooCount;
+            size_t count = FooCount;
             {
                 vector_t v; v.reserve(old_size);
                 ASSERT( v.capacity()>=old_size, NULL );
@@ -216,11 +125,7 @@ void TestCapacity() {
                 size_t fill_size = 2*new_size;
                 for( size_t i=0; i<fill_size; ++i ) {
                     ASSERT( size_t(FooCount)==count+i, NULL );
-#if TBB_DEPRECATED
-                    size_t j = v.grow_by(1);
-#else
                     size_t j = v.grow_by(1) - v.begin();
-#endif
                     ASSERT( j==i, NULL );
                     v[j].bar() = int(~j);
                 }
@@ -351,6 +256,14 @@ void CheckIteratorComparison( V& u ) {
     }
 }
 
+template<typename Vector, typename T>
+void TestGrowToAtLeastWithSourceParameter(T const& src){
+    static const size_t vector_size = 10;
+    Vector v1(vector_size,src);
+    Vector v2;
+    v2.grow_to_at_least(vector_size,src);
+    ASSERT(v1==v2,"grow_to_at_least(vector_size,src) did not properly initialize new elements ?");
+}
 //! Test sequential iterators for vector type V.
 /** Also does timing. */
 template<typename T>
@@ -385,7 +298,7 @@ void TestSequentialFor() {
     for( int i=0; size_t(i)<u.size(); ++i ) {
         CheckConstIterator(u,i,cp);
         V::const_iterator &cpr = ++cp;
-        ASSERT( &cpr == &cp, "preincrement not returning a reference?");
+        ASSERT( &cpr == &cp, "pre-increment not returning a reference?");
     }
     tbb::tick_count t2 = tbb::tick_count::now();
     REMARK("Time for serial for:  assign time = %8.5f, check time = %8.5f\n",
@@ -397,13 +310,13 @@ void TestSequentialFor() {
     for( int i=int(u.size()); i>0; ) {
         --i;
         V::const_iterator &cpr = --cp;
-        ASSERT( &cpr == &cp, "predecrement not returning a reference?");
+        ASSERT( &cpr == &cp, "pre-decrement not returning a reference?");
         if( i>0 ) {
             typename V::const_iterator cp_old = cp--;
-            int here = (*cp_old).bar();
+            intptr_t here = (*cp_old).bar();
             ASSERT( here==u[i].bar(), NULL );
             typename V::const_iterator cp_new = cp++;
-            int prev = (*cp_new).bar();
+            intptr_t prev = (*cp_new).bar();
             ASSERT( prev==u[i-1].bar(), NULL );
         }
         CheckConstIterator(u,i,cp);
@@ -502,36 +415,49 @@ void TestSequentialFor() {
 #endif
 }
 
-static const size_t Modulus = 7;
-
-template<typename MyVector>
-class GrowToAtLeast: NoAssign {
-    MyVector& my_vector;
-public:
-    void operator()( const tbb::blocked_range<size_t>& range ) const {
-        for( size_t i=range.begin(); i!=range.end(); ++i ) {
-            size_t n = my_vector.size();
-            size_t req = (i % (2*n+1))+1;
-#if TBB_DEPRECATED
-            my_vector.grow_to_at_least(req);
-#else
-            typename MyVector::iterator p = my_vector.grow_to_at_least(req);
-            if( p-my_vector.begin() < typename MyVector::difference_type(req) )
-                ASSERT( p->state == Foo::DefaultInitialized || p->state == Foo::ZeroInitialized, NULL);
-#endif
-            ASSERT( my_vector.size()>=req, NULL );
+namespace test_grow_to_at_least_helpers {
+    template<typename MyVector >
+    class GrowToAtLeast: NoAssign {
+        typedef typename MyVector::const_reference const_reference;
+
+        const bool my_use_two_args_form ;
+        MyVector& my_vector;
+        const_reference my_init_from;
+    public:
+        void operator()( const tbb::blocked_range<size_t>& range ) const {
+            for( size_t i=range.begin(); i!=range.end(); ++i ) {
+                size_t n = my_vector.size();
+                size_t req = (i % (2*n+1))+1;
+
+                typename MyVector::iterator p;
+                Foo::State desired_state;
+                if (my_use_two_args_form){
+                    p = my_vector.grow_to_at_least(req,my_init_from);
+                    desired_state = Foo::CopyInitialized;
+                }else{
+                    p = my_vector.grow_to_at_least(req);
+                    desired_state = Foo::DefaultInitialized;
+                }
+                if( p-my_vector.begin() < typename MyVector::difference_type(req) )
+                    ASSERT( p->state == desired_state || p->state == Foo::ZeroInitialized, NULL );
+                ASSERT( my_vector.size()>=req, NULL );
+            }
         }
-    }
-    GrowToAtLeast( MyVector& vector ) : my_vector(vector) {}
-};
+        GrowToAtLeast(bool use_two_args_form, MyVector& vector, const_reference init_from )
+            : my_use_two_args_form(use_two_args_form), my_vector(vector), my_init_from(init_from) {}
+    };
+}
 
-void TestConcurrentGrowToAtLeast() {
+template<bool use_two_arg_form>
+void TestConcurrentGrowToAtLeastImpl() {
+    using namespace test_grow_to_at_least_helpers;
     typedef static_counting_allocator< tbb::zero_allocator<Foo> > MyAllocator;
     typedef tbb::concurrent_vector<Foo, MyAllocator> MyVector;
+    Foo copy_from;
     MyAllocator::init_counters();
     MyVector v(2, Foo(), MyAllocator());
     for( size_t s=1; s<1000; s*=10 ) {
-        tbb::parallel_for( tbb::blocked_range<size_t>(0,10000*s,s), GrowToAtLeast<MyVector>(v), tbb::simple_partitioner() );
+        tbb::parallel_for( tbb::blocked_range<size_t>(0,10000*s,s), GrowToAtLeast<MyVector>(use_two_arg_form, v, copy_from), tbb::simple_partitioner() );
     }
     v.clear();
     ASSERT( 0 == v.get_allocator().frees, NULL);
@@ -544,94 +470,271 @@ void TestConcurrentGrowToAtLeast() {
     ASSERT( allocations == frees, NULL);
 }
 
+void TestConcurrentGrowToAtLeast() {
+    TestConcurrentGrowToAtLeastImpl<false>();
+    TestConcurrentGrowToAtLeastImpl<true>();
+}
+
+struct grain_map: NoAssign {
+    enum grow_method_enum {
+        grow_by_range = 1,
+        grow_by_default,
+        grow_by_copy,
+        grow_by_init_list,
+        push_back,
+        push_back_move,
+        emplace_back,
+        last_method
+    };
+
+    struct range_part {
+        size_t number_of_parts;
+        grain_map::grow_method_enum method;
+        bool distribute;
+        Foo::State expected_element_state;
+    };
+
+    const std::vector<range_part> distributed;
+    const std::vector<range_part> batched;
+    const size_t total_number_of_parts;
+
+    grain_map(const range_part* begin, const range_part* end)
+    : distributed(separate(begin,end, &distributed::is_not))
+    , batched(separate(begin,end, &distributed::is_yes))
+    , total_number_of_parts(std::accumulate(begin, end, (size_t)0, &sum_number_of_parts::sum))
+    {}
+
+private:
+    struct sum_number_of_parts{
+        static size_t sum(size_t accumulator, grain_map::range_part const& rp){ return accumulator + rp.number_of_parts;}
+    };
+
+    template <typename functor_t>
+    static std::vector<range_part> separate(const range_part* begin, const range_part* end, functor_t f){
+        std::vector<range_part> part;
+        part.reserve(std::distance(begin,end));
+        //copy all that false==f(*it)
+        std::remove_copy_if(begin, end, std::back_inserter(part), f);
+
+        return part;
+    }
+
+    struct distributed {
+        static bool is_not(range_part const& rp){ return !rp.distribute;}
+        static bool is_yes(range_part const& rp){ return rp.distribute;}
+    };
+};
+
 //! Test concurrent invocations of method concurrent_vector::grow_by
 template<typename MyVector>
 class GrowBy: NoAssign {
     MyVector& my_vector;
+    const grain_map& my_grain_map;
+    size_t my_part_weight;
 public:
-    void operator()( const tbb::blocked_range<int>& range ) const {
+    void operator()( const tbb::blocked_range<size_t>& range ) const {
         ASSERT( range.begin() < range.end(), NULL );
-#if TBB_DEPRECATED
-        for( int i=range.begin(); i!=range.end(); ++i )
-#else
-        int i = range.begin(), h = (range.end() - i) / 2;
-        typename MyVector::iterator s = my_vector.grow_by(h);
-        for( h += i; i < h; ++i, ++s )
-            s->bar() = i;
-        for(; i!=range.end(); ++i )
-#endif
-        {
-            if( i&1 ) {
-#if TBB_DEPRECATED
-                typename MyVector::reference element = my_vector[my_vector.grow_by(1)];
-                element.bar() = i;
-#else
-                my_vector.grow_by(1)->bar() = i;
-#endif
-            } else {
-                typename MyVector::value_type f;
-                f.bar() = i;
-#if TBB_DEPRECATED
-                size_t r;
-#else
-                typename MyVector::iterator r;
-#endif
-                if( i&2 )
-                    r = my_vector.push_back( f );
-                else
-                    r = my_vector.grow_by(1, f);
-#if TBB_DEPRECATED
-                ASSERT( my_vector[r].bar()==i, NULL );
-#else
-                ASSERT( r->bar()==i, NULL );
+
+        size_t current_adding_index_in_cvector = range.begin();
+
+        for(size_t index=0; index < my_grain_map.batched.size(); ++index){
+            const grain_map::range_part& batch_part = my_grain_map.batched[index];
+            const size_t number_of_items_to_add = batch_part.number_of_parts * my_part_weight;
+            const size_t end = current_adding_index_in_cvector + number_of_items_to_add;
+
+            switch(batch_part.method){
+            case grain_map::grow_by_range : {
+                    my_vector.grow_by(FooIterator(current_adding_index_in_cvector),FooIterator(end));
+                } break;
+            case grain_map::grow_by_default : {
+                    typename MyVector::iterator const s = my_vector.grow_by(number_of_items_to_add);
+                    for( size_t k = 0; k < number_of_items_to_add; ++k )
+                        s[k].bar() = current_adding_index_in_cvector + k;
+                } break;
+#if __TBB_INITIALIZER_LISTS_PRESENT
+            case grain_map::grow_by_init_list : {
+                    FooIterator curr(current_adding_index_in_cvector);
+                    for ( size_t k = 0; k < number_of_items_to_add; ++k ) {
+                        if ( k + 4 < number_of_items_to_add ) {
+                            my_vector.grow_by( { *curr++, *curr++, *curr++, *curr++, *curr++ } );
+                            k += 4;
+                        } else {
+                            my_vector.grow_by( { *curr++ } );
+                        }
+                    }
+                    ASSERT( curr == FooIterator(end), NULL );
+                } break;
 #endif
+            default : { ASSERT(false, "using unimplemented method of batch add in ConcurrentGrow test.");} break;
+            };
+
+            current_adding_index_in_cvector = end;
+        }
+
+        std::vector<size_t> items_left_to_add(my_grain_map.distributed.size());
+        for (size_t i=0; i<my_grain_map.distributed.size(); ++i ){
+            items_left_to_add[i] = my_grain_map.distributed[i].number_of_parts * my_part_weight;
+        }
+
+        for (;current_adding_index_in_cvector < range.end(); ++current_adding_index_in_cvector){
+            size_t method_index = current_adding_index_in_cvector % my_grain_map.distributed.size();
+
+            if (! items_left_to_add[method_index]) {
+                struct not_zero{
+                    static bool is(size_t items_to_add){ return items_to_add;}
+                };
+                method_index = std::distance(items_left_to_add.begin(), std::find_if(items_left_to_add.begin(), items_left_to_add.end(), &not_zero::is));
+                ASSERT(method_index < my_grain_map.distributed.size(), "incorrect test setup - wrong expected distribution: left free space but no elements to add?");
+            };
+
+            ASSERT(items_left_to_add[method_index], "logic error ?");
+            const grain_map::range_part& distributed_part = my_grain_map.distributed[method_index];
+
+            typename MyVector::iterator r;
+            typename MyVector::value_type source;
+            source.bar() = current_adding_index_in_cvector;
+
+            switch(distributed_part.method){
+            case grain_map::grow_by_default : {
+                    (r = my_vector.grow_by(1))->bar() = current_adding_index_in_cvector;
+                } break;
+            case grain_map::grow_by_copy : {
+                    r = my_vector.grow_by(1, source);
+                } break;
+            case grain_map::push_back : {
+                    r = my_vector.push_back(source);
+                } break;
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+            case grain_map::push_back_move : {
+                    r = my_vector.push_back(std::move(source));
+                } break;
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+            case grain_map::emplace_back : {
+                    r = my_vector.emplace_back(current_adding_index_in_cvector);
+                } break;
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
+            default : { ASSERT(false, "using unimplemented method of batch add in ConcurrentGrow test.");} break;
+            };
+
+            ASSERT( static_cast<size_t>(r->bar()) == current_adding_index_in_cvector, NULL );
             }
         }
+
+    GrowBy( MyVector& vector, const grain_map& m, size_t part_weight )
+    : my_vector(vector)
+    , my_grain_map(m)
+    , my_part_weight(part_weight)
+    {
     }
-    GrowBy( MyVector& vector ) : my_vector(vector) {}
 };
 
-//! Test concurrent invocations of method concurrent_vector::grow_by
+const grain_map::range_part concurrent_grow_single_range_map [] = {
+//  number_of_parts,         method,             distribute,   expected_element_state
+        {3,           grain_map::grow_by_range,     false,
+                                                            #if  __TBB_CPP11_RVALUE_REF_PRESENT
+                                                                Foo::MoveInitialized
+                                                            #else
+                                                                Foo::CopyInitialized
+                                                            #endif
+        },
+#if __TBB_INITIALIZER_LISTS_PRESENT && !__TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+        {1,           grain_map::grow_by_init_list, false,   Foo::CopyInitialized},
+#endif
+        {2,           grain_map::grow_by_default,   false,   Foo::DefaultInitialized},
+        {1,           grain_map::grow_by_default,   true,    Foo::DefaultInitialized},
+        {1,           grain_map::grow_by_copy,      true,    Foo::CopyInitialized},
+        {1,           grain_map::push_back,         true,    Foo::CopyInitialized},
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        {1,           grain_map::push_back_move,    true,    Foo::MoveInitialized},
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+        {1,           grain_map::emplace_back,      true,    Foo::DirectInitialized},
+#endif // __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+};
+
+//! Test concurrent invocations of grow methods
 void TestConcurrentGrowBy( int nthread ) {
 
     typedef static_counting_allocator<debug_allocator<Foo> > MyAllocator;
     typedef tbb::concurrent_vector<Foo, MyAllocator> MyVector;
 
+#if __TBB_INITIALIZER_LISTS_PRESENT && __TBB_CPP11_INIT_LIST_TEMP_OBJS_LIFETIME_BROKEN
+    static bool is_reported = false;
+    if ( !is_reported ) {
+        REPORT( "Known issue: concurrent tests of grow_by(std::initializer_list) are skipped.\n" );
+        is_reported = true;
+    }
+#endif
+
     MyAllocator::init_counters();
     {
-        int m = 100000; MyAllocator a;
+        grain_map m(concurrent_grow_single_range_map, Harness::end(concurrent_grow_single_range_map));
+
+        static const size_t desired_grain_size = 100;
+
+        static const size_t part_weight = desired_grain_size / m.total_number_of_parts;
+        static const size_t grain_size = part_weight * m.total_number_of_parts;
+        static const size_t number_of_grains = 8; //this should be (power of two) in order to get minimal ranges equal to grain_size
+        static const size_t range_size = grain_size * number_of_grains;
+
+        MyAllocator a;
         MyVector v( a );
-        tbb::parallel_for( tbb::blocked_range<int>(0,m,100), GrowBy<MyVector>(v), tbb::simple_partitioner() );
-        ASSERT( v.size()==size_t(m), NULL );
+        tbb::parallel_for( tbb::blocked_range<size_t>(0,range_size,grain_size), GrowBy<MyVector>(v, m, part_weight), tbb::simple_partitioner() );
+        ASSERT( v.size()==size_t(range_size), NULL );
 
         // Verify that v is a permutation of 0..m
-        int inversions = 0, def_inits = 0, copy_inits = 0;
-        bool* found = new bool[m];
-        memset( found, 0, m );
-        for( int i=0; i<m; ++i ) {
+        size_t inversions = 0, direct_inits = 0, def_inits = 0, copy_inits = 0, move_inits = 0;
+        std::vector<bool> found(range_size, 0);
+        for( size_t i=0; i<range_size; ++i ) {
             if( v[i].state == Foo::DefaultInitialized ) ++def_inits;
+            else if( v[i].state == Foo::DirectInitialized ) ++direct_inits;
             else if( v[i].state == Foo::CopyInitialized ) ++copy_inits;
+            else if( v[i].state == Foo::MoveInitialized ) ++move_inits;
             else {
                 REMARK("i: %d ", i);
                 ASSERT( false, "v[i] seems not initialized");
             }
-            int index = v[i].bar();
+            intptr_t index = v[i].bar();
             ASSERT( !found[index], NULL );
             found[index] = true;
             if( i>0 )
                 inversions += v[i].bar()<v[i-1].bar();
         }
-        for( int i=0; i<m; ++i ) {
+        for( size_t i=0; i<range_size; ++i ) {
             ASSERT( found[i], NULL );
-            ASSERT( nthread>1 || v[i].bar()==i, "sequential execution is wrong" );
+            ASSERT( nthread>1 || v[i].bar() == static_cast<intptr_t>(i), "sequential execution is wrong" );
+        }
+
+        REMARK("Initialization by default constructor: %d, by copy: %d, by move: %d\n", def_inits, copy_inits, move_inits);
+
+        size_t expected_direct_inits = 0, expected_def_inits = 0, expected_copy_inits = 0, expected_move_inits = 0;
+        for (size_t i=0; i<Harness::array_length(concurrent_grow_single_range_map); ++i){
+            const grain_map::range_part& rp =concurrent_grow_single_range_map[i];
+            switch (rp.expected_element_state){
+            case Foo::DefaultInitialized: { expected_def_inits += rp.number_of_parts ; } break;
+            case Foo::DirectInitialized:  { expected_direct_inits += rp.number_of_parts ;} break;
+            case Foo::MoveInitialized:    { expected_move_inits += rp.number_of_parts ;} break;
+            case Foo::CopyInitialized:    { expected_copy_inits += rp.number_of_parts ;} break;
+            default: {ASSERT(false, "unexpected expected state");}break;
+            };
         }
-        delete[] found;
-        REMARK("Initialization by default constructor: %d, by copy: %d\n", def_inits, copy_inits);
-        ASSERT( def_inits >= m/2, NULL );
-        ASSERT( copy_inits >= m/4, NULL );
-        if( nthread>1 && inversions<m/20 )
+
+        expected_def_inits    *= part_weight * number_of_grains;
+        expected_move_inits   *= part_weight * number_of_grains;
+        expected_copy_inits   *= part_weight * number_of_grains;
+        expected_direct_inits *= part_weight * number_of_grains;
+
+        ASSERT( def_inits == expected_def_inits , NULL);
+        ASSERT( copy_inits == expected_copy_inits , NULL);
+        ASSERT( move_inits == expected_move_inits , NULL);
+        ASSERT( direct_inits == expected_direct_inits , NULL);
+
+        if( nthread>1 && inversions<range_size/20 )
             REPORT("Warning: not much concurrency in TestConcurrentGrowBy (%d inversions)\n", inversions);
     }
+    //TODO: factor this into separate thing, as it seems to used in big number of tests
     size_t items_allocated = MyAllocator::items_allocated,
            items_freed = MyAllocator::items_freed;
     size_t allocations = MyAllocator::allocations,
@@ -639,26 +742,54 @@ void TestConcurrentGrowBy( int nthread ) {
     ASSERT( items_allocated == items_freed, NULL);
     ASSERT( allocations == frees, NULL);
 }
+
+template <typename Vector>
+void test_grow_by_empty_range( Vector &v, typename Vector::value_type* range_begin_end ) {
+    const Vector v_copy = v;
+    ASSERT( v.grow_by( range_begin_end, range_begin_end ) == v.end(), "grow_by(empty_range) returned a wrong iterator." );
+    ASSERT( v == v_copy, "grow_by(empty_range) has changed the vector." );
+}
+
+void TestSerialGrowByRange( bool fragmented_vector ) {
+    tbb::concurrent_vector<int> v;
+    if ( fragmented_vector ) {
+        v.reserve( 1 );
+    }
+    int init_range[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+    ASSERT( v.grow_by( init_range, init_range + (Harness::array_length( init_range )) ) == v.begin(), "grow_by(I,I) returned a wrong iterator." );
+    ASSERT( std::equal( v.begin(), v.end(), init_range ), "grow_by(I,I) did not properly copied all elements ?" );
+    test_grow_by_empty_range( v, init_range );
+    test_grow_by_empty_range( v, (int*)NULL );
+}
+
 //TODO: move this to more appropriate place, smth like test_harness.cpp
 void TestArrayLength(){
-    int five_elementh_array[5] = {0};
-    ASSERT(Harness::array_length(five_elementh_array)==5,"array_length failed to determine length of non empty non dynamic array");
+    int five_element_array[5] = {0};
+    ASSERT(Harness::array_length(five_element_array)==5,"array_length failed to determine length of non empty non dynamic array");
 }
 
 #if __TBB_INITIALIZER_LISTS_PRESENT
 #include "test_initializer_list.h"
 
-void TestInitList(){
-    REMARK("testing initializer_list methods \n");
+struct test_grow_by {
+    template<typename container_type, typename element_type>
+    static void do_test( std::initializer_list<element_type> const& il, container_type const& expected ) {
+        container_type vd;
+        vd.grow_by( il );
+        ASSERT( vd == expected, "grow_by with an initializer list failed" );
+    }
+};
+
+void TestInitList() {
+    REMARK( "testing initializer_list methods \n" );
     using namespace initializer_list_support_tests;
-    TestInitListSupport<tbb::concurrent_vector<char> >({1,2,3,4,5});
-    TestInitListSupport<tbb::concurrent_vector<int> >({});
+    TestInitListSupport<tbb::concurrent_vector<char>, test_grow_by>( { 1, 2, 3, 4, 5 } );
+    TestInitListSupport<tbb::concurrent_vector<int>, test_grow_by>( {} );
 }
 #endif //if __TBB_INITIALIZER_LISTS_PRESENT
 
 #if __TBB_RANGE_BASED_FOR_PRESENT
 #include "test_range_based_for.h"
-#include <functional>
 
 void TestRangeBasedFor(){
     using namespace range_based_for_support_tests;
@@ -676,6 +807,51 @@ void TestRangeBasedFor(){
 }
 #endif //if __TBB_RANGE_BASED_FOR_PRESENT
 
+#if TBB_USE_EXCEPTIONS
+#endif //TBB_USE_EXCEPTIONS
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+namespace move_semantics_helpers{
+    struct move_only_type:NoCopy{
+        const int* my_pointer;
+        move_only_type(move_only_type && other): my_pointer(other.my_pointer){other.my_pointer=NULL;}
+        explicit move_only_type(const int* value): my_pointer(value) {}
+    };
+}
+
+void TestPushBackMoveOnlyContainee(){
+    using namespace move_semantics_helpers;
+    typedef tbb::concurrent_vector<move_only_type > vector_t;
+    vector_t v;
+    static const int magic_number =7;
+    move_only_type src(&magic_number);
+    v.push_back(std::move(src));
+    ASSERT(v[0].my_pointer == &magic_number,"item was incorrectly moved during push_back?");
+    ASSERT(src.my_pointer == NULL,"item was incorrectly moved during push_back?");
+}
+
+namespace emplace_helpers{
+    struct wrapper_type:NoCopy{
+        int value1;
+        int value2;
+        explicit wrapper_type(int v1, int v2) : value1 (v1), value2(v2) {}
+        friend bool operator==(const wrapper_type& lhs, const wrapper_type& rhs){
+            return (lhs.value1 == rhs.value1) && (lhs.value2 == rhs.value2 );
+        }
+    };
+}
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+//TODO: extend the test to number of types e.g. std::string
+void TestEmplaceBack(){
+    using namespace emplace_helpers;
+    typedef tbb::concurrent_vector<wrapper_type > vector_t;
+    vector_t v;
+    v.emplace_back(1,2);
+    ASSERT(v[0] == wrapper_type(1,2),"incorrectly in-place constructed item during emplace_back?");
+}
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
 //! Test the assignment operator and swap
 void TestAssign() {
     typedef tbb::concurrent_vector<FooWithAssign, local_counting_allocator<std::allocator<FooWithAssign>, size_t > > vector_t;
@@ -715,6 +891,76 @@ void TestAssign() {
     }
 }
 
+struct c_vector_type : default_container_traits {
+    template<typename element_type, typename allocator_type>
+    struct apply{
+        typedef tbb::concurrent_vector<element_type,  allocator_type > type;
+    };
+
+    typedef FooIterator init_iterator_type;
+    enum{ expected_number_of_items_to_allocate_for_steal_move = 0 };
+
+    template<typename element_type, typename allocator_type, typename iterator>
+    static bool equal(tbb::concurrent_vector<element_type, allocator_type > const& c, iterator begin, iterator end){
+        bool equal_sizes = (size_t)std::distance(begin, end) == c.size();
+        return  equal_sizes && std::equal(c.begin(), c.end(), begin);
+    }
+};
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+void TestSerialGrowByWithMoveIterators(){
+    typedef default_stateful_fixture_make_helper<c_vector_type>::type fixture_t;
+    typedef fixture_t::container_t vector_t;
+
+    fixture_t fixture("TestSerialGrowByWithMoveIterators");
+
+    vector_t dst(fixture.dst_allocator);
+    dst.grow_by(std::make_move_iterator(fixture.source.begin()), std::make_move_iterator(fixture.source.end()));
+
+    fixture.verify_content_deep_moved(dst);
+}
+
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+namespace test_move_in_shrink_to_fit_helpers {
+    struct dummy : Harness::StateTrackable<>{
+        int i;
+        dummy(int an_i) __TBB_NOTHROW : Harness::StateTrackable<>(0), i(an_i)  {};
+#if __TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_BROKEN
+        dummy(dummy &&src) __TBB_NOTHROW : Harness::StateTrackable<>(std::move(src)), i(src.i)  {};
+    //somehow magically this declaration make std::is_nothrow_move_constructible<pod>::value to works correctly on icc14+msvc2013
+        ~dummy() __TBB_NOTHROW {};
+#endif //__TBB_CPP11_IMPLICIT_MOVE_MEMBERS_GENERATION_BROKEN
+        friend bool operator== ( const dummy & lhs, const dummy & rhs){ return lhs.i == rhs.i; }
+    };
+}
+void TestSerialMoveInShrinkToFit(){
+    const char* test_name = "TestSerialMoveInShrinkToFit";
+    REMARK("running %s \n", test_name);
+    using test_move_in_shrink_to_fit_helpers::dummy;
+
+    __TBB_STATIC_ASSERT(std::is_nothrow_move_constructible<dummy>::value,"incorrect test setup or broken configuration?");
+    {
+        dummy src(0);
+        ASSERT_IN_TEST(is_state<Harness::StateTrackableBase::MoveInitialized>(dummy(std::move_if_noexcept(src))),"broken configuration ?", test_name);
+    }
+    static const size_t sequence_size = 15;
+    typedef  tbb::concurrent_vector<dummy> c_vector_t;
+    std::vector<dummy> source(sequence_size, 0);
+    std::generate_n(source.begin(), source.size(), std::rand);
+
+    c_vector_t c_vector;
+    c_vector.reserve(1); //make it fragmented
+
+    c_vector.assign(source.begin(), source.end());
+    memory_locations c_vector_before_shrink(c_vector);
+    c_vector.shrink_to_fit();
+
+    ASSERT_IN_TEST(c_vector_before_shrink.content_location_changed(c_vector), "incorrect test setup? shrink_to_fit should cause moving elements to other memory locations while it is not", test_name);
+    ASSERT_IN_TEST(all_of(c_vector, is_state_f<Harness::StateTrackableBase::MoveInitialized>()), "container did not move construct some elements?", test_name);
+    ASSERT_IN_TEST(c_vector == c_vector_t(source.begin(),source.end()),"",test_name);
+}
+#endif //__TBB_MOVE_IF_NOEXCEPT_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 // Test the comparison operators
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
     // Suppress "C++ exception handler used, but unwind semantics are not enabled" warning in STL headers
@@ -776,11 +1022,7 @@ public:
     void operator()( const tbb::blocked_range<Number>& r ) const {
         for( Number i=r.begin(); i!=r.end(); ++i ) {
             if( i%2 && is_prime(i) ) {
-#if TBB_DEPRECATED
-                Primes[Primes.grow_by(1)] = i;
-#else
                 Primes.push_back( i );
-#endif
             }
         }
     }
@@ -835,6 +1077,62 @@ void TestSort() {
 }
 
 #if TBB_USE_EXCEPTIONS
+
+template<typename c_vector>
+size_t get_early_size(c_vector & v){
+      return v.grow_by(0) - v.begin();
+}
+
+void verify_c_vector_size(size_t size, size_t capacity, size_t early_size, const char * const test_name){
+    ASSERT_IN_TEST( size <= capacity, "", test_name);
+    ASSERT_IN_TEST( early_size >= size, "", test_name);
+}
+
+template<typename c_vector_t>
+void verify_c_vector_size(c_vector_t & c_v, const char * const test_name){
+    verify_c_vector_size(c_v.size(), c_v.capacity(), get_early_size(c_v), test_name);
+}
+
+void verify_c_vector_capacity_is_below(size_t capacity, size_t high, const char * const test_name){
+    ASSERT_IN_TEST(capacity > 0, "unexpected capacity", test_name);
+    ASSERT_IN_TEST(capacity < high, "unexpected capacity", test_name);
+}
+
+template<typename vector_t>
+void verify_last_segment_allocation_failed(vector_t const& victim, const char* const test_name){
+    ASSERT_THROWS_IN_TEST(victim.at(victim.size()), std::range_error, "",test_name );
+}
+
+template<typename vector_t>
+void verify_assignment_operator_throws_bad_last_alloc(vector_t & victim, const char* const test_name){
+    vector_t copy_of_victim(victim, victim.get_allocator());
+    ASSERT_THROWS_IN_TEST(victim = copy_of_victim, tbb::bad_last_alloc, "", test_name);
+}
+
+template<typename vector_t>
+void verify_copy_and_assign_from_produce_the_same(vector_t const& victim, const char* const test_name){
+    //TODO: remove explicit copy of allocator when full support of C++11 allocator_traits in concurrent_vector is present
+    vector_t copy_of_victim(victim, victim.get_allocator());
+    ASSERT_IN_TEST(copy_of_victim == victim, "copy doesn't match original", test_name);
+    vector_t copy_of_victim2(10, victim[0], victim.get_allocator());
+    copy_of_victim2 = victim;
+    ASSERT_IN_TEST(copy_of_victim == copy_of_victim2, "assignment doesn't match copying", test_name);
+}
+
+template<typename allocator_t>
+void verify_vector_partially_copied(
+        tbb::concurrent_vector<FooWithAssign, allocator_t> const& victim, size_t planned_victim_size,
+        tbb::concurrent_vector<FooWithAssign, allocator_t> const& src,  bool is_memory_allocation_failure ,const char* const test_name)
+{
+    if (is_memory_allocation_failure) { // allocator generated exception
+        typedef tbb::concurrent_vector<FooWithAssign, allocator_t> vector_t;
+        ASSERT_IN_TEST( victim == vector_t(src.begin(), src.begin() + victim.size(), src.get_allocator()), "failed to properly copy of source ?", test_name );
+    }else{
+        ASSERT_IN_TEST( std::equal(victim.begin(), victim.begin() + planned_victim_size, src.begin()), "failed to properly copy items before the exception?", test_name );
+        ASSERT_IN_TEST( ::all_of( victim.begin() + planned_victim_size, victim.end(), is_state_f<Foo::ZeroInitialized>() ), "failed to zero-initialize items left not constructed after the exception?", test_name );
+    }
+}
+
 //------------------------------------------------------------------------
 // Test exceptions safety (from allocator and items constructors)
 //------------------------------------------------------------------------
@@ -844,7 +1142,7 @@ void TestExceptions() {
 
     enum methods {
         zero_method = 0,
-        ctor_copy, ctor_size, assign_nt, assign_ir, op_equ, reserve, compact, grow,
+        ctor_copy, ctor_size, assign_nt, assign_ir, reserve, compact,
         all_methods
     };
     ASSERT( !FooCount, NULL );
@@ -855,7 +1153,8 @@ void TestExceptions() {
         for(int t = 0; t < 2; ++t) // exception type
         for(int m = zero_method+1; m < all_methods; ++m)
         {
-            ASSERT( FooCount == N, "Previous iteration miss some Foo's de-/initialization" );
+            track_foo_count<__LINE__> check_all_foo_destroyed_on_exit("TestExceptions");
+            track_allocator_memory<allocator_t> verify_no_leak_at_exit("TestExceptions");
             allocator_t::init_counters();
             if(t) MaxFooCount = FooCount + N/4;
             else allocator_t::set_limits(N/4);
@@ -875,9 +1174,6 @@ void TestExceptions() {
                 case assign_ir: {
                         victim.assign(FooIterator(0), FooIterator(N));
                     } break;
-                case op_equ: {
-                        victim.reserve(2); victim = src; // fragmented assignment
-                    } break;
                 case reserve: {
                         try {
                             victim.reserve(victim.max_size()+1);
@@ -893,19 +1189,6 @@ void TestExceptions() {
                         if(t) MaxFooCount = FooCount + 10; else allocator_t::set_limits(1, false); // block any allocation, check NULL return from allocator
                         victim.shrink_to_fit(); // should start defragmenting first segment
                     } break;
-                case grow: {
-                        tbb::task_scheduler_init init(2);
-                        if(t) MaxFooCount = FooCount + 31; // these numbers help to reproduce the live lock for versions < TBB2.2
-                        try {
-                            tbb::parallel_for( tbb::blocked_range<int>(0, N, 70), GrowBy<vector_t>(victim) );
-                        } catch(...) {
-#if TBB_USE_CAPTURED_EXCEPTION
-                            throw tbb::bad_last_alloc();
-#else
-                            throw;
-#endif
-                        }
-                    } break;
                 default:;
                 }
                 if(!t || m != reserve) ASSERT(false, "should throw an exception");
@@ -913,13 +1196,11 @@ void TestExceptions() {
                 allocator_t::set_limits(); MaxFooCount = 0;
                 size_t capacity = victim.capacity();
                 size_t size = victim.size();
-#if TBB_DEPRECATED
-                size_t req_size = victim.grow_by(0);
-#else
-                size_t req_size = victim.grow_by(0) - victim.begin();
-#endif
-                ASSERT( size <= capacity, NULL);
-                ASSERT( req_size >= size, NULL);
+
+                size_t req_size = get_early_size(victim);
+
+                verify_c_vector_size(size, capacity, req_size, "TestExceptions");
+
                 switch(m) {
                 case reserve:
                     if(t) ASSERT(false, NULL);
@@ -940,45 +1221,6 @@ void TestExceptions() {
                         ASSERT(size_t(i) == size, NULL);
                         break;
                     }
-                case grow:
-                case op_equ:
-                    if(!t) {
-                        ASSERT(capacity > 0, NULL);
-                        ASSERT(capacity < N, "unexpected capacity");
-                    }
-                    {
-                        vector_t copy_of_victim(victim);
-                        ASSERT(copy_of_victim.size() > 0, NULL);
-                        for(int i = 0; ; ++i) {
-                            try {
-                                FooWithAssign &foo = victim.at(i);
-                                if( !foo.is_valid_or_zero() ) {
-                                    std::printf("i: %d size: %u req_size: %u  state: %d\n", i, unsigned(size), unsigned(req_size), foo.state);
-                                }
-                                int bar = foo.zero_bar();
-                                if(m != grow) ASSERT( bar == i || (t && bar == 0), NULL);
-                                if(size_t(i) < copy_of_victim.size()) ASSERT( copy_of_victim[i].bar() == bar, NULL);
-                            } catch(std::range_error &) { // skip broken segment
-                                ASSERT( size_t(i) < req_size, NULL );
-                                if(m == op_equ) break;
-                            } catch(std::out_of_range &){
-                                ASSERT( i > 0, NULL ); break;
-                            } catch(...) {
-                                KNOWN_ISSUE("ERROR: unrecognized exception - known compiler issue\n"); break;
-                            }
-                        }
-                        vector_t copy_of_victim2(10); copy_of_victim2 = victim;
-                        ASSERT(copy_of_victim == copy_of_victim2, "assignment doesn't match copying");
-                        if(m == op_equ) {
-                            try {
-                                victim = copy_of_victim2;
-                            } catch(tbb::bad_last_alloc &) { break;
-                            } catch(...) {
-                                KNOWN_ISSUE("ERROR: unrecognized exception - known compiler issue\n"); break;
-                            }
-                            ASSERT(t, NULL);
-                        }
-                    } break;
                 case compact:
                     ASSERT(capacity > 0, "unexpected capacity");
                     ASSERT(victim == src, "shrink_to_fit() is broken");
@@ -993,6 +1235,239 @@ void TestExceptions() {
         ASSERT(false, "unexpected exception");
     }
 }
+
+//TODO: split into two separate tests
+//TODO: remove code duplication in exception safety tests
+void TestExceptionSafetyGuaranteesForAssignOperator(){
+    //TODO: use __FUNCTION__ for test name
+    const char* const test_name = "TestExceptionSafetyGuaranteesForAssignOperator";
+    typedef static_counting_allocator<debug_allocator<FooWithAssign>, std::size_t> allocator_t;
+    typedef tbb::concurrent_vector<FooWithAssign, allocator_t> vector_t;
+
+    track_foo_count<__LINE__> check_all_foo_destroyed_on_exit(test_name);
+    track_allocator_memory<allocator_t> verify_no_leak_at_exit(test_name);
+
+    vector_t src(FooIterator(0), FooIterator(N)); // original data
+
+    const size_t planned_victim_size = N/4;
+
+    for(int t = 0; t < 2; ++t) {// exception type
+        vector_t victim;
+        victim.reserve(2); // get fragmented assignment
+
+        ASSERT_THROWS_IN_TEST(
+            {
+                limit_foo_count_in_scope foo_limit(FooCount + planned_victim_size, t);
+                limit_allocated_items_in_scope<allocator_t> allocator_limit(allocator_t::items_allocated + planned_victim_size, !t);
+
+                victim = src; // fragmented assignment
+            },
+            std::bad_alloc, "", test_name
+        );
+
+        verify_c_vector_size(victim, test_name);
+
+        if(!t) {
+            verify_c_vector_capacity_is_below(victim.capacity(), N, test_name);
+        }
+
+        verify_vector_partially_copied(victim, planned_victim_size, src, !t, test_name);
+        verify_last_segment_allocation_failed(victim, test_name);
+        verify_copy_and_assign_from_produce_the_same(victim, test_name);
+        verify_assignment_operator_throws_bad_last_alloc(victim, test_name);
+    }
+}
+//TODO: split into two separate tests
+void TestExceptionSafetyGuaranteesForConcurrentGrow(){
+    const char* const test_name = "TestExceptionSafetyGuaranteesForConcurrentGrow";
+    typedef static_counting_allocator<debug_allocator<FooWithAssign>, std::size_t> allocator_t;
+    typedef tbb::concurrent_vector<FooWithAssign, allocator_t> vector_t;
+
+    track_foo_count<__LINE__> check_all_foo_destroyed_on_exit(test_name);
+    track_allocator_memory<allocator_t> verify_no_leak_at_exit(test_name);
+
+    vector_t src(FooIterator(0), FooIterator(N)); // original data
+
+    const size_t planned_victim_size = N/4;
+    static const int grain_size = 70;
+
+    tbb::task_scheduler_init init(2);
+
+    for(int t = 0; t < 2; ++t) {// exception type
+        vector_t victim;
+
+#if TBB_USE_CAPTURED_EXCEPTION
+        #define EXPECTED_EXCEPTION    tbb::captured_exception
+#else
+        #define EXPECTED_EXCEPTION    std::bad_alloc
+#endif
+
+        ASSERT_THROWS_IN_TEST(
+            {
+                limit_foo_count_in_scope foo_limit(FooCount +  31, t); // these numbers help to reproduce the live lock for versions < TBB2.2
+                limit_allocated_items_in_scope<allocator_t> allocator_limit(allocator_t::items_allocated + planned_victim_size, !t);
+
+                grain_map m(concurrent_grow_single_range_map, Harness::end(concurrent_grow_single_range_map));
+
+                static const size_t part_weight =  grain_size / m.total_number_of_parts;
+
+                tbb::parallel_for(
+                        tbb::blocked_range<size_t>(0, N, grain_size),
+                        GrowBy<vector_t>(victim, m, part_weight)
+                );
+            },
+            EXPECTED_EXCEPTION, "", test_name
+        );
+
+        verify_c_vector_size(victim, test_name);
+
+        if(!t) {
+            verify_c_vector_capacity_is_below(victim.capacity(), N, test_name);
+        }
+
+        for(int i = 0; ; ++i) {
+            try {
+                Foo &foo = victim.at(i);
+                ASSERT( foo.is_valid_or_zero(),"" );
+            } catch(std::range_error &) { // skip broken segment
+                ASSERT( size_t(i) < get_early_size(victim), NULL );
+            } catch(std::out_of_range &){
+                ASSERT( i > 0, NULL ); break;
+            } catch(...) {
+                KNOWN_ISSUE("ERROR: unrecognized exception - known compiler issue\n"); break;
+            }
+        }
+
+        verify_copy_and_assign_from_produce_the_same(victim, test_name);
+    }
+}
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+void TestExceptionSafetyGuaranteesForMoveAssignOperatorWithUnEqualAllocatorMemoryFailure(){
+    const char* const test_name = "TestExceptionSafetyGuaranteesForMoveAssignOperatorWithUnEqualAllocatorMemoryFailure";
+
+    //TODO: add ability to inject debug_allocator into stateful_allocator_fixture::allocator_t
+    //typedef static_counting_allocator<debug_allocator<FooWithAssign>, std::size_t> allocator_t;
+    typedef default_stateful_fixture_make_helper<c_vector_type, Harness::false_type>::type fixture_t;
+    typedef arena_allocator_fixture<FooWithAssign, Harness::false_type> arena_allocator_fixture_t;
+    typedef fixture_t::allocator_t allocator_t;
+    typedef fixture_t::container_t vector_t;
+
+    fixture_t fixture(test_name);
+    arena_allocator_fixture_t arena_allocator_fixture(4 * fixture.container_size);
+
+    const size_t allocation_limit = fixture.container_size/4;
+
+    vector_t victim(arena_allocator_fixture.allocator);
+    victim.reserve(2); // get fragmented assignment
+
+    ASSERT_THROWS_IN_TEST(
+        {
+            limit_allocated_items_in_scope<allocator_t> allocator_limit(allocator_t::items_allocated + allocation_limit);
+            victim = std::move(fixture.source); // fragmented assignment
+        },
+        std::bad_alloc, "", test_name
+    );
+
+    verify_c_vector_size(victim, test_name);
+    verify_c_vector_capacity_is_below(victim.capacity(), allocation_limit + 2, test_name);
+
+    fixture.verify_part_of_content_deep_moved(victim, victim.size());
+
+    verify_last_segment_allocation_failed(victim, test_name);
+    verify_copy_and_assign_from_produce_the_same(victim, test_name);
+    verify_assignment_operator_throws_bad_last_alloc(victim, test_name);
+}
+
+void TestExceptionSafetyGuaranteesForMoveAssignOperatorWithUnEqualAllocatorExceptionInElementCtor(){
+    const char* const test_name = "TestExceptionSafetyGuaranteesForMoveAssignOperator";
+    //typedef static_counting_allocator<debug_allocator<FooWithAssign>, std::size_t> allocator_t;
+    typedef default_stateful_fixture_make_helper<c_vector_type, Harness::false_type>::type fixture_t;
+    typedef arena_allocator_fixture<FooWithAssign, Harness::false_type> arena_allocator_fixture_t;
+    typedef fixture_t::container_t vector_t;
+
+    fixture_t fixture(test_name);
+    const size_t planned_victim_size = fixture.container_size/4;
+    arena_allocator_fixture_t arena_allocator_fixture(4 * fixture.container_size);
+
+    vector_t victim(arena_allocator_fixture.allocator);
+    victim.reserve(2); // get fragmented assignment
+
+    ASSERT_THROWS_IN_TEST(
+        {
+            limit_foo_count_in_scope foo_limit(FooCount + planned_victim_size);
+            victim = std::move(fixture.source); // fragmented assignment
+        },
+        std::bad_alloc, "", test_name
+    );
+
+    verify_c_vector_size(victim, test_name);
+
+    fixture.verify_part_of_content_deep_moved(victim, planned_victim_size);
+
+    verify_last_segment_allocation_failed(victim, test_name);
+    verify_copy_and_assign_from_produce_the_same(victim, test_name);
+    verify_assignment_operator_throws_bad_last_alloc(victim, test_name);
+}
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
+namespace push_back_exception_safety_helpers{
+    //TODO: remove code duplication with emplace_helpers::wrapper_type
+    struct throwing_foo:Foo{
+        int value1;
+        int value2;
+        explicit throwing_foo(int v1, int v2) : value1 (v1), value2(v2) {        }
+    };
+
+    template< typename foo_t = throwing_foo>
+    struct fixture{
+        typedef tbb::concurrent_vector<foo_t, debug_allocator<foo_t> > vector_t;
+        vector_t v;
+
+        void test( void(*p_test)(vector_t&), const char * test_name){
+            track_foo_count<__LINE__> verify_no_foo_leaked_during_exception(test_name);
+            ASSERT_IN_TEST(v.empty(),"incorrect test setup?", test_name );
+            ASSERT_THROWS_IN_TEST(p_test(v), Foo_exception ,"", test_name);
+            ASSERT_IN_TEST(is_state<Foo::ZeroInitialized>(v[0]),"incorrectly filled item during exception in emplace_back?", test_name);
+        }
+    };
+}
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+void TestPushBackMoveExceptionSafety(){
+    typedef push_back_exception_safety_helpers::fixture<Foo> fixture_t;
+    fixture_t t;
+
+    limit_foo_count_in_scope foo_limit(FooCount + 1);
+
+    struct test{
+        static void test_move_push_back(fixture_t::vector_t& v){
+            Foo f;
+            v.push_back(std::move(f));
+        }
+    };
+    t.test(&test::test_move_push_back, "TestPushBackMoveExceptionSafety");
+}
+
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+void TestEmplaceBackExceptionSafety(){
+    typedef push_back_exception_safety_helpers::fixture<> fixture_t;
+    fixture_t t;
+
+    Foo dummy; //make FooCount non zero;
+    Harness::suppress_unused_warning(dummy);
+    limit_foo_count_in_scope foo_limit(FooCount);
+
+    struct test{
+        static void test_emplace(fixture_t::vector_t& v){
+            v.emplace_back(1,2);
+        }
+    };
+    t.test(&test::test_emplace, "TestEmplaceBackExceptionSafety");
+}
+#endif //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+
 #endif /* TBB_USE_EXCEPTIONS */
 
 //------------------------------------------------------------------------
@@ -1019,27 +1494,259 @@ void TestVectorTypes() {
 
 //------------------------------------------------------------------------
 
+namespace v3_backward_compatibility{
+    namespace segment_t_layout_helpers{
+        //this is previous definition of according inner class of concurrent_vector_base_v3
+        struct segment_t_v3 {
+            void* array;
+        };
+        //helper class to access protected members of concurrent_vector_base
+        struct access_vector_fields :tbb::internal::concurrent_vector_base_v3 {
+            using tbb::internal::concurrent_vector_base_v3::segment_t;
+            using tbb::internal::concurrent_vector_base_v3::segment_index_t;
+            using tbb::internal::concurrent_vector_base_v3::pointers_per_long_table;
+            using tbb::internal::concurrent_vector_base_v3::internal_segments_table;
+        };
+        //this is previous definition of according inner class of concurrent_vector_base_v3
+        struct internal_segments_table_v3 {
+            access_vector_fields::segment_index_t first_block;
+            segment_t_v3 table[access_vector_fields::pointers_per_long_table];
+        };
+
+        template <typename checked_type>
+        struct alignment_check_helper{
+            char dummy;
+            checked_type checked;
+        };
+    }
+    void TestSegmentTLayout(){
+        using namespace segment_t_layout_helpers;
+        typedef alignment_check_helper<segment_t_v3> structure_with_old_segment_type;
+        typedef alignment_check_helper<access_vector_fields::segment_t> structure_with_new_segment_type;
+
+        ASSERT((sizeof(structure_with_old_segment_type)==sizeof(structure_with_new_segment_type))
+              ,"layout of new segment_t and old one differ?");
+    }
+
+    void TestInternalSegmentsTableLayout(){
+        using namespace segment_t_layout_helpers;
+        typedef alignment_check_helper<internal_segments_table_v3> structure_with_old_segment_table_type;
+        typedef alignment_check_helper<access_vector_fields::internal_segments_table> structure_with_new_segment_table_type;
+
+        ASSERT((sizeof(structure_with_old_segment_table_type)==sizeof(structure_with_new_segment_table_type))
+              ,"layout of new internal_segments_table and old one differ?");
+    }
+}
+void TestV3BackwardCompatibility(){
+    using namespace v3_backward_compatibility;
+    TestSegmentTLayout();
+    TestInternalSegmentsTableLayout();
+}
+
+#include "harness_defs.h"
+
+#include <vector>
+#include <numeric>
+#include <functional>
+
+// The helper to run a test only when a default construction is present.
+template <bool default_construction_present> struct do_default_construction_test {
+    template<typename FuncType> void operator() ( FuncType func ) const { func(); }
+};
+template <> struct do_default_construction_test<false> {
+    template<typename FuncType> void operator()( FuncType ) const {}
+};
+
+template <typename Type, typename Allocator>
+class test_grow_by_and_resize : NoAssign {
+    tbb::concurrent_vector<Type, Allocator> &my_c;
+public:
+    test_grow_by_and_resize( tbb::concurrent_vector<Type, Allocator> &c ) : my_c(c) {}
+    void operator()() const {
+        const typename tbb::concurrent_vector<Type, Allocator>::size_type sz = my_c.size();
+        my_c.grow_by( 5 );
+        ASSERT( my_c.size() == sz + 5, NULL );
+        my_c.resize( sz );
+        ASSERT( my_c.size() == sz, NULL );
+    }
+};
+
+template <typename Type, typename Allocator>
+void CompareVectors( const tbb::concurrent_vector<Type, Allocator> &c1, const tbb::concurrent_vector<Type, Allocator> &c2 ) {
+    ASSERT( !(c1 == c2) && c1 != c2, NULL );
+    ASSERT( c1 <= c2 && c1 < c2 && c2 >= c1 && c2 > c1, NULL );
+}
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+template <typename Type, typename Allocator>
+void CompareVectors( const tbb::concurrent_vector<std::weak_ptr<Type>, Allocator> &, const tbb::concurrent_vector<std::weak_ptr<Type>, Allocator> & ) {
+    /* do nothing for std::weak_ptr */
+}
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+
+template <bool default_construction_present, typename Type, typename Allocator>
+void Examine( tbb::concurrent_vector<Type, Allocator> c, const std::vector<Type> &vec ) {
+    typedef tbb::concurrent_vector<Type, Allocator> vector_t;
+    typedef typename vector_t::size_type size_type_t;
+
+    ASSERT( c.size() == vec.size(), NULL );
+    for ( size_type_t i=0; i<c.size(); ++i ) ASSERT( Harness::IsEqual()(c[i], vec[i]), NULL );
+    do_default_construction_test<default_construction_present>()(test_grow_by_and_resize<Type,Allocator>(c));
+    c.grow_by( size_type_t(5), c[0] );
+    c.grow_to_at_least( c.size()+5, c.at(0) );
+    vector_t c2;
+    c2.reserve( 5 );
+    std::copy( c.begin(), c.begin() + 5, std::back_inserter( c2 ) );
+
+    c.grow_by( c2.begin(), c2.end() );
+    const vector_t& cvcr = c;
+    ASSERT( Harness::IsEqual()(cvcr.front(), *(c2.rend()-1)), NULL );
+    ASSERT( Harness::IsEqual()(cvcr.back(), *c2.rbegin()), NULL);
+    ASSERT( Harness::IsEqual()(*c.cbegin(), *(c.crend()-1)), NULL );
+    ASSERT( Harness::IsEqual()(*(c.cend()-1), *c.crbegin()), NULL );
+    c.swap( c2 );
+    ASSERT( c.size() == 5, NULL );
+    CompareVectors( c, c2 );
+    c.swap( c2 );
+    c2.clear();
+    ASSERT( c2.size() == 0, NULL );
+    c2.shrink_to_fit();
+    Allocator a = c.get_allocator();
+    a.deallocate( a.allocate(1), 1 );
+}
+
+template <typename Type>
+class test_default_construction : NoAssign {
+    const std::vector<Type> &my_vec;
+public:
+    test_default_construction( const std::vector<Type> &vec ) : my_vec(vec) {}
+    void operator()() const {
+        // Construction with initial size specified by argument n.
+        tbb::concurrent_vector<Type> c7( my_vec.size() );
+        std::copy( my_vec.begin(), my_vec.end(), c7.begin() );
+        Examine</*default_construction_present = */true>( c7, my_vec );
+        tbb::concurrent_vector< Type, debug_allocator<Type> > c8( my_vec.size() );
+        std::copy( c7.begin(), c7.end(), c8.begin() );
+        Examine</*default_construction_present = */true>( c8, my_vec );
+    }
+};
+
+template <bool default_construction_present, typename Type>
+void TypeTester( const std::vector<Type> &vec ) {
+    __TBB_ASSERT( vec.size() >= 5, "Array should have at least 5 elements" );
+    // Construct empty vector.
+    tbb::concurrent_vector<Type> c1;
+    std::copy( vec.begin(), vec.end(), std::back_inserter(c1) );
+    Examine<default_construction_present>( c1, vec );
+#if __TBB_INITIALIZER_LISTS_PRESENT
+    // Constructor from initializer_list.
+    tbb::concurrent_vector<Type> c2({vec[0],vec[1],vec[2]});
+    std::copy( vec.begin()+3, vec.end(), std::back_inserter(c2) );
+    Examine<default_construction_present>( c2, vec );
+#endif
+    // Copying constructor.
+    tbb::concurrent_vector<Type> c3(c1);
+    Examine<default_construction_present>( c3, vec );
+    // Construct with non-default allocator
+    tbb::concurrent_vector< Type, debug_allocator<Type> > c4;
+    std::copy( vec.begin(), vec.end(), std::back_inserter(c4) );
+    Examine<default_construction_present>( c4, vec );
+    // Copying constructor for vector with different allocator type.
+    tbb::concurrent_vector<Type> c5(c4);
+    Examine<default_construction_present>( c5, vec );
+    tbb::concurrent_vector< Type, debug_allocator<Type> > c6(c3);
+    Examine<default_construction_present>( c6, vec );
+    // Construction with initial size specified by argument n.
+    do_default_construction_test<default_construction_present>()(test_default_construction<Type>(vec));
+    // Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance.
+    debug_allocator<Type> allocator;
+    tbb::concurrent_vector< Type, debug_allocator<Type> > c9(vec.size(), vec[1], allocator);
+    Examine<default_construction_present>( c9, std::vector<Type>(vec.size(), vec[1]) );
+    // Construction with copying iteration range and given allocator instance.
+    tbb::concurrent_vector< Type, debug_allocator<Type> > c10(c1.begin(), c1.end(), allocator);
+    Examine<default_construction_present>( c10, vec );
+    tbb::concurrent_vector<Type> c11(vec.begin(), vec.end());
+    Examine<default_construction_present>( c11, vec );
+}
+
+void TestTypes() {
+    const int NUMBER = 100;
+
+    std::vector<int> intArr;
+    for ( int i=0; i<NUMBER; ++i ) intArr.push_back(i);
+    TypeTester</*default_construction_present = */true>( intArr );
+
+#if __TBB_CPP11_REFERENCE_WRAPPER_PRESENT
+    std::vector< std::reference_wrapper<int> > refArr;
+    // The constructor of std::reference_wrapper<T> from T& is explicit in some versions of libstdc++.
+    for ( int i=0; i<NUMBER; ++i ) refArr.push_back( std::reference_wrapper<int>(intArr[i]) );
+    TypeTester</*default_construction_present = */false>( refArr );
+#else
+    REPORT( "Known issue: C++11 reference wrapper tests are skipped.\n" );
+#endif /* __TBB_CPP11_REFERENCE_WRAPPER_PRESENT */
+
+    std::vector< tbb::atomic<int> > tbbIntArr( NUMBER );
+    for ( int i=0; i<NUMBER; ++i ) tbbIntArr[i] = i;
+    TypeTester</*default_construction_present = */true>( tbbIntArr );
+
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+    std::vector< std::shared_ptr<int> > shrPtrArr;
+    for ( int i=0; i<NUMBER; ++i ) shrPtrArr.push_back( std::make_shared<int>(i) );
+    TypeTester</*default_construction_present = */true>( shrPtrArr );
+
+    std::vector< std::weak_ptr<int> > wkPtrArr;
+    std::copy( shrPtrArr.begin(), shrPtrArr.end(), std::back_inserter(wkPtrArr) );
+    TypeTester</*default_construction_present = */true>( wkPtrArr );
+#else
+    REPORT( "Known issue: C++11 smart pointer tests are skipped.\n" );
+#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
+}
+
 int TestMain () {
     if( MinThread<1 ) {
         REPORT("ERROR: MinThread=%d, but must be at least 1\n",MinThread); MinThread = 1;
     }
-#if !TBB_DEPRECATED
+    TestFoo();
+    TestV3BackwardCompatibility();
     TestIteratorTraits<tbb::concurrent_vector<Foo>::iterator,Foo>();
     TestIteratorTraits<tbb::concurrent_vector<Foo>::const_iterator,const Foo>();
     TestArrayLength();
+    TestAllOf();
 #if __TBB_INITIALIZER_LISTS_PRESENT
     TestInitList();
+#else
+    REPORT("Known issue: initializer list tests are skipped.\n");
 #endif
     TestSequentialFor<FooWithAssign> ();
     TestResizeAndCopy();
     TestAssign();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestMoveConstructor<c_vector_type>();
+    TestMoveAssignOperator<c_vector_type>();
+    TestConstructorWithMoveIterators<c_vector_type>();
+    TestAssignWithMoveIterators<c_vector_type>();
+    TestSerialGrowByWithMoveIterators();
+#if __TBB_MOVE_IF_NOEXCEPT_PRESENT
+    TestSerialMoveInShrinkToFit();
+#endif // __TBB_MOVE_IF_NOEXCEPT_PRESENT
+#else
+    REPORT("Known issue: tests for vector move constructor/assignment operator are skipped.\n");
+#endif
+    TestGrowToAtLeastWithSourceParameter<tbb::concurrent_vector<int> >(12345);
+    TestSerialGrowByRange(false);
+    TestSerialGrowByRange(true);
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestPushBackMoveOnlyContainee();
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    TestEmplaceBack();
+#endif  //__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+#endif  //__TBB_CPP11_RVALUE_REF_PRESENT
 #if HAVE_m128
     TestVectorTypes<ClassWithSSE>();
 #endif
 #if HAVE_m256
     if (have_AVX()) TestVectorTypes<ClassWithAVX>();
 #endif
-#endif /* !TBB_DEPRECATED */
     TestCapacity();
     ASSERT( !FooCount, NULL );
     for( int nthread=MinThread; nthread<=MaxThread; ++nthread ) {
@@ -1049,7 +1756,6 @@ int TestMain () {
         TestConcurrentGrowBy( nthread );
     }
     ASSERT( !FooCount, NULL );
-#if !TBB_DEPRECATED
     TestComparison();
     TestFindPrimes();
     TestSort();
@@ -1060,9 +1766,26 @@ int TestMain () {
     REPORT("Known issue: exception safety test is skipped.\n");
 #elif TBB_USE_EXCEPTIONS
     TestExceptions();
+    TestExceptionSafetyGuaranteesForAssignOperator();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure<c_vector_type>();
+    TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorExceptionInElementCtor<c_vector_type>();
+    TestExceptionSafetyGuaranteesForMoveAssignOperatorWithUnEqualAllocatorMemoryFailure();
+    TestExceptionSafetyGuaranteesForMoveAssignOperatorWithUnEqualAllocatorExceptionInElementCtor();
+    TestPushBackMoveExceptionSafety();    
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
+    TestEmplaceBackExceptionSafety();
+#endif /*__TBB_CPP11_VARIADIC_TEMPLATES_PRESENT */
+#else
+    REPORT("Known issue: exception safety tests for move constructor/assignment operator , grow_by are skipped.\n");
+#endif /*__TBB_CPP11_RVALUE_REF_PRESENT */
 #endif /* TBB_USE_EXCEPTIONS */
-#endif /* !TBB_DEPRECATED */
+    TestTypes();
     ASSERT( !FooCount, NULL );
     REMARK("sizeof(concurrent_vector<int>) == %d\n", (int)sizeof(tbb::concurrent_vector<int>));
     return Harness::Done;
 }
+
+#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
+    #pragma warning (pop)
+#endif // warning 4800 is back
diff --git a/src/test/test_condition_variable.h b/src/test/test_condition_variable.h
index 0e35c28..0bb0420 100644
--- a/src/test/test_condition_variable.h
+++ b/src/test/test_condition_variable.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
@@ -46,11 +38,83 @@
     #pragma warning (pop)
 #endif
 
-
+#if TBB_IMPLEMENT_CPP0X
 // This test deliberately avoids a "using tbb" statement,
 // so that the error of putting types in the wrong namespace will be caught.
-
 using namespace std;
+#else
+using namespace tbb::interface5;
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+template<typename M>
+void TestUniqueLockMoveConstructorAndAssignOp(){
+    typedef unique_lock<M> unique_lock_t;
+
+    static const bool locked = true;
+    static const bool unlocked = false;
+
+    struct Locked{
+        bool value;
+        Locked(bool a_value) : value(a_value) {}
+    };
+
+    typedef Locked destination;
+    typedef Locked source;
+
+    struct MutexAndLockFixture{
+        M mutex;
+        unique_lock_t lock;
+        const bool was_locked;
+
+        MutexAndLockFixture(source lckd_src) : lock(mutex), was_locked(lckd_src.value){
+            if (!lckd_src.value) lock.unlock();
+            ASSERT(was_locked == lock.owns_lock(), "unlock did not release the mutex while should?");
+        }
+    };
+
+    struct TestCases{
+        const char* filename;
+        int line;
+
+        TestCases(const char* a_filename, int a_line) : filename(a_filename), line(a_line) {}
+
+        void TestMoveConstructor(source locked_src){
+            MutexAndLockFixture src(locked_src);
+            unique_lock_t dst_lock(std::move(src.lock));
+            AssertOwnershipWasTransfered(dst_lock, src.lock, src.was_locked, &src.mutex);
+        }
+
+        void TestMoveAssignment(source locked_src, destination locked_dest){
+            MutexAndLockFixture src(locked_src);
+            MutexAndLockFixture dst(locked_dest);
+
+            dst.lock = std::move(src.lock);
+            ASSERT_CUSTOM(unique_lock_t(dst.mutex, try_to_lock).owns_lock(), "unique_lock should release owned mutex on assignment", filename, line);
+            AssertOwnershipWasTransfered(dst.lock, src.lock, src.was_locked, &src.mutex);
+        }
+
+        void AssertOwnershipWasTransfered(unique_lock_t const& dest_lock, unique_lock_t const& src_lck, const bool was_locked, const M* mutex) {
+            ASSERT_CUSTOM(dest_lock.owns_lock() == was_locked, "moved to lock object should have the same state as source before move", filename, line);
+            ASSERT_CUSTOM(dest_lock.mutex() == mutex, "moved to lock object should have the same state as source before move", filename, line);
+            ASSERT_CUSTOM(src_lck.owns_lock() == false, "moved from lock object must not left locked", filename, line);
+            ASSERT_CUSTOM(src_lck.mutex() == NULL, "moved from lock object must not has mutex", filename, line);
+        }
+    };
+//TODO: to rework this with an assertion binder
+#define AT_LOCATION() TestCases( __FILE__, __LINE__) \
+
+        AT_LOCATION().TestMoveConstructor(source(locked));
+        AT_LOCATION().TestMoveAssignment (source(locked), destination(locked));
+        AT_LOCATION().TestMoveAssignment (source(locked), destination(unlocked));
+        AT_LOCATION().TestMoveConstructor(source(unlocked));
+        AT_LOCATION().TestMoveAssignment (source(unlocked), destination(locked));
+        AT_LOCATION().TestMoveAssignment (source(unlocked), destination(unlocked));
+
+#undef AT_LOCATION
+
+}
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
 
 template<typename M>
 struct Counter {
@@ -688,6 +752,11 @@ void TestConditionVariableException( const char * name ) {
 template<typename Mutex, typename RecursiveMutex>
 void DoCondVarTest()
 {
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestUniqueLockMoveConstructorAndAssignOp<Mutex>();
+    TestUniqueLockMoveConstructorAndAssignOp<RecursiveMutex>();
+#endif
+
     for( int p=MinThread; p<=MaxThread; ++p ) {
         REMARK( "testing with %d threads\n", p );
         TestLocks<Mutex>( "mutex", p );
diff --git a/src/test/test_container_move_support.h b/src/test/test_container_move_support.h
new file mode 100644
index 0000000..28981c5
--- /dev/null
+++ b/src/test/test_container_move_support.h
@@ -0,0 +1,961 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#ifndef __TBB_test_container_move_support_H
+#define __TBB_test_container_move_support_H
+
+#include "harness.h"
+#include "harness_assert.h"
+#include "harness_allocator.h"
+#include "tbb/atomic.h"
+#include "tbb/aligned_space.h"
+#include <stdexcept>
+#include <string>
+#include <functional>
+
+#if __TBB_NOEXCEPT_PRESENT
+#define __TBB_NOTHROW __TBB_NOEXCEPT(true)
+#else
+#define __TBB_NOTHROW throw()
+#endif
+
+namespace Harness{
+    struct StateTrackableBase{
+        enum State{
+            ZeroInitialized     =0,
+            DefaultInitialized  =0xDEFAUL,
+            DirectInitialized   =0xD1111,
+            CopyInitialized     =0xC0314,
+            MoveInitialized     =0xAAAAA,
+            Assigned            =0x11AED,
+            MoveAssigned        =0x22AED,
+            MovedFrom           =0xFFFFF,
+            Destroyed           =0xDEADF00
+        };
+    };
+
+    template<bool allow_zero_initialized_state = false>
+    struct StateTrackable: StateTrackableBase{
+        static const bool is_zero_initialized_state_allowed = allow_zero_initialized_state;
+        State state;
+
+        bool is_valid() const{
+            return state == DefaultInitialized || state == DirectInitialized || state == CopyInitialized
+                || state == MoveInitialized || state == Assigned || state == MoveAssigned || state == MovedFrom
+                || (allow_zero_initialized_state && state == ZeroInitialized)
+                ;
+        }
+
+        StateTrackable (intptr_t)       __TBB_NOTHROW : state (DirectInitialized){}
+        StateTrackable ()               __TBB_NOTHROW : state (DefaultInitialized){}
+        StateTrackable (const StateTrackable & src) __TBB_NOTHROW{
+            ASSERT( src.is_valid(), "bad source for copy" );
+            state = CopyInitialized;
+        }
+    #if __TBB_CPP11_RVALUE_REF_PRESENT
+        StateTrackable (StateTrackable && src) __TBB_NOTHROW{
+            ASSERT( src.is_valid(), "bad source for move?" );
+            state = MoveInitialized;
+            src.state = MovedFrom;
+        }
+        StateTrackable & operator=(StateTrackable && src) __TBB_NOTHROW{
+            ASSERT( src.is_valid(), "bad source for assignment" );
+            ASSERT( is_valid(), "assigning to invalid instance?" );
+
+            src.state = MovedFrom;
+            state = MoveAssigned;
+            return *this;
+        }
+    #endif
+        StateTrackable & operator=(const StateTrackable & src) __TBB_NOTHROW{
+            ASSERT( src.is_valid(), "bad source for assignment?" );
+            ASSERT( is_valid(), "assigning to invalid instance?" );
+
+            state = Assigned;
+            return *this;
+        }
+        ~StateTrackable () __TBB_NOTHROW{
+            ASSERT( is_valid(), "Calling destructor on invalid instance? (twice destructor call?)" );
+            state = Destroyed;
+        }
+    };
+}
+tbb::atomic<size_t> FooCount;
+size_t MaxFooCount = 0;
+
+//! Problem size
+const size_t N = 500000;
+
+//! Exception for concurrent_container
+class Foo_exception : public std::bad_alloc {
+public:
+    virtual const char *what() const throw() { return "out of Foo limit"; }
+    virtual ~Foo_exception() throw() {}
+};
+
+struct FooLimit {
+    FooLimit(){
+        if(MaxFooCount && FooCount >= MaxFooCount)
+            __TBB_THROW( Foo_exception() );
+    }
+};
+
+static const intptr_t initial_value_of_bar = 42;
+
+
+struct Foo : FooLimit, Harness::StateTrackable<true>{
+    typedef Harness::StateTrackable<true> StateTrackable;
+    intptr_t my_bar;
+public:
+    bool is_valid_or_zero() const{
+        return is_valid()||(state==ZeroInitialized && !my_bar);
+    }
+    intptr_t& zero_bar(){
+        ASSERT( is_valid_or_zero(), NULL );
+        return my_bar;
+    }
+    intptr_t zero_bar() const{
+        ASSERT( is_valid_or_zero(), NULL );
+        return my_bar;
+    }
+    intptr_t& bar(){
+        ASSERT( is_valid(), NULL );
+        return my_bar;
+    }
+    intptr_t bar() const{
+        ASSERT( is_valid(), NULL );
+        return my_bar;
+    }
+    operator intptr_t() const{
+        return this->bar();
+    }
+    Foo( intptr_t barr ): StateTrackable(0){
+        my_bar = barr;
+        FooCount++;
+    }
+    Foo(){
+        my_bar = initial_value_of_bar;
+        FooCount++;        
+    }
+    Foo( const Foo& foo ): FooLimit(), StateTrackable(foo){
+        my_bar = foo.my_bar;
+        FooCount++;
+    }
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    Foo( Foo&& foo ): FooLimit(), StateTrackable(std::move(foo)){
+        my_bar = foo.my_bar;
+        //TODO: consider not using constant here, instead something like ~my_bar
+        foo.my_bar = -1;
+        FooCount++;
+    }
+#endif
+    ~Foo(){
+        my_bar = ~initial_value_of_bar;
+        if(state != ZeroInitialized) --FooCount;
+    }
+    friend bool operator==(const int &lhs, const Foo &rhs) {
+        ASSERT( rhs.is_valid_or_zero(), "comparing invalid objects ?" );
+        return lhs == rhs.my_bar;
+    }
+    friend bool operator==(const Foo &lhs, const int &rhs) {
+        ASSERT( lhs.is_valid_or_zero(),   "comparing invalid objects ?" );
+        return lhs.my_bar == rhs;
+    }
+    friend bool operator==(const Foo &lhs, const Foo &rhs) {
+        ASSERT( lhs.is_valid_or_zero(),   "comparing invalid objects ?" );
+        ASSERT( rhs.is_valid_or_zero(), "comparing invalid objects ?" );
+        return lhs.my_bar == rhs.my_bar;
+    }
+    friend bool operator<(const Foo &lhs, const Foo &rhs) {
+        ASSERT( lhs.is_valid_or_zero(),   "comparing invalid objects ?" );
+        ASSERT( rhs.is_valid_or_zero(), "comparing invalid objects ?" );
+        return lhs.my_bar < rhs.my_bar;
+    }
+    bool is_const() const {return true;}
+    bool is_const() {return false;}
+protected:
+    char reserve[1];
+    Foo& operator=( const Foo& x ) {
+        StateTrackable::operator=(x);
+        my_bar = x.my_bar;
+        return *this;
+    }
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    Foo& operator=( Foo&& x ) {
+        ASSERT( x.is_valid_or_zero(), "bad source for assignment" );
+        ASSERT( is_valid_or_zero(), NULL );
+        StateTrackable::operator=(std::move(x));
+        my_bar = x.my_bar;
+        x.my_bar = -1;
+        return *this;
+    }
+#endif
+};
+
+struct FooWithAssign: public Foo {
+    FooWithAssign()                         : Foo(){}
+    FooWithAssign(intptr_t barr)            : Foo(barr){}
+    FooWithAssign(FooWithAssign const& f) : Foo(f) {}
+    FooWithAssign& operator=(FooWithAssign const& f) { return  static_cast<FooWithAssign&>(Foo::operator=(f)); }
+
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    FooWithAssign(FooWithAssign && f)       : Foo(std::move(f)) {}
+    FooWithAssign& operator=(FooWithAssign && f) { return  static_cast<FooWithAssign&>(Foo::operator=(std::move(f))); }
+#endif
+};
+
+template<typename FooIteratorType>
+class FooIteratorBase {
+protected:
+    intptr_t x_bar;
+private:
+    FooIteratorType& as_derived(){ return *static_cast<FooIteratorType*>(this);}
+public:
+    FooIteratorBase(intptr_t x) {
+        x_bar = x;
+    }
+    FooIteratorType &operator++() {
+        x_bar++; return as_derived();
+    }
+    FooIteratorType operator++(int) {
+        FooIteratorType tmp(as_derived()); x_bar++; return tmp;
+    }
+    friend bool operator==(const FooIteratorType & lhs, const FooIteratorType & rhs){ return lhs.x_bar == rhs.x_bar; }
+    friend bool operator!=(const FooIteratorType & lhs, const FooIteratorType & rhs){ return !(lhs == rhs); }
+};
+
+class FooIterator: public std::iterator<std::input_iterator_tag,FooWithAssign>, public FooIteratorBase<FooIterator> {
+public:
+    FooIterator(intptr_t x): FooIteratorBase<FooIterator>(x) {}
+
+    FooWithAssign operator*() {
+        return FooWithAssign(x_bar);
+    }
+};
+
+class FooPairIterator: public std::iterator<std::input_iterator_tag, std::pair<FooWithAssign,FooWithAssign> >,  public FooIteratorBase<FooPairIterator> {
+public:
+    FooPairIterator(intptr_t x): FooIteratorBase<FooPairIterator>(x) {}
+
+    std::pair<FooWithAssign,FooWithAssign> operator*() {
+        FooWithAssign foo; foo.bar() = x_bar;
+
+        return std::make_pair(foo, foo);
+    }
+};
+
+namespace FooTests{
+    template<typename Foo_type>
+    void TestDefaultConstructor(){
+        Foo_type src;
+        ASSERT(src.state == Foo::DefaultInitialized, "incorrect state for default constructed Foo (derived) ?");
+    }
+
+    template<typename Foo_type>
+    void TestDirectConstructor(){
+        Foo_type src(1);
+        ASSERT(src.state == Foo::DirectInitialized, "incorrect state for direct constructed Foo (derived) ?");
+    }
+
+    template<typename Foo_type>
+    void TestCopyConstructor(){
+        Foo_type src;
+        Foo_type dst(src);
+        ASSERT(dst.state == Foo::CopyInitialized, "incorrect state for Copy constructed Foo ?");
+    }
+
+    template<typename Foo_type>
+    void TestAssignOperator(){
+        Foo_type src;
+        Foo_type dst;
+        dst = (src);
+
+        ASSERT(dst.state == Foo::Assigned, "incorrect state for Assigned Foo ?");
+    }
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    template<typename Foo_type>
+    void TestMoveConstructor(){
+        Foo_type src;
+        Foo_type dst(std::move(src));
+        ASSERT(dst.state == Foo::MoveInitialized, "incorrect state for Move constructed Foo ?");
+        ASSERT(src.state == Foo::MovedFrom, "incorrect state for Move from  Foo ?");
+    }
+
+    template<typename Foo_type>
+    void TestMoveAssignOperator(){
+        Foo_type src;
+        Foo_type dst;
+        dst = std::move(src);
+
+        ASSERT(dst.state == Foo::MoveAssigned, "incorrect state for Move Assigned Foo ?");
+        ASSERT(src.state == Foo::MovedFrom, "incorrect state for Moved from Foo ?");
+    }
+#if TBB_USE_EXCEPTIONS
+    void TestMoveConstructorException();
+#endif //TBB_USE_EXCEPTIONS
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+}
+
+void TestFoo(){
+    using namespace FooTests;
+    TestDefaultConstructor<Foo>();
+    TestDefaultConstructor<FooWithAssign>();
+    TestDirectConstructor<Foo>();
+    TestDirectConstructor<FooWithAssign>();
+    TestCopyConstructor<Foo>();
+    TestCopyConstructor<FooWithAssign>();
+    TestAssignOperator<FooWithAssign>();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    TestMoveConstructor<Foo>();
+    TestMoveConstructor<FooWithAssign>();
+    TestMoveAssignOperator<FooWithAssign>();
+#if TBB_USE_EXCEPTIONS
+    TestMoveConstructorException();
+#endif //TBB_USE_EXCEPTIONS
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+}
+
+//TODO: replace _IN_TEST with separately defined macro IN_TEST(msg,test_name)
+#define ASSERT_IN_TEST(p,message,test_name) ASSERT(p, (std::string(test_name) + ": " + message).c_str());
+//TODO: move to harness_assert
+#define ASSERT_THROWS_IN_TEST(expression, exception_type, message, test_name)                  \
+        try{                                                                                   \
+                expression;                                                                    \
+                ASSERT_IN_TEST(false, "should throw an exception", test_name);                 \
+        }catch(exception_type &){                                                              \
+        }catch(...){ASSERT_IN_TEST(false, "unexpected exception", test_name);}                 \
+
+#define ASSERT_THROWS(expression, exception_type, message)  ASSERT_THROWS_IN_TEST(expression, exception_type, message, "")
+
+template<Harness::StateTrackableBase::State desired_state, bool allow_zero_initialized_state>
+bool is_state(Harness::StateTrackable<allow_zero_initialized_state> const& f){ return f.state == desired_state;}
+
+template<Harness::StateTrackableBase::State desired_state>
+struct is_state_f {
+    template <bool allow_zero_initialized_state>
+    bool operator()(Harness::StateTrackable<allow_zero_initialized_state> const& f){ return is_state<desired_state>(f); }
+    //TODO: cu_map defines key as a const thus by default it is not moved, instead it is copied. Investigate how std::unordered_map behaves
+    template<typename T1, typename T2>
+    bool operator()(std::pair<T1, T2> const& p){ return /*is_state<desired_state>(p.first) && */is_state<desired_state>(p.second); }
+};
+
+template<typename iterator, typename unary_predicate>
+bool all_of(iterator  begin, iterator const& end, unary_predicate p){
+    for (; begin != end; ++begin){
+        if ( !p(*begin)) return false;
+    }
+    return true;
+}
+
+template<typename container, typename unary_predicate>
+bool all_of(container const& c, unary_predicate p){
+    return ::all_of( c.begin(), c.end(), p );
+}
+
+void TestAllOf(){
+    Foo foos[] = {Foo(), Foo(), Foo()};
+    ASSERT(::all_of(foos, Harness::end(foos), is_state_f<Foo::DefaultInitialized>()), "all_of returned false while true expected");
+    ASSERT(! ::all_of(foos, Harness::end(foos), is_state_f<Foo::CopyInitialized>()), "all_of returned true while false expected  ");
+}
+
+template<typename static_counter_allocator_type>
+struct track_allocator_memory: NoCopy{
+    typedef typename static_counter_allocator_type::counters_t counters_t;
+
+    counters_t previous_state;
+    const char* const test_name;
+    track_allocator_memory(const char* a_test_name): test_name(a_test_name) { static_counter_allocator_type::init_counters(); }
+    ~track_allocator_memory(){verify_no_allocator_memory_leaks();}
+
+    void verify_no_allocator_memory_leaks() const{
+        ASSERT_IN_TEST( static_counter_allocator_type::items_allocated == static_counter_allocator_type::items_freed, "memory leak?", test_name );
+        ASSERT_IN_TEST( static_counter_allocator_type::allocations == static_counter_allocator_type::frees, "memory leak?", test_name );
+    }
+    void save_allocator_counters(){ previous_state = static_counter_allocator_type::counters(); }
+    void verify_no_more_than_x_memory_items_allocated(size_t  expected_number_of_items_to_allocate){
+        counters_t now = static_counter_allocator_type::counters();
+        ASSERT_IN_TEST( (now.items_allocated - previous_state.items_allocated) <= expected_number_of_items_to_allocate, "More then excepted memory allocated ?", test_name );
+    }
+};
+
+#include <vector>
+template<int line_n>
+struct track_foo_count: NoCopy{
+    bool active;
+    size_t previous_state;
+    const char* const test_name;
+    track_foo_count(const char* a_test_name): active(true), previous_state(FooCount), test_name(a_test_name) { }
+    ~track_foo_count(){
+        if (active){
+            this->verify_no_undestroyed_foo_left_and_dismiss();
+        }
+    }
+
+    //TODO: ideally in most places this check should be replaced with "no foo created or destroyed"
+    //TODO: deactivation of the check seems like a hack
+    void verify_no_undestroyed_foo_left_and_dismiss() {
+        ASSERT_IN_TEST( FooCount == previous_state, "Some instances of Foo were not destroyed ?", test_name );
+        active = false;
+    }
+};
+
+//TODO: inactive mode in these limiters is a temporary workaround for usage in exception type loop of TestException
+
+struct limit_foo_count_in_scope: NoCopy{
+    size_t previous_state;
+    bool active;
+    limit_foo_count_in_scope(size_t new_limit, bool an_active = true): previous_state(MaxFooCount), active(an_active) {
+        if (active){
+            MaxFooCount = new_limit;
+        }
+    }
+    ~limit_foo_count_in_scope(){
+        if (active) {
+            MaxFooCount = previous_state;
+        }
+    }
+};
+
+template<typename static_counter_allocator_type>
+struct limit_allocated_items_in_scope: NoCopy{
+    size_t previous_state;
+    bool active;
+    limit_allocated_items_in_scope(size_t new_limit, bool an_active = true) : previous_state(static_counter_allocator_type::max_items), active(an_active)  {
+        if (active){
+            static_counter_allocator_type::set_limits(new_limit);
+        }
+    }
+    ~limit_allocated_items_in_scope(){
+        if (active) {
+            static_counter_allocator_type::set_limits(previous_state);
+        }
+    }
+};
+
+struct default_container_traits{
+    template <typename container_type, typename iterator_type>
+    static container_type& construct_container(tbb::aligned_space<container_type> & storage, iterator_type begin, iterator_type end){
+        new (storage.begin()) container_type(begin, end);
+        return *storage.begin();
+    }
+
+    template <typename container_type, typename iterator_type, typename allocator_type>
+    static container_type& construct_container(tbb::aligned_space<container_type> & storage, iterator_type begin, iterator_type end, allocator_type const& a){
+        new (storage.begin()) container_type(begin, end, a);
+        return *storage.begin();
+    }
+};
+
+struct memory_locations {
+    std::vector<const void*> locations;
+
+    template <typename container_type>
+    memory_locations(container_type const& source) : locations(source.size()){
+        for (typename container_type::const_iterator it = source.begin(); it != source.end(); ++it){locations[std::distance(source.begin(), it)] = & *it;}
+    }
+
+    template <typename container_t>
+    bool content_location_unchanged(container_t const& dst){
+        struct is_same_location{
+            static bool compare(typename container_t::value_type const& v,  const void* location){ return &v == location;}
+        };
+
+        return std::equal(dst.begin(), dst.end(), locations.begin(), &is_same_location::compare);
+    }
+
+    template <typename container_t>
+    bool content_location_changed(container_t const& dst){
+        struct is_not_same_location{
+            static bool compare(typename container_t::value_type const& v,  const void* location){ return &v != location;}
+        };
+
+        return std::equal(dst.begin(), dst.end(), locations.begin(), &is_not_same_location::compare);
+    }
+
+};
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#include <algorithm>
+void TestMemoryLocaionsHelper(){
+    const size_t test_sequence_len =  15;
+    std::vector<char> source(test_sequence_len, 0);
+    std::generate_n(source.begin(), source.size(), std::rand);
+
+    memory_locations source_memory_locations((source));
+
+    std::vector<char> copy((source));
+    ASSERT(source_memory_locations.content_location_changed(copy), "");
+
+    std::vector<char> alias(std::move(source));
+    ASSERT(source_memory_locations.content_location_unchanged(alias), "");
+}
+namespace FooTests{
+#if TBB_USE_EXCEPTIONS
+    void TestMoveConstructorException(){
+        Foo src;
+        const Foo::State source_state_before = src.state;
+        ASSERT_THROWS_IN_TEST(
+            {
+                limit_foo_count_in_scope foo_limit(FooCount);
+                Foo f1(std::move(src));
+            },
+            std::bad_alloc, "", "TestLimitInstancesNumber"
+        );
+        ASSERT(source_state_before == src.state, "state of source changed while should not?");
+    }
+#endif //TBB_USE_EXCEPTIONS
+}
+
+template<typename container_traits, typename allocator_t>
+struct move_fixture : NoCopy{
+    typedef  typename allocator_t::value_type element_type;
+    typedef  typename container_traits:: template apply<element_type, allocator_t>::type container_t;
+    typedef  typename container_traits::init_iterator_type init_iterator_type;
+    enum {default_container_size = 100};
+    const size_t  container_size;
+    tbb::aligned_space<container_t> source_storage;
+    container_t & source;
+    //check that location of _all_ elements of container under test is changed/unchanged
+    memory_locations locations;
+
+    ~move_fixture(){
+        source_storage.begin()->~container_t();
+    }
+
+    const char* const test_name;
+    move_fixture(const char* a_test_name, size_t a_container_size = default_container_size )
+    :   container_size(a_container_size)
+    ,   source(container_traits::construct_container(source_storage, init_iterator_type(0), init_iterator_type(container_size)))
+    ,   locations(source)
+    ,   test_name(a_test_name)
+    {
+        init("move_fixture::move_fixture()");
+    }
+
+    move_fixture(const char* a_test_name, allocator_t const& a, size_t a_container_size = default_container_size)
+    :   container_size(a_container_size)
+    ,   source(container_traits::construct_container(source_storage, init_iterator_type(0), init_iterator_type(container_size), a))
+    ,   locations(source)
+    ,   test_name(a_test_name)
+    {
+        init("move_fixture::move_fixture(allocator_t const& a)");
+    }
+
+    void init(const std::string& ctor_name){
+        verify_size(source, ctor_name.c_str());
+        verify_content_equal_to_source(source, "did not properly initialized source? Or can not check container for equality with expected ?: " + ctor_name);
+        verify_size(locations.locations, "move_fixture:init ");
+    }
+
+    bool content_location_unchanged(container_t const& dst){
+        return locations.content_location_unchanged(dst);
+    }
+
+    bool content_location_changed(container_t const& dst){
+        return locations.content_location_changed(dst);
+    }
+
+    template<typename container_type>
+    void verify_size(container_type const& dst, const char* a_test_name){
+        ASSERT_IN_TEST(container_size == dst.size(), "Did not construct all the elements or allocate enough memory?, while should ?", a_test_name);
+    }
+
+    void verify_content_equal_to_source(container_t const& dst, const std::string& msg){
+        ASSERT_IN_TEST( container_traits::equal(dst, init_iterator_type(0), init_iterator_type(container_size)), msg.c_str(), test_name);
+    }
+
+    void verify_content_equal_to_source(container_t const& dst){
+        verify_content_equal_to_source(dst, "content changed during move/copy ?");
+    }
+
+    void verify_content_equal_to_source(container_t const& dst, size_t number_of_constructed_items){
+        ASSERT_IN_TEST(number_of_constructed_items <= dst.size(), "incorrect test expectation/input parameters?", test_name);
+        ASSERT_IN_TEST(std::equal(dst.begin(), dst.begin() + number_of_constructed_items, init_iterator_type(0)), "content changed during move/copy ?", test_name);
+    }
+
+    //TODO: better name ? e.g. "content_was_stolen"
+    void verify_content_shallow_moved(container_t const& dst){
+        verify_size(dst, test_name);
+        ASSERT_IN_TEST(content_location_unchanged(dst), "container move constructor actually changed element locations, while should not", test_name);
+        ASSERT_IN_TEST(source.empty(), "Moved from container instance should not contain any elements", test_name);
+        verify_content_equal_to_source(dst);
+    }
+
+    //TODO: better name ? e.g. "element move"
+    void verify_content_deep_moved(container_t const& dst){
+        verify_size(dst, test_name);
+        ASSERT_IN_TEST(content_location_changed(dst),                "container actually did not changed element locations for unequal allocators, while should", test_name);
+        ASSERT_IN_TEST(all_of(dst, is_state_f<Foo::MoveInitialized>()), "container did not move construct some elements?", test_name);
+        ASSERT_IN_TEST(all_of(source, is_state_f<Foo::MovedFrom>()),    "container did not move all the elements?", test_name);
+        verify_content_equal_to_source(dst);
+    }
+
+    void verify_part_of_content_deep_moved(container_t const& dst, size_t number_of_constructed_items){
+        ASSERT_IN_TEST(content_location_changed(dst),                "Vector actually did not changed element locations for unequal allocators, while should", test_name);
+        ASSERT_IN_TEST(::all_of(dst.begin(), dst.begin() + number_of_constructed_items, is_state_f<Foo::MoveInitialized>()), "Vector did not move construct some elements?", test_name);
+        if (dst.size() != number_of_constructed_items) {
+            ASSERT_IN_TEST(::all_of(dst.begin() + number_of_constructed_items, dst.end(), is_state_f<Foo::ZeroInitialized>()), "Failed to zero-initialize items left not constructed after the exception?", test_name );
+        }
+        verify_content_equal_to_source(dst, number_of_constructed_items);
+
+        ASSERT_IN_TEST(::all_of(source.begin(), source.begin() + number_of_constructed_items, is_state_f<Foo::MovedFrom>()),  "Vector did not move all the elements?", test_name);
+        ASSERT_IN_TEST(::all_of(source.begin() + number_of_constructed_items, source.end(), std::not1(std::ptr_fun(&is_state<Foo::MovedFrom, element_type::is_zero_initialized_state_allowed>))),  "Vector changed elements in source after exception point?", test_name);
+    }
+};
+
+
+template <typename T, typename pocma = Harness::false_type>
+struct arena_allocator_fixture : NoCopy{
+    typedef arena<T, pocma>  allocator_t;
+    typedef typename allocator_t::arena_data_t arena_data_t;
+
+    std::vector<tbb::aligned_space<T, 1> > storage;
+    arena_data_t arena_data;
+    allocator_t allocator;
+
+    arena_allocator_fixture(size_t size_to_allocate)
+    :   storage(size_to_allocate)
+    ,   arena_data((*storage.begin()).begin(), storage.size())
+    ,   allocator(arena_data)
+    {}
+};
+
+//TODO: add ability to inject debug_allocator into stateful_allocator_fixture::allocator_t
+template <typename T, typename pocma = Harness::false_type>
+struct two_memory_arenas_fixture : NoCopy{
+    typedef arena_allocator_fixture<T, pocma> arena_fixture_t;
+    typedef typename arena_fixture_t::allocator_t  allocator_t;
+
+    arena_fixture_t source_arena_fixture;
+    arena_fixture_t dst_arena_fixture;
+
+    allocator_t& source_allocator;
+    allocator_t& dst_allocator;
+
+    const char* test_name;
+
+    two_memory_arenas_fixture(size_t size_to_allocate, const char* a_test_name)
+    :   source_arena_fixture(size_to_allocate)
+    ,   dst_arena_fixture(size_to_allocate)
+    ,   source_allocator(source_arena_fixture.allocator)
+    ,   dst_allocator(dst_arena_fixture.allocator)
+    ,   test_name(a_test_name)
+    {
+        ASSERT_IN_TEST(&*source_arena_fixture.storage.begin() != &*dst_arena_fixture.storage.begin(), "source and destination arena instances should use different memory regions", test_name);
+        ASSERT_IN_TEST(source_allocator != dst_allocator, "arenas using different memory regions should not compare equal", test_name);
+        ASSERT_IN_TEST(pocma::value == tbb::internal::allocator_traits<allocator_t>::propagate_on_container_move_assignment::value, "This test require proper allocator_traits support", test_name);
+
+        //Some ISO C++11 allocator requirements enforcement:
+        allocator_t source_allocator_copy(source_allocator), dst(dst_allocator);
+        allocator_t source_previous_state(source_allocator);
+        ASSERT_IN_TEST(source_previous_state == source_allocator, "Copy of allocator should compare equal to it's source", test_name);
+        dst = std::move(source_allocator_copy);
+        ASSERT_IN_TEST(dst == source_previous_state, "Move initialized instance of allocator should compare equal to it's source state before movement", test_name);
+    }
+
+    void verify_allocator_was_moved(const allocator_t& result_allocator){
+        //TODO: add assert that allocator move constructor/assignment operator was called
+        ASSERT_IN_TEST(result_allocator == source_allocator, "allocator was not moved ?", test_name);
+        ASSERT_IN_TEST(result_allocator != dst_allocator,    "allocator was not moved ?", test_name);
+    }
+
+//    template <typename any_allocator_t>
+//    void verify_allocator_was_moved(const any_allocator_t& ){}
+};
+
+template <typename pocma = Harness::false_type>
+struct std_stateful_allocator : NoCopy {
+    typedef stateful_allocator<FooWithAssign, pocma> allocator_t;
+
+    allocator_t source_allocator;
+    allocator_t dst_allocator;
+
+    const char* test_name;
+
+    std_stateful_allocator(size_t , const char* a_test_name)
+    :   test_name(a_test_name)
+    {}
+
+    template <typename any_allocator_t>
+    void verify_allocator_was_moved(const any_allocator_t& ){}
+
+};
+
+template<typename container_traits, typename pocma = Harness::false_type, typename T = FooWithAssign>
+struct default_stateful_fixture_make_helper{
+//    typedef std_stateful_allocator<pocma> allocator_fixture_t;
+    typedef two_memory_arenas_fixture<T, pocma> allocator_fixture_t;
+    typedef static_shared_counting_allocator<Harness::int_to_type<__LINE__>, typename allocator_fixture_t::allocator_t, std::size_t> allocator_t;
+
+    typedef move_fixture<container_traits, allocator_t> move_fixture_t;
+    typedef track_allocator_memory<allocator_t> no_leaks_t;
+    typedef track_foo_count<__LINE__> no_foo_leaks_in_fixture_t;
+    typedef track_foo_count<__LINE__> no_foo_leaks_in_test_t;
+
+    struct default_stateful_fixture : no_leaks_t, private no_foo_leaks_in_fixture_t, allocator_fixture_t, move_fixture_t, no_foo_leaks_in_test_t {
+
+        default_stateful_fixture(const char* a_test_name)
+        :   no_leaks_t(a_test_name)
+        ,   no_foo_leaks_in_fixture_t(a_test_name)
+        //TODO: calculate needed size more accurately
+        //allocate twice more storage to handle case when copy constructor called instead of move one
+        ,   allocator_fixture_t(2*4 * move_fixture_t::default_container_size, a_test_name)
+        ,   move_fixture_t(a_test_name, allocator_fixture_t::source_allocator)
+        ,   no_foo_leaks_in_test_t(a_test_name)
+        {
+            no_leaks_t::save_allocator_counters();
+        }
+
+        void verify_no_more_than_x_memory_items_allocated(){
+            no_leaks_t::verify_no_more_than_x_memory_items_allocated(container_traits::expected_number_of_items_to_allocate_for_steal_move);
+        }
+        using no_foo_leaks_in_test_t::verify_no_undestroyed_foo_left_and_dismiss;
+        typedef typename move_fixture_t::container_t::allocator_type allocator_t;
+    };
+
+    typedef default_stateful_fixture type;
+};
+
+template<typename container_traits>
+void TestMoveConstructorSingleArgument(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveConstructorSingleArgument");
+
+    container_t dst(std::move(fixture.source));
+
+    fixture.verify_content_shallow_moved(dst);
+    fixture.verify_allocator_was_moved(dst.get_allocator());
+    fixture.verify_no_more_than_x_memory_items_allocated();
+    fixture.verify_no_undestroyed_foo_left_and_dismiss();
+}
+
+template<typename container_traits>
+void TestMoveConstructorWithEqualAllocator(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveConstructorWithEqualAllocator");
+
+    container_t dst(std::move(fixture.source), fixture.source.get_allocator());
+
+    fixture.verify_content_shallow_moved(dst);
+    fixture.verify_no_more_than_x_memory_items_allocated();
+    fixture.verify_no_undestroyed_foo_left_and_dismiss();
+}
+
+template<typename container_traits>
+void TestMoveConstructorWithUnEqualAllocator(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveConstructorWithUnEqualAllocator");
+
+    container_t dst(std::move(fixture.source), fixture.dst_allocator);
+
+    fixture.verify_content_deep_moved(dst);
+}
+
+template<typename container_traits>
+void TestMoveConstructor(){
+    TestMoveConstructorSingleArgument<container_traits>();
+    TestMoveConstructorWithEqualAllocator<container_traits>();
+    TestMoveConstructorWithUnEqualAllocator<container_traits>();
+}
+
+template<typename container_traits>
+void TestMoveAssignOperatorPOCMAStateful(){
+    typedef typename default_stateful_fixture_make_helper<container_traits, Harness::true_type>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveAssignOperatorPOCMAStateful");
+
+    container_t dst(fixture.dst_allocator);
+
+    fixture.save_allocator_counters();
+
+    dst = std::move(fixture.source);
+
+    fixture.verify_content_shallow_moved(dst);
+    fixture.verify_allocator_was_moved(dst.get_allocator());
+    fixture.verify_no_more_than_x_memory_items_allocated();
+    fixture.verify_no_undestroyed_foo_left_and_dismiss();
+}
+
+template<typename container_traits>
+void TestMoveAssignOperatorPOCMANonStateful(){
+    typedef std::allocator<FooWithAssign>  allocator_t;
+
+    typedef move_fixture<container_traits, allocator_t> fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveAssignOperatorPOCMANonStateful");
+
+    ASSERT(fixture.source.get_allocator() == allocator_t(), "Incorrect test setup: allocator is stateful while should not?");
+
+    container_t dst;
+    dst = std::move(fixture.source);
+
+    fixture.verify_content_shallow_moved(dst);
+    //TODO: add an assert that allocator was "moved" when POCMA is set
+}
+
+template<typename container_traits>
+void TestMoveAssignOperatorNotPOCMAWithUnEqualAllocator(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestMoveAssignOperatorNotPOCMAWithUnEqualAllocator");
+
+    container_t dst(fixture.dst_allocator);
+    dst = std::move(fixture.source);
+
+    fixture.verify_content_deep_moved(dst);
+}
+
+template<typename container_traits>
+void TestMoveAssignOperatorNotPOCMAWithEqualAllocator(){
+    typedef typename default_stateful_fixture_make_helper<container_traits, Harness::false_type>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+    fixture_t fixture("TestMoveAssignOperatorNotPOCMAWithEqualAllocator");
+
+    container_t dst(fixture.source_allocator);
+    ASSERT(fixture.source.get_allocator() == dst.get_allocator(), "Incorrect test setup: allocators are not equal while should be?");
+
+    fixture.save_allocator_counters();
+
+    dst = std::move(fixture.source);
+
+    fixture.verify_content_shallow_moved(dst);
+    fixture.verify_no_more_than_x_memory_items_allocated();
+    fixture.verify_no_undestroyed_foo_left_and_dismiss();
+}
+
+template<typename container_traits>
+void TestMoveAssignOperator(){
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+    TestMoveAssignOperatorPOCMANonStateful<container_traits>();
+    TestMoveAssignOperatorPOCMAStateful<container_traits>();
+#endif
+    TestMoveAssignOperatorNotPOCMAWithUnEqualAllocator<container_traits>();
+    TestMoveAssignOperatorNotPOCMAWithEqualAllocator<container_traits>();
+}
+
+template<typename container_traits>
+void TestConstructorWithMoveIterators(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestConstructorWithMoveIterators");
+
+    container_t dst(std::make_move_iterator(fixture.source.begin()), std::make_move_iterator(fixture.source.end()), fixture.dst_allocator);
+
+    fixture.verify_content_deep_moved(dst);
+}
+
+template<typename container_traits>
+void TestAssignWithMoveIterators(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    fixture_t fixture("TestAssignWithMoveIterators");
+
+    container_t dst(fixture.dst_allocator);
+    dst.assign(std::make_move_iterator(fixture.source.begin()), std::make_move_iterator(fixture.source.end()));
+
+    fixture.verify_content_deep_moved(dst);
+}
+
+#if  TBB_USE_EXCEPTIONS
+template<typename container_traits>
+void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+    typedef typename container_t::allocator_type allocator_t;
+    const char* test_name = "TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorMemoryFailure";
+    fixture_t fixture(test_name);
+
+    limit_allocated_items_in_scope<allocator_t> allocator_limit(allocator_t::items_allocated + fixture.container_size/4);
+    ASSERT_THROWS_IN_TEST(container_t dst(std::move(fixture.source), fixture.dst_allocator), std::bad_alloc, "", test_name);
+}
+
+//TODO: add tests that verify that stealing move constructors/assign operators does not throw exceptions
+template<typename container_traits>
+void TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorExceptionInElementCtor(){
+    typedef typename default_stateful_fixture_make_helper<container_traits>::type fixture_t;
+    typedef typename fixture_t::container_t container_t;
+
+    const char* test_name = "TestExceptionSafetyGuaranteesMoveConstructorWithUnEqualAllocatorExceptionInElementCtor";
+    fixture_t fixture(test_name);
+
+    limit_foo_count_in_scope foo_limit(FooCount + fixture.container_size/4);
+    ASSERT_THROWS_IN_TEST(container_t dst(std::move(fixture.source), fixture.dst_allocator), std::bad_alloc, "", test_name);
+}
+#endif /* TBB_USE_EXCEPTIONS */
+#endif//__TBB_CPP11_RVALUE_REF_PRESENT
+
+namespace helper_stuff_tests {
+    void inline TestArena(){
+        typedef int arena_element;
+
+        arena_element arena_storage[10] = {0};
+        typedef arena<arena_element> arena_t;
+
+        arena_t::arena_data_t arena_data(arena_storage,Harness::array_length(arena_storage));
+        arena_t a(arena_data);
+
+        ASSERT(a.allocate(1) == arena_storage, "");
+        ASSERT(a.allocate(2) == &arena_storage[1], "");
+        ASSERT(a.allocate(2) == &arena_storage[2+1], "");
+    }
+
+    template<typename static_counting_allocator_type>
+    void inline TestStaticCountingAllocatorRebound(){
+        static_counting_allocator_type::set_limits(1);
+        typedef typename static_counting_allocator_type:: template rebind<std::pair<int,int> >::other rebound_type;
+        ASSERT(rebound_type::max_items == static_counting_allocator_type::max_items, "rebound allocator should use the same limits");
+        static_counting_allocator_type::set_limits(0);
+    }
+
+    void inline TestStatefulAllocator(){
+        stateful_allocator<int> a1,a2;
+        stateful_allocator<int> copy_of_a1(a1);
+        ASSERT(a1 != a2,"non_equal_allocator are designed to simulate stateful allocators");
+        ASSERT(copy_of_a1 == a1,"");
+    }
+}
+struct TestHelperStuff{
+    TestHelperStuff(){
+        using namespace helper_stuff_tests;
+        TestFoo();
+        TestAllOf();
+        TestArena();
+        TestStaticCountingAllocatorRebound<static_shared_counting_allocator<int, arena<int> > >();
+        TestStatefulAllocator();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        TestMemoryLocaionsHelper();
+#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+    }
+};
+static TestHelperStuff TestHelperStuff_s;
+#endif /* __TBB_test_container_move_support_H */
diff --git a/src/test/test_continue_node.cpp b/src/test/test_continue_node.cpp
index e2a160d..794577c 100644
--- a/src/test/test_continue_node.cpp
+++ b/src/test/test_continue_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
@@ -43,9 +35,20 @@ struct empty_no_assign : private NoAssign {
 // A class to use as a fake predecessor of continue_node
 struct fake_continue_sender : public tbb::flow::sender<tbb::flow::continue_msg>
 {
+    typedef tbb::flow::receiver<tbb::flow::continue_msg> successor_type;
     // Define implementations of virtual methods that are abstract in the base class
     /*override*/ bool register_successor( successor_type& ) { return false; }
     /*override*/ bool remove_successor( successor_type& )   { return false; }  
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef tbb::flow::sender<tbb::flow::continue_msg>::built_successors_type built_successors_type;
+    built_successors_type bst;
+    /*override*/ built_successors_type &built_successors() { return bst; }
+    /*override*/void internal_add_built_successor( successor_type &) { }
+    /*override*/void internal_delete_built_successor( successor_type &) { }
+    /*override*/void copy_successors(successor_list_type &) {}
+    /*override*/void clear_successors() {}
+    /*override*/size_t successor_count() {return 0;}
+#endif
 };
 
 template< typename InputType >
@@ -78,6 +81,14 @@ void run_continue_nodes( int p, tbb::flow::graph& g, tbb::flow::continue_node< O
         for (size_t r = 0; r < num_receivers; ++r ) {
             tbb::flow::make_edge( n, receivers[r] );
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(n.successor_count() == (size_t)num_receivers, NULL);
+        ASSERT(n.predecessor_count() == 0, NULL);
+        typename tbb::flow::continue_node<OutputType>::successor_list_type my_succs;
+        typedef typename tbb::flow::continue_node<OutputType>::successor_list_type::iterator sv_iter_type;
+        n.copy_successors(my_succs);
+        ASSERT(my_succs.size() == num_receivers, NULL);
+#endif
 
         NativeParallelFor( p, parallel_puts<tbb::flow::continue_msg>(n) );
         g.wait_for_all();
@@ -90,6 +101,16 @@ void run_continue_nodes( int p, tbb::flow::graph& g, tbb::flow::continue_node< O
             // 3) the nodes will send to multiple successors.
             ASSERT( (int)c == p, NULL );
         }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        for(sv_iter_type si=my_succs.begin(); si != my_succs.end(); ++si) {
+            tbb::flow::remove_edge( n, **si );
+        }
+#else
+        for (size_t r = 0; r < num_receivers; ++r ) {
+            tbb::flow::remove_edge( n, receivers[r] );
+        }
+#endif
     }
 }
 
@@ -114,6 +135,7 @@ struct inc_functor {
     tbb::atomic<size_t> local_execute_count;
     inc_functor( ) { local_execute_count = 0; }
     inc_functor( const inc_functor &f ) { local_execute_count = f.local_execute_count; }
+    void operator=(const inc_functor &f) { local_execute_count = f.local_execute_count; }
 
     OutputType operator()( tbb::flow::continue_msg ) {
        ++global_execute_count;
@@ -162,6 +184,12 @@ void continue_nodes_with_copy( ) {
         size_t global_count = global_execute_count;
         size_t inc_count = body_copy.local_execute_count;
         ASSERT( global_count == expected_count && global_count == inc_count, NULL );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        g.reset(tbb::flow::rf_reset_bodies);
+        body_copy = tbb::flow::copy_body< inc_functor<OutputType> >( exe_node );
+        inc_count = body_copy.local_execute_count;
+        ASSERT( Offset == inc_count, "reset(rf_reset_bodies) did not reset functor" );
+#endif
 
     }
 }
@@ -234,6 +262,105 @@ void test_two_graphs(){
     ASSERT(count==0, "Node executed without waiting for all predecessors");
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+void test_extract() {
+    int my_count = 0;
+    tbb::flow::continue_msg cm;
+    tbb::flow::graph g;
+    tbb::flow::broadcast_node<tbb::flow::continue_msg> b0(g);
+    tbb::flow::broadcast_node<tbb::flow::continue_msg> b1(g);
+    tbb::flow::continue_node<tbb::flow::continue_msg>  c0(g, add_to_counter(my_count));
+    tbb::flow::queue_node<tbb::flow::continue_msg> q0(g);
+
+    tbb::flow::make_edge(b0, c0);
+    tbb::flow::make_edge(b1, c0);
+    tbb::flow::make_edge(c0, q0);
+    for( int i = 0; i < 2; ++i ) {
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(c0.predecessor_count() == 2 && c0.successor_count() == 1, "c0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+    
+        /* b0         */
+        /*   \        */
+        /*    c0 - q0 */
+        /*   /        */
+        /* b1         */
+    
+        b0.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(my_count == 0, "continue_node fired too soon");
+        b1.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(my_count == 1, "continue_node didn't fire");
+        ASSERT(q0.try_get(cm), "continue_node didn't forward");
+    
+        b0.extract();
+    
+        /* b0         */
+        /*            */
+        /*    c0 - q0 */
+        /*   /        */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(c0.predecessor_count() == 1 && c0.successor_count() == 1, "c0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(tbb::flow::continue_msg());
+        b0.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(my_count == 1, "b0 messages being forwarded to continue_node even though it is disconnected");
+        b1.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(my_count == 2, "continue_node didn't fire though it has only one predecessor");
+        ASSERT(q0.try_get(cm), "continue_node didn't forward second time");
+    
+        c0.extract();
+    
+        /* b0         */
+        /*            */
+        /*    c0   q0 */
+        /*            */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(c0.predecessor_count() == 0 && c0.successor_count() == 0, "c0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(tbb::flow::continue_msg());
+        b0.try_put(tbb::flow::continue_msg());
+        b1.try_put(tbb::flow::continue_msg());
+        b1.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(my_count == 2, "continue didn't fire though it has only one predecessor");
+        ASSERT(!q0.try_get(cm), "continue_node forwarded though it shouldn't");
+        make_edge(b0, c0);
+    
+        /* b0         */
+        /*   \        */
+        /*    c0   q0 */
+        /*            */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(c0.predecessor_count() == 1 && c0.successor_count() == 0, "c0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+    
+        b0.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+    
+        ASSERT(my_count == 3, "continue didn't fire though it has only one predecessor");
+        ASSERT(!q0.try_get(cm), "continue_node forwarded though it shouldn't");
+    
+        tbb::flow::make_edge(b1, c0);
+        tbb::flow::make_edge(c0, q0);
+        my_count = 0;
+    }
+}
+#endif
+
 int TestMain() {
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -243,6 +370,9 @@ int TestMain() {
        test_concurrency(p);
    }
    test_two_graphs();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   test_extract();
+#endif
    return Harness::Done;
 }
 
diff --git a/src/test/test_critical_section.cpp b/src/test/test_critical_section.cpp
index 57254b2..70a82ca 100644
--- a/src/test/test_critical_section.cpp
+++ b/src/test/test_critical_section.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // test critical section
diff --git a/src/test/test_dynamic_link.cpp b/src/test/test_dynamic_link.cpp
index b6f8935..06108c1 100644
--- a/src/test/test_dynamic_link.cpp
+++ b/src/test/test_dynamic_link.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 enum FOO_TYPE {
@@ -65,9 +57,10 @@ static const tbb::internal::dynamic_link_descriptor LinkTable[] = {
 
 // The direct include since we want to test internal functionality.
 #include "tbb/dynamic_link.cpp"
-#include "harness.h"
 #include "harness_dynamic_libs.h"
+#include "harness.h"
 
+#if !HARNESS_SKIP_TEST
 int TestMain () {
 #if !_WIN32
     // Check if the executable exports its symbols.
@@ -88,3 +81,4 @@ int TestMain () {
     }
     return Harness::Done;
 }
+#endif // HARNESS_SKIP_TEST
diff --git a/src/test/test_eh_algorithms.cpp b/src/test/test_eh_algorithms.cpp
index b2291fb..0e40e18 100644
--- a/src/test/test_eh_algorithms.cpp
+++ b/src/test/test_eh_algorithms.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 2
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #include "harness.h"
 
 #if __TBB_TASK_GROUP_CONTEXT
diff --git a/src/test/test_eh_flow_graph.cpp b/src/test/test_eh_flow_graph.cpp
index f52b131..bc6ac9a 100644
--- a/src/test/test_eh_flow_graph.cpp
+++ b/src/test/test_eh_flow_graph.cpp
@@ -1,33 +1,28 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
 
+#define HARNESS_DEFAULT_MIN_THREADS 2
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #if _MSC_VER
     #pragma warning (disable: 4503) // Suppress "decorated name length exceeded, name was truncated" warning
     #if !TBB_USE_EXCEPTIONS
@@ -47,7 +42,6 @@
 // participating.  That was the hope, but it counts the entries into the marketplace,
 // not the arena.
 // #define USE_TASK_SCHEDULER_OBSERVER 1
-#define TBB_PREVIEW_GRAPH_NODES 1
 
 #if _MSC_VER && defined(__INTEL_COMPILER) && !TBB_USE_DEBUG
     #define TBB_RUN_BUFFERING_TEST __INTEL_COMPILER > 1210
@@ -188,12 +182,16 @@ class test_source_body : WaitThrow<serial_type, TType> {
     tbb::atomic<int> *my_current_val;
     int my_mult;
 public:
-    test_source_body(tbb::atomic<int> &my_cnt, int multiplier = 1) : my_current_val(&my_cnt), my_mult(multiplier) { }
+    test_source_body(tbb::atomic<int> &my_cnt, int multiplier = 1) : my_current_val(&my_cnt), my_mult(multiplier) {
+        REMARK("- --------- - - -   constructed %lx\n", (size_t)(my_current_val));
+    }
 
     bool operator()(OutputType & out) {
         UPDATE_COUNTS();
         out = OutputType(my_mult * ++(*my_current_val));
+        REMARK("xx(%lx) out == %d\n", (size_t)(my_current_val), (int)out);
         if(*my_current_val > g_NumItems) {
+            REMARK(" ------ End of the line!\n");
             *my_current_val = g_NumItems;
             return false;
         }
@@ -288,6 +286,7 @@ public:
 template<class BufferItemType>
 struct sequencer_body {
     size_t operator()(const BufferItemType &s) {
+        ASSERT(s, "sequencer item out of range (== 0)");
         return size_t(s) - 1;
     }
 };
@@ -311,10 +310,10 @@ struct less_body : public std::binary_function<ItemType,ItemType,bool> {
 // --------- tag methods for tag_matching join_node
 template<typename TT>
 class tag_func {
-    const TT my_mult;
-    tag_func& operator=( const tag_func& other);
+    TT my_mult;
 public:
     tag_func(TT multiplier) : my_mult(multiplier) { }
+    void operator=( const tag_func& other){my_mult = other.my_mult;}
     // operator() will return [0 .. Count) 
     tbb::flow::tag_value operator()( TT v) {
         tbb::flow::tag_value t = tbb::flow::tag_value(v / my_mult);
@@ -1113,7 +1112,7 @@ void run_one_sequencer_node_test(bool throwException,bool flog) {
         if(iter == 0) {
             remove_edge(node_to_test, sink);
             node_to_test.try_put(BufferItemType(g_NumItems + 1));
-            node_to_test.try_put(BufferItemType());
+            node_to_test.try_put(BufferItemType(1));
             g.wait_for_all();
             g.reset();
             source_count = sink_count = 0;
@@ -1375,7 +1374,13 @@ struct run_one_join_node_test {
             else {
                 ASSERT(!g.exception_thrown(), "Exception flag in flow::graph set but no throw occurred");
                 ASSERT(!g.is_cancelled(), "canceled flag set but no throw occurred");
-                ASSERT(sb0_cnt == g_NumItems, "Missing invocations of source_node0");
+                if(sb0_cnt != g_NumItems) {
+                    REMARK("throwException == %s\n", throwException ? "true" : "false");
+                    REMARK("iter == %d\n", (int)iter);
+                    REMARK("sb0_cnt == %d\n", (int)sb0_cnt);
+                    REMARK("g_NumItems == %d\n", (int)g_NumItems);
+                }
+                ASSERT(sb0_cnt == g_NumItems, "Missing invocations of source_node0");  // this one
                 ASSERT(sb1_cnt == g_NumItems, "Missing invocations of source_node1");
                 ASSERT(nb_cnt == g_NumItems, "Missing items in absorbers");
             }
@@ -1792,8 +1797,7 @@ void test_split_node() {
     g_Wakeup_Msg = g_Orig_Wakeup_Msg;
 }
 
-#if TBB_PREVIEW_GRAPH_NODES
-// --------- or_node ----------------------
+// --------- indexer_node ----------------------
 
 template < class InputTuple,
     class SourceType0,
@@ -1803,7 +1807,7 @@ template < class InputTuple,
     class TestNodeType,
     class SinkType,
     class SinkBodyType>
-void run_one_or_node_test(bool throwException,bool flog) {
+void run_one_indexer_node_test(bool throwException,bool flog) {
     typedef typename tbb::flow::tuple_element<0,InputTuple>::type ItemType0;
     typedef typename tbb::flow::tuple_element<1,InputTuple>::type ItemType1;
 
@@ -1887,12 +1891,12 @@ void run_one_or_node_test(bool throwException,bool flog) {
 template<class InputTuple,
     TestNodeTypeEnum SourceThrowType,
     TestNodeTypeEnum SinkThrowType>
-void run_or_node_test() {
+void run_indexer_node_test() {
     typedef typename tbb::flow::tuple_element<0,InputTuple>::type ItemType0;
     typedef typename tbb::flow::tuple_element<1,InputTuple>::type ItemType1;
     typedef test_source_body<ItemType0,SourceThrowType> SourceBodyType0;
     typedef test_source_body<ItemType1,SourceThrowType> SourceBodyType1;
-    typedef typename tbb::flow::or_node<InputTuple> TestNodeType;
+    typedef typename tbb::flow::indexer_node<ItemType0, ItemType1> TestNodeType;
     typedef absorber_body<typename TestNodeType::output_type,tbb::flow::continue_msg,SinkThrowType,unlimited_type> SinkBodyType;
 
     typedef typename tbb::flow::source_node<ItemType0> SourceType0;
@@ -1903,7 +1907,7 @@ void run_or_node_test() {
         if(2 == i) continue;
         bool throwException = (i & 0x1) != 0;
         bool doFlog = (i & 0x2) != 0;
-        run_one_or_node_test<
+        run_one_indexer_node_test<
              InputTuple,
              SourceType0,
              SourceBodyType0,
@@ -1915,17 +1919,16 @@ void run_or_node_test() {
     }
 }
 
-void test_or_node() {
-    REMARK("Testing or_node\n");
-    g_Wakeup_Msg = "or_node(is,non): Missed wakeup or machine is overloaded?";
-    run_or_node_test<tbb::flow::tuple<int,int>, isThrowing, nonThrowing>();
-    g_Wakeup_Msg = "or_node(non,is): Missed wakeup or machine is overloaded?";
-    run_or_node_test<tbb::flow::tuple<int,int>, nonThrowing, isThrowing>();
-    g_Wakeup_Msg = "or_node(is,is): Missed wakeup or machine is overloaded?";
-    run_or_node_test<tbb::flow::tuple<int,int>, isThrowing,  isThrowing>();
+void test_indexer_node() {
+    REMARK("Testing indexer_node\n");
+    g_Wakeup_Msg = "indexer_node(is,non): Missed wakeup or machine is overloaded?";
+    run_indexer_node_test<tbb::flow::tuple<int,int>, isThrowing, nonThrowing>();
+    g_Wakeup_Msg = "indexer_node(non,is): Missed wakeup or machine is overloaded?";
+    run_indexer_node_test<tbb::flow::tuple<int,int>, nonThrowing, isThrowing>();
+    g_Wakeup_Msg = "indexer_node(is,is): Missed wakeup or machine is overloaded?";
+    run_indexer_node_test<tbb::flow::tuple<int,int>, isThrowing,  isThrowing>();
     g_Wakeup_Msg = g_Orig_Wakeup_Msg;;
 }
-#endif
 
 ///////////////////////////////////////////////
 // whole-graph exception test
@@ -2025,11 +2028,7 @@ void TestOneThreadNum(int nThread) {
         // not do try_puts after it has been set.  To get parallelism of N we have
         // to attach N successor nodes to the write_once (or play some similar game).
         // test_write_once_node();
-#if TBB_PREVIEW_GRAPH_NODES
-        test_or_node();
-#else
-        REMARK("or_node test skipped\n");
-#endif
+        test_indexer_node();
     }
 }
 #endif // TBB_USE_EXCEPTIONS
diff --git a/src/test/test_eh_tasks.cpp b/src/test/test_eh_tasks.cpp
index 9f54575..103d2a7 100644
--- a/src/test/test_eh_tasks.cpp
+++ b/src/test/test_eh_tasks.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 2
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #include "harness.h"
 
 #if __TBB_TASK_GROUP_CONTEXT
diff --git a/src/test/test_enumerable_thread_specific.cpp b/src/test/test_enumerable_thread_specific.cpp
index 1d20ae7..96ab940 100644
--- a/src/test/test_enumerable_thread_specific.cpp
+++ b/src/test/test_enumerable_thread_specific.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 0
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #include "tbb/enumerable_thread_specific.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/parallel_for.h"
@@ -55,6 +50,10 @@
 
 #include "harness_assert.h"
 #include "harness.h"
+#include "harness_checktype.h"
+
+#include "../tbbmalloc/shared_utils.h"
+using rml::internal::estimatedCacheLineSize;
 
 #if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
 #pragma GCC diagnostic ignored "-Wuninitialized"
@@ -75,7 +74,7 @@ const int RANGE_MIN=10000;
 const int VALID_NUMBER_OF_KEYS = 100;
 const double EXPECTED_SUM = (REPETITIONS + 1) * N;
 
-//! A minimal class that occupies N bytes. 
+//! A minimal class that occupies N bytes.
 /** Defines default and copy constructor, and allows implicit operator&.
     Hides operator=. */
 template<size_t N=tbb::internal::NFS_MaxLineSize>
@@ -92,14 +91,62 @@ public:
     int value( ) const { ASSERT(is_constructed, NULL); return my_value; }
 };
 
+static size_t AlignMask = 0;  // set to cache-line-size - 1
+
+template<typename T>
+T& check_alignment(T& t, const char *aname) { 
+    if( (size_t(&t) & AlignMask) != 0) {
+        REPORT_ONCE("alignment error with %s allocator (%x)\n", aname, (int)size_t(&t) & AlignMask);
+    }
+    return t;
+}
+
+template<typename T>
+const T& check_alignment(const T& t, const char *aname) {
+    if( (size_t(&t) & AlignMask) != 0) {
+        REPORT_ONCE("alignment error with %s allocator (%x)\n", aname, (int)size_t(&t) & AlignMask);
+    }
+    return t;
+}
+
+// Test constructors which throw.  If an ETS constructor throws before completion,
+// the already-built objects are un-constructed.  Do not call the destructor if
+// this occurs.
+
+static tbb::atomic<int> gThrowValue;
+static int targetThrowValue = 3;
+
+class Thrower {
+public:
+    Thrower() {
+#if TBB_USE_EXCEPTIONS
+        if(++gThrowValue == targetThrowValue) {
+            throw std::bad_alloc();
+        }
+#endif
+    }
+};
+
+// MyThrower field of ThrowingConstructor will throw after a certain number of 
+// construction calls.  The constructor unwinder wshould unconstruct the instance
+// of check_type<int> that was constructed just before.
+class ThrowingConstructor {
+    check_type<int> m_checktype; 
+    Thrower m_throwing_field;
+public:
+    int m_cnt;
+    ThrowingConstructor() : m_checktype(), m_throwing_field() { m_cnt = 0;}
+private:
+};
+
 //
-// A helper class that simplifies writing the tests since minimal does not 
+// A helper class that simplifies writing the tests since minimal does not
 // define = or + operators.
 //
 
 template< typename T >
 struct test_helper {
-   static inline void init(T &e) { e = static_cast<T>(0); }  
+   static inline void init(T &e) { e = static_cast<T>(0); }
    static inline void sum(T &e, const int addend ) { e += static_cast<T>(addend); }
    static inline void sum(T &e, const double addend ) { e += static_cast<T>(addend); }
    static inline void set(T &e, const int value ) { e = static_cast<T>(value); }
@@ -108,7 +155,7 @@ struct test_helper {
 
 template<size_t N>
 struct test_helper<minimal<N> > {
-   static inline void init(minimal<N> &sum) { sum.set_value( 0 ); }  
+   static inline void init(minimal<N> &sum) { sum.set_value( 0 ); }
    static inline void sum(minimal<N> &sum, const int addend ) { sum.set_value( sum.value() + addend); }
    static inline void sum(minimal<N> &sum, const double addend ) { sum.set_value( sum.value() + static_cast<int>(addend)); }
    static inline void sum(minimal<N> &sum, const minimal<N> &addend ) { sum.set_value( sum.value() + addend.value()); }
@@ -116,29 +163,21 @@ struct test_helper<minimal<N> > {
    static inline double get(const minimal<N> &sum ) { return static_cast<double>(sum.value()); }
 };
 
+template<>
+struct test_helper<ThrowingConstructor> {
+   static inline void init(ThrowingConstructor &sum) { sum.m_cnt = 0; }
+   static inline void sum(ThrowingConstructor &sum, const int addend ) { sum.m_cnt += addend; }
+   static inline void sum(ThrowingConstructor &sum, const double addend ) { sum.m_cnt += static_cast<int>(addend); }
+   static inline void sum(ThrowingConstructor &sum, const ThrowingConstructor &addend ) { sum.m_cnt += addend.m_cnt; }
+   static inline void set(ThrowingConstructor &v, const int value ) { v.m_cnt = static_cast<int>(value); }
+   static inline double get(const ThrowingConstructor &sum ) { return static_cast<double>(sum.m_cnt); }
+};
+
 //! Tag class used to make certain constructors hard to invoke accidentally.
 struct SecretTagType {} SecretTag;
 
 //// functors and routines for initialization and combine
 
-// Addition
-
-template <typename T>
-struct FunctorAddCombineRef {
-    T operator()(const T& left, const T& right) const {
-        return left+right;
-    }
-};
-
-template <size_t N>
-struct FunctorAddCombineRef<minimal<N> > {
-    minimal<N> operator()(const minimal<N>& left, const minimal<N>& right) const {
-        minimal<N> result;
-        result.set_value( left.value() + right.value() ); 
-        return result;
-    }
-};
-
 //! Counts instances of FunctorFinit
 static tbb::atomic<int> FinitCounter;
 
@@ -150,18 +189,53 @@ struct FunctorFinit {
     T operator()() { return Value; }
 };
 
+template <int Value>
+struct FunctorFinit<ThrowingConstructor,Value> {
+    FunctorFinit( const FunctorFinit& ) {++FinitCounter;}
+    FunctorFinit( SecretTagType ) {++FinitCounter;}
+    ~FunctorFinit() {--FinitCounter;}
+    ThrowingConstructor operator()() { ThrowingConstructor temp; temp.m_cnt = Value; return temp; }
+};
+
 template <size_t N, int Value>
 struct FunctorFinit<minimal<N>,Value> {
     FunctorFinit( const FunctorFinit& ) {++FinitCounter;}
     FunctorFinit( SecretTagType ) {++FinitCounter;}
     ~FunctorFinit() {--FinitCounter;}
-    minimal<N> operator()() {   
+    minimal<N> operator()() {
         minimal<N> result;
         result.set_value( Value );
         return result;
     }
 };
 
+// Addition
+
+template <typename T>
+struct FunctorAddCombineRef {
+    T operator()(const T& left, const T& right) const {
+        return left+right;
+    }
+};
+
+template <size_t N>
+struct FunctorAddCombineRef<minimal<N> > {
+    minimal<N> operator()(const minimal<N>& left, const minimal<N>& right) const {
+        minimal<N> result;
+        result.set_value( left.value() + right.value() );
+        return result;
+    }
+};
+
+template <>
+struct FunctorAddCombineRef<ThrowingConstructor> {
+    ThrowingConstructor operator()(const ThrowingConstructor& left, const ThrowingConstructor& right) const {
+        ThrowingConstructor result;
+        result.m_cnt = ( left.m_cnt + right.m_cnt );
+        return result;
+    }
+};
+
 template <typename T>
 struct FunctorAddCombine {
     T operator()(T left, T right ) const {
@@ -170,21 +244,43 @@ struct FunctorAddCombine {
 };
 
 template <typename T>
-T my_combine_ref( const T &left, const T &right) { 
+T FunctionAddByRef( const T &left, const T &right) {
     return FunctorAddCombineRef<T>()( left, right );
 }
 
 template <typename T>
-T my_combine( T left, T right) { return my_combine_ref(left,right); }
+T FunctionAdd( T left, T right) { return FunctionAddByRef(left,right); }
 
 template <typename T>
-class combine_one_helper {
+class Accumulator {
 public:
-    combine_one_helper(T& _result) : my_result(_result) {}
+    Accumulator(T& _result) : my_result(_result) {}
+    Accumulator& operator=(const Accumulator& other) {
+        test_helper<T>::set(my_result, test_helper<T>::get(other));
+        return *this;
+    }
     void operator()(const T& new_bit) { test_helper<T>::sum(my_result, new_bit); }
-    combine_one_helper& operator=(const combine_one_helper& other) { 
-        test_helper<T>::set(my_result, test_helper<T>::get(other)); 
-        return *this; 
+private:
+    T& my_result;
+};
+
+template <typename T>
+class ClearingAccumulator {
+public:
+    ClearingAccumulator(T& _result) : my_result(_result) {}
+    ClearingAccumulator& operator=(const ClearingAccumulator& other) {
+        test_helper<T>::set(my_result, test_helper<T>::get(other));
+        return *this;
+    }
+    void operator()(T& new_bit) {
+        test_helper<T>::sum(my_result, new_bit);
+        test_helper<T>::init(new_bit);
+    }
+    static void AssertClean(const T& thread_local_value) {
+        T zero;
+        test_helper<T>::init(zero);
+        ASSERT(test_helper<T>::get(thread_local_value)==test_helper<T>::get(zero),
+               "combine_each does not allow to modify thread local values?");
     }
 private:
     T& my_result;
@@ -198,192 +294,196 @@ void run_serial_scalar_tests(const char *test_name) {
     T sum;
     test_helper<T>::init(sum);
 
-    REMARK("Testing serial %s... ", test_name);  
+    REMARK("Testing serial %s... ", test_name);
     for (int t = -1; t < REPETITIONS; ++t) {
-        if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
+        if (Verbose && t == 0) t0 = tbb::tick_count::now();
         for (int i = 0; i < N; ++i) {
-            test_helper<T>::sum(sum,1); 
+            test_helper<T>::sum(sum,1);
         }
     }
- 
+
     double result_value = test_helper<T>::get(sum);
     ASSERT( EXPECTED_SUM == result_value, NULL);
     REMARK("done\nserial %s, 0, %g, %g\n", test_name, result_value, ( tbb::tick_count::now() - t0).seconds());
 }
 
 
-template <typename T>
+template <typename T, template<class> class Allocator>
 class parallel_scalar_body: NoAssign {
-    
-    tbb::enumerable_thread_specific<T> &sums;
- 
+    typedef tbb::enumerable_thread_specific<T, Allocator<T> > ets_type;
+    ets_type &sums;
+    const char* allocator_name;
+
 public:
 
-    parallel_scalar_body ( tbb::enumerable_thread_specific<T> &_sums ) : sums(_sums) { }
+    parallel_scalar_body ( ets_type &_sums, const char *alloc_name ) : sums(_sums), allocator_name(alloc_name) { }
 
     void operator()( const tbb::blocked_range<int> &r ) const {
-        for (int i = r.begin(); i != r.end(); ++i) 
-            test_helper<T>::sum( sums.local(), 1 );
+        for (int i = r.begin(); i != r.end(); ++i)
+            test_helper<T>::sum( check_alignment(sums.local(),allocator_name), 1 );
     }
-   
+
 };
 
-template< typename T >
-void run_parallel_scalar_tests_nocombine(const char *test_name) {
+template< typename T, template<class> class Allocator>
+void run_parallel_scalar_tests_nocombine(const char *test_name, const char *allocator_name) {
 
-    typedef tbb::enumerable_thread_specific<T> ets_type;
+    typedef tbb::enumerable_thread_specific<T, Allocator<T> > ets_type;
 
-    // We assume that static_sums zero-initialized or has a default constructor that zeros it.
-    static ets_type static_sums = ets_type( T() );
+    Check<T> my_check;
+    gThrowValue = 0;
+    {
+        // We assume that static_sums zero-initialized or has a default constructor that zeros it.
+        static ets_type static_sums = ets_type( T() );
 
-    T exemplar;
-    test_helper<T>::init(exemplar);
-    T exemplar23;
-    test_helper<T>::set(exemplar23,23);
+        T exemplar;
+        test_helper<T>::init(exemplar);
 
-    for (int p = MinThread; p <= MaxThread; ++p) { 
-        REMARK("Testing parallel %s on %d thread(s)... ", test_name, p); 
-        tbb::task_scheduler_init init(p);
-        tbb::tick_count t0;
+        for (int p = MinThread; p <= MaxThread; ++p) {
+            REMARK("Testing parallel %s with allocator %s on %d thread(s)... ", test_name, allocator_name, p);
+            tbb::task_scheduler_init init(p);
+            tbb::tick_count t0;
 
-        T iterator_sum;
-        test_helper<T>::init(iterator_sum);
+            T iterator_sum;
+            test_helper<T>::init(iterator_sum);
 
-        T finit_ets_sum;
-        test_helper<T>::init(finit_ets_sum);
+            T finit_ets_sum;
+            test_helper<T>::init(finit_ets_sum);
 
-        T const_iterator_sum; 
-        test_helper<T>::init(const_iterator_sum);
+            T const_iterator_sum;
+            test_helper<T>::init(const_iterator_sum);
 
-        T range_sum;
-        test_helper<T>::init(range_sum);
+            T range_sum;
+            test_helper<T>::init(range_sum);
 
-        T const_range_sum;
-        test_helper<T>::init(const_range_sum);
+            T const_range_sum;
+            test_helper<T>::init(const_range_sum);
 
-        T cconst_sum;
-        test_helper<T>::init(cconst_sum);
+            T cconst_sum;
+            test_helper<T>::init(cconst_sum);
 
-        T assign_sum;
-        test_helper<T>::init(assign_sum);
+            T assign_sum;
+            test_helper<T>::init(assign_sum);
 
-        T cassgn_sum;
-        test_helper<T>::init(cassgn_sum);
-        T non_cassgn_sum;
-        test_helper<T>::init(non_cassgn_sum);
+            T cassgn_sum;
+            test_helper<T>::init(cassgn_sum);
+            T non_cassgn_sum;
+            test_helper<T>::init(non_cassgn_sum);
 
-        T static_sum;
-        test_helper<T>::init(static_sum);
+            T static_sum;
+            test_helper<T>::init(static_sum);
 
-        for (int t = -1; t < REPETITIONS; ++t) {
-            if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
+            for (int t = -1; t < REPETITIONS; ++t) {
+                if (Verbose && t == 0) t0 = tbb::tick_count::now();
 
-            static_sums.clear();
+                static_sums.clear();
 
-            ets_type sums(exemplar);
-            FunctorFinit<T,0> my_finit(SecretTag);
-            ets_type finit_ets(my_finit);
+                ets_type sums(exemplar);
+                FunctorFinit<T,0> my_finit(SecretTag);
+                ets_type finit_ets(my_finit);
 
-            ASSERT( sums.empty(), NULL);
-            tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T>( sums ) );
-            ASSERT( !sums.empty(), NULL);
+                ASSERT( sums.empty(), NULL);
+                tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T,Allocator>( sums, allocator_name ) );
+                ASSERT( !sums.empty(), NULL);
 
-            ASSERT( finit_ets.empty(), NULL);
-            tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T>( finit_ets ) );
-            ASSERT( !finit_ets.empty(), NULL);
+                ASSERT( finit_ets.empty(), NULL);
+                tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T,Allocator>( finit_ets, allocator_name ) );
+                ASSERT( !finit_ets.empty(), NULL);
 
-            ASSERT(static_sums.empty(), NULL);
-            tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T>( static_sums ) );
-            ASSERT( !static_sums.empty(), NULL);
+                ASSERT(static_sums.empty(), NULL);
+                tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T,Allocator>( static_sums, allocator_name ) );
+                ASSERT( !static_sums.empty(), NULL);
 
-            // use iterator
-            typename ets_type::size_type size = 0;
-            for ( typename ets_type::iterator i = sums.begin(); i != sums.end(); ++i ) {
-                 ++size;
-                 test_helper<T>::sum(iterator_sum, *i);
-            }
-            ASSERT( sums.size() == size, NULL);
+                // use iterator
+                typename ets_type::size_type size = 0;
+                for ( typename ets_type::iterator i = sums.begin(); i != sums.end(); ++i ) {
+                     ++size;
+                     test_helper<T>::sum(iterator_sum, *i);
+                }
+                ASSERT( sums.size() == size, NULL);
 
-            // use const_iterator
-            for ( typename ets_type::const_iterator i = sums.begin(); i != sums.end(); ++i ) {
-                 test_helper<T>::sum(const_iterator_sum, *i);
-            }
-           
-            // use range_type
-            typename ets_type::range_type r = sums.range();  
-            for ( typename ets_type::range_type::const_iterator i = r.begin(); i != r.end(); ++i ) {
-                 test_helper<T>::sum(range_sum, *i);
-            }
-           
-            // use const_range_type
-            typename ets_type::const_range_type cr = sums.range();  
-            for ( typename ets_type::const_range_type::iterator i = cr.begin(); i != cr.end(); ++i ) {
-                 test_helper<T>::sum(const_range_sum, *i);
-            }
+                // use const_iterator
+                for ( typename ets_type::const_iterator i = sums.begin(); i != sums.end(); ++i ) {
+                     test_helper<T>::sum(const_iterator_sum, *i);
+                }
+
+                // use range_type
+                typename ets_type::range_type r = sums.range();
+                for ( typename ets_type::range_type::const_iterator i = r.begin(); i != r.end(); ++i ) {
+                     test_helper<T>::sum(range_sum, *i);
+                }
 
-            // test copy constructor, with TLS-cached locals
-            typedef typename tbb::enumerable_thread_specific<T, tbb::cache_aligned_allocator<T>, tbb::ets_key_per_instance> cached_ets_type;
+                // use const_range_type
+                typename ets_type::const_range_type cr = sums.range();
+                for ( typename ets_type::const_range_type::iterator i = cr.begin(); i != cr.end(); ++i ) {
+                     test_helper<T>::sum(const_range_sum, *i);
+                }
 
-            cached_ets_type cconst(sums); 
+                // test copy constructor, with TLS-cached locals
+                typedef typename tbb::enumerable_thread_specific<T, Allocator<T>, tbb::ets_key_per_instance> cached_ets_type;
 
-            for ( typename cached_ets_type::const_iterator i = cconst.begin(); i != cconst.end(); ++i ) {
-                 test_helper<T>::sum(cconst_sum, *i);
-            }
-           
-            // test assignment
-            ets_type assigned;
-            assigned = sums;
+                cached_ets_type cconst(sums);
 
-            for ( typename ets_type::const_iterator i = assigned.begin(); i != assigned.end(); ++i ) {
-                 test_helper<T>::sum(assign_sum, *i);
-            }
+                for ( typename cached_ets_type::const_iterator i = cconst.begin(); i != cconst.end(); ++i ) {
+                     test_helper<T>::sum(cconst_sum, *i);
+                }
 
-            // test assign to and from cached locals
-            cached_ets_type cassgn;
-            cassgn = sums;
-            for ( typename cached_ets_type::const_iterator i = cassgn.begin(); i != cassgn.end(); ++i ) {
-                 test_helper<T>::sum(cassgn_sum, *i);
-            }
+                // test assignment
+                ets_type assigned;
+                assigned = sums;
 
-            ets_type non_cassgn;
-            non_cassgn = cassgn;
-            for ( typename ets_type::const_iterator i = non_cassgn.begin(); i != non_cassgn.end(); ++i ) {
-                 test_helper<T>::sum(non_cassgn_sum, *i);
-            }
+                for ( typename ets_type::const_iterator i = assigned.begin(); i != assigned.end(); ++i ) {
+                     test_helper<T>::sum(assign_sum, *i);
+                }
 
-            // test finit-initialized ets
-            for(typename ets_type::const_iterator i = finit_ets.begin(); i != finit_ets.end(); ++i) {
-                test_helper<T>::sum(finit_ets_sum, *i);
-            }
+                // test assign to and from cached locals
+                cached_ets_type cassgn;
+                cassgn = sums;
+                for ( typename cached_ets_type::const_iterator i = cassgn.begin(); i != cassgn.end(); ++i ) {
+                     test_helper<T>::sum(cassgn_sum, *i);
+                }
 
-            // test static ets
-            for(typename ets_type::const_iterator i = static_sums.begin(); i != static_sums.end(); ++i) {
-                test_helper<T>::sum(static_sum, *i);
-            }
+                ets_type non_cassgn;
+                non_cassgn = cassgn;
+                for ( typename ets_type::const_iterator i = non_cassgn.begin(); i != non_cassgn.end(); ++i ) {
+                     test_helper<T>::sum(non_cassgn_sum, *i);
+                }
 
-        }
+                // test finit-initialized ets
+                for(typename ets_type::const_iterator i = finit_ets.begin(); i != finit_ets.end(); ++i) {
+                    test_helper<T>::sum(finit_ets_sum, *i);
+                }
 
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(iterator_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(const_iterator_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(range_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(const_range_sum), NULL);
+                // test static ets
+                for(typename ets_type::const_iterator i = static_sums.begin(); i != static_sums.end(); ++i) {
+                    test_helper<T>::sum(static_sum, *i);
+                }
 
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(cconst_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(assign_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(cassgn_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(non_cassgn_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(finit_ets_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(static_sum), NULL);
+            }
 
-        REMARK("done\nparallel %s, %d, %g, %g\n", test_name, p, test_helper<T>::get(iterator_sum), 
-                                                      ( tbb::tick_count::now() - t0).seconds());
-    }
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(iterator_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(const_iterator_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(range_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(const_range_sum), NULL);
+
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(cconst_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(assign_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(cassgn_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(non_cassgn_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(finit_ets_sum), NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(static_sum), NULL);
+
+            REMARK("done\nparallel %s, %d, %g, %g\n", test_name, p, test_helper<T>::get(iterator_sum),
+                                                          ( tbb::tick_count::now() - t0).seconds());
+        }
+    }  // Check block
 }
 
-template< typename T >
-void run_parallel_scalar_tests(const char *test_name) {
+template< typename T, template<class> class Allocator>
+void run_parallel_scalar_tests(const char *test_name, const char *allocator_name) {
 
-    typedef tbb::enumerable_thread_specific<T> ets_type;
+    typedef tbb::enumerable_thread_specific<T, Allocator<T> > ets_type;
+    bool exception_caught = false;
 
     // We assume that static_sums zero-initialized or has a default constructor that zeros it.
     static ets_type static_sums = ets_type( T() );
@@ -391,94 +491,140 @@ void run_parallel_scalar_tests(const char *test_name) {
     T exemplar;
     test_helper<T>::init(exemplar);
 
-    run_parallel_scalar_tests_nocombine<T>(test_name);
-
-    for (int p = MinThread; p <= MaxThread; ++p) { 
-        REMARK("Testing parallel %s on %d thread(s)... ", test_name, p); 
-        tbb::task_scheduler_init init(p);
-        tbb::tick_count t0;
-
-        T combine_sum;
-        test_helper<T>::init(combine_sum);
-
-        T combine_ref_sum;
-        test_helper<T>::init(combine_ref_sum);
-
-        T combine_one_sum;
-        test_helper<T>::init(combine_one_sum);
-
-        T static_sum;
-        test_helper<T>::init(static_sum);
-
-        for (int t = -1; t < REPETITIONS; ++t) {
-            if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
+    int test_throw_count = 10;
+    // the test will be performed repeatedly until it does not throw.  For non-throwing types
+    // this means once; for the throwing type test it may loop two or three times.  The
+    // value of targetThrowValue will determine when and if the test will throw.
+    do {
+        targetThrowValue = test_throw_count;  // keep testing until we get no exception
+        exception_caught = false;
+#if TBB_USE_EXCEPTIONS
+        try {
+#endif
+            run_parallel_scalar_tests_nocombine<T,Allocator>(test_name, allocator_name);
+#if TBB_USE_EXCEPTIONS
+        }
+        catch(...) {
+            REMARK("Exception caught %d\n", targetThrowValue);
+        }
+#endif
+        for (int p = MinThread; p <= MaxThread; ++p) {
+            REMARK("Testing parallel %s with allocator %s on %d thread(s)... ", test_name, allocator_name, p);
+            tbb::task_scheduler_init init(p);
+            tbb::tick_count t0;
 
-            static_sums.clear();
+            gThrowValue = 0;
 
-            ets_type sums(exemplar);
+            T combine_sum;
+            test_helper<T>::init(combine_sum);
 
-            ASSERT( sums.empty(), NULL);
-            tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T>( sums ) );
-            ASSERT( !sums.empty(), NULL);
+            T combine_ref_sum;
+            test_helper<T>::init(combine_ref_sum);
 
-            ASSERT(static_sums.empty(), NULL);
-            tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), parallel_scalar_body<T>( static_sums ) );
-            ASSERT( !static_sums.empty(), NULL);
+            T accumulator_sum;
+            test_helper<T>::init(accumulator_sum);
 
+            T static_sum;
+            test_helper<T>::init(static_sum);
 
-            // Use combine
-            test_helper<T>::sum(combine_sum, sums.combine(my_combine<T>));
-            test_helper<T>::sum(combine_ref_sum, sums.combine(my_combine_ref<T>));
-            test_helper<T>::sum(static_sum, static_sums.combine(my_combine<T>));
+            T clearing_accumulator_sum;
+            test_helper<T>::init(clearing_accumulator_sum);
 
-            combine_one_helper<T> my_helper(combine_one_sum);
-            sums.combine_each(my_helper);
+            {
+                Check<T> my_check;
+#if TBB_USE_EXCEPTIONS
+                try
+#endif
+                {
+                    for (int t = -1; t < REPETITIONS; ++t) {
+                        if (Verbose && t == 0) t0 = tbb::tick_count::now();
+
+                        static_sums.clear();
+
+                        ets_type sums(exemplar);
+
+                        ASSERT( sums.empty(), NULL);
+                        tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ),
+                                parallel_scalar_body<T,Allocator>( sums, allocator_name ) );
+                        ASSERT( !sums.empty(), NULL);
+
+                        ASSERT(static_sums.empty(), NULL);
+                        tbb::parallel_for( tbb::blocked_range<int>( 0, N, RANGE_MIN ), 
+                                parallel_scalar_body<T,Allocator>( static_sums, allocator_name ) );
+                        ASSERT( !static_sums.empty(), NULL);
+
+                        // Use combine
+                        test_helper<T>::sum(combine_sum, sums.combine(FunctionAdd<T>));
+                        test_helper<T>::sum(combine_ref_sum, sums.combine(FunctionAddByRef<T>));
+                        test_helper<T>::sum(static_sum, static_sums.combine(FunctionAdd<T>));
+
+                        // Accumulate with combine_each
+                        sums.combine_each(Accumulator<T>(accumulator_sum));
+                        // Accumulate and clear thread-local values
+                        sums.combine_each(ClearingAccumulator<T>(clearing_accumulator_sum));
+                        // Check that the values were cleared
+                        sums.combine_each(ClearingAccumulator<T>::AssertClean);
+                    }
+                }
+#if TBB_USE_EXCEPTIONS
+                catch(...) {
+                    REMARK("Exception caught %d\n", targetThrowValue);
+                    exception_caught = true;
+                }
+#endif
             }
 
-
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(combine_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(combine_ref_sum), NULL);
-        ASSERT( EXPECTED_SUM == test_helper<T>::get(static_sum), NULL);
-
-        REMARK("done\nparallel combine %s, %d, %g, %g\n", test_name, p, test_helper<T>::get(combine_sum), 
-                                                      ( tbb::tick_count::now() - t0).seconds());
-    }
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(combine_sum) || exception_caught, NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(combine_ref_sum) || exception_caught, NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(static_sum) || exception_caught, NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(accumulator_sum) || exception_caught, NULL);
+            ASSERT( EXPECTED_SUM == test_helper<T>::get(clearing_accumulator_sum) || exception_caught, NULL);
+
+            REMARK("done\nparallel combine %s, %d, %g, %g\n", test_name, p, test_helper<T>::get(combine_sum),
+                                                          ( tbb::tick_count::now() - t0).seconds());
+        }  // MinThread .. MaxThread
+        test_throw_count += 10;  // keep testing until we don't get an exception
+    } while (exception_caught && test_throw_count < 200);
+    ASSERT(!exception_caught, "No non-exception test completed");
 }
 
-template <typename T>
+template <typename T, template<class> class Allocator>
 class parallel_vector_for_body: NoAssign {
-    
-    tbb::enumerable_thread_specific< std::vector<T, tbb::tbb_allocator<T> > > &locals;
- 
+    typedef std::vector<T, tbb::tbb_allocator<T> > container_type;
+    typedef tbb::enumerable_thread_specific< container_type, Allocator<container_type> > ets_type;
+    ets_type &locals;
+    const char *allocator_name;
+
 public:
 
-    parallel_vector_for_body ( tbb::enumerable_thread_specific< std::vector<T, tbb::tbb_allocator<T> > > &_locals ) : locals(_locals) { }
+    parallel_vector_for_body ( ets_type &_locals, const char *aname ) : locals(_locals), allocator_name(aname) { }
 
     void operator()( const tbb::blocked_range<int> &r ) const {
         T one;
         test_helper<T>::set(one, 1);
 
         for (int i = r.begin(); i < r.end(); ++i) {
-            locals.local().push_back( one );
+            check_alignment(locals.local(),allocator_name).push_back( one );
         }
     }
-   
+
 };
 
 template <typename R, typename T>
 struct parallel_vector_reduce_body {
 
-    T sum;    
-    size_t count;    
+    T sum;
+    size_t count;
+    typedef std::vector<T, tbb::tbb_allocator<T> > container_type;
 
     parallel_vector_reduce_body ( ) : count(0) { test_helper<T>::init(sum); }
     parallel_vector_reduce_body ( parallel_vector_reduce_body<R, T> &, tbb::split ) : count(0) {  test_helper<T>::init(sum); }
 
     void operator()( const R &r ) {
         for (typename R::iterator ri = r.begin(); ri != r.end(); ++ri) {
-            const std::vector< T, tbb::tbb_allocator<T>  > &v = *ri; 
+            const container_type &v = *ri;
             ++count;
-            for (typename std::vector<T, tbb::tbb_allocator<T> >::const_iterator vi = v.begin(); vi != v.end(); ++vi) {
+            for (typename container_type::const_iterator vi = v.begin(); vi != v.end(); ++vi) {
                 test_helper<T>::sum(sum, *vi);
             }
         }
@@ -488,29 +634,30 @@ struct parallel_vector_reduce_body {
         test_helper<T>::sum(sum,b.sum);
         count += b.count;
     }
-   
+
 };
 
-template< typename T >
-void run_parallel_vector_tests(const char *test_name) {
+template< typename T, template<class> class Allocator>
+void run_parallel_vector_tests(const char *test_name, const char *allocator_name) {
     tbb::tick_count t0;
     typedef std::vector<T, tbb::tbb_allocator<T> > container_type;
+    typedef tbb::enumerable_thread_specific< container_type, Allocator<container_type> > ets_type;
 
     for (int p = MinThread; p <= MaxThread; ++p) {
-        REMARK("Testing parallel %s on %d thread(s)... ", test_name, p);
+        REMARK("Testing parallel %s with allocator %s on %d thread(s)... ", test_name, allocator_name, p);
         tbb::task_scheduler_init init(p);
 
         T sum;
         test_helper<T>::init(sum);
 
         for (int t = -1; t < REPETITIONS; ++t) {
-            if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
-            typedef typename tbb::enumerable_thread_specific< container_type > ets_type;
+            if (Verbose && t == 0) t0 = tbb::tick_count::now();
             ets_type vs;
 
-            ASSERT( vs.empty(), NULL);
-            tbb::parallel_for ( tbb::blocked_range<int> (0, N, RANGE_MIN), parallel_vector_for_body<T>( vs ) );
-            ASSERT( !vs.empty(), NULL);
+            ASSERT( vs.empty(), NULL );
+            tbb::parallel_for( tbb::blocked_range<int> (0, N, RANGE_MIN),
+                               parallel_vector_for_body<T,Allocator>( vs, allocator_name ) );
+            ASSERT( !vs.empty(), NULL );
 
             // copy construct
             ets_type vs2(vs); // this causes an assertion failure, related to allocators...
@@ -519,26 +666,49 @@ void run_parallel_vector_tests(const char *test_name) {
             ets_type vs3;
             vs3 = vs;
 
-            parallel_vector_reduce_body< typename tbb::enumerable_thread_specific< std::vector< T, tbb::tbb_allocator<T>  > >::const_range_type, T > pvrb;
+            parallel_vector_reduce_body< typename ets_type::const_range_type, T > pvrb;
             tbb::parallel_reduce ( vs.range(1), pvrb );
 
             test_helper<T>::sum(sum, pvrb.sum);
 
-            ASSERT( vs.size() == pvrb.count, NULL);
+            ASSERT( vs.size() == pvrb.count, NULL );
+            ASSERT( vs2.size() == pvrb.count, NULL );
+            ASSERT( vs3.size() == pvrb.count, NULL );
 
             tbb::flattened2d<ets_type> fvs = flatten2d(vs);
             size_t ccount = fvs.size();
+            ASSERT( ccount == size_t(N), NULL );
             size_t elem_cnt = 0;
             for(typename tbb::flattened2d<ets_type>::const_iterator i = fvs.begin(); i != fvs.end(); ++i) {
                 ++elem_cnt;
             };
-            ASSERT(ccount == elem_cnt, NULL);
+            ASSERT( ccount == elem_cnt, NULL );
 
             elem_cnt = 0;
             for(typename tbb::flattened2d<ets_type>::iterator i = fvs.begin(); i != fvs.end(); ++i) {
                 ++elem_cnt;
             };
-            ASSERT(ccount == elem_cnt, NULL);
+            ASSERT( ccount == elem_cnt, NULL );
+
+#if __TBB_ETS_USE_CPP11
+            // Test the ETS constructor with multiple args
+            T minus_one;
+            test_helper<T>::set(minus_one, -1);
+            // Set ETS to construct "local" vectors pre-occupied with 25 "minus_one"s
+            ets_type vvs(25, minus_one, tbb::tbb_allocator<T>());
+            ASSERT( vvs.empty(), NULL );
+            tbb::parallel_for ( tbb::blocked_range<int> (0, N, RANGE_MIN), parallel_vector_for_body<T,Allocator>( vvs, allocator_name ) );
+            ASSERT( !vvs.empty(), NULL );
+
+            parallel_vector_reduce_body< typename ets_type::const_range_type, T > pvrb2;
+            tbb::parallel_reduce ( vvs.range(1), pvrb2 );
+            ASSERT( pvrb2.count == vvs.size(), NULL );
+            ASSERT( test_helper<T>::get(pvrb2.sum) == N-pvrb2.count*25, NULL );
+
+            tbb::flattened2d<ets_type> fvvs = flatten2d(vvs);
+            ccount = fvvs.size();
+            ASSERT( ccount == N+pvrb2.count*25, NULL );
+#endif
         }
 
         double result_value = test_helper<T>::get(sum);
@@ -547,9 +717,10 @@ void run_parallel_vector_tests(const char *test_name) {
     }
 }
 
-template<typename T>
+template<typename T, template<class> class Allocator>
 void run_cross_type_vector_tests(const char *test_name) {
     tbb::tick_count t0;
+    const char* allocator_name = "default"; 
     typedef std::vector<T, tbb::tbb_allocator<T> > container_type;
 
     for (int p = MinThread; p <= MaxThread; ++p) {
@@ -560,13 +731,13 @@ void run_cross_type_vector_tests(const char *test_name) {
         test_helper<T>::init(sum);
 
         for (int t = -1; t < REPETITIONS; ++t) {
-            if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
-            typedef typename tbb::enumerable_thread_specific< container_type, tbb::cache_aligned_allocator<container_type>, tbb::ets_no_key > ets_nokey_type;
-            typedef typename tbb::enumerable_thread_specific< container_type, tbb::cache_aligned_allocator<container_type>, tbb::ets_key_per_instance > ets_tlskey_type;
+            if (Verbose && t == 0) t0 = tbb::tick_count::now();
+            typedef typename tbb::enumerable_thread_specific< container_type, Allocator<container_type>, tbb::ets_no_key > ets_nokey_type;
+            typedef typename tbb::enumerable_thread_specific< container_type, Allocator<container_type>, tbb::ets_key_per_instance > ets_tlskey_type;
             ets_nokey_type vs;
 
             ASSERT( vs.empty(), NULL);
-            tbb::parallel_for ( tbb::blocked_range<int> (0, N, RANGE_MIN), parallel_vector_for_body<T>( vs ) );
+            tbb::parallel_for ( tbb::blocked_range<int> (0, N, RANGE_MIN), parallel_vector_for_body<T, Allocator>( vs, allocator_name ) );
             ASSERT( !vs.empty(), NULL);
 
             // copy construct
@@ -576,7 +747,7 @@ void run_cross_type_vector_tests(const char *test_name) {
             ets_nokey_type vs3;
             vs3 = vs2;
 
-            parallel_vector_reduce_body< typename tbb::enumerable_thread_specific< std::vector< T, tbb::tbb_allocator<T>  > >::const_range_type, T > pvrb;
+            parallel_vector_reduce_body< typename ets_nokey_type::const_range_type, T > pvrb;
             tbb::parallel_reduce ( vs3.range(1), pvrb );
 
             test_helper<T>::sum(sum, pvrb.sum);
@@ -614,13 +785,13 @@ void run_serial_vector_tests(const char *test_name) {
 
     REMARK("Testing serial %s... ", test_name);
     for (int t = -1; t < REPETITIONS; ++t) {
-        if (Verbose && t == 0) t0 = tbb::tick_count::now(); 
-        std::vector<T, tbb::tbb_allocator<T> > v; 
+        if (Verbose && t == 0) t0 = tbb::tick_count::now();
+        std::vector<T, tbb::tbb_allocator<T> > v;
         for (int i = 0; i < N; ++i) {
             v.push_back( one );
         }
-        for (typename std::vector<T, tbb::tbb_allocator<T> >::const_iterator i = v.begin(); i != v.end(); ++i) 
-            test_helper<T>::sum(sum, *i); 
+        for (typename std::vector<T, tbb::tbb_allocator<T> >::const_iterator i = v.begin(); i != v.end(); ++i)
+            test_helper<T>::sum(sum, *i);
     }
 
     double result_value = test_helper<T>::get(sum);
@@ -630,8 +801,7 @@ void run_serial_vector_tests(const char *test_name) {
 
 const size_t line_size = tbb::internal::NFS_MaxLineSize;
 
-void 
-run_serial_tests() {
+void run_serial_tests() {
     run_serial_scalar_tests<int>("int");
     run_serial_scalar_tests<double>("double");
     run_serial_scalar_tests<minimal<> >("minimal<>");
@@ -639,20 +809,20 @@ run_serial_tests() {
     run_serial_vector_tests<double>("std::vector<double, tbb::tbb_allocator<double> >");
 }
 
-void 
-run_parallel_tests() {
-    run_parallel_scalar_tests<int>("int");
-    run_parallel_scalar_tests<double>("double");
-    run_parallel_scalar_tests_nocombine<minimal<> >("minimal<>");
-    run_parallel_vector_tests<int>("std::vector<int, tbb::tbb_allocator<int> >");
-    run_parallel_vector_tests<double>("std::vector<double, tbb::tbb_allocator<double> >");
+template<template<class>class Allocator>
+void run_parallel_tests(const char *allocator_name) {
+    run_parallel_scalar_tests<int, Allocator>("int",allocator_name);
+    run_parallel_scalar_tests<double, Allocator>("double",allocator_name);
+    run_parallel_scalar_tests_nocombine<minimal<>,Allocator>("minimal<>",allocator_name);
+    run_parallel_scalar_tests<ThrowingConstructor, Allocator>("ThrowingConstructor", allocator_name);
+    run_parallel_vector_tests<int, Allocator>("std::vector<int, tbb::tbb_allocator<int> >",allocator_name);
+    run_parallel_vector_tests<double, Allocator>("std::vector<double, tbb::tbb_allocator<double> >",allocator_name);
 }
 
-void
-run_cross_type_tests() {
-    // cross-type scalar tests are part of run_serial_scalar_tests
-    run_cross_type_vector_tests<int>("std::vector<int, tbb::tbb_allocator<int> >");
-    run_parallel_vector_tests<double>("std::vector<double, tbb::tbb_allocator<double> >");
+void run_cross_type_tests() {
+    // cross-type scalar tests are part of run_parallel_scalar_tests_nocombine
+    run_cross_type_vector_tests<int, tbb::tbb_allocator>("std::vector<int, tbb::tbb_allocator<int> >");
+    run_cross_type_vector_tests<double, tbb::tbb_allocator>("std::vector<double, tbb::tbb_allocator<double> >");
 }
 
 typedef tbb::enumerable_thread_specific<minimal<line_size> > flogged_ets;
@@ -665,17 +835,17 @@ public:
 
     void operator() ( ) const {
         for (int i = 0; i < VALID_NUMBER_OF_KEYS; ++i) {
-            a[i].local().set_value(i + 1);
+            check_alignment(a[i].local(), "default").set_value(i + 1);
         }
     }
- 
+
 };
 
 void do_tbb_threads( int max_threads, flogged_ets a[] ) {
     std::vector< tbb::tbb_thread * > threads;
 
-    for (int p = 0; p < max_threads; ++p) { 
-        threads.push_back( new tbb::tbb_thread ( set_body( a ) ) ); 
+    for (int p = 0; p < max_threads; ++p) {
+        threads.push_back( new tbb::tbb_thread ( set_body( a ) ) );
     }
 
     for (int p = 0; p < max_threads; ++p) {
@@ -687,24 +857,23 @@ void do_tbb_threads( int max_threads, flogged_ets a[] ) {
     }
 }
 
-void
-flog_key_creation_and_deletion() {
+void flog_key_creation_and_deletion() {
     const int FLOG_REPETITIONS = 100;
 
-    for (int p = MinThread; p <= MaxThread; ++p) { 
+    for (int p = MinThread; p <= MaxThread; ++p) {
         REMARK("Testing repeated deletes on %d threads... ", p);
 
         for (int j = 0; j < FLOG_REPETITIONS; ++j) {
             construction_counter = 0;
             destruction_counter = 0;
 
-            // causes VALID_NUMER_OF_KEYS exemplar instances to be constructed 
+            // causes VALID_NUMBER_OF_KEYS exemplar instances to be constructed
             flogged_ets* a = new flogged_ets[VALID_NUMBER_OF_KEYS];
             ASSERT(int(construction_counter) == 0, NULL);   // no exemplars or actual locals have been constructed
             ASSERT(int(destruction_counter) == 0, NULL);    // and none have been destroyed
 
             // causes p * VALID_NUMBER_OF_KEYS minimals to be created
-            do_tbb_threads(p, a); 
+            do_tbb_threads(p, a);
 
             for (int i = 0; i < VALID_NUMBER_OF_KEYS; ++i) {
                 int pcnt = 0;
@@ -725,9 +894,9 @@ flog_key_creation_and_deletion() {
         construction_counter = 0;
         destruction_counter = 0;
 
-        // causes VALID_NUMER_OF_KEYS exemplar instances to be constructed 
+        // causes VALID_NUMBER_OF_KEYS exemplar instances to be constructed
         flogged_ets* a = new flogged_ets[VALID_NUMBER_OF_KEYS];
- 
+
         for (int j = 0; j < FLOG_REPETITIONS; ++j) {
 
             // causes p * VALID_NUMBER_OF_KEYS minimals to be created
@@ -754,8 +923,7 @@ flog_key_creation_and_deletion() {
 }
 
 template <typename inner_container>
-void 
-flog_segmented_interator() {
+void flog_segmented_interator() {
 
     bool found_error = false;
     typedef typename inner_container::value_type T;
@@ -860,8 +1028,7 @@ flog_segmented_interator() {
 }
 
 template <typename Key, typename Val>
-void
-flog_segmented_iterator_map() {
+void flog_segmented_iterator_map() {
    typedef typename std::map<Key, Val> my_map;
    typedef std::vector< my_map > nested_vec;
    my_map my_inner_container;
@@ -898,8 +1065,7 @@ flog_segmented_iterator_map() {
    if(found_error) REPORT("segmented_iterator_map failed\n");
 }
 
-void
-run_segmented_iterator_tests() {
+void run_segmented_iterator_tests() {
    // only the following containers can be used with the segmented iterator.
    REMARK("Running Segmented Iterator Tests\n");
    flog_segmented_interator<std::vector< int > >();
@@ -910,66 +1076,96 @@ run_segmented_iterator_tests() {
    flog_segmented_interator<std::list< double > >();
 
    flog_segmented_iterator_map<int, int>();
-   flog_segmented_iterator_map<int, double>(); 
+   flog_segmented_iterator_map<int, double>();
 }
 
-template <typename T>
-void
-run_assign_and_copy_constructor_test(const char *test_name) {
-    REMARK("Testing assignment and copy construction for %s\n", test_name);
-
-    // test initializer with exemplar
-    T initializer0;
-    test_helper<T>::init(initializer0);
-    T initializer7;
-    test_helper<T>::set(initializer7,7);
-    tbb::enumerable_thread_specific<T> create1(initializer7);
-    (void) create1.local();  // create an initialized value
-    ASSERT(7 == test_helper<T>::get(create1.local()), NULL);
-
-    // test copy construction with exemplar initializer
-    create1.clear();
-    tbb::enumerable_thread_specific<T> copy1(create1);
-    (void) copy1.local();
-    ASSERT(7 == test_helper<T>::get(copy1.local()), NULL);
-
-    // test copy assignment with exemplar initializer
-    create1.clear();
-    tbb::enumerable_thread_specific<T> assign1(initializer0);
-    assign1 = create1;
-    (void) assign1.local();
-    ASSERT(7 == test_helper<T>::get(assign1.local()), NULL);
-
-    // test creation with finit function
-    FunctorFinit<T,7> my_finit7(SecretTag);
-    tbb::enumerable_thread_specific<T> create2(my_finit7);
-    (void) create2.local();
-    ASSERT(7 == test_helper<T>::get(create2.local()), NULL);
-
-    // test copy construction with function initializer
-    create2.clear();
-    tbb::enumerable_thread_specific<T> copy2(create2);
-    (void) copy2.local();
-    ASSERT(7 == test_helper<T>::get(copy2.local()), NULL);
-
-    // test copy assignment with function initializer
-    create2.clear();
-    FunctorFinit<T,0> my_finit(SecretTag);
-    tbb::enumerable_thread_specific<T> assign2(my_finit);
-    assign2 = create2;
-    (void) assign2.local();
-    ASSERT(7 == test_helper<T>::get(assign2.local()), NULL);
+template<typename T, template<class> class Allocator, typename Init>
+tbb::enumerable_thread_specific<T> MakeETS( Init init ) {
+    return tbb::enumerable_thread_specific<T,Allocator<T> >(init);
+}
+#if __TBB_ETS_USE_CPP11
+// In some GCC versions, parameter packs in lambdas might cause compile errors
+template<typename ETS, typename... P>
+struct MakeETS_Functor {
+    ETS operator()( typename tbb::internal::strip<P>::type&&... params ) {
+        return ETS(std::move(params)...);
+    }
+};
+template<typename T, template<class> class Allocator, typename... P>
+tbb::enumerable_thread_specific<T,Allocator<T> > MakeETS( tbb::internal::stored_pack<P...> pack ) {
+    typedef tbb::enumerable_thread_specific<T,Allocator<T> > result_type;
+    return tbb::internal::call_and_return< result_type >(
+        MakeETS_Functor<result_type,P...>(), std::move(pack)
+    );
+}
+#endif
+
+template<typename T, template<class> class Allocator, typename InitSrc, typename InitDst, typename Validator>
+void ets_copy_assign_test( InitSrc init1, InitDst init2, Validator check, const char *allocator_name ) {
+    // Create the source instance
+    typedef tbb::enumerable_thread_specific<T, Allocator<T> > ets_type;
+    const ets_type& temporary_binder = MakeETS<T, Allocator>(init1);
+    ets_type& source = const_cast<ets_type&>(temporary_binder);
+    check(check_alignment(source.local(),allocator_name));
+
+    // Test copy construction
+    source.clear();
+    ets_type copy(source);
+    check(check_alignment(copy.local(),allocator_name));
+
+    // Test assignment
+    source.clear();
+    ets_type assign(init2);
+    assign = source;
+    check(check_alignment(assign.local(),allocator_name));
+}
+
+template<typename T, int Expected>
+struct Validator {
+    void operator()( const T& value ) {
+        ASSERT(test_helper<T>::get(value) == Expected, NULL);
+    }
+    void operator()( const std::pair<int,T>& value ) {
+        ASSERT(value.first > 0, NULL);
+        ASSERT(test_helper<T>::get(value.second) == Expected*value.first, NULL);
+    }
+};
+
+template <typename T, template<class> class Allocator>
+void run_assign_and_copy_constructor_test(const char *test_name, const char *allocator_name) {
+    REMARK("Testing assignment and copy construction for %s with allocator %s\n", test_name, allocator_name);
+    #define EXPECTED 3142
+
+    // test with exemplar initializer
+    T src_init;
+    test_helper<T>::set(src_init,EXPECTED);
+    T other_init;
+    test_helper<T>::init(other_init);
+    ets_copy_assign_test<T, Allocator>(src_init, other_init, Validator<T,EXPECTED>(), allocator_name);
+
+    // test with function initializer
+    FunctorFinit<T,EXPECTED> src_finit(SecretTag);
+    FunctorFinit<T,0> other_finit(SecretTag);
+    ets_copy_assign_test<T, Allocator>(src_finit, other_finit, Validator<T,EXPECTED>(), allocator_name);
+
+#if __TBB_ETS_USE_CPP11
+    // test with multi-argument "emplace" initializer
+    // The arguments are wrapped into tbb::internal::stored_pack to avoid variadic templates in ets_copy_assign_test.
+    test_helper<T>::set(src_init,EXPECTED*17);
+    ets_copy_assign_test< std::pair<int,T>, Allocator>(tbb::internal::save_pack(17,src_init), std::make_pair(-1,T()), Validator<T,EXPECTED>(), allocator_name);
+#endif
+    #undef EXPECTED
 }
 
-void
-run_assignment_and_copy_constructor_tests() {
+template< template<class> class Allocator>
+void run_assignment_and_copy_constructor_tests(const char* allocator_name) {
     REMARK("Running assignment and copy constructor tests\n");
-    run_assign_and_copy_constructor_test<int>("int");
-    run_assign_and_copy_constructor_test<double>("double");
+    run_assign_and_copy_constructor_test<int, Allocator>("int", allocator_name);
+    run_assign_and_copy_constructor_test<double, Allocator>("double", allocator_name);
     // Try class sizes that are close to a cache line in size, in order to check padding calculations.
-    run_assign_and_copy_constructor_test<minimal<line_size-1> >("minimal<line_size-1>");
-    run_assign_and_copy_constructor_test<minimal<line_size> >("minimal<line_size>");
-    run_assign_and_copy_constructor_test<minimal<line_size+1> >("minimal<line_size+1>");
+    run_assign_and_copy_constructor_test<minimal<line_size-1>, Allocator >("minimal<line_size-1>", allocator_name);
+    run_assign_and_copy_constructor_test<minimal<line_size>, Allocator >("minimal<line_size>", allocator_name);
+    run_assign_and_copy_constructor_test<minimal<line_size+1>, Allocator >("minimal<line_size+1>", allocator_name);
     ASSERT(FinitCounter==0, NULL);
 }
 
@@ -979,38 +1175,151 @@ class HasNoDefaultConstructor {
 public:
     HasNoDefaultConstructor( SecretTagType ) {}
 };
-
-// Initialization functor for a HasNoDefaultConstructor
+// Initialization functor for HasNoDefaultConstructor
 struct HasNoDefaultConstructorFinit {
     HasNoDefaultConstructor operator()() {
         return HasNoDefaultConstructor(SecretTag);
     }
 };
-
+// Combine functor for HasNoDefaultConstructor
 struct HasNoDefaultConstructorCombine {
     HasNoDefaultConstructor operator()( HasNoDefaultConstructor, HasNoDefaultConstructor ) {
         return HasNoDefaultConstructor(SecretTag);
     }
 };
 
+#if __TBB_ETS_USE_CPP11
+// Class that only has a constructor with multiple parameters
+class HasSpecialConstructor : NoCopy {
+    HasSpecialConstructor();
+public:
+    HasSpecialConstructor( SecretTagType, size_t = size_t(0), const char* = "" ) {}
+};
+#endif
+
+// No-op combine-each functor
+template<typename V>
+struct EmptyCombineEach {
+    void operator()( const V& ) { }
+};
+
+int
+align_val(void * const p) {
+    size_t tmp = (size_t)p;
+    int a = 1;
+    while((tmp&0x1) == 0) { a <<=1; tmp >>= 1; }
+    return a;
+}
+
+bool is_between(void* lowp, void *highp, void *testp) {
+    if((size_t)lowp < (size_t)testp && (size_t)testp < (size_t)highp) return true;
+    return (size_t)lowp > (size_t)testp && (size_t)testp > (size_t)highp;
+}
+
+template<class U> struct alignment_of {
+    typedef struct { char t; U    padded; } test_alignment;
+    static const size_t value = sizeof(test_alignment) - sizeof(U);
+};
+using tbb::interface6::internal::ets_element;
+template<typename T, typename OtherType>
+void allocate_ets_element_on_stack(const char *name) {
+    typedef T aligning_element_type;
+    const size_t my_align = alignment_of<aligning_element_type>::value;
+    OtherType c1;
+    ets_element<aligning_element_type> my_stack_element;
+    OtherType c2;
+    ets_element<aligning_element_type> my_stack_element2;
+    struct {
+        OtherType cxx;
+        ets_element<aligning_element_type> my_struct_element;
+    } mystruct1;
+    tbb::internal::suppress_unused_warning(c1,c2);
+    REMARK("using %s, c1 address == %lx (alignment %d), c2 address == %lx (alignment %d)\n", name, &c1, align_val(&c1), &c2, align_val(&c2));
+    REMARK(" ---- my_align == %d\n", (int)my_align);
+    REMARK("    my_stack_element == %lx (alignment %d), my_stack_element2 == %lx (alignment %d)\n",
+            &my_stack_element, align_val(&my_stack_element), &my_stack_element2, align_val(&my_stack_element2));
+    if(is_between(&c1,&c2,&my_stack_element)) REMARK("my_struct_element is in the middle\n");
+    if(is_between(&c1,&c2,&my_stack_element2)) REMARK("my_struct_element2 is in the middle\n");
+    if(!is_between(&c1,&c2,&my_stack_element) && !is_between(&c1,&c2,&my_stack_element2)) REMARK("stack vars reorganized\n");
+    REMARK("   structure field address == %lx, alignment %d\n",
+            mystruct1.my_struct_element.value(),
+            align_val(mystruct1.my_struct_element.value())
+            );
+    ASSERT(tbb::internal::is_aligned(my_stack_element.value(), my_align), "Error in first stack alignment" );
+    ASSERT(tbb::internal::is_aligned(my_stack_element2.value(), my_align), "Error in second stack alignment" );
+    ASSERT(tbb::internal::is_aligned(mystruct1.my_struct_element.value(), my_align), "Error in struct element alignment" );
+}
+
 //! Test situations where only default constructor or copy constructor is required.
-void TestInstantiation() {
+template<template<class> class Allocator>
+void TestInstantiation(const char *allocator_name) {
+    REMARK("TestInstantiation<%s>\n", allocator_name);
     // Test instantiation is possible when copy constructor is not required.
-    tbb::enumerable_thread_specific<NoCopy> ets1;
+    tbb::enumerable_thread_specific<NoCopy, Allocator<NoCopy> > ets1;
+    ets1.combine_each(EmptyCombineEach<NoCopy>());
 
     // Test instantiation when default constructor is not required, because exemplar is provided.
     HasNoDefaultConstructor x(SecretTag);
-    tbb::enumerable_thread_specific<HasNoDefaultConstructor> ets2(x);
+    tbb::enumerable_thread_specific<HasNoDefaultConstructor, Allocator<HasNoDefaultConstructor> > ets2(x);
     ets2.combine(HasNoDefaultConstructorCombine());
 
     // Test instantiation when default constructor is not required, because init function is provided.
     HasNoDefaultConstructorFinit f;
-    tbb::enumerable_thread_specific<HasNoDefaultConstructor> ets3(f);
+    tbb::enumerable_thread_specific<HasNoDefaultConstructor, Allocator<HasNoDefaultConstructor> > ets3(f);
     ets3.combine(HasNoDefaultConstructorCombine());
+
+#if __TBB_ETS_USE_CPP11
+    // Test instantiation with multiple arguments
+    tbb::enumerable_thread_specific<HasSpecialConstructor, Allocator<HasSpecialConstructor> > ets4(SecretTag, 0x42, "meaningless");
+    ets4.combine_each(EmptyCombineEach<HasSpecialConstructor>());
+    // Test instantiation with one argument that should however use the variadic constructor
+    tbb::enumerable_thread_specific<HasSpecialConstructor, Allocator<HasSpecialConstructor> > ets5(SecretTag);
+    ets5.combine_each(EmptyCombineEach<HasSpecialConstructor>());
+#endif
+}
+
+class BigType {
+public:
+    BigType() { /* avoid cl warning C4345 about default initialization of POD types */ }
+    char my_data[12 * 1024 * 1024];
+};
+
+template<template<class> class Allocator>
+void TestConstructorWithBigType(const char *allocator_name) {
+    typedef tbb::enumerable_thread_specific<BigType, Allocator<BigType> > CounterBigType;
+    REMARK("TestConstructorWithBigType<%s>\n", allocator_name);
+    // Test default constructor
+    CounterBigType MyCounters;
+    // Create a local instance.
+    typename CounterBigType::reference my_local = MyCounters.local();
+    my_local.my_data[0] = 'a';
+    // Test copy constructor
+    CounterBigType MyCounters2(MyCounters);
+    ASSERT(check_alignment(MyCounters2.local(), allocator_name).my_data[0]=='a', NULL);
 }
 
 int TestMain () {
-    TestInstantiation();
+    size_t tbb_allocator_mask;
+    size_t cache_allocator_mask = tbb::internal::NFS_GetLineSize() - 1;
+    REMARK("estimatedCacheLineSize == %d, NFS_GetLineSize() returns %d\n",
+                (int)estimatedCacheLineSize, (int)tbb::internal::NFS_GetLineSize());
+    if(tbb::tbb_allocator<int>::allocator_type() == tbb::tbb_allocator<int>::standard) {
+        // scalable allocator is not available.
+        tbb_allocator_mask = 0;
+        REMARK("tbb::tbb_allocator is not available\n");
+    }
+    else {
+        // this value is for large objects, but will be correct for small.
+        tbb_allocator_mask = estimatedCacheLineSize - 1;
+    }
+    AlignMask = cache_allocator_mask;
+    TestInstantiation<tbb::cache_aligned_allocator>("tbb::cache_aligned_allocator");
+    AlignMask = tbb_allocator_mask;
+    TestInstantiation<tbb::tbb_allocator>("tbb::tbb_allocator");
+    AlignMask = cache_allocator_mask;
+    run_assignment_and_copy_constructor_tests<tbb::cache_aligned_allocator>("tbb::cache_aligned_allocator");
+    AlignMask = tbb_allocator_mask;
+    run_assignment_and_copy_constructor_tests<tbb::tbb_allocator>("tbb::tbb_allocator");
     run_segmented_iterator_tests();
     flog_key_creation_and_deletion();
 
@@ -1019,11 +1328,24 @@ int TestMain () {
         MinThread = 1;
     }
     if (MaxThread > 0) {
-        run_parallel_tests();
+        AlignMask = cache_allocator_mask;
+        run_parallel_tests<tbb::cache_aligned_allocator>("tbb::cache_aligned_allocator");
+        AlignMask = tbb_allocator_mask;
+        run_parallel_tests<tbb::tbb_allocator>("tbb::tbb_allocator");
         run_cross_type_tests();
     }
 
-    run_assignment_and_copy_constructor_tests();
+    AlignMask = cache_allocator_mask;
+    TestConstructorWithBigType<tbb::cache_aligned_allocator>("tbb::cache_aligned_allocator");
+    AlignMask = tbb_allocator_mask;
+    TestConstructorWithBigType<tbb::tbb_allocator>("tbb::tbb_allocator");
+
+    allocate_ets_element_on_stack<int,char>("int vs. char");
+    allocate_ets_element_on_stack<int,short>("int vs. short");
+    allocate_ets_element_on_stack<int,char[3]>("int vs. char[3]");
+    allocate_ets_element_on_stack<float,char>("float vs. char");
+    allocate_ets_element_on_stack<float,short>("float vs. short");
+    allocate_ets_element_on_stack<float,char[3]>("float vs. char[3]");
 
     return Harness::Done;
 }
diff --git a/src/test/test_examples_common_utility.cpp b/src/test/test_examples_common_utility.cpp
index 5e6dc66..d599c7b 100644
--- a/src/test/test_examples_common_utility.cpp
+++ b/src/test/test_examples_common_utility.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h" // for suppress_unused_warning
diff --git a/src/test/test_fast_random.cpp b/src/test/test_fast_random.cpp
index 28fa9fd..b91b298 100644
--- a/src/test/test_fast_random.cpp
+++ b/src/test/test_fast_random.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /**
@@ -36,10 +28,8 @@
 #define HARNESS_DEFAULT_MIN_THREADS 2
 #define HARNESS_DEFAULT_MAX_THREADS 32
 
-#include <algorithm> // include it first to avoid error on define below
-#define private public
+#define HARNESS_DEFINE_PRIVATE_PUBLIC 1
 #include "harness_inject_scheduler.h"
-#undef private
 
 #define TEST_TOTAL_SEQUENCE 0
 
diff --git a/src/test/test_flow_graph.cpp b/src/test/test_flow_graph.cpp
index f56a536..a4e230f 100644
--- a/src/test/test_flow_graph.cpp
+++ b/src/test/test_flow_graph.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
diff --git a/src/test/test_flow_graph_whitebox.cpp b/src/test/test_flow_graph_whitebox.cpp
new file mode 100644
index 0000000..60eab53
--- /dev/null
+++ b/src/test/test_flow_graph_whitebox.cpp
@@ -0,0 +1,758 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define HARNESS_DEFAULT_MIN_THREADS 3
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
+#if _MSC_VER
+    #pragma warning (disable: 4503) // Suppress "decorated name length exceeded, name was truncated" warning
+    #if !TBB_USE_EXCEPTIONS
+        // Suppress "C++ exception handler used, but unwind semantics are not enabled" warning in STL headers
+        #pragma warning (disable: 4530)
+    #endif
+    #if _MSC_VER==1700 && !defined(__INTEL_COMPILER)
+        // Suppress "unreachable code" warning by VC++ 17.0 (VS 2012)
+        #pragma warning (disable: 4702)
+    #endif
+#endif
+
+#include "harness.h"
+#include <string> // merely prevents LNK2001 error to happen (on ICL+VC9 configurations)
+
+#define TBB_PREVIEW_GRAPH_NODES 1
+
+// need these to get proper external names for private methods in library.
+#include "tbb/spin_mutex.h"
+#include "tbb/spin_rw_mutex.h"
+#include "tbb/task.h"
+
+#define private public
+#define protected public
+#include "tbb/flow_graph.h"
+#undef protected
+#undef private
+#include "tbb/task_scheduler_init.h"
+#include "harness_graph.h"
+
+#define BACKOFF_WAIT(ex,msg) \
+{ \
+    int wait_cnt = 0; \
+    tbb::internal::atomic_backoff backoff; \
+    do { \
+        backoff.pause(); \
+        ++wait_cnt; \
+    } \
+    while( (ex) && (wait_cnt < WAIT_MAX)); \
+    ASSERT(wait_cnt < WAIT_MAX, msg); \
+}
+
+template<typename T>
+struct receiverBody {
+    tbb::flow::continue_msg operator()(const T &/*in*/) {
+        return tbb::flow::continue_msg();
+    }
+};
+
+// split_nodes cannot have predecessors
+// they do not reject messages and always forward.
+// they reject edge reversals from successors.
+void TestSplitNode() {
+    typedef tbb::flow::split_node<tbb::flow::tuple<int> > snode_type;
+    tbb::flow::graph g;
+    snode_type snode(g);
+    tbb::flow::function_node<int> rcvr(g,tbb::flow::unlimited, receiverBody<int>());
+    REMARK("Testing split_node\n");
+    ASSERT(tbb::flow::output_port<0>(snode).my_successors.empty(), "Constructed split_node has successors");
+    // tbb::flow::output_port<0>(snode)
+    tbb::flow::make_edge(tbb::flow::output_port<0>(snode), rcvr);
+    ASSERT(!(tbb::flow::output_port<0>(snode).my_successors.empty()), "after make_edge, split_node has no successor.");
+    snode.try_put(tbb::flow::tuple<int>(1));
+    g.wait_for_all();
+    g.reset();
+    ASSERT(!(tbb::flow::output_port<0>(snode).my_successors.empty()), "after reset(), split_node has no successor.");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(tbb::flow::output_port<0>(snode).my_successors.empty(), "after reset(rf_clear_edges), split_node has a successor.");
+#endif
+}
+
+// buffering nodes cannot have predecessors
+// they do not reject messages and always save or forward
+// they allow edge reversals from successors
+template< typename B >
+void TestBufferingNode(const char * name) {
+    tbb::flow::graph g;
+    B                bnode(g);
+    tbb::flow::function_node<int,int,tbb::flow::rejecting> fnode(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state0));
+    REMARK("Testing %s:", name);
+    for(int icnt = 0; icnt < 2; icnt++) {
+        bool reverse_edge = (icnt & 0x2) != 0;
+        serial_fn_state0 = 0;  // reset to waiting state.
+        REMARK(" make_edge");
+        tbb::flow::make_edge(bnode, fnode);
+        ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after make_edge");
+        REMARK(" try_put");
+        bnode.try_put(1);  // will forward to the fnode
+        BACKOFF_WAIT(serial_fn_state0 == 0, "Timed out waiting for first put");
+        if(reverse_edge) {
+            REMARK(" try_put2");
+            bnode.try_put(2);  // will reverse the edge
+            // cannot do a wait_for_all here; the function_node is still executing
+            BACKOFF_WAIT(!bnode.my_successors.empty(), "Timed out waiting after 2nd put");
+            // at this point the only task running is the one for the function_node.
+            ASSERT(bnode.my_successors.empty(), "successor not removed");
+        }
+        else {
+            ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after forwarding message");
+        }
+        serial_fn_state0 = 0;  // release the function_node.
+        if(reverse_edge) {
+            // have to do a second release because the function_node will get the 2nd item
+            BACKOFF_WAIT( serial_fn_state0 == 0, "Timed out waiting after 2nd put");
+            serial_fn_state0 = 0;  // release the function_node.
+        }
+        g.wait_for_all();
+        REMARK(" remove_edge");
+        tbb::flow::remove_edge(bnode, fnode);
+        ASSERT(bnode.my_successors.empty(), "buffering node has a successor after remove_edge");
+    }
+    tbb::flow::join_node<tbb::flow::tuple<int,int>,tbb::flow::reserving> jnode(g);
+    tbb::flow::make_edge(bnode, tbb::flow::input_port<0>(jnode));  // will spawn a task
+    g.wait_for_all();
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after attaching to join");
+    REMARK(" reverse");
+    bnode.try_put(1);  // the edge should reverse
+    g.wait_for_all();
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after reserving");
+    REMARK(" reset()");
+    g.wait_for_all();
+    g.reset();  // should be in forward direction again
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after reset()");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK(" remove_edge");
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after reset(rf_clear_edges)");
+    tbb::flow::make_edge(bnode, tbb::flow::input_port<0>(jnode));  // add edge again
+    // reverse edge by adding to buffer.
+    bnode.try_put(1);  // the edge should reverse
+    g.wait_for_all();
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after reserving");
+    REMARK(" remove_edge(reversed)");
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(bnode.my_successors.empty(), "buffering node has no successor after reset()");
+    ASSERT(tbb::flow::input_port<0>(jnode).my_predecessors.empty(), "predecessor not reset");
+#endif
+    REMARK("  done\n");
+    g.wait_for_all();
+}
+
+// continue_node has only predecessor count
+// they do not have predecessors, only the counts
+// successor edges cannot be reversed
+void TestContinueNode() {
+    tbb::flow::graph g;
+    tbb::flow::function_node<int> fnode0(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state0));
+    tbb::flow::continue_node<int> cnode(g, 1, serial_continue_body<int>(serial_continue_state0));
+    tbb::flow::function_node<int> fnode1(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state1));
+    tbb::flow::make_edge(fnode0, cnode);
+    tbb::flow::make_edge(cnode, fnode1);
+    REMARK("Testing continue_node:");
+    for( int icnt = 0; icnt < 2; ++icnt ) {
+        REMARK( " initial%d", icnt);
+        ASSERT(cnode.my_predecessor_count == 2, "predecessor addition didn't increment count");
+        ASSERT(!cnode.successors().empty(), "successors empty though we added one");
+        ASSERT(cnode.my_current_count == 0, "state of continue_receiver incorrect");
+        serial_continue_state0 = 0;
+        serial_fn_state0 = 0;
+        serial_fn_state1 = 0;
+
+        fnode0.try_put(1);  // start the first function node.
+        BACKOFF_WAIT(!serial_fn_state0, "Timed out waiting for function_node to start");
+        // Now the body of function_node 0 is executing.
+        serial_fn_state0 = 0;  // release the node
+        // wait for node to count the message (or for the node body to execute, which would be wrong)
+        BACKOFF_WAIT(serial_continue_state0 == 0 && cnode.my_current_count == 0, "Timed out waiting for continue_state0 to change");
+        ASSERT(serial_continue_state0 == 0, "Improperly released continue_node");
+        ASSERT(cnode.my_current_count == 1, "state of continue_receiver incorrect");
+        if(icnt == 0) {  // first time through, let the continue_node fire
+            REMARK(" firing");
+            fnode0.try_put(1);  // second message
+            BACKOFF_WAIT(serial_fn_state0 == 0, "timeout waiting for continue_body to execute");
+            // Now the body of function_node 0 is executing.
+            serial_fn_state0 = 0;  // release the node
+
+            BACKOFF_WAIT(!serial_continue_state0,"continue_node didn't start");  // now we wait for the continue_node.
+            ASSERT(cnode.my_current_count == 0, " my_current_count not reset before body of continue_node started");
+            serial_continue_state0 = 0;  // release the continue_node
+            BACKOFF_WAIT(!serial_fn_state1,"successor function_node didn't start");    // wait for the successor function_node to enter body
+            serial_fn_state1 = 0;  // release successor function_node.
+            g.wait_for_all();
+
+            // try a try_get()
+            {
+                int i;
+                ASSERT(!cnode.try_get(i), "try_get not rejected");
+            }
+
+            REMARK(" reset");
+            ASSERT(!cnode.my_successors.empty(), "Empty successors in built graph (before reset)");
+            ASSERT(cnode.my_predecessor_count == 2, "predecessor_count reset (before reset)");
+            g.reset();  // should still be the same
+            ASSERT(!cnode.my_successors.empty(), "Empty successors in built graph (after reset)" );
+            ASSERT(cnode.my_predecessor_count == 2, "predecessor_count reset (after reset)");
+        }
+        else {  // we're going to see if the rf_clear_edges resets things.
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            g.wait_for_all();
+            REMARK(" reset(rf_clear_edges)");
+            ASSERT(!cnode.my_successors.empty(), "Empty successors in built graph (before reset)");
+            ASSERT(cnode.my_predecessor_count == 2, "predecessor_count reset (before reset)");
+            g.reset(tbb::flow::rf_clear_edges);  // should be in forward direction again
+            ASSERT(cnode.my_current_count == 0, "state of continue_receiver incorrect after reset(rf_clear_edges)");
+            ASSERT(cnode.my_successors.empty(), "buffering node has a successor after reset(rf_clear_edges)");
+            ASSERT(cnode.my_predecessor_count == cnode.my_initial_predecessor_count, "predecessor count not reset");
+#endif
+        }
+    }
+
+    REMARK(" done\n");
+
+}
+
+// function_node has predecessors and successors
+// try_get() rejects
+// successor edges cannot be reversed
+// predecessors will reverse (only rejecting will reverse)
+void TestFunctionNode() {
+    tbb::flow::graph g;
+    tbb::flow::queue_node<int> qnode0(g);
+    tbb::flow::function_node<int,int, tbb::flow::rejecting > fnode0(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state0));
+    // queueing function node
+    tbb::flow::function_node<int,int> fnode1(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state0));
+
+    tbb::flow::queue_node<int> qnode1(g);
+
+    tbb::flow::make_edge(fnode0, qnode1);
+    tbb::flow::make_edge(qnode0, fnode0);
+
+    serial_fn_state0 = 2;  // just let it go
+    // see if the darned thing will work....
+    qnode0.try_put(1);
+    g.wait_for_all();
+    int ii;
+    ASSERT(qnode1.try_get(ii) && ii == 1, "output not passed");
+    tbb::flow::remove_edge(qnode0, fnode0);
+    tbb::flow::remove_edge(fnode0, qnode1);
+
+    tbb::flow::make_edge(fnode1, qnode1);
+    tbb::flow::make_edge(qnode0, fnode1);
+
+    serial_fn_state0 = 2;  // just let it go
+    // see if the darned thing will work....
+    qnode0.try_put(1);
+    g.wait_for_all();
+    ASSERT(qnode1.try_get(ii) && ii == 1, "output not passed");
+    tbb::flow::remove_edge(qnode0, fnode1);
+    tbb::flow::remove_edge(fnode1, qnode1);
+
+    // rejecting
+    serial_fn_state0 = 0;
+    tbb::flow::make_edge(fnode0, qnode1);
+    tbb::flow::make_edge(qnode0, fnode0);
+    REMARK("Testing rejecting function_node:");
+    ASSERT(!fnode0.my_queue, "node should have no queue");
+    ASSERT(!fnode0.my_successors.empty(), "successor edge not added");
+    qnode0.try_put(1);
+    BACKOFF_WAIT(!serial_fn_state0,"rejecting function_node didn't start");
+    qnode0.try_put(2);   // rejecting node should reject, reverse.
+    BACKOFF_WAIT(!fnode0.my_predecessors.empty(), "Missing predecessor ---");
+    serial_fn_state0 = 2;   // release function_node body.
+    g.wait_for_all();
+    REMARK(" reset");
+    g.reset();  // should reverse the edge from the input to the function node.
+    ASSERT(!qnode0.my_successors.empty(), "empty successors after reset()");
+    ASSERT(fnode0.my_predecessors.empty(), "predecessor not reversed");
+    tbb::flow::remove_edge(qnode0, fnode0);
+    tbb::flow::remove_edge(fnode0, qnode1);
+    REMARK("\n");
+
+    // queueing
+    tbb::flow::make_edge(fnode1, qnode1);
+    REMARK("Testing queueing function_node:");
+    ASSERT(fnode1.my_queue, "node should have no queue");
+    ASSERT(!fnode1.my_successors.empty(), "successor edge not added");
+    REMARK(" add_pred");
+    ASSERT(fnode1.register_predecessor(qnode0), "Cannot register as predecessor");
+    ASSERT(!fnode1.my_predecessors.empty(), "Missing predecessor");
+    REMARK(" reset");
+    g.wait_for_all();
+    g.reset();  // should reverse the edge from the input to the function node.
+    ASSERT(!qnode0.my_successors.empty(), "empty successors after reset()");
+    ASSERT(fnode1.my_predecessors.empty(), "predecessor not reversed");
+    tbb::flow::remove_edge(qnode0, fnode1);
+    tbb::flow::remove_edge(fnode1, qnode1);
+    REMARK("\n");
+
+    serial_fn_state0 = 0;  // make the function_node wait
+    tbb::flow::make_edge(qnode0, fnode0);
+    REMARK(" start_func");
+    qnode0.try_put(1);
+    BACKOFF_WAIT(serial_fn_state0 == 0, "Timed out waiting after 1st put");
+    // now if we put an item to the queues the edges to the function_node will reverse.
+    REMARK(" put_node(2)");
+    qnode0.try_put(2);   // start queue node.
+    // wait for the edges to reverse
+    BACKOFF_WAIT(fnode0.my_predecessors.empty(), "Timed out waiting");
+    ASSERT(!fnode0.my_predecessors.empty(), "function_node edge not reversed");
+    g.my_root_task->cancel_group_execution();
+    // release the function_node
+    serial_fn_state0 = 2;
+    g.wait_for_all();
+    ASSERT(!fnode0.my_predecessors.empty() && qnode0.my_successors.empty(), "function_node edge not reversed");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(fnode0.my_predecessors.empty() && qnode0.my_successors.empty(), "function_node edge not removed");
+    ASSERT(fnode0.my_successors.empty(), "successor to fnode not removed");
+#endif
+    REMARK(" done\n");
+}
+
+template<typename TT>
+class tag_func {
+    TT my_mult;
+public:
+    tag_func(TT multiplier) : my_mult(multiplier) { }
+    void operator=( const tag_func& other){my_mult = other.my_mult;}
+    // operator() will return [0 .. Count) 
+    tbb::flow::tag_value operator()( TT v) {
+        tbb::flow::tag_value t = tbb::flow::tag_value(v / my_mult);
+        return t;
+    }
+};
+
+template<tbb::flow::graph_buffer_policy JNODE_TYPE>
+void
+TestSimpleSuccessorArc(const char *name) {
+    tbb::flow::graph g;
+    {
+        //tbb::flow::join_node<tbb::flow::tuple<int>, tbb::flow::queueing> qj(g);
+        REMARK("Join<%s> successor test ", name);
+        tbb::flow::join_node<tbb::flow::tuple<int>, JNODE_TYPE> qj(g);
+        tbb::flow::broadcast_node<tbb::flow::tuple<int> > bnode(g);
+        tbb::flow::make_edge(qj, bnode);
+        ASSERT(!qj.my_successors.empty(),"successor missing after linking");
+        g.reset();
+        ASSERT(!qj.my_successors.empty(),"successor missing after reset()");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        g.reset(tbb::flow::rf_clear_edges);
+        ASSERT(qj.my_successors.empty(), "successors not removed after reset(rf_clear_edges)");
+#endif
+    }
+}
+
+template<>
+void
+TestSimpleSuccessorArc<tbb::flow::tag_matching>(const char *name) {
+    tbb::flow::graph g;
+    {
+        REMARK("Join<%s> successor test ", name);
+        typedef tbb::flow::tuple<int,int> my_tuple;
+        tbb::flow::join_node<my_tuple, tbb::flow::tag_matching> qj(g,
+                tag_func<int>(1),
+                tag_func<int>(1)
+                );
+        tbb::flow::broadcast_node<my_tuple > bnode(g);
+        tbb::flow::make_edge(qj, bnode);
+        ASSERT(!qj.my_successors.empty(),"successor missing after linking");
+        g.reset();
+        ASSERT(!qj.my_successors.empty(),"successor missing after reset()");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        g.reset(tbb::flow::rf_clear_edges);
+        ASSERT(qj.my_successors.empty(), "successors not removed after reset(rf_clear_edges)");
+#endif
+    }
+}
+
+void
+TestJoinNode() {
+    tbb::flow::graph g;
+
+    TestSimpleSuccessorArc<tbb::flow::queueing>("queueing");
+    TestSimpleSuccessorArc<tbb::flow::reserving>("reserving");
+    TestSimpleSuccessorArc<tbb::flow::tag_matching>("tag_matching");
+
+    // queueing and tagging join nodes have input queues, so the input ports do not reverse.
+    REMARK(" reserving preds");
+    {
+        tbb::flow::join_node<tbb::flow::tuple<int,int>, tbb::flow::reserving> rj(g);
+        tbb::flow::queue_node<int> q0(g);
+        tbb::flow::queue_node<int> q1(g);
+        tbb::flow::make_edge(q0,tbb::flow::input_port<0>(rj));
+        tbb::flow::make_edge(q1,tbb::flow::input_port<1>(rj));
+        q0.try_put(1);
+        g.wait_for_all();  // quiesce
+        ASSERT(!(tbb::flow::input_port<0>(rj).my_predecessors.empty()),"reversed port missing predecessor");
+        ASSERT((tbb::flow::input_port<1>(rj).my_predecessors.empty()),"non-reversed port has pred");
+        g.reset();
+        ASSERT((tbb::flow::input_port<0>(rj).my_predecessors.empty()),"reversed port has pred after reset()");
+        ASSERT((tbb::flow::input_port<1>(rj).my_predecessors.empty()),"non-reversed port has pred after reset()");
+        q1.try_put(2);
+        g.wait_for_all();  // quiesce
+        ASSERT(!(tbb::flow::input_port<1>(rj).my_predecessors.empty()),"reversed port missing predecessor");
+        ASSERT((tbb::flow::input_port<0>(rj).my_predecessors.empty()),"non-reversed port has pred");
+        g.reset();
+        ASSERT((tbb::flow::input_port<1>(rj).my_predecessors.empty()),"reversed port has pred after reset()");
+        ASSERT((tbb::flow::input_port<0>(rj).my_predecessors.empty()),"non-reversed port has pred after reset()");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        // should reset predecessors just as regular reset.
+        q1.try_put(3);
+        g.wait_for_all();  // quiesce
+        ASSERT(!(tbb::flow::input_port<1>(rj).my_predecessors.empty()),"reversed port missing predecessor");
+        ASSERT((tbb::flow::input_port<0>(rj).my_predecessors.empty()),"non-reversed port has pred");
+        g.reset(tbb::flow::rf_clear_edges);
+        ASSERT((tbb::flow::input_port<1>(rj).my_predecessors.empty()),"reversed port has pred after reset()");
+        ASSERT((tbb::flow::input_port<0>(rj).my_predecessors.empty()),"non-reversed port has pred after reset()");
+        ASSERT(q0.my_successors.empty(), "edge not removed by reset(rf_clear_edges)");
+        ASSERT(q1.my_successors.empty(), "edge not removed by reset(rf_clear_edges)");
+#endif
+    }
+    REMARK(" done\n");
+}
+
+void
+TestLimiterNode() {
+    int out_int;
+    tbb::flow::graph g;
+    tbb::flow::limiter_node<int> ln(g,1);
+    REMARK("Testing limiter_node: preds and succs");
+    ASSERT(ln.decrement.my_predecessor_count == 0, "error in pred count");
+    ASSERT(ln.decrement.my_initial_predecessor_count == 0, "error in initial pred count");
+    ASSERT(ln.decrement.my_current_count == 0, "error in current count");
+    ASSERT(ln.init_decrement_predecessors == 0, "error in decrement predecessors");
+    ASSERT(ln.my_threshold == 1, "error in my_threshold");
+    tbb::flow::queue_node<int> inq(g);
+    tbb::flow::queue_node<int> outq(g);
+    tbb::flow::broadcast_node<tbb::flow::continue_msg> bn(g);
+
+    tbb::flow::make_edge(inq,ln);
+    tbb::flow::make_edge(ln,outq);
+    tbb::flow::make_edge(bn,ln.decrement);
+
+    g.wait_for_all();
+    ASSERT(!(ln.my_successors.empty()),"successors empty after make_edge");
+    ASSERT(ln.my_predecessors.empty(), "input edge reversed");
+    inq.try_put(1);
+    g.wait_for_all();
+    ASSERT(outq.try_get(out_int) && out_int == 1, "limiter_node didn't pass first value");
+    ASSERT(ln.my_predecessors.empty(), "input edge reversed");
+    inq.try_put(2);
+    g.wait_for_all();
+    ASSERT(!outq.try_get(out_int), "limiter_node incorrectly passed second input");
+    ASSERT(!ln.my_predecessors.empty(), "input edge to limiter_node not reversed");
+    bn.try_put(tbb::flow::continue_msg());
+    g.wait_for_all();
+    ASSERT(outq.try_get(out_int) && out_int == 2, "limiter_node didn't pass second value");
+    g.wait_for_all();
+    ASSERT(!ln.my_predecessors.empty(), "input edge was reversed(after try_get())");
+    g.reset();
+    ASSERT(ln.my_predecessors.empty(), "input edge not reset");
+    inq.try_put(3);
+    g.wait_for_all();
+    ASSERT(outq.try_get(out_int) && out_int == 3, "limiter_node didn't pass third value");
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK(" rf_clear_edges");
+    // currently the limiter_node will not pass another message
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(ln.decrement.my_predecessor_count == 0, "error in pred count");
+    ASSERT(ln.decrement.my_initial_predecessor_count == 0, "error in initial pred count");
+    ASSERT(ln.decrement.my_current_count == 0, "error in current count");
+    ASSERT(ln.init_decrement_predecessors == 0, "error in decrement predecessors");
+    ASSERT(ln.my_threshold == 1, "error in my_threshold");
+    ASSERT(ln.my_predecessors.empty(), "preds not reset(rf_clear_edges)");
+    ASSERT(ln.my_successors.empty(), "preds not reset(rf_clear_edges)");
+    ASSERT(inq.my_successors.empty(), "Arc not removed on reset(rf_clear_edges)");
+    ASSERT(inq.my_successors.empty(), "Arc not removed on reset(rf_clear_edges)");
+    ASSERT(bn.my_successors.empty(), "control edge not removed on reset(rf_clear_edges)");
+    tbb::flow::make_edge(inq,ln);
+    tbb::flow::make_edge(ln,outq);
+    inq.try_put(4);
+    inq.try_put(5);
+    g.wait_for_all();
+    ASSERT(outq.try_get(out_int),"missing output after reset(rf_clear_edges)");
+    ASSERT(out_int == 4, "input incorrect (4)");
+    bn.try_put(tbb::flow::continue_msg());
+    g.wait_for_all();
+    ASSERT(!outq.try_get(out_int),"second output incorrectly passed (rf_clear_edges)");
+#endif
+    REMARK(" done\n");
+}
+
+template<typename MF_TYPE>
+struct mf_body {
+    tbb::atomic<int> *_flag;
+    mf_body( tbb::atomic<int> &myatomic) : _flag(&myatomic) { }
+    void operator()( const int& in, typename MF_TYPE::output_ports_type &outports) {
+        if(*_flag == 0) {
+            *_flag = 1;
+            BACKOFF_WAIT(*_flag == 1, "multifunction_node not released");
+        }
+ 
+        if(in & 0x1) tbb::flow::get<1>(outports).try_put(in);
+        else         tbb::flow::get<0>(outports).try_put(in);
+    }
+};
+
+template<tbb::flow::graph_buffer_policy P, typename T>
+struct test_reversal;
+template<typename T>
+struct test_reversal<tbb::flow::queueing, T> {
+    test_reversal() { REMARK("<queueing>"); }
+    // queueing node will not reverse.
+    bool operator()( T &node) { return node.my_predecessors.empty(); }
+};
+
+template<typename T>
+struct test_reversal<tbb::flow::rejecting, T> {
+    test_reversal() { REMARK("<rejecting>"); }
+    bool operator()( T &node) { return !node.my_predecessors.empty(); }
+};
+
+template<tbb::flow::graph_buffer_policy P>
+void
+TestMultifunctionNode() {
+    typedef tbb::flow::multifunction_node<int, tbb::flow::tuple<int, int>, P> multinode_type;
+    REMARK("Testing multifunction_node");
+    test_reversal<P,multinode_type> my_test;
+    REMARK(":");
+    tbb::flow::graph g;
+    multinode_type mf(g, tbb::flow::serial, mf_body<multinode_type>(serial_fn_state0));
+    tbb::flow::queue_node<int> qin(g);
+    tbb::flow::queue_node<int> qodd_out(g);
+    tbb::flow::queue_node<int> qeven_out(g);
+    tbb::flow::make_edge(qin,mf);
+    tbb::flow::make_edge(tbb::flow::output_port<0>(mf), qeven_out);
+    tbb::flow::make_edge(tbb::flow::output_port<1>(mf), qodd_out);
+    g.wait_for_all();
+    for( int ii = 0; ii <
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            2
+#else
+            1
+#endif
+            ; ++ii) {
+        serial_fn_state0 = 0;
+        if(ii == 0) REMARK(" reset preds"); else REMARK(" 2nd");
+        qin.try_put(0);
+        // wait for node to be active
+        BACKOFF_WAIT(serial_fn_state0 == 0, "timed out waiting for first put");
+        qin.try_put(1);
+        BACKOFF_WAIT((!my_test(mf)), "Timed out waiting");
+        ASSERT(my_test(mf), "fail second put test");
+        g.my_root_task->cancel_group_execution();
+        // release node
+        serial_fn_state0 = 2;
+        g.wait_for_all();
+        ASSERT(my_test(mf), "fail cancel group test");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        if( ii == 1) {
+            REMARK(" rf_clear_edges");
+            g.reset(tbb::flow::rf_clear_edges);
+            ASSERT(tbb::flow::output_port<0>(mf).my_successors.empty(), "output_port<0> not reset (rf_clear_edges)");
+            ASSERT(tbb::flow::output_port<1>(mf).my_successors.empty(), "output_port<1> not reset (rf_clear_edges)");
+        }
+        else
+#endif
+        {
+            g.reset();
+        }
+        ASSERT(mf.my_predecessors.empty(), "edge didn't reset");
+        ASSERT((ii == 0 && !qin.my_successors.empty()) || (ii == 1 && qin.my_successors.empty()), "edge didn't reset");
+    }
+    REMARK(" done\n");
+}
+
+// indexer_node is like a broadcast_node, in that none of its inputs reverse, and it
+// never allows a successor to reverse its edge, so we only need test the successors.
+void
+TestIndexerNode() {
+    tbb::flow::graph g;
+    typedef tbb::flow::indexer_node< int, int > indexernode_type;
+    indexernode_type inode(g);
+    REMARK("Testing indexer_node:");
+    tbb::flow::queue_node<indexernode_type::output_type> qout(g);
+    tbb::flow::make_edge(inode,qout);
+    g.wait_for_all();
+    ASSERT(!inode.my_successors.empty(), "successor of indexer_node missing");
+    g.reset();
+    ASSERT(!inode.my_successors.empty(), "successor of indexer_node missing after reset");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(inode.my_successors.empty(), "successor of indexer_node not removed by reset(rf_clear_edges)");
+#endif
+    REMARK(" done\n");
+}
+
+template<typename Node>
+void
+TestScalarNode(const char *name) {
+    tbb::flow::graph g;
+    Node on(g);
+    tbb::flow::queue_node<int> qout(g);
+    REMARK("Testing %s:", name);
+    tbb::flow::make_edge(on,qout);
+    g.wait_for_all();
+    ASSERT(!on.my_successors.empty(), "edge not added");
+    g.reset();
+    ASSERT(!on.my_successors.empty(), "edge improperly removed");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(on.my_successors.empty(), "edge not removed by reset(rf_clear_edges)");
+#endif
+    REMARK(" done\n");
+}
+
+struct seq_body {
+    size_t operator()(const int &in) {
+        return size_t(in / 3);
+    }
+};
+
+// sequencer_node behaves like a queueing node, but requires a different constructor.
+void
+TestSequencerNode() {
+    tbb::flow::graph g;
+    tbb::flow::sequencer_node<int> bnode(g, seq_body());
+    REMARK("Testing sequencer_node:");
+    tbb::flow::function_node<int> fnode(g, tbb::flow::serial, serial_fn_body<int>(serial_fn_state0));
+    REMARK("Testing sequencer_node:");
+    serial_fn_state0 = 0;  // reset to waiting state.
+    REMARK(" make_edge");
+    tbb::flow::make_edge(bnode, fnode);
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after make_edge");
+    REMARK(" try_put");
+    bnode.try_put(0);  // will forward to the fnode
+    BACKOFF_WAIT( serial_fn_state0 == 0, "timeout waiting for function_node");  // wait for the function_node to fire up
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after forwarding message");
+    serial_fn_state0 = 0;
+    g.wait_for_all();
+    REMARK(" remove_edge");
+    tbb::flow::remove_edge(bnode, fnode);
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after remove_edge");
+    tbb::flow::join_node<tbb::flow::tuple<int,int>,tbb::flow::reserving> jnode(g);
+    tbb::flow::make_edge(bnode, tbb::flow::input_port<0>(jnode));  // will spawn a task
+    g.wait_for_all();
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after attaching to join");
+    REMARK(" reverse");
+    bnode.try_put(3);  // the edge should reverse
+    g.wait_for_all();
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after reserving");
+    REMARK(" reset()");
+    g.wait_for_all();
+    g.reset();  // should be in forward direction again
+    ASSERT(!bnode.my_successors.empty(), "buffering node has no successor after reset()");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK(" remove_edge");
+    g.reset(tbb::flow::rf_clear_edges);  // should be in forward direction again
+    ASSERT(bnode.my_successors.empty(), "buffering node has a successor after reset(rf_clear_edges)");
+    ASSERT(fnode.my_predecessors.empty(), "buffering node reversed after reset(rf_clear_edges)");
+#endif
+    REMARK("  done\n");
+    g.wait_for_all();
+}
+
+struct snode_body {
+    int max_cnt;
+    int my_cnt;
+    snode_body( const int &in) : max_cnt(in) { my_cnt = 0; }
+    bool operator()(int &out) {
+        if(max_cnt <= my_cnt++) return false;
+        out = my_cnt;
+        return true;
+    }
+};
+
+void
+TestSourceNode() {
+    tbb::flow::graph g;
+    tbb::flow::source_node<int> sn(g, snode_body(4), false);
+    REMARK("Testing source_node:");
+    tbb::flow::queue_node<int> qin(g);
+    tbb::flow::join_node<tbb::flow::tuple<int,int>, tbb::flow::reserving> jn(g);
+    tbb::flow::queue_node<tbb::flow::tuple<int,int> > qout(g);
+    
+    REMARK(" make_edges");
+    tbb::flow::make_edge(sn, tbb::flow::input_port<0>(jn));
+    tbb::flow::make_edge(qin, tbb::flow::input_port<1>(jn));
+    tbb::flow::make_edge(jn,qout);
+    ASSERT(!sn.my_successors.empty(), "source node has no successor after make_edge");
+    g.wait_for_all();
+    g.reset();
+    ASSERT(!sn.my_successors.empty(), "source node has no successor after reset");
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    g.wait_for_all();
+    g.reset(tbb::flow::rf_clear_edges);
+    ASSERT(sn.my_successors.empty(), "source node has successor after reset(rf_clear_edges)");
+    tbb::flow::make_edge(sn, tbb::flow::input_port<0>(jn));
+    tbb::flow::make_edge(qin, tbb::flow::input_port<1>(jn));
+    tbb::flow::make_edge(jn,qout);
+    g.wait_for_all();
+#endif
+    REMARK(" activate");
+    sn.activate();  // will forward to the fnode
+    REMARK(" wait1");
+    BACKOFF_WAIT( !sn.my_successors.empty(), "Timed out waiting for edge to reverse");
+    ASSERT(sn.my_successors.empty(), "source node has no successor after forwarding message");
+
+    g.wait_for_all();
+    g.reset();
+    ASSERT(!sn.my_successors.empty(), "source_node has no successors after reset");
+    ASSERT(tbb::flow::input_port<0>(jn).my_predecessors.empty(), "successor if source_node has pred after reset.");
+    REMARK(" done\n");
+}
+
+int TestMain() {
+
+    if(MinThread < 3) MinThread = 3;
+    tbb::task_scheduler_init init(MinThread);  // tests presume at least three threads
+    
+    TestBufferingNode< tbb::flow::buffer_node<int> >("buffer_node");
+    TestBufferingNode< tbb::flow::priority_queue_node<int> >("priority_queue_node");
+    TestBufferingNode< tbb::flow::queue_node<int> >("queue_node");
+    TestSequencerNode();
+
+    TestMultifunctionNode<tbb::flow::rejecting>();
+    TestMultifunctionNode<tbb::flow::queueing>();
+    TestSourceNode();
+    TestContinueNode();
+    TestFunctionNode();
+
+    TestJoinNode();
+
+    TestLimiterNode();
+    TestIndexerNode();
+    TestSplitNode();
+    TestScalarNode<tbb::flow::broadcast_node<int> >("broadcast_node");
+    TestScalarNode<tbb::flow::overwrite_node<int> >("overwrite_node");
+    TestScalarNode<tbb::flow::write_once_node<int> >("write_once_node");
+
+    return Harness::Done;
+}
+
diff --git a/src/test/test_fp.cpp b/src/test/test_fp.cpp
index 3cacfb7..527e4f1 100644
--- a/src/test/test_fp.cpp
+++ b/src/test/test_fp.cpp
@@ -1,268 +1,385 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /** This test checks the automatic propagation of master thread FPU settings
     into the worker threads. **/
 
-#define TBB_PREVIEW_LOCAL_OBSERVER 1
-
+#include "harness_fp.h"
 #include "harness.h"
+#define private public
+#include "tbb/task.h"
+#undef private
 #include "tbb/parallel_for.h"
 #include "tbb/task_scheduler_init.h"
-#include "tbb/tbb_machine.h"
-
-#if __TBB_SCHEDULER_OBSERVER
-#include "tbb/task_scheduler_observer.h"
-#endif
 
 const int N = 500000;
 
 #if ( __TBB_x86_32 || __TBB_x86_64 ) && __TBB_CPU_CTL_ENV_PRESENT && !defined(__TBB_WIN32_USE_CL_BUILTINS)
+#include "harness_barrier.h"
 
-const int FE_TONEAREST = 0x0000,
-          FE_DOWNWARD = 0x0400,
-          FE_UPWARD = 0x0800,
-          FE_TOWARDZERO = 0x0c00,
-          FE_RND_MODE_MASK = FE_TOWARDZERO,
-          SSE_RND_MODE_MASK = FE_RND_MODE_MASK << 3,
-          SSE_DAZ = 0x0040,
-          SSE_FTZ = 0x8000,
-          SSE_MODE_MASK = SSE_DAZ | SSE_FTZ;
+class CheckNoSseStatusPropagationBody : public NoAssign {
+    Harness::SpinBarrier &barrier;
+public:
+    CheckNoSseStatusPropagationBody( Harness::SpinBarrier &_barrier ) : barrier(_barrier) {}
+    void operator()( const tbb::blocked_range<int>& ) const {
+        barrier.wait();
+        tbb::internal::cpu_ctl_env ctl;
+        ctl.get_env();
+        ASSERT( (ctl.mxcsr & SSE_STATUS_MASK) == 0, "FPU control status bits have been propagated." );
+    }
+};
 
-const int NumSseModes = 4;
-const int SseModes[NumSseModes] = { 0, SSE_DAZ, SSE_FTZ, SSE_DAZ | SSE_FTZ };
+void CheckNoSseStatusPropagation() {
+    tbb::internal::cpu_ctl_env ctl;
+    ctl.get_env();
+    ctl.mxcsr |= SSE_STATUS_MASK;
+    ctl.set_env();
+    const int num_threads = tbb::task_scheduler_init::default_num_threads();
+    Harness::SpinBarrier barrier(num_threads);
+    tbb::task_scheduler_init init(num_threads);
+    tbb::parallel_for( tbb::blocked_range<int>(0, num_threads), CheckNoSseStatusPropagationBody(barrier) );
+    ctl.mxcsr &= ~SSE_STATUS_MASK;
+    ctl.set_env();
+}
+#else /* Other archs */
+void CheckNoSseStatusPropagation() {}
+#endif /* Other archs */
 
-#if _WIN64 && !__TBB_X86_MSVC_INLINE_ASM_AVAILABLE && !__MINGW64__
-// MinGW uses inline implementation from tbb/machine/linux_intel64.h
+class RoundingModeCheckBody {
+    int m_mode;
+    int m_sseMode;
+public:
+    void operator() ( int /*iter*/ ) const {
+        ASSERT( GetRoundingMode() == m_mode, "FPU control state has not been propagated." );
+        ASSERT( GetSseMode() == m_sseMode, "SSE control state has not been propagated." );
+    }
 
-#include <float.h>
+    RoundingModeCheckBody ( int mode, int sseMode ) : m_mode(mode), m_sseMode(sseMode) {}
+};
 
-inline void __TBB_get_cpu_ctl_env ( __TBB_cpu_ctl_env_t* fe ) {
-    fe->x87cw = short(_control87(0, 0) & _MCW_RC) << 2;
-    fe->mxcsr = _mm_getcsr();
-}
-inline void __TBB_set_cpu_ctl_env ( const __TBB_cpu_ctl_env_t* fe ) {
-    ASSERT( (fe->x87cw & FE_RND_MODE_MASK) == ((fe->x87cw & FE_RND_MODE_MASK) >> 2 & _MCW_RC) << 2, "Check float.h constants" );
-    _control87( (fe->x87cw & FE_RND_MODE_MASK) >> 6, _MCW_RC );
-    _mm_setcsr( fe->mxcsr );
+void TestArenaFpuEnvPropagation( int id ) {
+    // TBB scheduler instance in a master thread captures the FPU control state
+    // at the moment of its initialization and passes it to the workers toiling
+    // on its behalf.
+    for( int k = 0; k < NumSseModes; ++k ) {
+        int sse_mode = SseModes[(k + id) % NumSseModes];
+        SetSseMode( sse_mode );
+        for( int i = 0; i < NumRoundingModes; ++i ) {
+            int mode = RoundingModes[(i + id) % NumRoundingModes];
+            SetRoundingMode( mode );
+            // New mode must be set before TBB scheduler is initialized
+            tbb::task_scheduler_init init;
+            tbb::parallel_for( 0, N, 1, RoundingModeCheckBody(mode, sse_mode) );
+            ASSERT( GetRoundingMode() == mode, NULL );
+        }
+    }
 }
 
-#endif /*  _WIN64 && !__TBB_X86_MSVC_INLINE_ASM_AVAILABLE && !__MINGW64__ */
-
-inline int GetRoundingMode ( bool checkConsistency = true ) {
-    __TBB_cpu_ctl_env_t ctl = { 0, 0 };
-    __TBB_get_cpu_ctl_env(&ctl);
-    ASSERT( !checkConsistency || (ctl.mxcsr & SSE_RND_MODE_MASK) >> 3 == (ctl.x87cw & FE_RND_MODE_MASK), NULL );
-    return ctl.x87cw & FE_RND_MODE_MASK;
+#if __TBB_FP_CONTEXT
+void TestArenaFpuEnvPersistence( int id ) {
+    // Since the following loop uses auto-initialization, the scheduler instance
+    // implicitly created by the first parallel_for invocation will persist
+    // until the thread ends, and thus workers will use the mode set by the
+    // first iteration.
+    int captured_mode = RoundingModes[id % NumRoundingModes];
+    int captured_sse_mode = SseModes[id % NumSseModes];
+    for( int k = 0; k < NumSseModes; ++k ) {
+        int sse_mode = SseModes[(k + id) % NumSseModes];
+        SetSseMode( sse_mode );
+        for( int i = 0; i < NumRoundingModes; ++i ) {
+            int mode = RoundingModes[(i + id) % NumRoundingModes];
+            SetRoundingMode( mode );
+            tbb::parallel_for( 0, N, 1, RoundingModeCheckBody(captured_mode, captured_sse_mode) );
+            ASSERT( GetRoundingMode() == mode, NULL );
+        }
+    }
 }
+#endif
 
-inline void SetRoundingMode ( int mode ) {
-    __TBB_cpu_ctl_env_t ctl = { 0, 0 };
-    __TBB_get_cpu_ctl_env(&ctl);
-    ctl.mxcsr = (ctl.mxcsr & ~SSE_RND_MODE_MASK) | (mode & FE_RND_MODE_MASK) << 3;
-    ctl.x87cw = short((ctl.x87cw & ~FE_RND_MODE_MASK) | (mode & FE_RND_MODE_MASK));
-    __TBB_set_cpu_ctl_env(&ctl);
-}
+class LauncherBody {
+public:
+    void operator() ( int id ) const {
+        TestArenaFpuEnvPropagation( id );
+#if __TBB_FP_CONTEXT
+        TestArenaFpuEnvPersistence( id );
+#endif
+    }
+};
 
-inline int GetSseMode () {
-    __TBB_cpu_ctl_env_t ctl = { 0, 0 };
-    __TBB_get_cpu_ctl_env(&ctl);
-    return ctl.mxcsr & SSE_MODE_MASK;
+void TestFpuEnvPropagation () {
+    const int p = tbb::task_scheduler_init::default_num_threads();
+    // The test should be run in an oversubscription mode. So create 4*p threads but
+    // limit the oversubscription for big machines (p>32) with 4*32+(p-32) threads.
+    const int num_threads = p + (NumRoundingModes-1)*min(p,32);
+    NativeParallelFor ( num_threads, LauncherBody() );
 }
 
-inline void SetSseMode ( int mode ) {
-    __TBB_cpu_ctl_env_t ctl = { 0, 0 };
-    __TBB_get_cpu_ctl_env(&ctl);
-    ctl.mxcsr = (ctl.mxcsr & ~SSE_MODE_MASK) | (mode & SSE_MODE_MASK);
-    __TBB_set_cpu_ctl_env(&ctl);
+void TestCpuCtlEnvApi () {
+    for( int k = 0; k < NumSseModes; ++k ) {
+        SetSseMode( SseModes[k] );
+        for( int i = 0; i < NumRoundingModes; ++i ) {
+            SetRoundingMode( RoundingModes[i] );
+            ASSERT( GetRoundingMode() == RoundingModes[i], NULL );
+            ASSERT( GetSseMode() == SseModes[k], NULL );
+        }
+    }
 }
 
+#if __TBB_FP_CONTEXT
+const int numModes = NumRoundingModes*NumSseModes;
+const int numArenas = 4;
+tbb::task_group_context *contexts[numModes];
+// +1 for a default context
+int roundingModes[numModes+numArenas];
+int sseModes[numModes+numArenas];
+
+class TestContextFpuEnvBody {
+    int arenaNum;
+    int mode;
+    int depth;
+public:
+    TestContextFpuEnvBody( int _arenaNum, int _mode, int _depth = 0 ) : arenaNum(_arenaNum), mode(_mode), depth(_depth) {}
+    void operator()( const tbb::blocked_range<int> &r ) const;
+};
 
-#elif defined(_M_ARM) || defined(__TBB_WIN32_USE_CL_BUILTINS)
-const int NumSseModes = 1;
-const int SseModes[NumSseModes] = { 0 };
-
-inline int GetSseMode () { return 0; }
-inline void SetSseMode ( int ) {}
-
-const int FE_TONEAREST = _RC_NEAR,
-          FE_DOWNWARD = _RC_DOWN,
-          FE_UPWARD = _RC_UP,
-          FE_TOWARDZERO = _RC_CHOP;
-
-inline int GetRoundingMode ( bool = true ) { 
-    __TBB_cpu_ctl_env_t ctl = 0;
-    __TBB_get_cpu_ctl_env(&ctl);
-    return ctl;
-}
-inline void SetRoundingMode ( int mode ) { 
-    __TBB_cpu_ctl_env_t ctl = mode;
-    __TBB_set_cpu_ctl_env(&ctl);
+inline void SetMode( int mode ) {
+    SetRoundingMode( roundingModes[mode] );
+    SetSseMode( sseModes[mode] );
 }
 
-#else /* Other archs */
+inline void AssertMode( int mode ) {
+    ASSERT( GetRoundingMode() == roundingModes[mode], "FPU control state has not been set correctly." );
+    ASSERT( GetSseMode() == sseModes[mode], "SSE control state has not been set correctly." );
+}
 
-#include <fenv.h>
+inline int SetNextMode( int mode, int step ) {
+    const int nextMode = (mode+step)%numModes;
+    SetMode( nextMode );
+    return nextMode;
+}
 
-const int RND_MODE_MASK = FE_TONEAREST | FE_DOWNWARD | FE_UPWARD | FE_TOWARDZERO;
+class TestContextFpuEnvTask : public tbb::task {
+    int arenaNum;
+    int mode;
+    int depth;
+#if __TBB_CPU_CTL_ENV_PRESENT
+    static const int MAX_DEPTH = 3;
+#else
+    static const int MAX_DEPTH = 4;
+#endif
+public:
+    TestContextFpuEnvTask( int _arenaNum, int _mode, int _depth = 0 ) : arenaNum(_arenaNum), mode(_mode), depth(_depth) {}
+    tbb::task* execute() {
+        AssertMode( mode );
+        if ( depth < MAX_DEPTH ) {
+            // Test default context.
+            const int newMode1 = SetNextMode( mode, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, mode, depth+1 ) );
+            AssertMode( newMode1 );
+
+            // Test user default context.
+            const int newMode2 = SetNextMode( newMode1, depth+1 );
+            tbb::task_group_context ctx1;
+            const int newMode3 = SetNextMode( newMode2, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, mode, depth+1 ), ctx1 );
+            AssertMode( newMode3 );
+
+            // Test user context which captured FPU control settings.
+            const int newMode4 = SetNextMode( newMode3, depth+1 );
+            // Capture newMode4
+            ctx1.capture_fp_settings();
+            const int newMode5 = SetNextMode( newMode4, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, newMode4, depth+1 ), ctx1 );
+            AssertMode( newMode5 );
+
+            // And again test user context which captured FPU control settings to check multiple captures.
+            const int newMode6 = SetNextMode( newMode5, depth+1 );
+            // Capture newMode6
+            ctx1.capture_fp_settings();
+            const int newMode7 = SetNextMode( newMode6, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, newMode6, depth+1 ), ctx1 );
+            AssertMode( newMode7 );
+
+            // Test an isolated context. The isolated context should use default FPU control settings.
+            const int newMode8 = SetNextMode( newMode7, depth+1 );
+            tbb::task_group_context ctx2( tbb::task_group_context::isolated );
+            const int newMode9 = SetNextMode( newMode8, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, numModes+arenaNum, depth+1 ), ctx2 );
+            AssertMode( newMode9 );
+
+            // The binding should not owerrite captured FPU control settings.
+            const int newMode10 = SetNextMode( newMode9, depth+1 );
+            tbb::task_group_context ctx3;
+            ctx3.capture_fp_settings();
+            const int newMode11 = SetNextMode( newMode10, depth+1 );
+            tbb::parallel_for( tbb::blocked_range<int>(0, numModes+1), TestContextFpuEnvBody( arenaNum, newMode10, depth+1 ), ctx3 );
+            AssertMode( newMode11 );
+
+            // Restore initial mode since user code in tbb::task::execute should not change FPU settings.
+            SetMode( mode );
+        }
 
-const int NumSseModes = 1;
-const int SseModes[NumSseModes] = { 0 };
+        return NULL;
+    }
+};
 
-inline int GetRoundingMode ( bool = true ) { return fegetround(); }
-inline void SetRoundingMode ( int rnd ) { fesetround(rnd); }
+void TestContextFpuEnvBody::operator()( const tbb::blocked_range<int> &r ) const {
+    AssertMode( mode );
 
-inline int GetSseMode () { return 0; }
-inline void SetSseMode ( int ) {}
+    const int newMode = SetNextMode( mode, depth+2 );
 
-#endif /* Other archs */
+    int end = r.end();
+    if ( end-1 == numModes ) {
+        // For a default context our mode should be inherited.
+        tbb::task::spawn_root_and_wait( 
+            *new( tbb::task::allocate_root() ) TestContextFpuEnvTask( arenaNum, mode, depth ) );
+        AssertMode( newMode );
+        end--;
+    }
+    for ( int i=r.begin(); i<end; ++i ) {
+        tbb::task::spawn_root_and_wait( 
+            *new( tbb::task::allocate_root(*contexts[i]) ) TestContextFpuEnvTask( arenaNum, i, depth ) );
+        AssertMode( newMode );
+    }
 
-const int NumRoundingModes = 4;
-const int RoundingModes[NumRoundingModes] = { FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO };
+    // Restore initial mode since user code in tbb::task::execute should not change FPU settings.
+    SetMode( mode );
+}
 
-class RoundingModeCheckBody {
-    Harness::tid_t m_tidMaster;
-    int m_masterMode;
-    int m_workerMode;
-    int m_masterSseMode;
-    int m_workerSseMode;
+class TestContextFpuEnvNativeLoopBody {
 public:
-    void operator() ( int /*iter*/ ) const {
-        if ( Harness::CurrentTid() == m_tidMaster ) {
-            ASSERT( GetRoundingMode() == m_masterMode, "Master's FPU control state was corrupted" );
-            ASSERT( GetSseMode() == m_masterSseMode, "Master's SSE control state was corrupted" );
-        }
-        else {
-            ASSERT( GetRoundingMode() == m_workerMode, "FPU control state has not been propagated to a worker" );
-            ASSERT( GetSseMode() == m_workerSseMode, "SSE control state has not been propagated to a worker" );
-        }
+    void operator() ( int arenaNum ) const {
+        SetMode(numModes+arenaNum);
+        tbb::task_scheduler_init init;
+        tbb::task::spawn_root_and_wait( *new (tbb::task::allocate_root() ) TestContextFpuEnvTask( arenaNum, numModes+arenaNum ) );
     }
-
-    RoundingModeCheckBody ( Harness::tid_t tidMaster, int masterMode, int workerMode, int masterSseMode, int workerSseMode )
-        : m_tidMaster(tidMaster)
-        , m_masterMode(masterMode)
-        , m_workerMode(workerMode)
-        , m_masterSseMode(masterSseMode)
-        , m_workerSseMode(workerSseMode)
-    {}
 };
 
-#if __TBB_SCHEDULER_OBSERVER
-class LocalObserver : public tbb::task_scheduler_observer {
-    int m_sse, m_rounding;
-    /*override*/
-    void on_scheduler_entry( bool is_worker ) {
-        if(is_worker) {
-            SetSseMode( m_sse );
-            SetRoundingMode( m_rounding );
-        }
-    }
+#if TBB_USE_EXCEPTIONS
+const int NUM_ITERS = 1000;
+class TestContextFpuEnvEhBody {
+    int mode;
+    int eh_iter;
+    int depth;
 public:
-    LocalObserver(int fpu, int sse) : tbb::task_scheduler_observer(true), m_sse(sse), m_rounding(fpu) {
-        observe(true);
+    TestContextFpuEnvEhBody( int _mode, int _eh_iter, int _depth = 0 ) : mode(_mode), eh_iter(_eh_iter), depth(_depth) {}
+    void operator()( const tbb::blocked_range<int> &r ) const {
+        AssertMode( mode );
+        if ( depth < 1 ) {
+            const int newMode1 = SetNextMode( mode, 1 );
+            tbb::task_group_context ctx;
+            ctx.capture_fp_settings();
+            const int newMode2 = SetNextMode( newMode1, 1 );
+            try {
+                tbb::parallel_for( tbb::blocked_range<int>(0, NUM_ITERS), TestContextFpuEnvEhBody(newMode1,rand()%NUM_ITERS,1), tbb::simple_partitioner(), ctx );
+            } catch (...) {
+                AssertMode( newMode2 );
+                if ( r.begin() == eh_iter ) throw;
+            }
+            AssertMode( newMode2 );
+            SetMode( mode );
+        } else if ( r.begin() == eh_iter ) throw 0;
     }
 };
-#endif
 
-class LauncherBody {
+class TestContextFpuEnvEhNativeLoopBody {
 public:
-    void operator() ( int id ) const {
-        Harness::tid_t tid = Harness::CurrentTid();
-        // TBB scheduler instance in a master thread captures the FPU control state
-        // at the moment of its initialization and passes it to the workers toiling
-        // on its behalf.
-        for( int k = 0; k < NumSseModes; ++k ) {
-            int sse_mode = SseModes[(k + id) % NumSseModes];
-            SetSseMode( sse_mode );
-            for( int i = 0; i < NumRoundingModes; ++i ) {
-                int mode = RoundingModes[(i + id) % NumRoundingModes];
-                SetRoundingMode( mode );
-                // New mode must be set before TBB scheduler is initialized
-                tbb::task_scheduler_init init;
-                tbb::parallel_for( 0, N, 1, RoundingModeCheckBody(tid, mode, mode, sse_mode, sse_mode) );
-                ASSERT( GetRoundingMode() == mode, NULL );
-            }
-        }
-        // Since the following loop uses auto-initialization, the scheduler instance
-        // implicitly created by the first parallel_for invocation will persist
-        // until the thread ends, and thus workers will use the mode set by the
-        // first iteration.
-        int captured_mode = RoundingModes[id % NumRoundingModes];
-        int captured_sse_mode = SseModes[id % NumSseModes];
-        for( int k = 0; k < NumSseModes; ++k ) {
-            int sse_mode = SseModes[(k + id) % NumSseModes];
-            SetSseMode( sse_mode );
-            for( int i = 0; i < NumRoundingModes; ++i ) {
-                int mode = RoundingModes[(i + id) % NumRoundingModes];
-                SetRoundingMode( mode );
-                tbb::parallel_for( 0, N, 1, RoundingModeCheckBody(tid, mode, captured_mode, sse_mode, captured_sse_mode) );
-                ASSERT( GetRoundingMode() == mode, NULL );
-            }
+    void operator() ( int arenaNum ) const {
+        SetMode( arenaNum%numModes );
+        try {
+            tbb::parallel_for( tbb::blocked_range<int>(0, NUM_ITERS), TestContextFpuEnvEhBody((arenaNum+1)%numModes,rand()%NUM_ITERS),
+                tbb::simple_partitioner(), *contexts[(arenaNum+1)%numModes] );
+            ASSERT( false, "parallel_for has not thrown an exception." );
+        } catch (...) {
+            AssertMode( arenaNum%numModes );
         }
-#if __TBB_SCHEDULER_OBSERVER
-        // but using observers, it is possible to redefine the mode again
-        for( int k = 0; k < NumSseModes; ++k ) {
-            int sse_mode = SseModes[(k + id) % NumSseModes];
-            SetSseMode( sse_mode );
-            for( int i = 0; i < NumRoundingModes; ++i ) {
-                int mode = RoundingModes[(i + id) % NumRoundingModes];
-                SetRoundingMode( mode );
-                // New mode must be set before TBB scheduler is initialized
-                LocalObserver restorer(mode, sse_mode);
-                tbb::parallel_for( 0, N, 1, RoundingModeCheckBody(tid, mode, mode, sse_mode, sse_mode) );
-                ASSERT( GetRoundingMode() == mode, NULL );
-            }
+    }
+};
+#endif /* TBB_USE_EXCEPTIONS */
+
+void TestContextFpuEnv() {
+    // Prepare contexts' fp modes.
+    for ( int i = 0, modeNum = 0; i < NumRoundingModes; ++i ) {
+        const int roundingMode = RoundingModes[i];
+        SetRoundingMode( roundingMode );
+        for( int j = 0; j < NumSseModes; ++j, ++modeNum ) {
+            const int sseMode = SseModes[j];
+            SetSseMode( sseMode );
+
+            contexts[modeNum] = new tbb::task_group_context( tbb::task_group_context::isolated,
+                tbb::task_group_context::default_traits | tbb::task_group_context::fp_settings );
+            roundingModes[modeNum] = roundingMode;
+            sseModes[modeNum] = sseMode;
         }
+    }
+    // Prepare arenas' fp modes.
+    for ( int arenaNum = 0; arenaNum < numArenas; ++arenaNum ) {
+        roundingModes[numModes+arenaNum] = roundingModes[arenaNum%numModes];
+        sseModes[numModes+arenaNum] = sseModes[arenaNum%numModes];
+    }
+    NativeParallelFor( numArenas, TestContextFpuEnvNativeLoopBody() );
+#if TBB_USE_EXCEPTIONS
+    NativeParallelFor( numArenas, TestContextFpuEnvEhNativeLoopBody() );
 #endif
+    for ( int modeNum = 0; modeNum < numModes; ++modeNum )
+        delete contexts[modeNum];
+}
+
+tbb::task_group_context glbIsolatedCtx( tbb::task_group_context::isolated );
+int glbIsolatedCtxMode = -1;
+
+struct TestGlobalIsolatedContextTask : public tbb::task {
+    tbb::task* execute() {
+        AssertFPMode( glbIsolatedCtxMode );
+        return NULL;
     }
 };
 
-void TestFpuEnvPropagation () {
-    NativeParallelFor ( tbb::task_scheduler_init::default_num_threads() * NumRoundingModes, LauncherBody() );
-}
-
-void TestCpuCtlEnvApi () {
-    for( int k = 0; k < NumSseModes; ++k ) {
-        SetSseMode( SseModes[k] );
-        for( int i = 0; i < NumRoundingModes; ++i ) {
-            SetRoundingMode( RoundingModes[i] );
-            ASSERT( GetRoundingMode() == RoundingModes[i], NULL );
-            ASSERT( GetSseMode() == SseModes[k], NULL );
-        }
+#include "tbb/mutex.h"
+
+struct TestGlobalIsolatedContextNativeLoopBody {
+    void operator()( int threadId ) const {
+        FPModeContext fpGuard( threadId );
+        static tbb::mutex rootAllocMutex;
+        rootAllocMutex.lock();
+        if ( glbIsolatedCtxMode == -1 )
+            glbIsolatedCtxMode = threadId;
+        tbb::task &root = *new (tbb::task::allocate_root( glbIsolatedCtx )) TestGlobalIsolatedContextTask();
+        rootAllocMutex.unlock();
+        tbb::task::spawn_root_and_wait( root );
     }
+};
+
+void TestGlobalIsolatedContext() {
+    ASSERT( numArenas > 1, NULL );
+    NativeParallelFor( numArenas, TestGlobalIsolatedContextNativeLoopBody() );
 }
+#endif /* __TBB_FP_CONTEXT */
 
 int TestMain () {
-#if defined(__TBB_CPU_CTL_ENV_PRESENT) && !__TBB_CPU_CTL_ENV_PRESENT
-    return Harness::Skipped;
-#else
     TestCpuCtlEnvApi();
     TestFpuEnvPropagation();
-    return Harness::Done;
+    CheckNoSseStatusPropagation();
+#if __TBB_FP_CONTEXT
+    TestContextFpuEnv();
+    TestGlobalIsolatedContext();
 #endif
+    return Harness::Done;
 }
diff --git a/src/test/test_function_node.cpp b/src/test/test_function_node.cpp
index 68c8fde..ab19f9e 100644
--- a/src/test/test_function_node.cpp
+++ b/src/test/test_function_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
@@ -105,7 +97,7 @@ void buffered_levels( size_t concurrency, Body body ) {
             senders = new harness_counting_sender<InputType>[num_senders];
             for (size_t s = 0; s < num_senders; ++s ) {
                senders[s].my_limit = N;
-               tbb::flow::make_edge( senders[s], pass_thru_vec[node_idx] );
+               senders[s].register_successor(pass_thru_vec[node_idx] );
             }
 
             // Initialize the receivers so they know how many senders and messages to check for
@@ -152,6 +144,7 @@ struct inc_functor {
     tbb::atomic<size_t> local_execute_count;
     inc_functor( ) { local_execute_count = 0; }
     inc_functor( const inc_functor &f ) { local_execute_count = f.local_execute_count; }
+    void operator=( const inc_functor &f ) { local_execute_count = f.local_execute_count; }
 
     int operator()( int i ) {
        ++global_execute_count;
@@ -222,6 +215,12 @@ void buffered_levels_with_copy( size_t concurrency ) {
         size_t global_count = global_execute_count;
         size_t inc_count = body_copy.local_execute_count;
         ASSERT( global_count == expected_count && global_count == inc_count, NULL ); 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        g.reset(tbb::flow::rf_reset_bodies);
+        body_copy = tbb::flow::copy_body<inc_functor>( exe_node );
+        inc_count = body_copy.local_execute_count;
+        ASSERT( Offset == inc_count, "reset(rf_reset_bodies) did not reset functor" ); 
+#endif
     }
 }
 
@@ -258,15 +257,30 @@ void concurrency_levels( size_t concurrency, Body body ) {
    // Set the max allowed executors to lc. There is a check in the functor to make sure this is never exceeded.
    harness_graph_executor<InputType, OutputType>::max_executors = lc;
 
-   tbb::flow::function_node< InputType, OutputType, tbb::flow::rejecting > exe_node( g, lc, body );
+   typedef tbb::flow::function_node< InputType, OutputType, tbb::flow::rejecting > fnode_type;
+   fnode_type exe_node( g, lc, body );
 
    for (size_t num_receivers = 1; num_receivers <= MAX_NODES; ++num_receivers ) {
 
         harness_counting_receiver<OutputType> *receivers = new harness_counting_receiver<OutputType>[num_receivers];
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(exe_node.successor_count() == 0, NULL);
+        ASSERT(exe_node.predecessor_count() == 0, NULL);
+#endif
+
         for (size_t r = 0; r < num_receivers; ++r ) {
             tbb::flow::make_edge( exe_node, receivers[r] );
         }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(exe_node.successor_count() == num_receivers, NULL);
+        typename fnode_type::successor_list_type my_succs;
+        exe_node.copy_successors(my_succs);
+        ASSERT(my_succs.size() == num_receivers, NULL);
+        typename fnode_type::predecessor_list_type my_preds;
+        exe_node.copy_predecessors(my_preds);
+        ASSERT(my_preds.size() == 0, NULL);
+#endif
 
         harness_counting_sender<InputType> *senders = NULL;
 
@@ -402,7 +416,7 @@ void run_unlimited_concurrency() {
     unlimited_concurrency<InputType,OutputType>( typename harness_graph_executor<InputType, OutputType>::functor() );
 }
 
-struct continue_msg_to_int : private NoAssign {
+struct continue_msg_to_int {
     int my_int;
     continue_msg_to_int(int x) : my_int(x) {}
     int operator()(tbb::flow::continue_msg) { return my_int; }
@@ -439,6 +453,113 @@ void test_concurrency(int num_threads) {
     test_function_node_with_continue_msg_as_input();
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+struct add_to_counter {
+    int* counter;
+    add_to_counter(int& var):counter(&var){}
+    int operator()(int i){*counter+=1; return i + 1;}
+};
+
+template<tbb::flow::graph_buffer_policy FTYPE>
+void test_extract() {
+    int my_count = 0;
+    int cm;
+    tbb::flow::graph g;
+    tbb::flow::broadcast_node<int> b0(g);
+    tbb::flow::broadcast_node<int> b1(g);
+    tbb::flow::function_node<int, int, FTYPE> f0(g, tbb::flow::unlimited, add_to_counter(my_count));
+    tbb::flow::queue_node<int> q0(g);
+
+    tbb::flow::make_edge(b0, f0);
+    tbb::flow::make_edge(b1, f0);
+    tbb::flow::make_edge(f0, q0);
+    for( int i = 0; i < 2; ++i ) {
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(f0.predecessor_count() == 2 && f0.successor_count() == 1, "f0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+    
+        /* b0         */
+        /*   \        */
+        /*    f0 - q0 */
+        /*   /        */
+        /* b1         */
+    
+        b0.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 1, "function_node didn't fire");
+        ASSERT(q0.try_get(cm), "function_node didn't forward");
+        b1.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 2, "function_node didn't fire");
+        ASSERT(q0.try_get(cm), "function_node didn't forward");
+    
+        b0.extract();
+    
+        /* b0         */
+        /*            */
+        /*    f0 - q0 */
+        /*   /        */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(f0.predecessor_count() == 1 && f0.successor_count() == 1, "f0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(1);
+        b0.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 2, "b0 messages being forwarded to function_node even though it is disconnected");
+        b1.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 3, "function_node didn't fire though it has only one predecessor");
+        ASSERT(q0.try_get(cm), "function_node didn't forward second time");
+    
+        f0.extract();
+    
+        /* b0         */
+        /*            */
+        /*    f0   q0 */
+        /*            */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(f0.predecessor_count() == 0 && f0.successor_count() == 0, "f0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(1);
+        b0.try_put(1);
+        b1.try_put(1);
+        b1.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 3, "function_node didn't fire though it has only one predecessor");
+        ASSERT(!q0.try_get(cm), "function_node forwarded though it shouldn't");
+        make_edge(b0, f0);
+    
+        /* b0         */
+        /*   \        */
+        /*    f0   q0 */
+        /*            */
+        /* b1         */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(f0.predecessor_count() == 1 && f0.successor_count() == 0, "f0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+    
+        b0.try_put(int());
+        g.wait_for_all();
+    
+        ASSERT(my_count == 4, "function_node didn't fire though it has only one predecessor");
+        ASSERT(!q0.try_get(cm), "function_node forwarded though it shouldn't");
+    
+        tbb::flow::make_edge(b1, f0);
+        tbb::flow::make_edge(f0, q0);
+        my_count = 0;
+    }
+}
+#endif
+
 int TestMain() { 
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -447,6 +568,11 @@ int TestMain() {
     for( int p=MinThread; p<=MaxThread; ++p ) {
        test_concurrency(p);
    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract<tbb::flow::rejecting>();
+    test_extract<tbb::flow::queueing>();
+#endif
    return Harness::Done;
 }
 
diff --git a/src/test/test_global_control.cpp b/src/test/test_global_control.cpp
new file mode 100644
index 0000000..0677e32
--- /dev/null
+++ b/src/test/test_global_control.cpp
@@ -0,0 +1,341 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define TBB_PREVIEW_WAITING_FOR_WORKERS 1
+#define TBB_PREVIEW_GLOBAL_CONTROL 1
+#include "tbb/global_control.h"
+#include "harness.h"
+
+const size_t MB = 1024*1024;
+const double BARRIER_TIMEOUT = 10.;
+
+void TestStackSizeSimpleControl()
+{
+    {
+        tbb::global_control s0(tbb::global_control::thread_stack_size, 1*MB);
+
+        {
+            tbb::global_control s1(tbb::global_control::thread_stack_size, 8*MB);
+
+            ASSERT(8*MB == tbb::global_control::active_value(tbb::global_control::thread_stack_size), NULL);
+        }
+        ASSERT(1*MB == tbb::global_control::active_value(tbb::global_control::thread_stack_size), NULL);
+    }
+}
+
+#include "harness_concurrency_checker.h"
+#include "tbb/parallel_for.h"
+#include "tbb/task_scheduler_init.h"
+#include "tbb/blocked_range.h"
+#include "tbb/combinable.h"
+#include <limits.h>   // for UINT_MAX
+#include <functional> // for std::plus
+
+struct StackSizeRun: NoAssign {
+    int                   num_threads;
+    Harness::SpinBarrier *barr1, *barr2;
+
+    StackSizeRun(int threads, Harness::SpinBarrier *b1, Harness::SpinBarrier *b2) :
+        num_threads(threads), barr1(b1), barr2(b2) {}
+    void operator()( int id ) const {
+        tbb::global_control s1(tbb::global_control::thread_stack_size, (1+id)*MB);
+
+        barr1->timed_wait(BARRIER_TIMEOUT);
+
+        ASSERT(num_threads*MB == tbb::global_control::active_value(tbb::global_control::thread_stack_size), NULL);
+        barr2->timed_wait(BARRIER_TIMEOUT);
+    }
+};
+
+void TestStackSizeThreadsControl()
+{
+    int threads = 4;
+    Harness::SpinBarrier barr1(threads), barr2(threads);
+    NativeParallelFor( threads, StackSizeRun(threads, &barr1, &barr2) );
+}
+
+class CheckWorkersNum {
+    static tbb::atomic<Harness::SpinBarrier*> barrier;
+    // count unique worker threads
+    static tbb::combinable<size_t>            uniqThreads;
+public:
+    CheckWorkersNum(Harness::SpinBarrier *barr) {
+        barrier = barr;
+    }
+    void operator()(const tbb::blocked_range<int>&) const {
+        uniqThreads.local() = 1;
+        if (barrier) {
+            barrier->timed_wait(BARRIER_TIMEOUT);
+            Harness::Sleep(10);
+            barrier = NULL;
+        }
+    }
+    static void check(size_t expected) {
+        size_t seen = uniqThreads.combine(std::plus<size_t>());
+        ASSERT(seen == expected, NULL);
+    }
+    static void clear() { uniqThreads.clear(); }
+    static const size_t LOOP_ITERS = 10*1000;
+};
+
+tbb::atomic<Harness::SpinBarrier*> CheckWorkersNum::barrier;
+tbb::combinable<size_t>  CheckWorkersNum::uniqThreads;
+
+void RunWorkersLimited(int tsi_max_threads, size_t parallelism, bool wait)
+{
+    tbb::global_control s(tbb::global_control::max_allowed_parallelism, parallelism);
+    // try both configuration with already sleeping workers and with not yet sleeping
+    if (wait)
+        Harness::Sleep(100);
+    // current implementation can't have effective active value below 2
+    const unsigned active_parallelism = max(2U, (unsigned)parallelism);
+    const unsigned expected_threads = tsi_max_threads>0?
+        min( (unsigned)tsi_max_threads, active_parallelism )
+        : ( tbb::tbb_thread::hardware_concurrency()==1? 1 : active_parallelism );
+    Harness::SpinBarrier barr(expected_threads);
+
+    CheckWorkersNum::clear();
+    tbb::parallel_for(tbb::blocked_range<int>(0, CheckWorkersNum::LOOP_ITERS, 1),
+                      CheckWorkersNum(&barr), tbb::simple_partitioner());
+    CheckWorkersNum::check(expected_threads);
+}
+
+void TSI_and_RunWorkers(int tsi_max_threads, size_t parallelism, size_t max_value)
+{
+    tbb::task_scheduler_init tsi(tsi_max_threads, 0, /*blocking=*/true);
+    size_t active = tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    ASSERT(active == max(2U, max_value), "active_value must not be changed by task_scheduler_init");
+    RunWorkersLimited(tsi_max_threads, parallelism, /*wait=*/false);
+}
+
+#include "tbb/tbb_thread.h"
+
+void TestWorkers(size_t curr_par)
+{
+    const size_t max_parallelism =
+        tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    ASSERT(max(2U, tbb::tbb_thread::hardware_concurrency()) == max_parallelism, NULL);
+    {
+        const unsigned h_c = tbb::tbb_thread::hardware_concurrency();
+        tbb::global_control c(tbb::global_control::max_allowed_parallelism, curr_par);
+        size_t v = tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+        ASSERT(!curr_par || max((size_t)2, curr_par) == v, NULL);
+        if (h_c > 1)
+            TSI_and_RunWorkers(tbb::task_scheduler_init::automatic, min(h_c, curr_par), curr_par);
+        if (curr_par) // do not call task_scheduler_init t(0);
+            TSI_and_RunWorkers((int)curr_par, curr_par, curr_par);
+        if (curr_par > 2) { // check that min(tsi, parallelism) is active
+            TSI_and_RunWorkers((int)curr_par-1, curr_par, curr_par);
+            TSI_and_RunWorkers((int)curr_par, curr_par-1, curr_par);
+        }
+        // check constrains on control's value: it can't be increased
+        tbb::global_control c1(tbb::global_control::max_allowed_parallelism, curr_par+1);
+        v = tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+        if (curr_par)
+            ASSERT(max(2U, curr_par) == v, "It's impossible to increase maximal parallelism.");
+        else
+            ASSERT(2 == v, NULL);
+    }
+    ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+           == max_parallelism,
+           "max parallelism has been restored successfully after decreasing/increasing");
+}
+
+void TestWorkersConstraints() {
+    const size_t max_parallelism =
+        tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    tbb::task_scheduler_init tsi(tbb::task_scheduler_init::automatic, 0, /*blocking=*/true);
+    if (max_parallelism > 3) {
+        tbb::global_control c(tbb::global_control::max_allowed_parallelism, max_parallelism-1);
+        ASSERT(max_parallelism-1 ==
+               tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism),
+               "Allowed parallelism must be decreasable.");
+        tbb::global_control c1(tbb::global_control::max_allowed_parallelism, max_parallelism-2);
+        ASSERT(max_parallelism-2 ==
+               tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism),
+               "Allowed parallelism must be decreasable.");
+    }
+    const size_t limit_par = min(max_parallelism, 4U);
+    // check that constrains are really met
+    for (int wait=0; wait<2; wait++) {
+        for (size_t num=2; num<limit_par; num++)
+            RunWorkersLimited(tbb::task_scheduler_init::automatic, num, wait==1);
+        for (size_t num=limit_par; num>1; num--)
+            RunWorkersLimited(tbb::task_scheduler_init::automatic, num, wait==1);
+    }
+}
+
+struct SetUseRun: NoAssign {
+    Harness::SpinBarrier *barr;
+
+    SetUseRun(Harness::SpinBarrier *b) : barr(b) {}
+    void operator()( int id ) const {
+        if (id == 0) {
+            for (int i=0; i<10; i++) {
+                tbb::task_scheduler_init tsi(tbb::task_scheduler_init::automatic, 0,
+                                             /*blocking=*/true);
+                tbb::parallel_for(tbb::blocked_range<int>(0, CheckWorkersNum::LOOP_ITERS, 1),
+                                  CheckWorkersNum(NULL), tbb::simple_partitioner());
+                barr->timed_wait(BARRIER_TIMEOUT);
+            }
+        } else {
+            for (int i=0; i<10; i++) {
+                tbb::global_control c(tbb::global_control::max_allowed_parallelism, 8);
+                barr->timed_wait(BARRIER_TIMEOUT);
+            }
+        }
+    }
+};
+
+void TestConcurrentSetUseConcurrency()
+{
+    Harness::SpinBarrier barr(2);
+    NativeParallelFor( 2, SetUseRun(&barr) );
+}
+
+// check number of workers after autoinitialization
+void TestAutoInit()
+{
+    const size_t max_parallelism =
+        tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    const unsigned expected_threads = tbb::tbb_thread::hardware_concurrency()==1?
+        1 : (unsigned)max_parallelism;
+    Harness::SpinBarrier barr(expected_threads);
+
+    CheckWorkersNum::clear();
+    tbb::parallel_for(tbb::blocked_range<int>(0, CheckWorkersNum::LOOP_ITERS, 1),
+                      CheckWorkersNum(&barr), tbb::simple_partitioner());
+    ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+           == max_parallelism, "max_allowed_parallelism must not be changed after auto init");
+    CheckWorkersNum::check(expected_threads);
+    if (max_parallelism > 2) {
+        // after autoinit it's possible to decrease workers number
+        tbb::global_control s(tbb::global_control::max_allowed_parallelism, max_parallelism-1);
+        const unsigned expected_threads_1 = max(2U, (unsigned)max_parallelism-1);
+        barr.initialize(expected_threads_1);
+        CheckWorkersNum::clear();
+        tbb::parallel_for(tbb::blocked_range<int>(0, CheckWorkersNum::LOOP_ITERS, 1),
+                          CheckWorkersNum(&barr), tbb::simple_partitioner());
+        CheckWorkersNum::check(expected_threads_1);
+    }
+}
+
+// need this to use TRY_BAD_EXPR_ENABLED when TBB_USE_ASSERT is not defined
+#undef TBB_USE_ASSERT
+#define TBB_USE_ASSERT 1
+
+#include "harness_bad_expr.h"
+
+void TestInvalidParallelism()
+{
+#if TRY_BAD_EXPR_ENABLED
+    const size_t max_parallelism =
+        tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    for (size_t par = 0; par<=1; par++) {
+        {
+            tbb::set_assertion_handler( AssertionFailureHandler );
+            TRY_BAD_EXPR( tbb::global_control c(tbb::global_control::max_allowed_parallelism, par), "Values of 1 and 0 are not supported for max_allowed_parallelism." );
+            tbb::set_assertion_handler( ReportError );
+            ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+                   == max_parallelism, NULL);
+        }
+        {
+            const size_t P = 2;
+            tbb::global_control c(tbb::global_control::max_allowed_parallelism, P);
+            ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+                   == P, NULL);
+            tbb::set_assertion_handler( AssertionFailureHandler );
+            TRY_BAD_EXPR( tbb::global_control cZ(tbb::global_control::max_allowed_parallelism, par), "Values of 1 and 0 are not supported for max_allowed_parallelism." );
+            tbb::set_assertion_handler( ReportError );
+            ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+                   == P, NULL);
+        }
+        ASSERT(tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism)
+               == max_parallelism, NULL);
+    }
+#endif /* TRY_BAD_EXPR_ENABLED */
+}
+
+void TestTooBigStack()
+{
+#if __TBB_x86_32
+    const size_t stack_sizes[] = {512*MB, 2*1024*MB, UINT_MAX};
+#else
+    const size_t stack_sizes[] = {512*MB, 2*1024*MB, UINT_MAX, 10LU*1024*MB};
+#endif
+
+#if __TBB_WIN8UI_SUPPORT
+    size_t default_ss = tbb::global_control::active_value(tbb::global_control::thread_stack_size);
+#endif
+    for (unsigned i = 0; i<Harness::array_length(stack_sizes); i++) {
+        // as no stack size setting for Windows Store* apps, skip it
+#if TRY_BAD_EXPR_ENABLED && __TBB_x86_64 && (_WIN32 || _WIN64) && !__TBB_WIN8UI_SUPPORT
+        if (stack_sizes[i] != (unsigned)stack_sizes[i]) {
+            size_t curr_ss = tbb::global_control::active_value(tbb::global_control::thread_stack_size);
+            tbb::set_assertion_handler( AssertionFailureHandler );
+            TRY_BAD_EXPR( tbb::global_control s1(tbb::global_control::thread_stack_size, stack_sizes[i]), "Stack size is limited to unsigned int range" );
+            tbb::set_assertion_handler( ReportError );
+            ASSERT(curr_ss == tbb::global_control::active_value(tbb::global_control::thread_stack_size), "Changing of stack size is not expected.");
+            continue;
+        }
+#endif
+        tbb::global_control s1(tbb::global_control::thread_stack_size, stack_sizes[i]);
+        size_t actual_stack_sz = tbb::global_control::active_value(tbb::global_control::thread_stack_size);
+#if __TBB_WIN8UI_SUPPORT
+        ASSERT(actual_stack_sz == default_ss, "It's ignored for Windows Store* apps");
+#else
+        ASSERT(actual_stack_sz==stack_sizes[i], NULL);
+#endif
+    }
+}
+
+int TestMain()
+{
+    const unsigned h_c = tbb::tbb_thread::hardware_concurrency();
+    bool excessHC;
+    {
+        tbb::task_scheduler_init t(h_c+1);
+        excessHC = Harness::CanReachConcurrencyLevel(h_c+1);
+    }
+    if (h_c>2)
+        TestWorkers(h_c-1);
+    if (excessHC)  // this requires hardware concurrency +1, and hang if not provided
+        TestWorkers(h_c+1);
+    if (excessHC || h_c >= 2)
+        TestWorkers(2);
+    if (excessHC || h_c >= 3)
+        TestWorkers(3);
+    TestWorkersConstraints();
+    TestConcurrentSetUseConcurrency();
+    TestInvalidParallelism();
+    TestAutoInit(); // auto-initialization done at this point
+
+    size_t default_ss = tbb::global_control::active_value(tbb::global_control::thread_stack_size);
+    ASSERT(default_ss, NULL);
+#if !__TBB_WIN8UI_SUPPORT
+    // it's impossible to change stack size for Windows Store* apps, so skip the tests
+    TestStackSizeSimpleControl();
+    TestStackSizeThreadsControl();
+#endif
+    TestTooBigStack();
+    ASSERT(default_ss == tbb::global_control::active_value(tbb::global_control::thread_stack_size), NULL);
+
+    return Harness::Done;
+}
diff --git a/src/test/test_global_control_whitebox.cpp b/src/test/test_global_control_whitebox.cpp
new file mode 100644
index 0000000..d55e451
--- /dev/null
+++ b/src/test/test_global_control_whitebox.cpp
@@ -0,0 +1,83 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define HARNESS_DEFINE_PRIVATE_PUBLIC 1
+#include "harness_inject_scheduler.h"
+#include "harness.h"
+
+#define TBB_PREVIEW_GLOBAL_CONTROL 1
+#include "tbb/global_control.h"
+#include "tbb/task_scheduler_init.h"
+#include "tbb/parallel_for.h"
+#include "tbb/blocked_range.h"
+
+bool allWorkersSleep() {
+    using namespace tbb::internal;
+    using namespace tbb::internal::rml;
+
+    unsigned sleeping_threads = 0;
+    unsigned threads = ((private_server*)market::theMarket->my_server)->my_n_thread;
+
+    for (private_worker *l = ((private_server*)market::theMarket->my_server)->my_asleep_list_root;
+         l; l = l->my_next)
+        sleeping_threads++;
+
+    return threads == sleeping_threads;
+}
+
+class ThreadsTask {
+public:
+    void operator() (const tbb::blocked_range<int> &) const { }
+    ThreadsTask() {}
+};
+
+static void RunAndCheckSleeping()
+{
+    Harness::Sleep(100);
+    ASSERT(allWorkersSleep(), NULL);
+    tbb::parallel_for(tbb::blocked_range<int>(0, 100*1000, 1),
+                      ThreadsTask(), tbb::simple_partitioner());
+    Harness::Sleep(100);
+    ASSERT(allWorkersSleep(), NULL);
+}
+
+// test that all workers are sleeping, not spinning
+void TestWorkersSleep() {
+    tbb::task_scheduler_init tsi(8);
+    const size_t max_parallelism =
+        tbb::global_control::active_value(tbb::global_control::max_allowed_parallelism);
+    if (max_parallelism > 2) {
+        tbb::global_control c(tbb::global_control::max_allowed_parallelism, max_parallelism-1);
+    }
+    RunAndCheckSleeping();
+    tbb::global_control c(tbb::global_control::max_allowed_parallelism, max_parallelism+1);
+    RunAndCheckSleeping();
+}
+
+int TestMain () {
+    {
+        tbb::task_scheduler_init tsi;
+        if (!tbb::internal::governor::UsePrivateRML)
+            return Harness::Skipped;
+    }
+    TestWorkersSleep();
+
+    return Harness::Done;
+}
diff --git a/src/test/test_halt.cpp b/src/test/test_halt.cpp
index 9788c3d..6c76768 100644
--- a/src/test/test_halt.cpp
+++ b/src/test/test_halt.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 4
+#define HARNESS_DEFAULT_MAX_THREADS 8
+
 #include "harness_defs.h"
 #include <cstdio>
 #include <cstdlib>
diff --git a/src/test/test_handle_perror.cpp b/src/test/test_handle_perror.cpp
index 64d0e2e..41cdc1e 100644
--- a/src/test/test_handle_perror.cpp
+++ b/src/test/test_handle_perror.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Program for basic correctness of handle_perror, which is internal
diff --git a/src/test/test_hw_concurrency.cpp b/src/test/test_hw_concurrency.cpp
index faea645..a9094bf 100644
--- a/src/test/test_hw_concurrency.cpp
+++ b/src/test/test_hw_concurrency.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
diff --git a/src/test/test_indexer_node.cpp b/src/test/test_indexer_node.cpp
new file mode 100644
index 0000000..b31f97f
--- /dev/null
+++ b/src/test/test_indexer_node.cpp
@@ -0,0 +1,882 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#include "harness.h"
+#include "tbb/flow_graph.h"
+
+//
+// Tests
+//
+
+ #if defined(_MSC_VER) && _MSC_VER < 1600
+    #pragma warning (disable : 4503) //disabling the "decorated name length exceeded" warning for VS2008 and earlier
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+template< typename T >
+class test_indexer_extract {
+protected:
+    typedef tbb::flow::indexer_node<T, T> my_node_t;
+    typedef tbb::flow::queue_node<T> in_node_t;
+    typedef tbb::flow::queue_node<typename my_node_t::output_type> out_node_t;
+
+    tbb::flow::graph g;
+    in_node_t in0;
+    in_node_t in1;
+    in_node_t in2;
+    my_node_t middle;
+    out_node_t out0;
+    out_node_t out1;
+    in_node_t *ins[3];
+    out_node_t *outs[2];
+    typename in_node_t::successor_type *ms_p0_ptr;
+    typename in_node_t::successor_type *ms_p1_ptr;
+    typename out_node_t::predecessor_type *mp_ptr;
+    typename in_node_t::predecessor_list_type in0_p_list;
+    typename in_node_t::successor_list_type in0_s_list;
+    typename in_node_t::predecessor_list_type in1_p_list;
+    typename in_node_t::successor_list_type in1_s_list;
+    typename in_node_t::predecessor_list_type in2_p_list;
+    typename in_node_t::successor_list_type in2_s_list;
+    typename out_node_t::predecessor_list_type out0_p_list;
+    typename out_node_t::successor_list_type out0_s_list;
+    typename out_node_t::predecessor_list_type out1_p_list;
+    typename out_node_t::successor_list_type out1_s_list;
+    typename in_node_t::predecessor_list_type mp0_list;
+    typename in_node_t::predecessor_list_type mp1_list;
+    typename out_node_t::successor_list_type ms_list;
+
+    virtual void set_up_lists() {
+        in0_p_list.clear();
+        in0_s_list.clear();
+        in1_p_list.clear();
+        in1_s_list.clear();
+        in2_p_list.clear();
+        in2_s_list.clear();
+        out0_p_list.clear();
+        out0_s_list.clear();
+        out1_p_list.clear();
+        out1_s_list.clear();
+        mp0_list.clear();
+        mp1_list.clear();
+        ms_list.clear();
+
+        in0.copy_predecessors(in0_p_list);
+        in0.copy_successors(in0_s_list);
+        in1.copy_predecessors(in1_p_list);
+        in1.copy_successors(in1_s_list);
+        in2.copy_predecessors(in2_p_list);
+        in2.copy_successors(in2_s_list);
+        tbb::flow::input_port<0>(middle).copy_predecessors(mp0_list);
+        tbb::flow::input_port<1>(middle).copy_predecessors(mp1_list);
+        middle.copy_successors(ms_list);
+        out0.copy_predecessors(out0_p_list);
+        out0.copy_successors(out0_s_list);
+        out1.copy_predecessors(out1_p_list);
+        out1.copy_successors(out1_s_list);
+    }
+
+    void check_output(int &r, typename my_node_t::output_type &v) {
+        T t = tbb::flow::cast_to<T>(v);
+        if ( t == 1 || t == 2 ) {
+            ASSERT( v.tag() == 0, "value came in on wrong port" );
+        } else if ( t == 4 || t == 8 ) {
+            ASSERT( v.tag() == 1, "value came in on wrong port" );
+        } else {
+            ASSERT( false, "incorrect value passed through indexer_node" );
+        }
+        ASSERT( (r&t) == 0, "duplicate value passed through indexer_node" );
+        r |= t;
+    }
+
+    void make_and_validate_full_graph() {
+        /*     in0                         */ 
+        /*         \                       */ 
+        /*           port0          out0   */
+        /*         /       |      /        */
+        /*     in1         middle          */
+        /*                 |      \        */
+        /*     in2 - port1          out1   */
+        tbb::flow::make_edge( in0, tbb::flow::input_port<0>(middle) );
+        tbb::flow::make_edge( in1, tbb::flow::input_port<0>(middle) );
+        tbb::flow::make_edge( in2, tbb::flow::input_port<1>(middle) );
+        tbb::flow::make_edge( middle, out0 );
+        tbb::flow::make_edge( middle, out1 );
+
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 1 && in0_s_list.size() == 1 && *(in0_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 1 && in2_s_list.size() == 1 && *(in2_s_list.begin()) == ms_p1_ptr, "expected 1 successor" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 2 && mp0_list.size() == 2, "expected 2 predecessors" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 1 && mp1_list.size() == 1, "expected 1 predecessors" );
+        ASSERT( middle.successor_count() == 2 && ms_list.size() == 2, "expected 2 successors" );
+        ASSERT( out0.predecessor_count() == 1 && out0_p_list.size() == 1 && *(out0_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        int first_pred = *(mp0_list.begin()) == ins[0] ? 0 : ( *(mp0_list.begin()) == ins[1] ? 1 : -1 );
+        typename in_node_t::predecessor_list_type::iterator piv = mp0_list.begin();++piv;
+        int second_pred = *piv == ins[0] ? 0 : ( *piv == ins[1] ? 1 : -1 );
+        ASSERT( first_pred != -1 && second_pred != -1 && first_pred != second_pred, "bad predecessor(s) for middle port 0" ); 
+
+        ASSERT( *(mp1_list.begin()) == ins[2], "bad predecessor for middle port 1" );
+
+        int first_succ = *(ms_list.begin()) == outs[0] ? 0 : ( *(ms_list.begin()) == outs[1] ? 1 : -1 );
+        typename out_node_t::successor_list_type::iterator ms_vec_iter = ms_list.begin(); ++ms_vec_iter;
+        int second_succ = *ms_vec_iter == outs[0] ? 0 : ( *ms_vec_iter == outs[1] ? 1 : -1 );
+        ASSERT( first_succ != -1 && second_succ != -1 && first_succ != second_succ, "bad successor(s) for middle" ); 
+ 
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+
+        T v_in;
+    
+        ASSERT( in0.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in2.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in2.try_get(v_in) == false, "buffer should not have a value" );
+
+        typename my_node_t::output_type v;
+        T r = 0;
+        while ( out0.try_get(v) ) {
+            check_output(r,v);
+            g.wait_for_all();
+        }
+        ASSERT( r == 15, "not all values received" );
+
+        r = 0;
+        while ( out1.try_get(v) ) {
+            check_output(r,v);
+            g.wait_for_all();
+        }
+        ASSERT( r == 15, "not all values received" );
+        g.wait_for_all();
+    }
+
+    void validate_partial_graph() {
+        /*     in0                         */ 
+        /*                                 */ 
+        /*           port0          out0   */
+        /*         /       |               */
+        /*     in1         middle          */
+        /*                 |      \        */
+        /*     in2 - port1          out1   */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 1 && in2_s_list.size() == 1 && *(in2_s_list.begin()) == ms_p1_ptr, "expected 1 successor" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 1 && mp0_list.size() == 1 && *(mp0_list.begin()) == ins[1], "expected 1 predecessor" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 1 && mp1_list.size() == 1 && *(mp1_list.begin()) == ins[2], "expected 1 predecessor" );
+        ASSERT( middle.successor_count() == 1 && ms_list.size() == 1 && *(ms_list.begin()) == outs[1], "expected 1 successor" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+    
+        T v_in;
+        typename my_node_t::output_type v;
+
+        ASSERT( in0.try_get(v_in) == true && v_in == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( in0.try_get(v_in) == false, "buffer should not have a value" );
+
+        T r = 0;
+        while ( out1.try_get(v) ) {
+            check_output(r,v);
+            g.wait_for_all();
+        }
+        ASSERT( r == 14, "not all values received" );
+        g.wait_for_all();
+    }
+
+    void validate_empty_graph() {
+        /*     in0                         */ 
+        /*                                 */ 
+        /*            port0         out0   */
+        /*                |                */
+        /*     in1         middle          */
+        /*                 |               */
+        /*     in2   port1          out1   */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 0 && in1_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 0 && in2_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 0 && mp0_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 0 && mp1_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( middle.successor_count() == 0 && ms_list.size() == 0, "expected 0 successors" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 0 && out1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+    
+        T v_in;
+        typename my_node_t::output_type v;
+
+        ASSERT( in0.try_get(v_in) == true && v_in == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v_in) == true && v_in == 2, "buffer should have a value of 2" );
+        ASSERT( in2.try_get(v_in) == true && v_in == 8, "buffer should have a value of 8" );
+        ASSERT( in2.try_get(v_in) == true && v_in == 4, "buffer should have a value of 4" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out1.try_get(v) == false, "buffer should not have a value" );
+        g.wait_for_all();
+        g.reset(); // NOTE: this should not be necessary!!!!!  But it is!!!!
+    }
+
+public:
+
+    test_indexer_extract() : in0(g), in1(g), in2(g), middle(g), out0(g), out1(g) {
+        ins[0] = &in0;
+        ins[1] = &in1;
+        ins[2] = &in2;
+        outs[0] = &out0;
+        outs[1] = &out1;
+        ms_p0_ptr = static_cast< typename in_node_t::successor_type * >(&tbb::flow::input_port<0>(middle));
+        ms_p1_ptr = static_cast< typename in_node_t::successor_type * >(&tbb::flow::input_port<1>(middle));
+        mp_ptr = static_cast< typename out_node_t::predecessor_type *>(&middle);
+    }
+ 
+    virtual ~test_indexer_extract() {}
+
+    void run_tests() {
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        in0.extract();
+        out0.extract();
+        REMARK("partial graph\n");
+        validate_partial_graph();
+
+        in1.extract();
+        in2.extract();
+        out1.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        in0.extract();
+        in1.extract();
+        in2.extract();
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        out0.extract();
+        out1.extract();
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+    }
+};
+#endif
+
+const int Count = 150;
+const int MaxPorts = 10;
+const int MaxNSources = 5; // max # of source_nodes to register for each indexer_node input in parallel test
+bool outputCheck[MaxPorts][Count];  // for checking output
+
+void
+check_outputCheck( int nUsed, int maxCnt) {
+    for(int i=0; i < nUsed; ++i) {
+        for( int j = 0; j < maxCnt; ++j) {
+            ASSERT(outputCheck[i][j], NULL);
+        }
+    }
+}
+
+void
+reset_outputCheck( int nUsed, int maxCnt) {
+    for(int i=0; i < nUsed; ++i) {
+        for( int j = 0; j < maxCnt; ++j) {
+            outputCheck[i][j] = false;
+        }
+    }
+}
+
+class test_class {
+    public:
+        test_class() { my_val = 0; }
+        test_class(int i) { my_val = i; }
+        operator int() { return my_val; }
+    private:
+        int my_val;
+};
+
+template<typename T>
+class name_of {
+public:
+    static const char* name() { return  "Unknown"; }
+};
+template<>
+class name_of<int> {
+public:
+    static const char* name() { return  "int"; }
+};
+template<>
+class name_of<float> {
+public:
+    static const char* name() { return  "float"; }
+};
+template<>
+class name_of<double> {
+public:
+    static const char* name() { return  "double"; }
+};
+template<>
+class name_of<long> {
+public:
+    static const char* name() { return  "long"; }
+};
+template<>
+class name_of<short> {
+public:
+    static const char* name() { return  "short"; }
+};
+template<>
+class name_of<test_class> {
+public:
+    static const char* name() { return  "test_class"; }
+};
+
+// TT must be arithmetic, and shouldn't wrap around for reasonable sizes of Count (which is now 150, and maxPorts is 10,
+// so the max number generated right now is 1500 or so.)  Source will generate a series of TT with value
+// (init_val + (i-1)*addend) * my_mult, where i is the i-th invocation of the body.  We are attaching addend
+// source nodes to a indexer_port, and each will generate part of the numerical series the port is expecting
+// to receive.  If there is only one source node, the series order will be maintained; if more than one,
+// this is not guaranteed.
+// The manual specifies bodies can be assigned, so we can't hide the operator=.
+template<typename TT>
+class source_body {
+    TT my_mult;
+    int my_count;
+    int addend;
+public:
+    source_body(TT multiplier, int init_val, int addto) : my_mult(multiplier), my_count(init_val), addend(addto) { }
+    bool operator()( TT &v) {
+        int lc = my_count;
+        v = my_mult * (TT)my_count;
+        my_count += addend;
+        return lc < Count;
+    }
+};
+
+// allocator for indexer_node.
+
+template<typename IType>
+class makeIndexer {
+public:
+    static IType *create() {
+        IType *temp = new IType();
+        return temp;
+    }
+    static void destroy(IType *p) { delete p; }
+};
+
+template<int ELEM, typename INT>
+struct getval_helper {
+
+    typedef typename INT::output_type OT;
+    typedef typename tbb::flow::tuple_element<ELEM-1, typename INT::tuple_types>::type stored_type;
+
+    static int get_integer_val(OT const &o) {
+        stored_type res = tbb::flow::cast_to<stored_type>(o);
+        return (int)res;
+    }
+};
+
+// holder for source_node pointers for eventual deletion
+
+static void* all_source_nodes[MaxPorts][MaxNSources];
+
+template<int ELEM, typename INT>
+class source_node_helper {
+public:
+    typedef INT indexer_node_type;
+    typedef typename indexer_node_type::output_type TT;
+    typedef typename tbb::flow::tuple_element<ELEM-1,typename INT::tuple_types>::type IT;
+    typedef typename tbb::flow::source_node<IT> my_source_node_type;
+    static void print_remark() {
+        source_node_helper<ELEM-1,INT>::print_remark();
+        REMARK(", %s", name_of<IT>::name());
+    }
+    static void add_source_nodes(indexer_node_type &my_indexer, tbb::flow::graph &g, int nInputs) {
+        for(int i=0; i < nInputs; ++i) {
+            my_source_node_type *new_node = new my_source_node_type(g, source_body<IT>((IT)(ELEM+1), i, nInputs));
+            tbb::flow::make_edge(*new_node, tbb::flow::input_port<ELEM-1>(my_indexer));
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+            ASSERT(new_node->successor_count() == 1, NULL);
+#endif
+            all_source_nodes[ELEM-1][i] = (void *)new_node;
+        }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(tbb::flow::input_port<ELEM-1>(my_indexer).predecessor_count() == (size_t)nInputs, NULL);
+#endif
+        // add the next source_node
+        source_node_helper<ELEM-1, INT>::add_source_nodes(my_indexer, g, nInputs);
+    }
+    static void check_value(TT &v) {
+        if(v.tag() == ELEM-1) {
+            int ival = getval_helper<ELEM,INT>::get_integer_val(v);
+            ASSERT(!(ival%(ELEM+1)), NULL);
+            ival /= (ELEM+1);
+            ASSERT(!outputCheck[ELEM-1][ival], NULL);
+            outputCheck[ELEM-1][ival] = true;
+        }
+        else {
+            source_node_helper<ELEM-1,INT>::check_value(v);
+        }
+    }
+
+    static void remove_source_nodes(indexer_node_type& my_indexer, int nInputs) {
+        for(int i=0; i< nInputs; ++i) {
+            my_source_node_type *dp = reinterpret_cast<my_source_node_type *>(all_source_nodes[ELEM-1][i]);
+            tbb::flow::remove_edge(*dp, tbb::flow::input_port<ELEM-1>(my_indexer));
+            delete dp;
+        }
+        source_node_helper<ELEM-1, INT>::remove_source_nodes(my_indexer, nInputs);
+    }
+};
+
+template<typename INT>
+class source_node_helper<1, INT> {
+    typedef INT indexer_node_type;
+    typedef typename indexer_node_type::output_type TT;
+    typedef typename tbb::flow::tuple_element<0, typename INT::tuple_types>::type IT;
+    typedef typename tbb::flow::source_node<IT> my_source_node_type;
+public:
+    static void print_remark() {
+        REMARK("Parallel test of indexer_node< %s", name_of<IT>::name());
+    }
+    static void add_source_nodes(indexer_node_type &my_indexer, tbb::flow::graph &g, int nInputs) {
+        for(int i=0; i < nInputs; ++i) {
+            my_source_node_type *new_node = new my_source_node_type(g, source_body<IT>((IT)2, i, nInputs));
+            tbb::flow::make_edge(*new_node, tbb::flow::input_port<0>(my_indexer));
+            all_source_nodes[0][i] = (void *)new_node;
+        }
+    }
+    static void check_value(TT &v) {
+        int ival = getval_helper<1,INT>::get_integer_val(v);
+        ASSERT(!(ival%2), NULL);
+        ival /= 2;
+        ASSERT(!outputCheck[0][ival], NULL);
+        outputCheck[0][ival] = true;
+    }
+    static void remove_source_nodes(indexer_node_type& my_indexer, int nInputs) {
+        for(int i=0; i < nInputs; ++i) {
+            my_source_node_type *dp = reinterpret_cast<my_source_node_type *>(all_source_nodes[0][i]);
+            tbb::flow::remove_edge(*dp, tbb::flow::input_port<0>(my_indexer));
+            delete dp;
+        }
+    }
+};
+
+template<typename IType>
+class parallel_test {
+public:
+    typedef typename IType::output_type TType;
+    typedef typename IType::tuple_types union_types;
+    static const int SIZE = tbb::flow::tuple_size<union_types>::value;
+    static void test() {
+        TType v;
+        source_node_helper<SIZE,IType>::print_remark();
+        REMARK(" >\n");
+        for(int i=0; i < MaxPorts; ++i) {
+            for(int j=0; j < MaxNSources; ++j) {
+                all_source_nodes[i][j] = NULL;
+            }
+        }
+        for(int nInputs = 1; nInputs <= MaxNSources; ++nInputs) {
+            tbb::flow::graph g;
+            IType* my_indexer = new IType(g); //makeIndexer<IType>::create(); 
+            tbb::flow::queue_node<TType> outq1(g);
+            tbb::flow::queue_node<TType> outq2(g);
+
+            tbb::flow::make_edge(*my_indexer, outq1);
+            tbb::flow::make_edge(*my_indexer, outq2);
+
+            source_node_helper<SIZE, IType>::add_source_nodes((*my_indexer), g, nInputs);
+
+            g.wait_for_all();
+
+            reset_outputCheck(SIZE, Count);
+            for(int i=0; i < Count*SIZE; ++i) {
+                ASSERT(outq1.try_get(v), NULL);
+                source_node_helper<SIZE, IType>::check_value(v);
+            }
+
+            check_outputCheck(SIZE, Count);
+            reset_outputCheck(SIZE, Count);
+
+            for(int i=0; i < Count*SIZE; i++) {
+                ASSERT(outq2.try_get(v), NULL);;
+                source_node_helper<SIZE, IType>::check_value(v);
+            }
+            check_outputCheck(SIZE, Count);
+
+            ASSERT(!outq1.try_get(v), NULL);
+            ASSERT(!outq2.try_get(v), NULL);
+
+            source_node_helper<SIZE, IType>::remove_source_nodes((*my_indexer), nInputs);
+            tbb::flow::remove_edge(*my_indexer, outq1);
+            tbb::flow::remove_edge(*my_indexer, outq2);
+            makeIndexer<IType>::destroy(my_indexer);
+        }
+    }
+};
+
+std::vector<int> last_index_seen;
+
+template<int ELEM, typename IType>
+class serial_queue_helper {
+public:
+    typedef typename IType::output_type OT;
+    typedef typename IType::tuple_types TT;
+    typedef typename tbb::flow::tuple_element<ELEM-1,TT>::type IT;
+    static void print_remark() {
+        serial_queue_helper<ELEM-1,IType>::print_remark();
+        REMARK(", %s", name_of<IT>::name());
+    }
+    static void fill_one_queue(int maxVal, IType &my_indexer) {
+        // fill queue to "left" of me
+        serial_queue_helper<ELEM-1,IType>::fill_one_queue(maxVal,my_indexer);
+        for(int i = 0; i < maxVal; ++i) {
+            ASSERT(tbb::flow::input_port<ELEM-1>(my_indexer).try_put((IT)(i*(ELEM+1))), NULL);
+        }
+    }
+    static void put_one_queue_val(int myVal, IType &my_indexer) {
+        // put this val to my "left".
+        serial_queue_helper<ELEM-1,IType>::put_one_queue_val(myVal, my_indexer);
+        ASSERT(tbb::flow::input_port<ELEM-1>(my_indexer).try_put((IT)(myVal*(ELEM+1))), NULL);
+    }
+    static void check_queue_value(OT &v) {
+        if(ELEM - 1 == v.tag()) {
+            // this assumes each or node input is queueing.
+            int rval = getval_helper<ELEM,IType>::get_integer_val(v);
+            ASSERT( rval == (last_index_seen[ELEM-1]+1)*(ELEM+1), NULL);
+            last_index_seen[ELEM-1] = rval / (ELEM+1);
+        }
+        else {
+            serial_queue_helper<ELEM-1,IType>::check_queue_value(v);
+        }
+    }
+};
+
+template<typename IType>
+class serial_queue_helper<1, IType> {
+public:
+    typedef typename IType::output_type OT;
+    typedef typename IType::tuple_types TT;
+    typedef typename tbb::flow::tuple_element<0,TT>::type IT;
+    static void print_remark() {
+        REMARK("Serial test of indexer_node< %s", name_of<IT>::name());
+    }
+    static void fill_one_queue(int maxVal, IType &my_indexer) {
+        for(int i = 0; i < maxVal; ++i) {
+            ASSERT(tbb::flow::input_port<0>(my_indexer).try_put((IT)(i*2)), NULL);
+        }
+    }
+    static void put_one_queue_val(int myVal, IType &my_indexer) {
+        ASSERT(tbb::flow::input_port<0>(my_indexer).try_put((IT)(myVal*2)), NULL);
+    }
+    static void check_queue_value(OT &v) {
+        ASSERT(v.tag() == 0, NULL);  // won't get here unless true
+        int rval = getval_helper<1,IType>::get_integer_val(v);
+        ASSERT( rval == (last_index_seen[0]+1)*2, NULL);
+        last_index_seen[0] = rval / 2;
+    }
+};
+
+template<typename IType, typename TType, int SIZE>
+void test_one_serial( IType &my_indexer, tbb::flow::graph &g) {
+    last_index_seen.clear();
+    for(int ii=0; ii < SIZE; ++ii) last_index_seen.push_back(-1);
+
+    typedef TType q3_input_type;
+    tbb::flow::queue_node< q3_input_type >  q3(g);
+    q3_input_type v;
+
+    tbb::flow::make_edge(my_indexer, q3);
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(my_indexer.successor_count() == 1, NULL);
+    ASSERT(tbb::flow::input_port<0>(my_indexer).predecessor_count() == 0, NULL);
+#endif
+
+    // fill each queue with its value one-at-a-time
+    for (int i = 0; i < Count; ++i ) {
+        serial_queue_helper<SIZE,IType>::put_one_queue_val(i,my_indexer);
+    }
+
+    g.wait_for_all();
+    for (int i = 0; i < Count * SIZE; ++i ) {
+        g.wait_for_all();
+        ASSERT(q3.try_get( v ), "Error in try_get()");
+        {
+            serial_queue_helper<SIZE,IType>::check_queue_value(v);
+        }
+    }
+    ASSERT(!q3.try_get( v ), "extra values in output queue");
+    for(int ii=0; ii < SIZE; ++ii) last_index_seen[ii] = -1;
+
+    // fill each queue completely before filling the next.
+    serial_queue_helper<SIZE, IType>::fill_one_queue(Count,my_indexer);
+
+    g.wait_for_all();
+    for (int i = 0; i < Count*SIZE; ++i ) {
+        g.wait_for_all();
+        ASSERT(q3.try_get( v ), "Error in try_get()");
+        {
+            serial_queue_helper<SIZE,IType>::check_queue_value(v);
+        }
+    }
+    ASSERT(!q3.try_get( v ), "extra values in output queue");
+}
+
+//
+// Single predecessor at each port, single accepting successor
+//   * put to buffer before port0, then put to buffer before port1, ...
+//   * fill buffer before port0 then fill buffer before port1, ...
+
+template<typename IType>
+class serial_test {
+    typedef typename IType::output_type TType;  // this is the union
+    typedef typename IType::tuple_types union_types;
+    static const int SIZE = tbb::flow::tuple_size<union_types>::value;
+public:
+static void test() {
+    tbb::flow::graph g;
+    static const int ELEMS = 3;
+    IType* my_indexer = new IType(g); //makeIndexer<IType>::create(g);
+
+    serial_queue_helper<SIZE, IType>::print_remark(); REMARK(" >\n");
+
+    test_one_serial<IType,TType,SIZE>(*my_indexer, g);
+
+    std::vector<IType> indexer_vector(ELEMS,*my_indexer);
+
+    makeIndexer<IType>::destroy(my_indexer);
+
+    for(int e = 0; e < ELEMS; ++e) {
+        test_one_serial<IType,TType,SIZE>(indexer_vector[e], g);
+    }
+}
+
+}; // serial_test
+
+template<
+      template<typename> class TestType,  // serial_test or parallel_test
+      typename T0, typename T1=void, typename T2=void, typename T3=void, typename T4=void, 
+      typename T5=void, typename T6=void, typename T7=void, typename T8=void, typename T9=void> // type of the inputs to the indexer_node
+class generate_test {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+//specializations for indexer node inputs
+template<
+      template<typename> class TestType,  
+      typename T0, typename T1, typename T2, typename T3, typename T4, 
+      typename T5, typename T6, typename T7, typename T8> 
+class generate_test<TestType, T0, T1, T2, T3, T4, T5, T6, T7, T8> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4, T5, T6, T7, T8>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType, 
+      typename T0, typename T1, typename T2, typename T3, typename T4, 
+      typename T5, typename T6, typename T7> 
+class generate_test<TestType, T0, T1, T2, T3, T4, T5, T6, T7> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4, T5, T6, T7>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType, 
+      typename T0, typename T1, typename T2, typename T3, typename T4, 
+      typename T5, typename T6> 
+class generate_test<TestType, T0, T1, T2, T3, T4, T5, T6> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4, T5, T6>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType, 
+      typename T0, typename T1, typename T2, typename T3, typename T4, 
+      typename T5> 
+class generate_test<TestType, T0, T1, T2, T3, T4, T5>  {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4, T5>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType, 
+      typename T0, typename T1, typename T2, typename T3, typename T4> 
+class generate_test<TestType, T0, T1, T2, T3, T4>  {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3, T4>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType,  
+      typename T0, typename T1, typename T2, typename T3>  
+class generate_test<TestType, T0, T1, T2, T3> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2, T3>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType,  
+      typename T0, typename T1, typename T2> 
+class generate_test<TestType, T0, T1, T2> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1, T2>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType,  
+      typename T0, typename T1>           
+class generate_test<TestType, T0, T1> {
+public:
+    typedef tbb::flow::indexer_node<T0, T1>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+template<
+      template<typename> class TestType,  
+      typename T0>           
+class generate_test<TestType, T0> {
+public:
+    typedef tbb::flow::indexer_node<T0>  indexer_node_type;
+    static void do_test() {
+        TestType<indexer_node_type>::test();
+    }
+};
+
+int TestMain() {
+    REMARK("Testing indexer_node, ");
+#if __TBB_USE_TBB_TUPLE
+    REMARK("using TBB tuple\n");
+#else
+    REMARK("using platform tuple\n");
+#endif
+
+   for (int p = 0; p < 2; ++p) {
+       generate_test<serial_test, float>::do_test();
+#if MAX_TUPLE_TEST_SIZE >= 4
+       generate_test<serial_test, float, double, int>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 6
+       generate_test<serial_test, double, double, int, long, int, short>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 8
+       generate_test<serial_test, float, double, double, double, float, int, float, long>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 10
+       generate_test<serial_test, float, double, int, double, double, float, long, int, float, long>::do_test();
+#endif
+       generate_test<parallel_test, float, double>::do_test();
+#if MAX_TUPLE_TEST_SIZE >= 3
+       generate_test<parallel_test, float, int, long>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 5
+       generate_test<parallel_test, double, double, int, int, short>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 7
+       generate_test<parallel_test, float, int, double, float, long, float, long>::do_test();
+#endif
+#if MAX_TUPLE_TEST_SIZE >= 9
+       generate_test<parallel_test, float, double, int, double, double, long, int, float, long>::do_test();
+#endif
+   }   
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   test_indexer_extract<int>().run_tests();
+#endif
+   return Harness::Done;
+}
diff --git a/src/test/test_initializer_list.h b/src/test/test_initializer_list.h
index d7f2db7..b943fc0 100644
--- a/src/test/test_initializer_list.h
+++ b/src/test/test_initializer_list.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_test_initializer_list_H
@@ -37,49 +29,62 @@
 
 namespace initializer_list_support_tests{
     template<typename container_type, typename element_type>
-    void test_constructor(std::initializer_list<element_type> const& il, container_type const& expected){
+    void test_constructor(std::initializer_list<element_type> il, container_type const& expected){
         container_type vd (il);
         ASSERT(vd == expected,"initialization via explicit constructor call with init list failed");
     }
 
 
     template<typename container_type, typename element_type>
-    void test_assignment_operator(std::initializer_list<element_type> const& il, container_type const& expected){
+    void test_assignment_operator(std::initializer_list<element_type> il, container_type const& expected){
         container_type va;
         va = il;
         ASSERT(va == expected,"init list operator= failed");
     }
 
-    template<typename container_type, typename element_type>
-    void test_assign(Harness::int_to_type<true>, std::initializer_list<element_type> const& il, container_type const& expected){
-        container_type vae;
-        vae.assign(il);
-        ASSERT(vae == expected,"init list assign(begin,end) failed");
-    }
-    template<typename container_type, typename element_type>
-    void test_assign(Harness::int_to_type<false>, std::initializer_list<element_type> const& , container_type const&){
-        //skip the test as container has no assign method
-    }
+    struct skip_test {
+        template<typename container_type, typename element_type>
+        static void do_test(std::initializer_list<element_type>, container_type const&) { /* do nothing */ }
+    };
+
+    struct test_assign {
+        template<typename container_type, typename element_type>
+        static void do_test( std::initializer_list<element_type> il, container_type const& expected ) {
+            container_type vae;
+            vae.assign( il );
+            ASSERT( vae == expected, "init list assign(begin,end) failed" );
+        }
+    };
+
+    struct test_special_insert {
+        template<typename container_type, typename element_type>
+        static void do_test( std::initializer_list<element_type> il, container_type const& expected ) {
+            container_type vd;
+            vd.insert( il );
+            ASSERT( vd == expected, "inserting with an initializer list failed" );
+        }
+    };
 
-    template <typename container_type, typename do_test_assign_t>
-    void TestInitListSupport(std::initializer_list<typename container_type::value_type> const& il, do_test_assign_t do_test_assign_p){
+    template <typename container_type, typename test_assign, typename test_special>
+    void TestInitListSupport(std::initializer_list<typename container_type::value_type> il){
         typedef typename container_type::value_type element_type;
         std::vector<element_type> test_seq(il.begin(),il.end());
         container_type expected(test_seq.begin(), test_seq.end());
 
         test_constructor<container_type,element_type>(il, expected);
         test_assignment_operator<container_type,element_type>(il, expected);
-        test_assign<container_type,element_type>(do_test_assign_p, il, expected);
+        test_assign::do_test(il, expected);
+        test_special::do_test(il, expected);
     }
 
-    template <typename container_type>
-    void TestInitListSupport(std::initializer_list<typename container_type::value_type> const& il ){
-        TestInitListSupport<container_type>(il, Harness::int_to_type<true>());
+    template <typename container_type, typename test_special = skip_test>
+    void TestInitListSupport(std::initializer_list<typename container_type::value_type> il) {
+        TestInitListSupport<container_type, test_assign, test_special>(il);
     }
 
-    template <typename container_type>
-    void TestInitListSupportWithoutAssign(std::initializer_list<typename container_type::value_type> const& il ){
-        TestInitListSupport<container_type>(il, Harness::int_to_type<false>());
+    template <typename container_type, typename test_special = skip_test>
+    void TestInitListSupportWithoutAssign(std::initializer_list<typename container_type::value_type> il){
+        TestInitListSupport<container_type, skip_test, test_special>(il);
     }
 
     //TODO: add test for no leaks, and correct element lifetime
@@ -89,10 +94,10 @@ namespace initializer_list_support_tests{
         typedef ELEMENT_TYPE element_type;                                                                                                            \
         typedef CONTAINER<element_type> container_type;                                                                                               \
         element_type test_seq[] = INIT_SEQ;                                                                                                           \
-        container_type expected(test_seq,test_seq + Harness::array_length(test_seq));                                                                          \
+        container_type expected(test_seq,test_seq + Harness::array_length(test_seq));                                                                 \
                                                                                                                                                       \
         /*test for explicit contructor call*/                                                                                                         \
-        container_type vd INIT_SEQ;                                                                                                                 \
+        container_type vd INIT_SEQ;                                                                                                                   \
         ASSERT(vd == expected,"initialization via explicit constructor call with init list failed");                                                  \
         /*test for explicit contructor call with std::initializer_list*/                                                                              \
                                                                                                                                                       \
@@ -123,13 +128,13 @@ namespace initializer_list_support_tests{
             ad_hoc_container(){}
             template<typename InputIterator>
             ad_hoc_container(InputIterator begin, InputIterator end) : vec(begin,end) {}
-            ad_hoc_container(std::initializer_list<T> const& il) : vec(il.begin(),il.end()) {}
+            ad_hoc_container(std::initializer_list<T> il) : vec(il.begin(),il.end()) {}
             ad_hoc_container(ad_hoc_container const& other) : vec(other.vec) {}
             ad_hoc_container& operator=(ad_hoc_container const& rhs){ vec=rhs.vec; return *this;}
-            ad_hoc_container& operator=(std::initializer_list<T> const& il){ vec.assign(il.begin(),il.end()); return *this;}
+            ad_hoc_container& operator=(std::initializer_list<T> il){ vec.assign(il.begin(),il.end()); return *this;}
             template<typename InputIterator>
             void assign(InputIterator begin, InputIterator end){ vec.assign(begin,end);}
-            void assign(std::initializer_list<T> const& il){ vec.assign(il.begin(),il.end());}
+            void assign(std::initializer_list<T> il){ vec.assign(il.begin(),il.end());}
             friend bool operator==(ad_hoc_container<T> const& lhs, ad_hoc_container<T> const& rhs){ return lhs.vec==rhs.vec;}
         };
     }
@@ -140,7 +145,7 @@ namespace initializer_list_support_tests{
 
     #if __TBB_CPP11_INIT_LIST_ASSIGN_OP_RESOLUTION_BROKEN
         void TestCompilerSupportIntPair(){
-            REPORT("Known issue: skip initilizer_list compiler test for std::pair list elements.\n");
+            REPORT("Known issue: skip initializer_list compiler test for std::pair list elements.\n");
         }
     #else
         #define AD_HOC_PAIR_INIT_SEQ {{1,1}, {2,2},{3,3}, {4,4}}
diff --git a/src/test/test_inits_loop.cpp b/src/test/test_inits_loop.cpp
index d204927..bbe0932 100644
--- a/src/test/test_inits_loop.cpp
+++ b/src/test/test_inits_loop.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if __APPLE__
diff --git a/src/test/test_intrusive_list.cpp b/src/test/test_intrusive_list.cpp
index 7bb1123..095ebe3 100644
--- a/src/test/test_intrusive_list.cpp
+++ b/src/test/test_intrusive_list.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
diff --git a/src/test/test_ittnotify.cpp b/src/test/test_ittnotify.cpp
index 377f998..a664aec 100644
--- a/src/test/test_ittnotify.cpp
+++ b/src/test/test_ittnotify.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 2
+#define HARNESS_DEFAULT_MAX_THREADS 2
+
 #if !TBB_USE_THREADING_TOOLS
     #define TBB_USE_THREADING_TOOLS 1
 #endif
diff --git a/src/test/test_join_node.cpp b/src/test/test_join_node.cpp
index da34aa0..80ec191 100644
--- a/src/test/test_join_node.cpp
+++ b/src/test/test_join_node.cpp
@@ -1,40 +1,385 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
+#include "tbb/atomic.h"
+#include "harness_checktype.h"
 
 #include "tbb/flow_graph.h"
 #include "tbb/task_scheduler_init.h"
 
+#if defined(_MSC_VER) && _MSC_VER < 1600
+    #pragma warning (disable : 4503) //disabling the "decorated name length exceeded" warning for VS2008 and earlier
+#endif
+
 //
 // Tests
 //
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+template< typename T, typename NODE_TYPE >
+class test_join_base_extract : NoAssign {
+protected:
+    typedef typename NODE_TYPE::output_type tuple_t;
+    typedef tbb::flow::queue_node<T> in_queue_t;
+    typedef tbb::flow::queue_node<tuple_t> out_queue_t;
+
+    tbb::flow::graph &g;
+    in_queue_t &in0;
+    in_queue_t &in1;
+    in_queue_t &in2;
+    NODE_TYPE &middle;
+    out_queue_t &out0;
+    out_queue_t &out1;
+    in_queue_t *ins[3];
+    out_queue_t *outs[2];
+    typename in_queue_t::successor_type *ms_p0_ptr;
+    typename in_queue_t::successor_type *ms_p1_ptr;
+    typename out_queue_t::predecessor_type *mp_ptr;
+    typename in_queue_t::predecessor_list_type in0_p_list;
+    typename in_queue_t::successor_list_type in0_s_list;
+    typename in_queue_t::predecessor_list_type in1_p_list;
+    typename in_queue_t::successor_list_type in1_s_list;
+    typename in_queue_t::predecessor_list_type in2_p_list;
+    typename in_queue_t::successor_list_type in2_s_list;
+    typename out_queue_t::predecessor_list_type out0_p_list;
+    typename out_queue_t::successor_list_type out0_s_list;
+    typename out_queue_t::predecessor_list_type out1_p_list;
+    typename out_queue_t::successor_list_type out1_s_list;
+    typename in_queue_t::predecessor_list_type mp0_list;
+    typename in_queue_t::predecessor_list_type mp1_list;
+    typename out_queue_t::successor_list_type ms_list;
+
+    virtual void set_up_lists() {
+        in0_p_list.clear();
+        in0_s_list.clear();
+        in1_p_list.clear();
+        in1_s_list.clear();
+        in2_p_list.clear();
+        in2_s_list.clear();
+        out0_p_list.clear();
+        out0_s_list.clear();
+        out1_p_list.clear();
+        out1_s_list.clear();
+        mp0_list.clear();
+        mp1_list.clear();
+        ms_list.clear();
+
+        in0.copy_predecessors(in0_p_list);
+        in0.copy_successors(in0_s_list);
+        in1.copy_predecessors(in1_p_list);
+        in1.copy_successors(in1_s_list);
+        in2.copy_predecessors(in2_p_list);
+        in2.copy_successors(in2_s_list);
+        tbb::flow::input_port<0>(middle).copy_predecessors(mp0_list);
+        tbb::flow::input_port<1>(middle).copy_predecessors(mp1_list);
+        middle.copy_successors(ms_list);
+        out0.copy_predecessors(out0_p_list);
+        out0.copy_successors(out0_s_list);
+        out1.copy_predecessors(out1_p_list);
+        out1.copy_successors(out1_s_list);
+    }
+
+    void check_tuple( T &r, tuple_t &v ) {
+        T t0 = tbb::flow::get<0>(v); 
+        T t1 = tbb::flow::get<1>(v);
+        ASSERT( (t0 == 1 || t0 == 2) && (t0&r) == 0, "duplicate value" );
+        r |= t0;
+        ASSERT( (t1 == 4 || t1 == 8) && (t1&r) == 0, "duplicate value" );
+        r |= t1;
+    }
+
+    void make_and_validate_full_graph() {
+        /*     in0                         */ 
+        /*         \                       */ 
+        /*           port0          out0   */
+        /*         /       |      /        */
+        /*     in1         middle          */
+        /*                 |      \        */
+        /*     in2 - port1          out1   */
+        tbb::flow::make_edge( in0, tbb::flow::input_port<0>(middle) );
+        tbb::flow::make_edge( in1, tbb::flow::input_port<0>(middle) );
+        tbb::flow::make_edge( in2, tbb::flow::input_port<1>(middle) );
+        tbb::flow::make_edge( middle, out0 );
+        tbb::flow::make_edge( middle, out1 );
+
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 1 && in0_s_list.size() == 1 && *(in0_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 1 && in2_s_list.size() == 1 && *(in2_s_list.begin()) == ms_p1_ptr, "expected 1 successor" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 2 && mp0_list.size() == 2, "expected 2 predecessors" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 1 && mp1_list.size() == 1, "expected 1 predecessors" );
+        ASSERT( middle.successor_count() == 2 && ms_list.size() == 2, "expected 2 successors" );
+        ASSERT( out0.predecessor_count() == 1 && out0_p_list.size() == 1 && *(out0_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        typename in_queue_t::predecessor_list_type::iterator mp0_list_iter = mp0_list.begin(); ++mp0_list_iter;
+        int first_pred = *(mp0_list.begin()) == ins[0] ? 0 : ( *(mp0_list.begin()) == ins[1] ? 1 : -1 );
+        int second_pred = *mp0_list_iter == ins[0] ? 0 : ( *mp0_list_iter == ins[1] ? 1 : -1 );
+        ASSERT( first_pred != -1 && second_pred != -1 && first_pred != second_pred, "bad predecessor(s) for middle port 0" ); 
+
+        ASSERT( *(mp1_list.begin()) == ins[2], "bad predecessor for middle port 1" );
+
+        typename out_queue_t::successor_list_type::iterator ms_list_iter = ms_list.begin(); ++ms_list_iter;
+        int first_succ = *(ms_list.begin()) == outs[0] ? 0 : ( *(ms_list.begin()) == outs[1] ? 1 : -1 );
+        int second_succ = *ms_list_iter == outs[0] ? 0 : ( *ms_list_iter == outs[1] ? 1 : -1 );
+        ASSERT( first_succ != -1 && second_succ != -1 && first_succ != second_succ, "bad successor(s) for middle" ); 
+ 
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+
+        T v_in;
+        tuple_t v;
+    
+        ASSERT( in0.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in2.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( in2.try_get(v_in) == false, "buffer should not have a value" );
+
+        T r = 0;
+        while ( out0.try_get(v) ) {
+            check_tuple(r,v);
+            g.wait_for_all();
+        }
+        ASSERT( r == 15, "not all values received" );
+
+        r = 0;
+        while ( out1.try_get(v) ) {
+            check_tuple(r,v);
+            g.wait_for_all();
+        }
+        ASSERT( r == 15, "not all values received" );
+        g.wait_for_all();
+    }
+
+    void validate_partial_graph() {
+        /*     in0                         */ 
+        /*                                 */ 
+        /*           port0          out0   */
+        /*         /       |               */
+        /*     in1         middle          */
+        /*                 |      \        */
+        /*     in2 - port1          out1   */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 1 && in1_s_list.size() == 1 && *(in1_s_list.begin()) == ms_p0_ptr, "expected 1 successor" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 1 && in2_s_list.size() == 1 && *(in2_s_list.begin()) == ms_p1_ptr, "expected 1 successor" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 1 && mp0_list.size() == 1 && *(mp0_list.begin()) == ins[1], "expected 1 predecessor" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 1 && mp1_list.size() == 1 && *(mp1_list.begin()) == ins[2], "expected 1 predecessor" );
+        ASSERT( middle.successor_count() == 1 && ms_list.size() == 1 && *(ms_list.begin()) == outs[1], "expected 1 successor" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 1 predecessor" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 1 && out1_p_list.size() == 1 && *(out1_p_list.begin()) == mp_ptr, "expected 1 predecessor" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+    
+        T v_in;
+        tuple_t v;
+
+        ASSERT( in0.try_get(v_in) == true && v_in == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v_in) == false, "buffer should not have a value" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out1.try_get(v) == true && tbb::flow::get<0>(v) == 2 && tbb::flow::get<1>(v) == 8, "buffer should have a value of < 2, 8 >" );
+        ASSERT( in0.try_get(v_in) == false, "buffer should not have a value" );
+        g.wait_for_all();
+        g.reset();  // for queueing and tag_matching the 4 is now in the join
+    }
+
+    void validate_empty_graph() {
+        /*     in0                         */ 
+        /*                                 */ 
+        /*            port0         out0   */
+        /*                |                */
+        /*     in1         middle          */
+        /*                 |               */
+        /*     in2   port1          out1   */
+        set_up_lists();
+
+        ASSERT( in0.predecessor_count() == 0 && in0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in0.successor_count() == 0 && in0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in1.predecessor_count() == 0 && in1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in1.successor_count() == 0 && in1_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( in2.predecessor_count() == 0 && in2_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( in2.successor_count() == 0 && in2_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( tbb::flow::input_port<0>(middle).predecessor_count() == 0 && mp0_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( tbb::flow::input_port<1>(middle).predecessor_count() == 0 && mp1_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( middle.successor_count() == 0 && ms_list.size() == 0, "expected 0 successors" );
+        ASSERT( out0.predecessor_count() == 0 && out0_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out0.successor_count() == 0 && out0_s_list.size() == 0, "expected 0 successors" );
+        ASSERT( out1.predecessor_count() == 0 && out1_p_list.size() == 0, "expected 0 predecessors" );
+        ASSERT( out1.successor_count() == 0 && out1_s_list.size() == 0, "expected 0 successors" );
+
+        in0.try_put(1);
+        in1.try_put(2);
+        in2.try_put(8);
+        in2.try_put(4);
+        g.wait_for_all();
+    
+        T v_in;
+        tuple_t v;
+
+        ASSERT( in0.try_get(v_in) == true && v_in == 1, "buffer should have a value of 1" );
+        ASSERT( in1.try_get(v_in) == true && v_in == 2, "buffer should have a value of 2" );
+        ASSERT( in2.try_get(v_in) == true && v_in == 8, "buffer should have a value of 8" );
+        ASSERT( in2.try_get(v_in) == true && v_in == 4, "buffer should have a value of 4" );
+        ASSERT( out0.try_get(v) == false, "buffer should not have a value" );
+        ASSERT( out1.try_get(v) == false, "buffer should not have a value" );
+        g.wait_for_all();
+        g.reset(); // NOTE: this should not be necessary!!!!!  But it is!!!!
+    }
+
+public:
+
+    test_join_base_extract(tbb::flow::graph &_g, in_queue_t &_in0, in_queue_t &_in1, in_queue_t &_in2, NODE_TYPE &m, out_queue_t &_out0, out_queue_t &_out1) : 
+        g(_g), in0(_in0), in1(_in1), in2(_in2), middle(m), out0(_out0), out1(_out1) {
+        ins[0] = &in0;
+        ins[1] = &in1;
+        ins[2] = &in2;
+        outs[0] = &out0;
+        outs[1] = &out1;
+        ms_p0_ptr = static_cast< typename in_queue_t::successor_type * >(&tbb::flow::input_port<0>(middle));
+        ms_p1_ptr = static_cast< typename in_queue_t::successor_type * >(&tbb::flow::input_port<1>(middle));
+        mp_ptr = static_cast< typename out_queue_t::predecessor_type *>(&middle);
+    }
+ 
+    virtual ~test_join_base_extract() {}
+
+    void run_tests() {
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        in0.extract();
+        out0.extract();
+        REMARK("partial graph\n");
+        validate_partial_graph();
+
+        in1.extract();
+        in2.extract();
+        out1.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        in0.extract();
+        in1.extract();
+        in2.extract();
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+
+        out0.extract();
+        out1.extract();
+        middle.extract();
+        REMARK("empty graph\n");
+        validate_empty_graph();
+
+        REMARK("full graph\n");
+        make_and_validate_full_graph();
+    }
+};
+
+template< typename T, typename NODE_TYPE >
+class test_join_extract : public test_join_base_extract< T, NODE_TYPE > {
+protected:
+    typedef typename NODE_TYPE::output_type tuple_t;
+    typedef tbb::flow::queue_node<T> in_queue_t;
+    typedef tbb::flow::queue_node<tuple_t> out_queue_t;
+
+    tbb::flow::graph my_g;
+    in_queue_t my_in0;
+    in_queue_t my_in1;
+    in_queue_t my_in2;
+    NODE_TYPE my_middle;
+    out_queue_t my_out0;
+    out_queue_t my_out1;
+
+public:
+    test_join_extract() : test_join_base_extract<T, NODE_TYPE>( my_g, my_in0, my_in1, my_in2, my_middle, my_out0, my_out1 ), 
+                          my_in0(my_g), my_in1(my_g), my_in2(my_g), my_middle(my_g), my_out0(my_g), my_out1(my_g) { }
+};
+
+template< typename T >
+class test_join_extract<T, tbb::flow::join_node< tbb::flow::tuple<T,T>, tbb::flow::tag_matching> > : 
+    public test_join_base_extract< T, tbb::flow::join_node< tbb::flow::tuple<T,T>, tbb::flow::tag_matching> > {
+protected:
+    typedef tbb::flow::join_node< tbb::flow::tuple<T,T>, tbb::flow::tag_matching> my_node_t;
+
+    typedef typename my_node_t::output_type tuple_t;
+    typedef tbb::flow::queue_node<T> in_queue_t;
+    typedef tbb::flow::queue_node<tuple_t> out_queue_t;
+
+    tbb::flow::graph my_g;
+    in_queue_t my_in0;
+    in_queue_t my_in1;
+    in_queue_t my_in2;
+    my_node_t my_middle;
+    out_queue_t my_out0;
+    out_queue_t my_out1;
+    struct tag_match_0 { size_t operator()(T v) { return v; } };
+    struct tag_match_1 { size_t operator()(T v) { return v/4; } };
+public:
+    test_join_extract() : test_join_base_extract<T, my_node_t>( my_g, my_in0, my_in1, my_in2, my_middle, my_out0, my_out1 ), 
+                          my_in0(my_g), my_in1(my_g), my_in2(my_g), my_middle(my_g, tag_match_0(), tag_match_1()), my_out0(my_g), my_out1(my_g) { }
+};
+#endif
+
+struct threebyte {
+    unsigned char b1;
+    unsigned char b2;
+    unsigned char b3;
+    threebyte(int i=0) { b1 = (unsigned char)i; }
+    threebyte(const threebyte &other) : b1(other.b1), b2(other.b2), b3(other.b3) { }
+    operator int() { return (int)b1; }
+};
+
 const int Count = 150;
 const int Recirc_count = 1000;  // number of tuples to be generated
 const int MaxPorts = 10;
@@ -66,6 +411,11 @@ class name_of {
 public:
     static const char* name() { return  "Unknown"; }
 };
+template<typename T>
+class name_of<check_type<T> > {
+public:
+    static const char* name() { return "checktype"; }
+};
 template<>
 class name_of<int> {
 public:
@@ -91,6 +441,11 @@ class name_of<short> {
 public:
     static const char* name() { return  "short"; }
 };
+template<>
+class name_of<threebyte> {
+public:
+    static const char* name() {return "threebyte"; }
+};
 
 // for recirculating tags, input is tuple<index,continue_msg>
 // output is index*my_mult cast to the right type
@@ -128,12 +483,12 @@ public:
 // this is not guaranteed.
 template<typename TT>
 class source_body {
-    const TT my_mult;
+    TT my_mult;
     int my_count;
-    const int addend;
-    source_body& operator=( const source_body& other);
+    int addend;
 public:
     source_body(TT multiplier, int init_val, int addto) : my_mult(multiplier), my_count(init_val), addend(addto) { }
+    void operator=( const source_body& other) {my_mult=other.my_mult; my_count=other.my_count; addend=other.addend;}
     bool operator()( TT &v) {
         int lc = my_count;
         v = my_mult * (TT)my_count;
@@ -144,10 +499,10 @@ public:
 
 template<typename TT>
 class tag_func {
-    const TT my_mult;
-    tag_func& operator=( const tag_func& other);
+    TT my_mult;
 public:
     tag_func(TT multiplier) : my_mult(multiplier) { }
+    void operator=( const tag_func& other){my_mult = other.my_mult;}
     // operator() will return [0 .. Count) 
     tbb::flow::tag_value operator()( TT v) {
         tbb::flow::tag_value t = tbb::flow::tag_value(v / my_mult);
@@ -901,9 +1256,21 @@ void test_input_port_policies<tbb::flow::reserving>() {
     // attach jn to oq0, oq1
     tbb::flow::make_edge( jn, oq0 );
     tbb::flow::make_edge( jn, oq1 );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(jn.successor_count() == 2, NULL);
+    JType::successor_list_type my_succs;
+    jn.copy_successors(my_succs);
+    ASSERT(my_succs.size() == 2, NULL);
+#endif
     // attach iq0, iq1 to jn
     tbb::flow::make_edge( iq0, tbb::flow::get<0>(jn.input_ports()) );
     tbb::flow::make_edge( iq1, tbb::flow::get<1>(jn.input_ports()) );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(tbb::flow::get<0>(jn.input_ports()).predecessor_count() == 1, NULL);
+    tbb::flow::tuple_element<0,JType::input_type>::type::predecessor_list_type my_0preds;
+    tbb::flow::input_port<0>(jn).copy_predecessors(my_0preds);
+    ASSERT(my_0preds.size() == 1, NULL);
+#endif
     for(int loop = 0; loop < 3; ++loop) {
         // place one item in iq0
         ASSERT(iq0.try_put(1), "Error putting to iq1");
@@ -984,9 +1351,21 @@ void test_input_port_policies<tbb::flow::queueing>() {
     // attach jn to oq0, oq1
     tbb::flow::make_edge( jn, oq0 );
     tbb::flow::make_edge( jn, oq1 );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(jn.successor_count() == 2, NULL);
+    JType::successor_list_type my_succs;
+    jn.copy_successors(my_succs);
+    ASSERT(my_succs.size() == 2, NULL);
+#endif
     // attach iq0, iq1 to jn
     tbb::flow::make_edge( iq0, tbb::flow::get<0>(jn.input_ports()) );
     tbb::flow::make_edge( iq1, tbb::flow::get<1>(jn.input_ports()) );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(tbb::flow::get<0>(jn.input_ports()).predecessor_count() == 1, NULL);
+    tbb::flow::tuple_element<0,JType::input_type>::type::predecessor_list_type my_0preds;
+    tbb::flow::input_port<0>(jn).copy_predecessors(my_0preds);
+    ASSERT(my_0preds.size() == 1, NULL);
+#endif
     for(int loop = 0; loop < 3; ++loop) {
         // place one item in iq0
         ASSERT(iq0.try_put(1), "Error putting to iq1");
@@ -1022,7 +1401,15 @@ void test_input_port_policies<tbb::flow::queueing>() {
     } // for ( int loop ...
 }
 
-tbb::flow::tag_value myTagValue(int i) { return tbb::flow::tag_value(i); }
+template<typename T>
+struct myTagValue {
+    tbb::flow::tag_value operator()(T i) { return tbb::flow::tag_value(i); }
+};
+
+template<>
+struct myTagValue<check_type<int> > {
+    tbb::flow::tag_value operator()(check_type<int> i) { return tbb::flow::tag_value((int)i); }
+};
 
 // join_node (tag_matching) consumes inputs as soon as they are available at
 // any input.  When it builds a tuple it broadcasts to all its successors and
@@ -1048,99 +1435,116 @@ tbb::flow::tag_value myTagValue(int i) { return tbb::flow::tag_value(i); }
 template<>
 void test_input_port_policies<tbb::flow::tag_matching>() {
     tbb::flow::graph g;
-    typedef tbb::flow::join_node<tbb::flow::tuple<int, int>, tbb::flow::tag_matching > JType;
-    JType jn(g, myTagValue, myTagValue);
-    // create output_queue oq0, oq1
-    typedef JType::output_type OQType;
-    tbb::flow::queue_node<OQType> oq0(g);
-    tbb::flow::queue_node<OQType> oq1(g);
-    // create iq0, iq1
-    typedef tbb::flow::queue_node<int> IQType;
-    IQType iq0(g);
-    IQType iq1(g);
-    // create qnp, qnq
-    IQType qnp(g);
-    IQType qnq(g);
-
-    REMARK("Testing policies of join_node<tag_matching> input ports\n");
-    // attach jn to oq0, oq1
-    tbb::flow::make_edge( jn, oq0 );
-    tbb::flow::make_edge( jn, oq1 );
-    // attach iq0, iq1 to jn
-    tbb::flow::make_edge( iq0, tbb::flow::input_port<0>(jn) );
-    tbb::flow::make_edge( iq1, tbb::flow::input_port<1>(jn) );
-    // we'll put four discrete values in the inputs to the join_node.  Each
-    // set of inputs should result in one output.  (NO_TAG is currently defined
-    // to be tag_value(-1), so zero is an allowed tag_value.)
-    for(int loop = 0; loop < 4; ++loop) {
-        // place one item in iq0
-        ASSERT(iq0.try_put(loop), "Error putting to iq1"); 
-        // attach iq0 to qnp
-        tbb::flow::make_edge( iq0, qnp );
-        // qnp should not have an item in it.  (the join consumed it.)
-        g.wait_for_all();
-        {
-            int i;
-            ASSERT(!qnp.try_get(i), "Item was received by qnp");
-        }
-        // place item in iq1
-        ASSERT(iq1.try_put(loop), "Error putting to iq1");
-        // oq0, oq1 should have items
-        g.wait_for_all();
-        {
-            OQType t0;
-            OQType t1;
-            ASSERT(oq0.try_get(t0) && tbb::flow::get<0>(t0) == loop && tbb::flow::get<1>(t0) == loop, "Error in oq0 output");
-            ASSERT(oq1.try_get(t1) && tbb::flow::get<0>(t1) == loop && tbb::flow::get<1>(t1) == loop, "Error in oq1 output");
-            ASSERT(!oq0.try_get(t0), "extra object in output queue oq0");
-            ASSERT(!oq1.try_get(t0), "extra object in output queue oq1");
-        }
-        // attach qnq to iq1
-        // qnp and qnq should be empty
-        tbb::flow::make_edge( iq1, qnq );
-        g.wait_for_all();
-        {
-            int i;
-            ASSERT(!qnp.try_get(i), "iq0 still had value in it");
-            ASSERT(!qnq.try_get(i), "iq1 still had value in it");
-        }
-        tbb::flow::remove_edge( iq0, qnp );
-        tbb::flow::remove_edge( iq1, qnq );
-    } // for ( int loop ...
-
-    // Now we'll put [4 .. nValues - 1] in iq0, and then put [4 .. nValues - 1] in iq1 in
-    // a different order.  We should see tuples in the output queues in the order we inserted
-    // the integers into iq1.
-
-    const int nValues = 100;
-    const int nIncr = 31;  // relatively prime to nValues
+    typedef tbb::flow::join_node<tbb::flow::tuple<int, check_type<int> >, tbb::flow::tag_matching > JoinNodeType;
+    typedef JoinNodeType::output_type CheckTupleType;
+    JoinNodeType testJoinNode(g, myTagValue<int>(), myTagValue<check_type<int> >());
+    tbb::flow::queue_node<CheckTupleType> checkTupleQueue0(g);
+    tbb::flow::queue_node<CheckTupleType> checkTupleQueue1(g);
+    { 
+        Check<check_type<int> > my_check;
+
+
+        typedef tbb::flow::queue_node<int> IntQueueType;
+        typedef tbb::flow::queue_node<check_type<int> > CheckQueueType;
+        IntQueueType intInputQueue(g);
+        CheckQueueType checkInputQueue(g);
+        IntQueueType intEmptyTestQueue(g);
+        CheckQueueType checkEmptyTestQueue(g);
+        REMARK("Testing policies of join_node<tag_matching> input ports\n");
+        // attach testJoinNode to checkTupleQueue0, checkTupleQueue1
+        tbb::flow::make_edge( testJoinNode, checkTupleQueue0 );
+        tbb::flow::make_edge( testJoinNode, checkTupleQueue1 );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(testJoinNode.successor_count() == 2, NULL);
+        JoinNodeType::successor_list_type my_succs;
+        testJoinNode.copy_successors(my_succs);
+        ASSERT(my_succs.size() == 2, NULL);
+#endif
+        // attach intInputQueue, checkInputQueue to testJoinNode
+        tbb::flow::make_edge( intInputQueue, tbb::flow::input_port<0>(testJoinNode) );
+        tbb::flow::make_edge( checkInputQueue, tbb::flow::input_port<1>(testJoinNode) );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(tbb::flow::input_port<0>(testJoinNode).predecessor_count() == 1, NULL);
+        tbb::flow::tuple_element<0,JoinNodeType::input_type>::type::predecessor_list_type my_0preds;
+        tbb::flow::input_port<0>(testJoinNode).copy_predecessors(my_0preds);
+        ASSERT(my_0preds.size() == 1, NULL);
+#endif
 
-    for(int loop = 4; loop < 4+nValues; ++loop) {
-        // place one item in iq0
-        ASSERT(iq0.try_put(loop), "Error putting to iq1"); 
-        g.wait_for_all();
-        {
-            OQType t3;
-            ASSERT(!oq0.try_get(t3), "Object in output queue");
-            ASSERT(!oq1.try_get(t3), "Object in output queue");
-        }
-    } // for ( int loop ...
+        // we'll put four discrete values in the inputs to the join_node.  Each
+        // set of inputs should result in one output.  (NO_TAG is currently defined
+        // to be tag_value(-1), so zero is an allowed tag_value.)
+        for(int loop = 0; loop < 4; ++loop) {
+            // place one item in intInputQueue
+            ASSERT(intInputQueue.try_put(loop), "Error putting to intInputQueue"); 
+            // attach intInputQueue to intEmptyTestQueue
+            tbb::flow::make_edge( intInputQueue, intEmptyTestQueue );
+            // intEmptyTestQueue should not have an item in it.  (the join consumed it.)
+            g.wait_for_all();
+            {
+                int intVal0;
+                ASSERT(!intEmptyTestQueue.try_get(intVal0), "Item was received by intEmptyTestQueue");
+            }
+            // place item in checkInputQueue
+            check_type<int> checkVal0(loop);
+            ASSERT(checkInputQueue.try_put(checkVal0), "Error putting to checkInputQueue");
+            // checkTupleQueue0, checkTupleQueue1 should have items
+            g.wait_for_all();
+            {
+                CheckTupleType t0;
+                CheckTupleType t1;
+                ASSERT(checkTupleQueue0.try_get(t0) && tbb::flow::get<0>(t0) == loop && (int)tbb::flow::get<1>(t0) == loop, "Error in checkTupleQueue0 output");
+                ASSERT(checkTupleQueue1.try_get(t1) && tbb::flow::get<0>(t1) == loop && (int)tbb::flow::get<1>(t1) == loop, "Error in checkTupleQueue1 output");
+                ASSERT(!checkTupleQueue0.try_get(t0), "extra object in output queue checkTupleQueue0");
+                ASSERT(!checkTupleQueue1.try_get(t0), "extra object in output queue checkTupleQueue1");
+            }
+            // attach checkEmptyTestQueue to checkInputQueue
+            // intEmptyTestQueue and checkEmptyTestQueue should be empty
+            tbb::flow::make_edge( checkInputQueue, checkEmptyTestQueue );
+            g.wait_for_all();
+            {
+                int intVal1;
+                check_type<int> checkVal1;
+                //REMARK("loop == %d point 4.7 count is %d %d\n", loop, my_check(), my_check(1) );  // +1
+                ASSERT(!intEmptyTestQueue.try_get(intVal1), "intInputQueue still had value in it");
+                ASSERT(!checkEmptyTestQueue.try_get(checkVal1), "checkInputQueue still had value in it");
+            }
+            tbb::flow::remove_edge( intInputQueue, intEmptyTestQueue );
+            tbb::flow::remove_edge( checkInputQueue, checkEmptyTestQueue );
+        } // for ( int loop ...
+
+        // Now we'll put [4 .. nValues - 1] in intInputQueue, and then put [4 .. nValues - 1] in checkInputQueue in
+        // a different order.  We should see tuples in the output queues in the order we inserted
+        // the integers into checkInputQueue.
+        const int nValues = 100;
+        const int nIncr = 31;  // relatively prime to nValues
+
+        for(int loop = 4; loop < 4+nValues; ++loop) {
+            // place one item in intInputQueue
+            ASSERT(intInputQueue.try_put(loop), "Error putting to intInputQueue"); 
+            g.wait_for_all();
+            {
+                CheckTupleType t3;
+                ASSERT(!checkTupleQueue0.try_get(t3), "Object in output queue");
+                ASSERT(!checkTupleQueue1.try_get(t3), "Object in output queue");
+            }
+        } // for ( int loop ...
 
-    for(int loop = 1; loop <= nValues; ++loop) {
-        int lp1 = 4 + (loop * nIncr)%nValues;
-        // place item in iq1
-        ASSERT(iq1.try_put(lp1), "Error putting to iq1");
-        // oq0, oq1 should have items
-        g.wait_for_all();
-        {
-            OQType t0;
-            OQType t1;
-            ASSERT(oq0.try_get(t0) && tbb::flow::get<0>(t0) == lp1 && tbb::flow::get<1>(t0) == lp1, "Error in oq0 output");
-            ASSERT(oq1.try_get(t1) && tbb::flow::get<0>(t1) == lp1 && tbb::flow::get<1>(t1) == lp1, "Error in oq1 output");
-            ASSERT(!oq0.try_get(t0), "extra object in output queue oq0");
-            ASSERT(!oq1.try_get(t0), "extra object in output queue oq1");
-        }
-    } // for ( int loop ...
+        for(int loop = 1; loop <= nValues; ++loop) {
+            int lp1 = 4 + (loop * nIncr)%nValues;
+            // place item in checkInputQueue
+            ASSERT(checkInputQueue.try_put(lp1), "Error putting to checkInputQueue");
+            // checkTupleQueue0, checkTupleQueue1 should have items
+            g.wait_for_all();
+            {
+                CheckTupleType t0;
+                CheckTupleType t1;
+                ASSERT(checkTupleQueue0.try_get(t0) && tbb::flow::get<0>(t0) == lp1 && tbb::flow::get<1>(t0) == lp1, "Error in checkTupleQueue0 output");
+                ASSERT(checkTupleQueue1.try_get(t1) && tbb::flow::get<0>(t1) == lp1 && tbb::flow::get<1>(t1) == lp1, "Error in checkTupleQueue1 output");
+                ASSERT(!checkTupleQueue0.try_get(t0), "extra object in output queue checkTupleQueue0");
+                ASSERT(!checkTupleQueue1.try_get(t0), "extra object in output queue checkTupleQueue1");
+            }
+        } // for ( int loop ...
+    } // Check
 }
 
 int TestMain() {
@@ -1149,15 +1553,19 @@ int TestMain() {
 #else
     REMARK("  Using platform tuple\n");
 #endif
+
+
     test_input_port_policies<tbb::flow::reserving>();
     test_input_port_policies<tbb::flow::queueing>();
     test_input_port_policies<tbb::flow::tag_matching>();
-
    for (int p = 0; p < 2; ++p) {
        REMARK("reserving\n");
-       generate_test<serial_test, tbb::flow::tuple<float, double>, tbb::flow::reserving >::do_test();
+       generate_test<serial_test, tbb::flow::tuple<threebyte, double>, tbb::flow::reserving >::do_test();
 #if MAX_TUPLE_TEST_SIZE >= 4
-       generate_test<serial_test, tbb::flow::tuple<float, double, int, long>, tbb::flow::reserving >::do_test();
+       {
+           Check<check_type<int> > my_check;
+           generate_test<serial_test, tbb::flow::tuple<float, double, check_type<int>, long>, tbb::flow::reserving >::do_test();
+       }
 #endif
 #if MAX_TUPLE_TEST_SIZE >= 6
        generate_test<serial_test, tbb::flow::tuple<double, double, int, long, int, short>, tbb::flow::reserving >::do_test();
@@ -1168,7 +1576,10 @@ int TestMain() {
 #if MAX_TUPLE_TEST_SIZE >= 10
        generate_test<serial_test, tbb::flow::tuple<float, double, int, double, double, float, long, int, float, long>, tbb::flow::reserving >::do_test();
 #endif
-       generate_test<parallel_test, tbb::flow::tuple<float, double>, tbb::flow::reserving >::do_test();
+       {
+           Check<check_type<int> > my_check1;
+           generate_test<parallel_test, tbb::flow::tuple<float, check_type<int> >, tbb::flow::reserving >::do_test();
+       }
 #if MAX_TUPLE_TEST_SIZE >= 3
        generate_test<parallel_test, tbb::flow::tuple<float, int, long>, tbb::flow::reserving >::do_test();
 #endif
@@ -1240,5 +1651,13 @@ int TestMain() {
        generate_recirc_test<tbb::flow::tuple<double, double, int, int, short> >::do_test();
 #endif
    }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   REMARK("test queueing extract\n");
+   test_join_extract<int, tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::queueing> >().run_tests(); 
+   REMARK("test tag_matching extract\n");
+   test_join_extract<int, tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::tag_matching> >().run_tests(); 
+   REMARK("test reserving extract\n");
+   test_join_extract<int, tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::reserving> >().run_tests(); 
+#endif
    return Harness::Done;
 }
diff --git a/src/test/test_lambda.cpp b/src/test/test_lambda.cpp
index a1d03a8..384e556 100644
--- a/src/test/test_lambda.cpp
+++ b/src/test/test_lambda.cpp
@@ -1,31 +1,34 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "harness_defs.h"
+#if __TBB_TEST_SKIP_LAMBDA
+
+#include "harness.h"
+int TestMain() {
+    REPORT("Known issue: lambdas are not properly supported on the platform \n");
+    return Harness::Skipped;
+}
+
+#else /*__TBB_TEST_SKIP_LAMBDA*/
+
 #define NOMINMAX
 #include "tbb/tbb.h"
 #include "tbb/combinable.h"
@@ -63,11 +66,9 @@ int Fib(int n) {
     } else {
         int x=0, y=0;
         task_group g;
-#if __TBB_LAMBDAS_PRESENT
         g.run( [&]{x=Fib(n-1);} ); // spawn a task
         g.run( [&]{y=Fib(n-2);} ); // spawn another task
         g.wait();                  // wait for both tasks to complete
-#endif
         return x+y;
     }
 }
@@ -77,7 +78,6 @@ int Fib(int n) {
 #include "harness_assert.h"
 
 int TestMain () {
-#if __TBB_LAMBDAS_PRESENT
     const int N = 1000;
     const int Grainsize = N/1000;
     int a[N];
@@ -245,7 +245,5 @@ int TestMain () {
         REMARK("passed.\n");
     }
     return Harness::Done;
-#else
-    return Harness::Skipped;
-#endif /* !__TBB_LAMBDAS_PRESENT */
 }
+#endif /* __TBB_TEST_SKIP_LAMBDA */
diff --git a/src/test/test_limiter_node.cpp b/src/test/test_limiter_node.cpp
index ba56099..6610b9e 100644
--- a/src/test/test_limiter_node.cpp
+++ b/src/test/test_limiter_node.cpp
@@ -1,32 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#include "harness_graph.h"
+#endif
 #include "tbb/flow_graph.h"
 #include "tbb/atomic.h"
 #include "tbb/task_scheduler_init.h"
@@ -45,7 +40,22 @@ struct serial_receiver : public tbb::flow::receiver<T> {
        return const_cast<tbb::task *>(tbb::flow::interface7::SUCCESSFULLY_ENQUEUED);
    }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    built_predecessors_type bpt;
+    built_predecessors_type &built_predecessors() { return bpt; }
+    void internal_add_built_predecessor( tbb::flow::sender<T> & ) { }
+    void internal_delete_built_predecessor( tbb::flow::sender<T> & ) { }
+    void copy_predecessors( predecessor_list_type & ) { }
+    size_t predecessor_count() { return 0; }
+#endif
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) {next_value = T(0);}
+#else
    /*override*/void reset_receiver() {next_value = T(0);}
+#endif
 };
 
 template< typename T >
@@ -60,13 +70,36 @@ struct parallel_receiver : public tbb::flow::receiver<T> {
        return const_cast<tbb::task *>(tbb::flow::interface7::SUCCESSFULLY_ENQUEUED);
    }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    built_predecessors_type bpt;
+    built_predecessors_type &built_predecessors() { return bpt; }
+    void internal_add_built_predecessor( tbb::flow::sender<T> & ) { }
+    void internal_delete_built_predecessor( tbb::flow::sender<T> & ) { }
+    void copy_predecessors( predecessor_list_type & ) { }
+    size_t predecessor_count( ) { return 0; }
+   /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) {my_count = 0;}
+#else
    /*override*/void reset_receiver() {my_count = 0;}
+#endif
 };
 
 template< typename T >
 struct empty_sender : public tbb::flow::sender<T> {
         /* override */ bool register_successor( tbb::flow::receiver<T> & ) { return false; }
         /* override */ bool remove_successor( tbb::flow::receiver<T> & ) { return false; }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        typedef typename tbb::flow::sender<T>::built_successors_type built_successors_type;
+        typedef typename tbb::flow::sender<T>::successor_list_type successor_list_type;
+        built_successors_type bst;
+        built_successors_type &built_successors() { return bst; }
+        void    internal_add_built_successor( tbb::flow::receiver<T> & ) { }
+        void internal_delete_built_successor( tbb::flow::receiver<T> & ) { }
+        void copy_successors( successor_list_type & ) { }
+        size_t successor_count() { return 0; }
+#endif
+
 };
 
 
@@ -118,7 +151,15 @@ void test_puts_with_decrements( int num_threads, tbb::flow::limiter_node< T >& l
     tbb::atomic<int> accept_count;
     accept_count = 0;
     tbb::flow::make_edge( lim, r );
-    lim.decrement.register_predecessor( s );
+    tbb::flow::make_edge(s, lim.decrement);
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(lim.decrement.predecessor_count() == 1, NULL);
+    ASSERT(lim.successor_count() == 1, NULL);
+    ASSERT(lim.predecessor_count() == 0, NULL);
+    typename tbb::flow::interface7::internal::decrementer<tbb::flow::limiter_node<T> >::predecessor_list_type dec_preds;
+    lim.decrement.copy_predecessors(dec_preds);
+    ASSERT(dec_preds.size() == 1, NULL);
+#endif
     // test puts with decrements
     NativeParallelFor( num_threads, put_dec_body<T>(lim, accept_count) );
     int c = accept_count;
@@ -192,7 +233,7 @@ int test_serial() {
        serial_receiver<T> r;
        empty_sender< tbb::flow::continue_msg > s;
        tbb::flow::make_edge( lim, r );
-       lim.decrement.register_predecessor( s );
+       tbb::flow::make_edge(s, lim.decrement);
        for ( int j = 0; j < N; ++j ) {
            bool msg = lim.try_put( T(j) );
            ASSERT( ( j < i && msg == true ) || ( j >= i && msg == false ), NULL );
@@ -273,6 +314,16 @@ test_multifunction_to_limiter(int _max, int _nparallel) {
     tbb::flow::make_edge(tbb::flow::output_port<DECREMENT_OUTPUT>(mf_node), lim_node.decrement);
     tbb::flow::make_edge(lim_node, fn_node);
     tbb::flow::make_edge(fn_node, mf_node);
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK("pred cnt == %d\n",(int)(lim_node.predecessor_count()));
+    REMARK("succ cnt == %d\n",(int)(lim_node.successor_count()));
+    tbb::flow::limiter_node<int>::successor_list_type my_succs;
+    lim_node.copy_successors(my_succs);
+    REMARK("succ cnt from vector  == %d\n",(int)(my_succs.size()));
+    tbb::flow::limiter_node<int>::predecessor_list_type my_preds;
+    lim_node.copy_predecessors(my_preds);
+    REMARK("pred cnt from vector  == %d\n",(int)(my_preds.size()));
+#endif
     mf_node.try_put(1);
     g.wait_for_all();
     ASSERT(emit_count == receive_count, "counts do not match");
@@ -357,6 +408,116 @@ void test_reserve_release_messages() {
   }
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+void test_extract() {
+    tbb::flow::graph g;
+    int j;
+    tbb::flow::limiter_node<int> node0(g, /*threshold*/1);
+    tbb::flow::queue_node<int> q0(g);
+    tbb::flow::queue_node<int> q1(g);
+    tbb::flow::queue_node<int> q2(g);
+    tbb::flow::broadcast_node<tbb::flow::continue_msg> b0(g);
+    tbb::flow::broadcast_node<tbb::flow::continue_msg> b1(g);
+
+    for( int i = 0; i < 2; ++i ) {
+        REMARK("At pass %d\n", i);
+        ASSERT(node0.predecessor_count() == 0, "incorrect predecessor count at start");
+        ASSERT(node0.successor_count() == 0, "incorrect successor count at start");
+        ASSERT(node0.decrement.predecessor_count() == 0, "incorrect decrement pred count at start");
+
+        tbb::flow::make_edge(q0, node0);
+        tbb::flow::make_edge(q1, node0);
+        tbb::flow::make_edge(node0, q2);
+        tbb::flow::make_edge(b0, node0.decrement);
+        tbb::flow::make_edge(b1, node0.decrement);
+        g.wait_for_all();
+
+        /*    b0   b1              */
+        /*      \  |               */
+        /*  q0\  \ |               */
+        /*     \  \|               */
+        /*      +-node0---q2       */
+        /*     /                   */
+        /*  q1/                    */
+
+        q0.try_put(i);
+        g.wait_for_all();
+        ASSERT(node0.predecessor_count() == 2, "incorrect predecessor count after construction");
+        ASSERT(node0.successor_count() == 1, "incorrect successor count after construction");
+        ASSERT(node0.decrement.predecessor_count() == 2, "incorrect decrement pred count after construction");
+        ASSERT(q2.try_get(j), "fetch of value forwarded to output queue failed");
+        ASSERT(j == i, "improper value forwarded to output queue");
+        q0.try_put(2*i);
+        g.wait_for_all();
+        ASSERT(!q2.try_get(j), "limiter_node forwarded item improperly");
+        b0.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(!q2.try_get(j), "limiter_node forwarded item improperly");
+        b0.try_put(tbb::flow::continue_msg());
+        g.wait_for_all();
+        ASSERT(q2.try_get(j) && j == 2*i, "limiter_node failed to forward item");
+
+        tbb::flow::limiter_node<int>::successor_list_type sv;
+        tbb::flow::limiter_node<int>::predecessor_list_type pv;
+        tbb::flow::continue_receiver::predecessor_list_type dv;
+        tbb::flow::limiter_node<int>::successor_list_type sv1;
+        tbb::flow::limiter_node<int>::predecessor_list_type pv1;
+        tbb::flow::continue_receiver::predecessor_list_type dv1;
+
+        node0.copy_predecessors(pv);
+        node0.copy_successors(sv);
+        node0.decrement.copy_predecessors(dv);
+        pv1.push_back(&(q0));
+        pv1.push_back(&(q1));
+        sv1.push_back(&(q2));
+        dv1.push_back(&(b0));
+        dv1.push_back(&(b1));
+
+        ASSERT(pv.size() == 2, "improper size for predecessors");
+        ASSERT(sv.size() == 1, "improper size for successors");
+        ASSERT(lists_match(pv,pv1), "predecessor lists do not match");
+        ASSERT(lists_match(sv,sv1), "successor lists do not match");
+        ASSERT(lists_match(dv,dv1), "successor lists do not match");
+
+        if(i == 0) {
+            node0.extract();
+            ASSERT(node0.predecessor_count() == 0, "incorrect predecessor count after extraction");
+            ASSERT(node0.successor_count() == 0, "incorrect successor count after extraction");
+            ASSERT(node0.decrement.predecessor_count() == 0, "incorrect decrement pred count after extraction");
+        }
+        else {
+            q0.extract();
+            b0.extract();
+            q2.extract();
+
+            ASSERT(node0.predecessor_count() == 1, "incorrect predecessor count after extract second iter");
+            ASSERT(node0.successor_count() == 0, "incorrect successor count after extract second iter");
+            ASSERT(node0.decrement.predecessor_count() == 1, "incorrect decrement pred count after extract second iter");
+
+            node0.copy_predecessors(pv);
+            node0.copy_successors(sv);
+            node0.decrement.copy_predecessors(dv);
+            pv1.clear();
+            sv1.clear();
+            dv1.clear();
+            pv1.push_back(&(q1));
+            dv1.push_back(&(b1));
+
+            ASSERT(lists_match(pv,pv1), "predecessor lists do not match second iter");
+            ASSERT(lists_match(sv,sv1), "successor lists do not match second iter");
+            ASSERT(lists_match(dv,dv1), "successor lists do not match second iter");
+
+            q1.extract();
+            b1.extract();
+        }
+        ASSERT(node0.predecessor_count() == 0, "incorrect predecessor count after extract");
+        ASSERT(node0.successor_count() == 0, "incorrect successor count after extract");
+        ASSERT(node0.decrement.predecessor_count() == 0, "incorrect decrement pred count after extract");
+
+    }
+
+}
+#endif  // TBB_PREVIEW_FLOW_GRAPH_FEATURES
 
 int TestMain() { 
     for (int i = 1; i <= 8; ++i) {
@@ -369,5 +530,8 @@ int TestMain() {
     test_multifunction_to_limiter(300,13);
     test_multifunction_to_limiter(3000,1);
     test_reserve_release_messages();
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract();
+#endif
    return Harness::Done;
 }
diff --git a/src/test/test_malloc_atexit.cpp b/src/test/test_malloc_atexit.cpp
index 5934608..b2013c0 100644
--- a/src/test/test_malloc_atexit.cpp
+++ b/src/test/test_malloc_atexit.cpp
@@ -1,73 +1,141 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-/* Regression test against bug in TBB allocator, manifested when 
-   dynamic library calls atexit or register dtors of static objects.
-   If the allocator is not initialized yet, we can got deadlock, 
+/* Regression test against a bug in TBB allocator manifested when 
+   dynamic library calls atexit() or registers dtors of static objects.
+   If the allocator is not initialized yet, we can get deadlock, 
    because allocator library has static object dtors as well, they
-   registred during allocator initialization, and atexit is protected 
-   by non-recursive mutex in some GLIBCs.
+   registered during allocator initialization, and atexit() is protected 
+   by non-recursive mutex in some versions of GLIBC.
  */
 
-#if _USRDLL
-
 #include <stdlib.h>
+#include "../tbbmalloc/proxy.h" // __TBB_malloc_safer_msize
+#include "tbb/tbb_config.h"     // for __TBB_WIN8UI_SUPPORT
 
-#if _WIN32||_WIN64
-// isMallocOverloaded must be defined in DLL to linker not drop the dependence
-// to the DLL.
-extern __declspec(dllexport) bool isMallocOverloaded();
+#if !(_WIN32||_WIN64 || MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED) || __TBB_WIN8UI_SUPPORT || __MINGW32__ || __MINGW64__
+#define HARNESS_SKIP_TEST 1
+#endif
 
-bool isMallocOverloaded()
+// __TBB_malloc_safer_msize() returns 0 for unknown objects,
+// thus we can detect ownership
+#if _USRDLL
+ #if _WIN32||_WIN64
+extern __declspec(dllexport)
+ #endif
+bool dll_isMallocOverloaded()
+#else
+bool exe_isMallocOverloaded()
+#endif
 {
-    return true;
+    const size_t reqSz = 8;
+    void *o = malloc(reqSz);
+    bool ret = __TBB_malloc_safer_msize(o, NULL) >= reqSz;
+    free(o);
+    return ret;
 }
 
-#else
+#if _USRDLL
+
+#if MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED
+
+#define HARNESS_CUSTOM_MAIN 1
+#include "harness.h"
 
 #include <dlfcn.h>
+#if __APPLE__
+#include <malloc/malloc.h>
+#define malloc_usable_size(p) malloc_size(p)
+#else
+#include <malloc.h>
+#endif
+#include <signal.h>
+
+#if __linux__ && !__ANDROID__
+extern "C" {
+void __libc_free(void *ptr);
+void *__libc_realloc(void *ptr, size_t size);
+
+// check that such kind of free/realloc overload works correctly
+void free(void *ptr)
+{
+    __libc_free(ptr);
+}
 
-bool isMallocOverloaded()
+void *realloc(void *ptr, size_t size)
 {
-    return dlsym(RTLD_DEFAULT, "__TBB_malloc_proxy");
+    return __libc_realloc(ptr, size);
 }
+} // extern "C"
+#endif // __linux__ && !__ANDROID__
+
+#endif // MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED
 
-#endif    
+// Even when the test is skipped, dll source must not be empty to generate .lib to link with.
 
 #ifndef _PGO_INSTRUMENT
 void dummyFunction() {}
 
+// TODO: enable the check under Android
+#if (MALLOC_UNIXLIKE_OVERLOAD_ENABLED || MALLOC_ZONE_OVERLOAD_ENABLED) && !__ANDROID__
+typedef void *(malloc_type)(size_t);
+
+static void SigSegv(int)
+{
+    REPORT("Known issue: SIGSEGV during work with memory allocated by replaced allocator.\n"
+           "skip\n");
+    exit(0);
+}
+
+// TODO: Using of SIGSEGV can be eliminated via parsing /proc/self/maps
+// and series of system malloc calls.
+void TestReplacedAllocFunc()
+{
+    struct sigaction sa, sa_default;
+    malloc_type *orig_malloc = (malloc_type*)dlsym(RTLD_NEXT, "malloc");
+    void *p = (*orig_malloc)(16);
+
+    // protect potentially unsafe actions
+    sigemptyset(&sa.sa_mask);
+    sa.sa_flags = 0;
+    sa.sa_handler = SigSegv;
+    if (sigaction(SIGSEGV, &sa, &sa_default))
+        ASSERT(0, "sigaction failed");
+
+    ASSERT(malloc_usable_size(p) >= 16, NULL);
+    free(p);
+    // no more unsafe actions, restore SIGSEGV
+    if (sigaction(SIGSEGV, &sa_default, NULL))
+        ASSERT(0, "sigaction failed");
+}
+#else
+void TestReplacedAllocFunc() { }
+#endif
+
 class Foo {
 public:
     Foo() {
         // add a lot of exit handlers to cause memory allocation
         for (int i=0; i<1024; i++)
             atexit(dummyFunction);
+        TestReplacedAllocFunc();
     }
 };
 
@@ -76,32 +144,26 @@ static Foo f;
 
 #else // _USRDLL
 #include "harness.h"
-#include "../tbbmalloc/proxy.h"
-
-#if _WIN32||_WIN64 || MALLOC_UNIXLIKE_OVERLOAD_ENABLED
-
-    #if _WIN32||_WIN64
-    extern __declspec(dllimport)
-    #endif
-    bool isMallocOverloaded();
-
-    int TestMain () {
-    #ifdef _PGO_INSTRUMENT
-        REPORT("Known issue: test_malloc_atexit hangs if compiled with -prof-genx\n");
-        return Harness::Skipped;
-    #elif __TBB_MIC_OFFLOAD
-        REPORT("Known issue: libmalloc_proxy.so is loaded too late in the offload mode on the target when linked via -lmalloc_proxy\n");
-        return Harness::Skipped;
-    #else
-        ASSERT( isMallocOverloaded(), "malloc was not replaced" );
-        return Harness::Done;
-    #endif
-    }
 
+#if _WIN32||_WIN64
+#include "tbb/tbbmalloc_proxy.h"
+
+extern __declspec(dllimport)
+#endif
+bool dll_isMallocOverloaded();
+
+int TestMain () {
+#ifdef _PGO_INSTRUMENT
+    REPORT("Known issue: test_malloc_atexit hangs if compiled with -prof-genx\n");
+    return Harness::Skipped;
+#elif __TBB_MIC_OFFLOAD
+    REPORT("Known issue: libmalloc_proxy.so is loaded too late in the offload mode on the target when linked via -lmalloc_proxy\n");
+    return Harness::Skipped;
 #else
-    int TestMain () {
-        return Harness::Skipped;
-    }
+    ASSERT( dll_isMallocOverloaded(), "malloc was not replaced" );
+    ASSERT( exe_isMallocOverloaded(), "malloc was not replaced" );
+    return Harness::Done;
 #endif
+}
 
 #endif // _USRDLL
diff --git a/src/test/test_malloc_compliance.cpp b/src/test/test_malloc_compliance.cpp
index b366c0c..1bf124e 100644
--- a/src/test/test_malloc_compliance.cpp
+++ b/src/test/test_malloc_compliance.cpp
@@ -1,40 +1,34 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 const unsigned MByte = 1024*1024;
 bool __tbb_test_errno = false;
 
+#define __STDC_LIMIT_MACROS 1 // to get SIZE_MAX from stdint.h
+
 #include "tbb/tbb_config.h"
 
-#if __TBB_WIN8UI_SUPPORT	
+#if __TBB_WIN8UI_SUPPORT
 // testing allocator itself not iterfaces
 // so we can use desktop functions
-#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP 1
+#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP !_M_ARM
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #include "harness.h"
 // FIXME: fix the test to support New Windows *8 Store Apps mode.
@@ -43,11 +37,10 @@ int TestMain() {
 }
 #else /* __TBB_WIN8UI_SUPPORT	 */
 
+#if _WIN32 || _WIN64
 /* _WIN32_WINNT should be defined at the very beginning,
    because other headers might include <windows.h>
 */
-
-#if _WIN32 || _WIN64
 #undef _WIN32_WINNT
 #define _WIN32_WINNT 0x0501
 #include "tbb/machine/windows_api.h"
@@ -82,32 +75,40 @@ void limitMem( size_t limit )
     }
 }
 // Do not test errno with static VC runtime
-#else
+#else // _WIN32 || _WIN64
 #include <sys/resource.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <errno.h>
 #include <sys/types.h>  // uint64_t on FreeBSD, needed for rlim_t
+#include <stdint.h>     // SIZE_MAX
 #include "harness_report.h"
 
 void limitMem( size_t limit )
 {
     rlimit rlim;
-    rlim.rlim_cur = limit? limit*MByte : (rlim_t)RLIM_INFINITY;
-    rlim.rlim_max = (rlim_t)RLIM_INFINITY;
-    int ret = setrlimit(RLIMIT_AS,&rlim);
+    int ret = getrlimit(RLIMIT_AS,&rlim);
+    if (0 != ret) {
+        REPORT("getrlimit() returned an error: errno %d\n", errno);
+        exit(1);
+    }
+    if (rlim.rlim_max==(rlim_t)RLIM_INFINITY)
+        rlim.rlim_cur = (limit > 0) ? limit*MByte : rlim.rlim_max;
+    else rlim.rlim_cur = (limit > 0 && limit<rlim.rlim_max) ? limit*MByte : rlim.rlim_max;
+    ret = setrlimit(RLIMIT_AS,&rlim);
     if (0 != ret) {
         REPORT("Can't set limits: errno %d\n", errno);
         exit(1);
     }
 }
-#endif
+#endif  // _WIN32 || _WIN64
 
 #define ASSERT_ERRNO(cond, msg)  ASSERT( !__tbb_test_errno || (cond), msg )
 #define CHECK_ERRNO(cond) (__tbb_test_errno && (cond))
 
 #include <time.h>
 #include <errno.h>
+#include <limits.h> // for CHAR_BIT
 #define __TBB_NO_IMPLICIT_LINKAGE 1
 #include "tbb/scalable_allocator.h"
 
@@ -142,8 +143,6 @@ extern "C" void *__cdecl _aligned_malloc(size_t,size_t);
     #pragma warning (pop)
 #endif
 
-const size_t COUNT_ELEM_CALLOC = 2;
-const int COUNT_TESTS = 1000;
 const int COUNT_ELEM = 25000;
 const size_t MAX_SIZE = 1000;
 const int COUNTEXPERIMENT = 10000;
@@ -184,8 +183,10 @@ TestAlignedRealloc* Raligned_realloc;
 bool error_occurred = false;
 
 #if __APPLE__
-// Tests that use the variable are skipped on OS X*
+// Tests that use the variables are skipped on OS X*
 #else
+const size_t COUNT_ELEM_CALLOC = 2;
+const int COUNT_TESTS = 1000;
 static bool perProcessLimits = true;
 #endif
 
@@ -307,6 +308,57 @@ void ReallocParam()
         Trealloc(bufs[j], 0);
 }
 
+void CheckArgumentsOverflow()
+{
+    void *p;
+    const size_t params[] = {SIZE_MAX, SIZE_MAX-16};
+
+    for (unsigned i=0; i<Harness::array_length(params); i++) {
+        p = Tmalloc(params[i]);
+        ASSERT(!p, NULL);
+        ASSERT_ERRNO(errno==ENOMEM, NULL);
+        p = Trealloc(NULL, params[i]);
+        ASSERT(!p, NULL);
+        ASSERT_ERRNO(errno==ENOMEM, NULL);
+        p = Tcalloc(1, params[i]);
+        ASSERT(!p, NULL);
+        ASSERT_ERRNO(errno==ENOMEM, NULL);
+        p = Tcalloc(params[i], 1);
+        ASSERT(!p, NULL);
+        ASSERT_ERRNO(errno==ENOMEM, NULL);
+    }
+    const size_t max_alignment = size_t(1) << (sizeof(size_t)*CHAR_BIT - 1);
+    if (Rposix_memalign) {
+        int ret = Rposix_memalign(&p, max_alignment, ~max_alignment);
+        ASSERT(ret == ENOMEM, NULL);
+        for (unsigned i=0; i<Harness::array_length(params); i++) {
+            ret = Rposix_memalign(&p, max_alignment, params[i]);
+            ASSERT(ret == ENOMEM, NULL);
+            ret = Rposix_memalign(&p, sizeof(void*), params[i]);
+            ASSERT(ret == ENOMEM, NULL);
+        }
+    }
+    if (Raligned_malloc) {
+        p = Raligned_malloc(~max_alignment, max_alignment);
+        ASSERT(!p, NULL);
+        for (unsigned i=0; i<Harness::array_length(params); i++) {
+            p = Raligned_malloc(params[i], max_alignment);
+            ASSERT(!p, NULL);
+            ASSERT_ERRNO(errno==ENOMEM, NULL);
+            p = Raligned_malloc(params[i], sizeof(void*));
+            ASSERT(!p, NULL);
+            ASSERT_ERRNO(errno==ENOMEM, NULL);
+        }
+    }
+
+    p = Tcalloc(SIZE_MAX/2-16, SIZE_MAX/2-16);
+    ASSERT(!p, NULL);
+    ASSERT_ERRNO(errno==ENOMEM, NULL);
+    p = Tcalloc(SIZE_MAX/2, SIZE_MAX/2);
+    ASSERT(!p, NULL);
+    ASSERT_ERRNO(errno==ENOMEM, NULL);
+}
+
 HARNESS_EXPORT
 int main(int argc, char* argv[]) {
     argC=argc;
@@ -385,6 +437,7 @@ int main(int argc, char* argv[]) {
     __tbb_test_errno = true;
 #endif // _MSC_VER
 
+    CheckArgumentsOverflow();
     for( int p=MaxThread; p>=MinThread; --p ) {
         REMARK("testing with %d threads\n", p );
         for (int limit=0; limit<2; limit++) {
@@ -466,48 +519,40 @@ inline size_t choose_random_alignment() {
 
 void CMemTest::InvariantDataRealloc(bool aligned)
 {
-    size_t size, sizeMin;
-    CountErrors=0;
-    if (FullLog) REPORT("\nInvariant data by realloc....");
-    UCHAR* pchar;
-    sizeMin=size=rand()%MAX_SIZE+10;
-    pchar = aligned?
-        (UCHAR*)Taligned_realloc(NULL,size,choose_random_alignment())
-        : (UCHAR*)Trealloc(NULL,size);
-    if (NULL == pchar)
-        return;
-    for (size_t k=0; k<size; k++)
-        pchar[k]=(UCHAR)k%255+1;
-    for (int i=0; i<COUNTEXPERIMENT; i++)
-    {
-        size=rand()%MAX_SIZE+10;
-        UCHAR *pcharNew = aligned?
-            (UCHAR*)Taligned_realloc(pchar,size, choose_random_alignment())
-            : (UCHAR*)Trealloc(pchar,size);
-        if (NULL == pcharNew)
-            continue;
-        pchar = pcharNew;
-        sizeMin=size<sizeMin ? size : sizeMin;
-        for (size_t k=0; k<sizeMin; k++)
-            if (pchar[k] != (UCHAR)k%255+1)
-            {
-                CountErrors++;
-                if (ShouldReportError())
-                {
-                    REPORT("stand '%c', must stand '%c'\n",pchar[k],(UCHAR)k%255+1);
-                    REPORT("error: data changed (at %llu, SizeMin=%llu)\n",
-                           (long long unsigned)k,(long long unsigned)sizeMin);
-                }
-            }
+    const size_t MAX_ALLOC = 8*MByte;
+    Harness::FastRandom fastRandom(1);
+    size_t size = 0, start = 0;
+    char *ptr = NULL,
+        // master to create copies and compare ralloc result against it
+        *master = (char*)Tmalloc(2*MAX_ALLOC);
+
+    ASSERT(master, NULL);
+    __TBB_STATIC_ASSERT(!(2*MAX_ALLOC%sizeof(unsigned short)),
+                        "The loop below expects that 2*MAX_ALLOC contains sizeof(unsigned short)");
+    for (size_t k = 0; k<2*MAX_ALLOC; k+=sizeof(unsigned short))
+        *(unsigned short*)(master+k) = fastRandom.get();
+
+    for (int i=0; i<100; i++) {
+        // don't want sizeNew==0 here
+        const size_t sizeNew = rand() % (MAX_ALLOC-1) + 1;
+        char *ptrNew = aligned?
+            (char*)Taligned_realloc(ptr, sizeNew, choose_random_alignment())
+            : (char*)Trealloc(ptr, sizeNew);
+        ASSERT(ptrNew, NULL);
+        // check that old data not changed
+        ASSERT(!memcmp(ptrNew, master+start, min(size, sizeNew)), "broken data");
+
+        // prepare fresh data, copying them from random position in master
+        size = sizeNew;
+        ptr = ptrNew;
+        start = rand() % MAX_ALLOC;
+        memcpy(ptr, master+start, size);
     }
     if (aligned)
-        Taligned_realloc(pchar,0,choose_random_alignment());
+        Taligned_realloc(ptr, 0, choose_random_alignment());
     else
-        Trealloc(pchar,0);
-    if (CountErrors) REPORT("%s\n",strError);
-    else if (FullLog) REPORT("%s\n",strOk);
-    error_occurred |= ( CountErrors>0 ) ;
-    //REPORT("end check\n");
+        Trealloc(ptr, 0);
+    Tfree(master);
 }
 
 struct PtrSize {
@@ -552,7 +597,7 @@ void CMemTest::AddrArifm()
         if (NULL!=tmpAddr) {
             arr[i].ptr = tmpAddr;
             arr[i].size = count;
-        } else if (count==0) { // becasue realloc(..., 0) works as free
+        } else if (count==0) { // because realloc(..., 0) works as free
             arr[i].ptr = NULL;
             arr[i].size = 0;
         }
@@ -721,7 +766,7 @@ void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize, int total_threads)
                 // Technically, if malloc returns a non-NULL pointer, it is allowed to set errno anyway.
                 // However, on most systems it does not set errno.
                 bool known_issue = false;
-#if __linux__
+#if __linux__ || __ANDROID__
                 if( CHECK_ERRNO(errno==ENOMEM) ) known_issue = true;
 #endif /* __linux__ */
                 if ( CHECK_ERRNO(errno != ENOMEM+j+1) && !known_issue) {
@@ -783,19 +828,7 @@ void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize, int total_threads)
             {
                 errno = 0;
                 tmp=Trealloc(PointerList[i].Pointer,PointerList[i].Size*2);
-                if (PointerList[i].Pointer == tmp) // the same place
-                {
-                    bool known_issue = false;
-#if __linux__
-                    if( errno==ENOMEM ) known_issue = true;
-#endif /* __linux__ */
-                    if (errno != 0 && !known_issue) {
-                        CountErrors++;
-                        if (ShouldReportError()) REPORT("valid pointer returned, error: errno not kept\n");
-                    }
-                    PointerList[i].Size *= 2;
-                }
-                else if (tmp != PointerList[i].Pointer && tmp != NULL) // another place
+                if (tmp != NULL) // same or another place
                 {
                     bool known_issue = false;
 #if __linux__
@@ -809,9 +842,7 @@ void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize, int total_threads)
                     myMemset((char*)tmp + PointerList[i].Size, 0, PointerList[i].Size);
                     PointerList[i].Pointer = tmp;
                     PointerList[i].Size *= 2;
-                }
-                else if (tmp == NULL)
-                {
+                } else {
                     CountNULL++;
                     if ( CHECK_ERRNO(errno != ENOMEM) )
                     {
@@ -839,7 +870,7 @@ void CMemTest::NULLReturn(UINT MinSize, UINT MaxSize, int total_threads)
     else
         limitMem(0);
 }
-#endif /* #if __APPLE__ */
+#endif /* #if !__APPLE__ */
 
 void CMemTest::UniquePointer()
 {
@@ -944,7 +975,7 @@ void CMemTest::Free_NULL()
     for (int i=0; i<COUNTEXPERIMENT; i++)
     {
         Tfree(NULL);
-        if (errno != 0)
+        if (CHECK_ERRNO(errno))
         {
             CountErrors++;
             if (ShouldReportError()) REPORT("error is found by a call free with parameter NULL\n");
@@ -1034,15 +1065,13 @@ void CMemTest::RunAllTests(int total_threads)
     if (Raligned_realloc)
         InvariantDataRealloc(/*aligned=*/true);
     TestAlignedParameters();
+    UniquePointer();
+    AddrArifm();
 #if __APPLE__
     REPORT("Known issue: some tests are skipped on OS X*\n");
 #else
-    UniquePointer();
-    AddrArifm();
-#if !__TBB_MIC_NATIVE
     NULLReturn(1*MByte,100*MByte,total_threads);
 #endif
-#endif
     if (FullLog) REPORT("Tests for %d threads ended\n", total_threads);
 }
 
diff --git a/src/test/test_malloc_init_shutdown.cpp b/src/test/test_malloc_init_shutdown.cpp
index 6649e6e..135f9dd 100644
--- a/src/test/test_malloc_init_shutdown.cpp
+++ b/src/test/test_malloc_init_shutdown.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/scalable_allocator.h"
@@ -149,7 +141,7 @@ extern "C" void threadDtor(void*) {
 
 inline bool intersectingObjects(const void *p1, const void *p2, size_t n)
 {
-    return (size_t)labs((uintptr_t)p1 - (uintptr_t)p2) < n;
+    return p1>p2 ? ((uintptr_t)p1-(uintptr_t)p2)<n : ((uintptr_t)p2-(uintptr_t)p1)<n;
 }
 
 struct TestThread: NoAssign {
diff --git a/src/test/test_malloc_lib_unload.cpp b/src/test/test_malloc_lib_unload.cpp
index dc13a79..dba6777 100644
--- a/src/test/test_malloc_lib_unload.cpp
+++ b/src/test/test_malloc_lib_unload.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _USRDLL
@@ -37,7 +29,7 @@
 const char *globalCallMsg = "A TBB allocator function call is resolved into wrong implementation.";
 
 #if _WIN32||_WIN64
-// must be defined in DLL to linker not drop the dependence to the DLL.
+// must be defined in DLL for linker to not drop the dependence on the DLL.
 extern "C" {
     extern __declspec(dllexport) void *scalable_malloc(size_t);
     extern __declspec(dllexport) void scalable_free (void *);
@@ -55,7 +47,7 @@ extern "C" {
 }
 #endif
 
-// Those functions must not be called instead of presented in dynamic library. 
+// Those functions must not be called instead of presented in dynamic library.
 extern "C" void *scalable_malloc(size_t)
 {
     ASSERT(0, globalCallMsg);
@@ -65,7 +57,7 @@ extern "C" void scalable_free (void *)
 {
     ASSERT(0, globalCallMsg);
 }
-extern "C" void safer_scalable_free (void *, void (*)(void*)) 
+extern "C" void safer_scalable_free (void *, void (*)(void*))
 {
     ASSERT(0, globalCallMsg);
 }
@@ -74,7 +66,7 @@ extern "C" void *scalable_realloc(void *, size_t)
     ASSERT(0, globalCallMsg);
     return NULL;
 }
-extern "C" void *safer_scalable_realloc(void *, size_t, void *) 
+extern "C" void *safer_scalable_realloc(void *, size_t, void *)
 {
     ASSERT(0, globalCallMsg);
     return NULL;
@@ -113,7 +105,7 @@ extern "C" size_t scalable_msize(void *)
     ASSERT(0, globalCallMsg);
     return 0;
 }
-extern "C" size_t safer_scalable_msize (void *, size_t (*)(void*)) 
+extern "C" size_t safer_scalable_msize (void *, size_t (*)(void*))
 {
     ASSERT(0, globalCallMsg);
     return 0;
@@ -121,20 +113,21 @@ extern "C" size_t safer_scalable_msize (void *, size_t (*)(void*))
 
 #else  // _USRDLL
 
-#include <cstdlib>
+// harness_defs.h must be included before tbb_stddef.h to overcome exception-dependent
+// system headers that come from tbb_stddef.h
+#include "harness_defs.h"
 #include "tbb/tbb_stddef.h"
+#if __TBB_WIN8UI_SUPPORT || __TBB_SOURCE_DIRECTLY_INCLUDED
+#define HARNESS_SKIP_TEST 1
+#endif
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #define HARNESS_TBBMALLOC_THREAD_SHUTDOWN 1
 #include "harness.h"
 
-#if __TBB_WIN8UI_SUPPORT
-int TestMain() {
-    return Harness::Skipped;
-}
-#else /* __TBB_WIN8UI_SUPPORT */
+#if !HARNESS_SKIP_TEST
 
-#include "harness_memory.h"
 #include "harness_dynamic_libs.h"
+#include "harness_memory.h"
 
 extern "C" {
 #if _WIN32||_WIN64
@@ -177,10 +170,10 @@ struct Run {
 
         CloseLibrary(lib);
 #if _WIN32 || _WIN64
-        ASSERT(GetModuleHandle(actual_name),  
+        ASSERT(GetModuleHandle(actual_name),
                "allocator library must not be unloaded");
 #else
-        ASSERT(dlsym(RTLD_DEFAULT, "scalable_malloc"),  
+        ASSERT(dlsym(RTLD_DEFAULT, "scalable_malloc"),
                "allocator library must not be unloaded");
 #endif
     }
@@ -197,7 +190,7 @@ int TestMain () {
      */
     GetMemoryUsage();
     std::size_t memory_in_use = GetMemoryUsage();
-    ASSERT(memory_in_use == GetMemoryUsage(), 
+    ASSERT(memory_in_use == GetMemoryUsage(),
            "Memory consumption should not increase after 1st GetMemoryUsage() call");
 
     // expect that memory consumption stabilized after several runs
@@ -218,6 +211,6 @@ int TestMain () {
     return Harness::Done;
 }
 
-#endif /* __TBB_WIN8UI_SUPPORT */
+#endif /* HARNESS_SKIP_TEST */
 
 #endif // _USRDLL
diff --git a/src/test/test_malloc_overload.cpp b/src/test/test_malloc_overload.cpp
index 8996ddd..8fe361e 100644
--- a/src/test/test_malloc_overload.cpp
+++ b/src/test/test_malloc_overload.cpp
@@ -1,75 +1,82 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 
-#if (_WIN32 || _WIN64) && !(defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP)
+#if (_WIN32 || _WIN64)
 // As the test is intentionally build with /EHs-, suppress multiple VS2005's 
 // warnings like C4530: C++ exception handler used, but unwind semantics are not enabled
-// The test is skipped under Win8/UI, so do nothing.
 #if defined(_MSC_VER) && !__INTEL_COMPILER
 /* ICC 10.1 and 11.0 generates code that uses std::_Raise_handler,
    but it's only defined in libcpmt(d), which the test doesn't linked with.
  */
 #undef  _HAS_EXCEPTIONS
-#define _HAS_EXCEPTIONS 0
+#define _HAS_EXCEPTIONS _CPPUNWIND
 #endif
 // to use strdup and putenv w/o warnings
 #define _CRT_NONSTDC_NO_DEPRECATE 1
 #endif // _WIN32 || _WIN64
 
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
-// LD_PRELOAD mechanism is broken in offload
-#if __TBB_MIC_OFFLOAD
-#define HARNESS_SKIP_TEST 1
-#endif
-#include "harness.h"
 
-#if __linux__
+#include "tbb/tbb_config.h" // to get __TBB_WIN8UI_SUPPORT
+
+#if __linux__ || __APPLE__
 #define MALLOC_REPLACEMENT_AVAILABLE 1
 #elif _WIN32 && !__MINGW32__ && !__MINGW64__ && !__TBB_WIN8UI_SUPPORT
 #define MALLOC_REPLACEMENT_AVAILABLE 2
 #include "tbb/tbbmalloc_proxy.h"
 #endif
 
+// LD_PRELOAD mechanism is broken in offload, no support for MSVC 2015 in debug for now
+#if __TBB_MIC_OFFLOAD || !MALLOC_REPLACEMENT_AVAILABLE || (_MSC_VER >= 1900 && _DEBUG)
+#define HARNESS_SKIP_TEST 1
+#endif
+#include "harness.h"
+
 #if MALLOC_REPLACEMENT_AVAILABLE
 
+#if __ANDROID__
+  #include <android/api-level.h> // for __ANDROID_API__
+#endif
+
+#define __TBB_POSIX_MEMALIGN_PRESENT (__linux__ && !__ANDROID__) || __APPLE__
+#define __TBB_PVALLOC_PRESENT __linux__ && !__ANDROID__
+ // later Android doesn't have valloc or dlmalloc_usable_size
+#define __TBB_VALLOC_PRESENT (__linux__ && __ANDROID_API__<21) || __APPLE__
+#define __TBB_DLMALLOC_USABLE_SIZE_PRESENT  __ANDROID__ && __ANDROID_API__<21
+
 #include "harness_report.h"
 #include "harness_assert.h"
-#include "harness_defs.h"
 #include <stdlib.h>
 #include <string.h>
+#if !__APPLE__
 #include <malloc.h>
+#endif
 #include <stdio.h>
 #include <new>
+#if MALLOC_REPLACEMENT_AVAILABLE == 1
+#include <unistd.h> // for sysconf
+#include <dlfcn.h>
+#endif
 
 #if __linux__
-#include <dlfcn.h>
-#include <unistd.h> // for sysconf
 #include <stdint.h> // for uintptr_t
 
 extern "C" {
@@ -80,8 +87,17 @@ void __libc_free(void *ptr);
 void *__libc_memalign(size_t alignment, size_t size);
 void *__libc_pvalloc(size_t size);
 void *__libc_valloc(size_t size);
+#if __TBB_DLMALLOC_USABLE_SIZE_PRESENT
+#define malloc_usable_size(p) dlmalloc_usable_size(p)
+size_t dlmalloc_usable_size(const void *ptr);
+#endif
 }
 
+#elif __APPLE__
+
+#include <malloc/malloc.h>
+#define malloc_usable_size(p) malloc_size(p)
+
 #elif _WIN32
 #include <stddef.h>
 #if __MINGW32__
@@ -108,15 +124,7 @@ using namespace std;
 #include <string>
 #endif
 
-
-template<typename T>
-static inline T alignDown(T arg, uintptr_t alignment) {
-    return T( (uintptr_t)arg  & ~(alignment-1));
-}
-template<typename T>
-static inline bool isAligned(T arg, uintptr_t alignment) {
-    return 0==((uintptr_t)arg &  (alignment-1));
-}
+#include "../tbbmalloc/shared_utils.h"  // alignDown, alignUp, estimatedCacheLineSize
 
 /* start of code replicated from src/tbbmalloc */
 
@@ -168,31 +176,29 @@ struct LargeObjectHdr {
  * Objects of size minLargeObjectSize and larger are considered large objects.
  */
 const uintptr_t blockSize = 16*1024;
-#if __powerpc64__ || __ppc64__ || __bgp__
-const int estimatedCacheLineSize = 128;
-#else
-const int estimatedCacheLineSize =  64;
-#endif
-const uint32_t fittingAlignment = estimatedCacheLineSize;
-#define SET_FITTING_SIZE(N) ( (blockSize-2*estimatedCacheLineSize)/N ) & ~(fittingAlignment-1)
+const uint32_t fittingAlignment = rml::internal::estimatedCacheLineSize;
+#define SET_FITTING_SIZE(N) ( (blockSize-2*rml::internal::estimatedCacheLineSize)/N ) & ~(fittingAlignment-1)
 const uint32_t fittingSize5 = SET_FITTING_SIZE(2); // 8128/8064
 #undef SET_FITTING_SIZE
 const uint32_t minLargeObjectSize = fittingSize5 + 1;
 
 /* end of code replicated from src/tbbmalloc */
 
-/* Correct only for large blocks, i.e. not smaller then minLargeObjectSize */
-static bool scalableMallocLargeBlock(void *object, size_t size)
+static void scalableMallocCheckSize(void *object, size_t size)
 {
-    ASSERT(size >= minLargeObjectSize, NULL);
-#if MALLOC_REPLACEMENT_AVAILABLE == 2
+    ASSERT(object, NULL);
+    if (size >= minLargeObjectSize) {
+        LargeMemoryBlock *lmb = ((LargeObjectHdr*)object-1)->memoryBlock;
+        ASSERT(uintptr_t(lmb)<uintptr_t(((LargeObjectHdr*)object-1))
+               && lmb->objectSize >= size, NULL);
+    }
+#if MALLOC_REPLACEMENT_AVAILABLE == 1
+    ASSERT(malloc_usable_size(object) >= size, NULL);
+#elif MALLOC_REPLACEMENT_AVAILABLE == 2
     // Check that _msize works correctly
     ASSERT(_msize(object) >= size, NULL);
-    ASSERT(_aligned_msize(object,16,0) >= size, NULL);
+    ASSERT(size<8 || _aligned_msize(object,8,0) >= size, NULL);
 #endif
-
-    LargeMemoryBlock *lmb = ((LargeObjectHdr*)object-1)->memoryBlock;
-    return uintptr_t(lmb)<uintptr_t(((LargeObjectHdr*)object-1)) && lmb->objectSize==size;
 }
 
 struct BigStruct {
@@ -203,48 +209,71 @@ void CheckStdFuncOverload(void *(*malloc_p)(size_t), void *(*calloc_p)(size_t, s
                           void *(*realloc_p)(void *, size_t), void (*free_p)(void *))
 {
     void *ptr = malloc_p(minLargeObjectSize);
-    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize), NULL);
+    scalableMallocCheckSize(ptr, minLargeObjectSize);
     free(ptr);
 
     ptr = calloc_p(minLargeObjectSize, 2);
-    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize*2), NULL);
-    void *ptr1 = realloc_p(ptr, minLargeObjectSize*10);
-    ASSERT(ptr1!=NULL && scalableMallocLargeBlock(ptr1, minLargeObjectSize*10), NULL);
+    scalableMallocCheckSize(ptr, 2*minLargeObjectSize);
+    void *ptr1 = realloc_p(ptr, 10*minLargeObjectSize);
+    scalableMallocCheckSize(ptr1, 10*minLargeObjectSize);
     free_p(ptr1);
-
 }
 
 #if MALLOC_REPLACEMENT_AVAILABLE == 1
 
-void CheckUnixAlignFuncOverload(void *(*memalign_p)(size_t, size_t),
-                                void *(*valloc_p)(size_t), void (*free_p)(void*))
+void CheckMemalignFuncOverload(void *(*memalign_p)(size_t, size_t),
+                               void (*free_p)(void*))
 {
     void *ptr = memalign_p(128, 4*minLargeObjectSize);
-    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, 4*minLargeObjectSize), NULL);
+    scalableMallocCheckSize(ptr, 4*minLargeObjectSize);
+    ASSERT(is_aligned(ptr, 128), NULL);
     free_p(ptr);
+}
 
-    ptr = valloc_p(minLargeObjectSize);
-    ASSERT(ptr!=NULL && isAligned(ptr, sysconf(_SC_PAGESIZE)) &&
-           scalableMallocLargeBlock(ptr, minLargeObjectSize), NULL);
+void CheckVallocFuncOverload(void *(*valloc_p)(size_t), void (*free_p)(void*))
+{
+    void *ptr = valloc_p(minLargeObjectSize);
+    scalableMallocCheckSize(ptr, minLargeObjectSize);
+    ASSERT(is_aligned(ptr, sysconf(_SC_PAGESIZE)), NULL);
     free_p(ptr);
 }
 
-#if __TBB_PVALLOC_PRESENT
 void CheckPvalloc(void *(*pvalloc_p)(size_t), void (*free_p)(void*))
 {
-    long memoryPageSize = sysconf(_SC_PAGESIZE);
-    int sz = 1024*minLargeObjectSize;
-    void *ptr = pvalloc_p(sz);
-    ASSERT(ptr!=NULL &&                // align size up to the page size
-           scalableMallocLargeBlock(ptr, ((sz-1) | (memoryPageSize-1)) + 1), NULL);
-    free_p(ptr);
+    const long memoryPageSize = sysconf(_SC_PAGESIZE);
+    // request large object with not power-of-2 size
+    const size_t largeSz = alignUp(minLargeObjectSize, 16*1024) + 1;
+
+    for (size_t sz = 0; sz<=largeSz; sz+=largeSz) {
+        void *ptr = pvalloc_p(sz);
+        scalableMallocCheckSize(ptr, sz? alignUp(sz, memoryPageSize) : memoryPageSize);
+        ASSERT(is_aligned(ptr, memoryPageSize), NULL);
+        free_p(ptr);
+    }
 }
-#else
-#define CheckPvalloc(alloc_p, free_p) ((void)0)
-#endif
 
 #endif // MALLOC_REPLACEMENT_AVAILABLE
 
+// regression test: on OS X scalable_free() treated small aligned object,
+// placed in large block, as small block
+void CheckFreeAligned() {
+    size_t sz[] = {8, 4*1024, 16*1024, 0};
+    size_t align[] = {8, 4*1024, 16*1024, 0};
+
+    for (int s=0; sz[s]; s++)
+        for (int a=0; align[a]; a++) {
+            void *ptr = NULL;
+#if __TBB_POSIX_MEMALIGN_PRESENT
+            int ret = posix_memalign(&ptr, align[a], sz[s]);
+            ASSERT(!ret, NULL);
+#elif MALLOC_REPLACEMENT_AVAILABLE == 2
+            ptr = _aligned_malloc(sz[s], align[a]);
+#endif
+            ASSERT(is_aligned(ptr, align[a]), NULL);
+            free(ptr);
+        }
+}
+
 #if __ANDROID__
 // Workaround for an issue with strdup somehow bypassing our malloc replacement on Android.
 char *strdup(const char *str) {
@@ -255,6 +284,29 @@ char *strdup(const char *str) {
 }
 #endif
 
+#if __APPLE__
+#include <mach/mach.h>
+
+// regression test: malloc_usable_size() that was passed to zone interface
+// called system malloc_usable_size(), so for object that was not allocated
+// by tbbmalloc non-zero was returned, so such objects were passed to
+// tbbmalloc's free(), that is incorrect
+void TestZoneOverload() {
+    vm_address_t *zones;
+    unsigned zones_num;
+
+    kern_return_t ret = malloc_get_all_zones(mach_task_self(), NULL, &zones, &zones_num);
+    ASSERT(!ret && zones_num>1, NULL);
+    malloc_zone_t *sys_zone = (malloc_zone_t*)zones[1];
+    ASSERT(strcmp("tbbmalloc", malloc_get_zone_name(sys_zone)),
+                  "zone 1 expected to be not tbbmalloc");
+    void *p = malloc_zone_malloc(sys_zone, 16);
+    free(p);
+}
+#else
+#define TestZoneOverload()
+#endif
+
 int TestMain() {
     void *ptr, *ptr1;
 
@@ -292,12 +344,19 @@ int TestMain() {
 
 #if __TBB_POSIX_MEMALIGN_PRESENT
     int ret = posix_memalign(&ptr, 1024, 3*minLargeObjectSize);
-    ASSERT(0==ret && ptr!=NULL && scalableMallocLargeBlock(ptr, 3*minLargeObjectSize), NULL);
+    scalableMallocCheckSize(ptr, 3*minLargeObjectSize);
+    ASSERT(0==ret && is_aligned(ptr, 1024), NULL);
     free(ptr);
 #endif
 
-    CheckUnixAlignFuncOverload(memalign, valloc, free);
+#if __TBB_VALLOC_PRESENT
+    CheckVallocFuncOverload(valloc, free);
+#endif
+#if __TBB_PVALLOC_PRESENT
     CheckPvalloc(pvalloc, free);
+#endif
+#if __linux__
+    CheckMemalignFuncOverload(memalign, free);
 
     struct mallinfo info = mallinfo();
     // right now mallinfo initialized by zero
@@ -305,59 +364,59 @@ int TestMain() {
            && !info.hblkhd && !info.usmblks && !info.fsmblks
            && !info.uordblks && !info.fordblks && !info.keepcost, NULL);
 
-#if __linux__ && !__ANDROID__
-    // Those non-standart functions are exported by GLIBC, and might be used
-    // in conjunction with standart malloc/free. Test that we ovrload them as well.
+ #if !__ANDROID__
+    // These non-standard functions are exported by GLIBC, and might be used
+    // in conjunction with standard malloc/free. Test that we overload them as well.
     // Bionic doesn't have them.
     CheckStdFuncOverload(__libc_malloc, __libc_calloc, __libc_realloc, __libc_free);
-    CheckUnixAlignFuncOverload(__libc_memalign, __libc_valloc, __libc_free);
+    CheckMemalignFuncOverload(__libc_memalign, __libc_free);
+    CheckVallocFuncOverload(__libc_valloc, __libc_free);
     CheckPvalloc(__libc_pvalloc, __libc_free);
+ #endif
 #endif // __linux__
 
 #elif MALLOC_REPLACEMENT_AVAILABLE == 2
 
-    ptr = _aligned_malloc(minLargeObjectSize,16);
-    ASSERT(ptr!=NULL && scalableMallocLargeBlock(ptr, minLargeObjectSize), NULL);
+    ptr = _aligned_malloc(minLargeObjectSize, 16);
+    scalableMallocCheckSize(ptr, minLargeObjectSize);
+    ASSERT(is_aligned(ptr, 16), NULL);
 
     // Testing of workaround for vs "is power of 2 pow N" bug that accepts zeros
-    ptr1 = _aligned_malloc(minLargeObjectSize,0);
-    ASSERT(ptr1!=NULL, NULL);
+    ptr1 = _aligned_malloc(minLargeObjectSize, 0);
+    scalableMallocCheckSize(ptr, minLargeObjectSize);
+    ASSERT(is_aligned(ptr, sizeof(void*)), NULL);
     _aligned_free(ptr1);
 
-    ptr1 = _aligned_realloc(ptr, minLargeObjectSize*10,16);
-    ASSERT(ptr1!=NULL && scalableMallocLargeBlock(ptr1, minLargeObjectSize*10), NULL);
+    ptr1 = _aligned_realloc(ptr, minLargeObjectSize*10, 16);
+    scalableMallocCheckSize(ptr1, minLargeObjectSize*10);
+    ASSERT(is_aligned(ptr, 16), NULL);
     _aligned_free(ptr1);
 
 #endif
+    CheckFreeAligned();
 
     BigStruct *f = new BigStruct;
-    ASSERT(f!=NULL && scalableMallocLargeBlock(f, sizeof(BigStruct)), NULL);
+    scalableMallocCheckSize(f, sizeof(BigStruct));
     delete f;
 
     f = new BigStruct[10];
-    ASSERT(f!=NULL && scalableMallocLargeBlock(f, 10*sizeof(BigStruct)), NULL);
+    scalableMallocCheckSize(f, 10*sizeof(BigStruct));
     delete []f;
 
     f = new(std::nothrow) BigStruct;
-    ASSERT(f!=NULL && scalableMallocLargeBlock(f, sizeof(BigStruct)), NULL);
+    scalableMallocCheckSize(f, sizeof(BigStruct));
     delete f;
 
     f = new(std::nothrow) BigStruct[2];
-    ASSERT(f!=NULL && scalableMallocLargeBlock(f, 2*sizeof(BigStruct)), NULL);
+    scalableMallocCheckSize(f, 2*sizeof(BigStruct));
     delete []f;
 
 #if _WIN32
     std::string stdstring = "dependence on msvcpXX.dll";
     ASSERT(strcmp(stdstring.c_str(), "dependence on msvcpXX.dll") == 0, NULL);
 #endif
+    TestZoneOverload();
 
     return Harness::Done;
 }
-
-#else  /* !MALLOC_REPLACEMENT_AVAILABLE */
-#include <stdio.h>
-
-int TestMain() {
-    return Harness::Skipped;
-}
-#endif /* !MALLOC_REPLACEMENT_AVAILABLE */
+#endif /* MALLOC_REPLACEMENT_AVAILABLE */
diff --git a/src/test/test_malloc_pools.cpp b/src/test/test_malloc_pools.cpp
index dec8e04..a926f4b 100644
--- a/src/test/test_malloc_pools.cpp
+++ b/src/test/test_malloc_pools.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/scalable_allocator.h"
@@ -69,10 +61,11 @@ static tbb::atomic<int> liveRegions;
 
 static void *getMallocMem(intptr_t /*pool_id*/, size_t &bytes)
 {
-    void *rawPtr = malloc(bytes+sizeof(MallocPoolHeader));
+    void *rawPtr = malloc(bytes+sizeof(MallocPoolHeader)+1);
     if (!rawPtr)
         return NULL;
-    void *ret = (void *)((uintptr_t)rawPtr+sizeof(MallocPoolHeader));
+    // +1 to check working with unaligned space
+    void *ret = (void *)((uintptr_t)rawPtr+sizeof(MallocPoolHeader)+1);
 
     MallocPoolHeader *hdr = (MallocPoolHeader*)ret-1;
     hdr->rawPtr = rawPtr;
@@ -316,29 +309,60 @@ static void *fixedBufGetMem(intptr_t /*pool_id*/, size_t &bytes)
     return buf;
 }
 
+class FixedPoolRun: NoAssign {
+    Harness::SpinBarrier *startB;
+    rml::MemoryPool *pool;
+    size_t reqSize;
+public:
+    FixedPoolRun(Harness::SpinBarrier *b, rml::MemoryPool *p, size_t sz) :
+        startB(b), pool(p), reqSize(sz) {}
+    void operator()( int /*id*/ ) const {
+        const int ITERS = 10000;
+        startB->wait();
+        for (int i=0; i<ITERS; i++) {
+            void *o = pool_malloc(pool, reqSize);
+            ASSERT(o, NULL);
+            pool_free(pool, o);
+        }
+    }
+};
+
 void TestFixedBufferPool()
 {
-    void *ptrs[7];
+    const int ITERS = 7;
+    const size_t MAX_OBJECT = 7*1024*1024;
+    void *ptrs[ITERS];
     rml::MemPoolPolicy pol(fixedBufGetMem, NULL, 0, /*fixedSizePool=*/true,
                            /*keepMemTillDestroy=*/false);
     rml::MemoryPool *pool;
 
     pool_create_v1(0, &pol, &pool);
-    void *largeObj = pool_malloc(pool, 7*1024*1024);
+    void *largeObj = pool_malloc(pool, MAX_OBJECT);
     ASSERT(largeObj, NULL);
     pool_free(pool, largeObj);
 
-    for (int i=0; i<7; i++) {
-        ptrs[i] = pool_malloc(pool, 1024*1024);
+    largeObj = pool_malloc(pool, MAX_OBJECT);
+    ASSERT(largeObj, NULL);
+    pool_free(pool, largeObj);
+
+    for (int i=0; i<ITERS; i++) {
+        ptrs[i] = pool_malloc(pool, MAX_OBJECT/ITERS);
         ASSERT(ptrs[i], NULL);
     }
-    for (int i=0; i<7; i++)
+    for (int i=0; i<ITERS; i++)
         pool_free(pool, ptrs[i]);
 
-    largeObj = pool_malloc(pool, 7*1024*1024);
+    largeObj = pool_malloc(pool, MAX_OBJECT);
     ASSERT(largeObj, NULL);
     pool_free(pool, largeObj);
 
+    // each thread asks for an MAX_OBJECT/p/2 object,
+    // /2 is to cover fragmentation
+    for (int p=MinThread; p<=MaxThread; p++) {
+        Harness::SpinBarrier startB(p);
+        NativeParallelFor( p, FixedPoolRun(&startB, pool,
+                                           MAX_OBJECT/p/2) );
+    }
     pool_destroy(pool);
 }
 
@@ -357,7 +381,7 @@ static int putGranMem(intptr_t /*pool_id*/, void *ptr, size_t bytes)
     return 0;
 }
 
-static void TestPoolGranularity()
+void TestPoolGranularity()
 {
     rml::MemPoolPolicy pol(getGranMem, putGranMem);
     const size_t grans[] = {4*1024, 2*1024*1024, 6*1024*1024, 10*1024*1024};
@@ -391,7 +415,7 @@ static int putMemPolicy(intptr_t /*pool_id*/, void *ptr, size_t /*bytes*/)
     return 0;
 }
 
-static void TestPoolKeepTillDestroy()
+void TestPoolKeepTillDestroy()
 {
     const int ITERS = 50*1024;
     void *ptrs[2*ITERS+1];
@@ -445,7 +469,7 @@ static bool memEqual(char *buf, size_t size, int val)
     return memEq;
 }
 
-static void TestEntries()
+void TestEntries()
 {
     const int SZ = 4;
     const int ALGN = 4;
@@ -481,7 +505,7 @@ static void TestEntries()
     pool_destroy(pool);
 }
 
-static void TestPoolCreation()
+void TestPoolCreation()
 {
     using namespace rml;
 
diff --git a/src/test/test_malloc_pure_c.c b/src/test/test_malloc_pure_c.c
index 1d940b6..6043db9 100644
--- a/src/test/test_malloc_pure_c.c
+++ b/src/test/test_malloc_pure_c.c
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifdef __cplusplus
@@ -48,13 +40,13 @@ const int ExpectedResultHugePages = TBBMALLOC_NO_EFFECT;
 #endif
 
 #if __TBB_SOURCE_DIRECTLY_INCLUDED
-/* test that it's possible to call allocation function from atexit
-   after mallocProcessShutdownNotification() called */
-void __TBB_mallocProcessShutdownNotification();
+#include "../tbbmalloc/tbbmalloc_internal_api.h"
 #else
 #define __TBB_mallocProcessShutdownNotification()
 #endif
 
+/* test that it's possible to call allocation function from atexit
+   after mallocProcessShutdownNotification() called */
 static void MyExit(void) {
     void *p = scalable_malloc(32);
     assert(p);
@@ -78,6 +70,10 @@ int main(void) {
         scalable_free(p1);
     }
     /* note that huge pages (if supported) are still enabled at this point */
+#if __TBB_SOURCE_DIRECTLY_INCLUDED
+    assert(TBBMALLOC_OK ==
+           scalable_allocation_mode(TBBMALLOC_INTERNAL_SOURCE_INCLUDED, 0));
+#endif
 
     for( i=0; i<=1<<16; ++i) {
         p1 = scalable_malloc(i);
diff --git a/src/test/test_malloc_regression.cpp b/src/test/test_malloc_regression.cpp
index f81aa51..b9cb0fd 100644
--- a/src/test/test_malloc_regression.cpp
+++ b/src/test/test_malloc_regression.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
@@ -127,6 +119,50 @@ bool TestReallocMsize(size_t startSz) {
     return passed;
 }
 
+// regression test against incorrect work of msize/realloc
+// for aligned objects
+void TestAlignedMsize()
+{
+    const int NUM = 4;
+    char *p[NUM];
+    size_t objSizes[NUM];
+    size_t allocSz[] = {4, 8, 512, 2*1024, 4*1024, 8*1024, 16*1024, 0};
+    size_t align[] = {8, 512, 2*1024, 4*1024, 8*1024, 16*1024, 0};
+
+    for (int a=0; align[a]; a++)
+        for (int s=0; allocSz[s]; s++) {
+            for (int i=0; i<NUM; i++) {
+                p[i] = (char*)scalable_aligned_malloc(allocSz[s], align[a]);
+                ASSERT(is_aligned(p[i], align[a]), NULL);
+            }
+
+            for (int i=0; i<NUM; i++) {
+                objSizes[i] = scalable_msize(p[i]);
+                ASSERT(objSizes[i] >= allocSz[s],
+                       "allocated size must be not less than requested");
+                memset(p[i], i, objSizes[i]);
+            }
+            for (int i=0; i<NUM; i++) {
+                for (unsigned j=0; j<objSizes[i]; j++)
+                    ASSERT(((char*)p[i])[j] == i, "Error: data broken");
+            }
+
+            for (int i=0; i<NUM; i++) {
+                p[i] = (char*)scalable_aligned_realloc(p[i], 2*allocSz[s], align[a]);
+                ASSERT(is_aligned(p[i], align[a]), NULL);
+                memset((char*)p[i]+allocSz[s], i+1, allocSz[s]);
+            }
+            for (int i=0; i<NUM; i++) {
+                for (unsigned j=0; j<allocSz[s]; j++)
+                    ASSERT(((char*)p[i])[j] == i, "Error: data broken");
+                for (size_t j=allocSz[s]; j<2*allocSz[s]; j++)
+                    ASSERT(((char*)p[i])[j] == i+1, "Error: data broken");
+            }
+            for (int i=0; i<NUM; i++)
+                scalable_free(p[i]);
+        }
+}
+
 /*--------------------------------------------------------------------*/
 // The main test function
 
@@ -147,5 +183,8 @@ int TestMain () {
         passed &= TestReallocMsize(a);
 
     ASSERT( passed, "Test failed" );
+
+    TestAlignedMsize();
+
     return Harness::Done;
 }
diff --git a/src/test/test_malloc_used_by_lib.cpp b/src/test/test_malloc_used_by_lib.cpp
index 149fb16..0347578 100644
--- a/src/test/test_malloc_used_by_lib.cpp
+++ b/src/test/test_malloc_used_by_lib.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _USRDLL
@@ -57,9 +49,6 @@ extern "C" void callDll()
     }
     for (int i=0; i<NUM; i++)
         scalable_free(ptrs[i]);
-#if __TBB_SOURCE_DIRECTLY_INCLUDED && (_WIN32||_WIN64)
-    __TBB_mallocThreadShutdownNotification();
-#endif
 }
 
 #if __TBB_SOURCE_DIRECTLY_INCLUDED
@@ -77,19 +66,19 @@ static RegisterProcessShutdownNotification reg;
 #else // _USRDLL
 
 #define __TBB_NO_IMPLICIT_LINKAGE 1
+#include "harness_dynamic_libs.h"
+#if __TBB_WIN8UI_SUPPORT
+// FIXME: fix the test to support Windows* 8 Store Apps mode.
+#define HARNESS_SKIP_TEST 1
+#endif
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #include "harness.h"
-#if __TBB_WIN8UI_SUPPORT	
-// FIXME: fix the test to support New Windows *8 Store Apps mode.
-int TestMain() {
-    return Harness::Skipped;
-}
-#else /* __TBB_WIN8UI_SUPPORT	 */
+
+#if !HARNESS_SKIP_TEST
 
 #include "harness_memory.h"
 #include "harness_tbb_independence.h"
 #include "harness_barrier.h"
-#include "harness_dynamic_libs.h"
 
 class UseDll {
     Harness::FunctionAddress run;
@@ -178,5 +167,5 @@ int TestMain () {
     return Harness::Done;
 }
 
+#endif /* HARNESS_SKIP_TEST */
 #endif // _USRDLL
-#endif /* __TBB_WIN8UI_SUPPORT	 */
diff --git a/src/test/test_malloc_whitebox.cpp b/src/test/test_malloc_whitebox.cpp
index 7ed0b62..71b2f73 100644
--- a/src/test/test_malloc_whitebox.cpp
+++ b/src/test/test_malloc_whitebox.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /* to prevent loading dynamic TBBmalloc at startup, that is not needed
@@ -34,6 +26,10 @@
 // iff __STDC_LIMIT_MACROS pre-defined
 #define __STDC_LIMIT_MACROS 1
 
+// To disable exceptions in <vector> and <list> on Windows*
+#undef _HAS_EXCEPTIONS
+#define _HAS_EXCEPTIONS _CPPUNWIND
+
 #define HARNESS_TBBMALLOC_THREAD_SHUTDOWN 1
 
 #include "harness.h"
@@ -55,6 +51,11 @@
 #undef private
 #include "../tbbmalloc/backend.cpp"
 #include "../tbbmalloc/backref.cpp"
+
+namespace tbbmalloc_whitebox {
+    size_t locGetProcessed = 0;
+    size_t locPutProcessed = 0;
+}
 #include "../tbbmalloc/large_objects.cpp"
 #include "../tbbmalloc/tbbmalloc.cpp"
 
@@ -236,12 +237,6 @@ public:
             scalable_free(objsSmall[i]);
             scalable_free(objsLarge[i]);
         }
-#ifdef USE_WINTHREAD
-        // Under Windows DllMain is used for mallocThreadShutdownNotification
-        // calling. As DllMain is not used during whitebox testing,
-        // we have to call the callback manually.
-        __TBB_mallocThreadShutdownNotification();
-#endif
     }
 };
 
@@ -453,7 +448,7 @@ void TestPools() {
     ptr = pool_malloc(fixedPool, minLargeObjectSize);
     ASSERT(ptr, "Memory was not allocated");
     memset(ptr, minLargeObjectSize, minLargeObjectSize);
-    pool_malloc(fixedPool, 10*minLargeObjectSize); // no leak for unsuccesful allocations
+    pool_malloc(fixedPool, 10*minLargeObjectSize); // no leak for unsuccessful allocations
     pool_free(fixedPool, smallObj);
     pool_free(fixedPool, largeObj);
 
@@ -563,9 +558,9 @@ void TestObjectRecognition() {
                     falseBlock->backRefIdx.largeObj = largeObj;
                     headerLO->backRefIdx.largeObj = largeObj;
 
-                    obtainedSize = safer_scalable_msize(falseSO, NULL);
+                    obtainedSize = __TBB_malloc_safer_msize(falseSO, NULL);
                     ASSERT(obtainedSize==0, "Incorrect pointer accepted");
-                    obtainedSize = safer_scalable_msize(falseLO, NULL);
+                    obtainedSize = __TBB_malloc_safer_msize(falseLO, NULL);
                     ASSERT(obtainedSize==0, "Incorrect pointer accepted");
                 }
             }
@@ -581,11 +576,11 @@ void TestObjectRecognition() {
         }
     }
     char *smallPtr = (char*)scalable_malloc(falseObjectSize);
-    obtainedSize = safer_scalable_msize(smallPtr, NULL);
+    obtainedSize = __TBB_malloc_safer_msize(smallPtr, NULL);
     ASSERT(obtainedSize==getObjectSize(falseObjectSize), "Correct pointer not accepted?");
     scalable_free(smallPtr);
 
-    obtainedSize = safer_scalable_msize(mem, NULL);
+    obtainedSize = __TBB_malloc_safer_msize(mem, NULL);
     ASSERT(obtainedSize>=2*slabSize, "Correct pointer not accepted?");
     scalable_free(mem);
     scalable_free(bufferLOH);
@@ -636,6 +631,18 @@ void TestBackend()
     ASSERT(block, "Memory was not allocated");
     backend->putSlabBlock(block);
 
+    // Checks if the backend increases and decreases the amount of allocated memory when memory is allocated.
+    const size_t memSize0 = backend->getTotalMemSize();
+    LargeMemoryBlock *lmb = backend->getLargeBlock(4*MByte);
+    ASSERT( lmb, ASSERT_TEXT );
+
+    const size_t memSize1 = backend->getTotalMemSize();
+    ASSERT( (intptr_t)(memSize1-memSize0) >= 4*MByte, "The backend has not increased the amount of using memory." );
+
+    backend->putLargeBlock(lmb);
+    const size_t memSize2 = backend->getTotalMemSize();
+    ASSERT( memSize2 == memSize0, "The backend has not decreased the amount of using memory." );
+
     pool_destroy(mPool);
 }
 
@@ -671,27 +678,35 @@ size_t getMemSize()
 }
 
 class CheckNotCached {
-    size_t memSize;
+    static size_t memSize;
 public:
-    CheckNotCached(size_t memSize) : memSize(memSize) {}
     void operator() () const {
         int res = scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, 1);
         ASSERT(res == TBBMALLOC_OK, NULL);
-        ASSERT(getMemSize() == memSize, NULL);
+        if (memSize==(size_t)-1) {
+            memSize = getMemSize();
+        } else {
+            ASSERT(getMemSize() == memSize, NULL);
+            memSize=(size_t)-1;
+        }
     }
 };
 
+size_t CheckNotCached::memSize = (size_t)-1;
+
 class RunTestHeapLimit: public SimpleBarrier {
-    size_t memSize;
 public:
-    RunTestHeapLimit(size_t memSize) : memSize(memSize) {}
-
     void operator()( int /*mynum*/ ) const {
-        CheckNotCached checkNotCached(memSize);
-
+        // Provoke bootstrap heap initialization before recording memory size.
+        // NOTE: The initialization should be processed only with a "large"
+        // object. Since the "small" object allocation lead to blocking of a
+        // slab as an active block and it is impossible to release it with
+        // foreign thread.
+        scalable_free(scalable_malloc(minLargeObjectSize));
+        barrier.wait(CheckNotCached());
         for (size_t n = minLargeObjectSize; n < 5*1024*1024; n += 128*1024)
             scalable_free(scalable_malloc(n));
-        barrier.wait(checkNotCached);
+        barrier.wait(CheckNotCached());
     }
 };
 
@@ -701,7 +716,7 @@ void TestHeapLimit()
     // tiny limit to stop caching
     int res = scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, 1);
     ASSERT(res == TBBMALLOC_OK, NULL);
-     // provoke bootstrap heap initialization before recording memory size
+     // Provoke bootstrap heap initialization before recording memory size.
     scalable_free(scalable_malloc(8));
     size_t n, sizeBefore = getMemSize();
 
@@ -718,18 +733,10 @@ void TestHeapLimit()
     }
     ASSERT(n < 10*1024*1024, "scalable_malloc doesn't provoke OS request for memory, "
            "is some internal cache still used?");
-    // estimate number of objects in single bootstrap block
-    int objInBootstrapHeapBlock = (slabSize-2*estimatedCacheLineSize)/sizeof(TLSData);
-    // When we have more threads than objects in bootstrap heap block,
-    // additional block can be allocated from a region that is different
-    // from the original region. Thus even after all caches cleaned,
-    // we unable to reach sizeBefore.
-    ASSERT_WARNING(MaxThread<=objInBootstrapHeapBlock,
-        "The test might fail for larger thread number, "
-        "as bootstrap heap is not released till size checking.");
+
     for( int p=MaxThread; p>=MinThread; --p ) {
         RunTestHeapLimit::initBarrier( p );
-        NativeParallelFor( p, RunTestHeapLimit(sizeBefore) );
+        NativeParallelFor( p, RunTestHeapLimit() );
     }
     // it's try to match limit as well as set limit, so call here
     res = scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, 1);
@@ -769,7 +776,7 @@ struct TestCleanAllBuffersDeallocate : public SimpleBarrier {
 };
 
 // The idea is to allocate a set of objects and then deallocate them in random
-// order in parallel to force occuring conflicts in backend during coalescing.
+// order in parallel to force occurring conflicts in backend during coalescing.
 // Thus if the backend does not check the queue of postponed coalescing
 // requests it will not be able to unmap all memory and a memory leak will be
 // observed.
@@ -786,9 +793,10 @@ void TestCleanAllBuffers() {
     deallocs_counter = 0;
     TestCleanAllBuffersDeallocate::initBarrier(num_threads);
     NativeParallelFor(num_threads, TestCleanAllBuffersDeallocate());
+    // TODO: reproduce the conditions for bug reproduction more reliably
     if ( defaultMemPool->extMemPool.backend.coalescQ.blocksToFree == NULL )
-        REPORT( "Warning: The queue of postponed coalescing requests is empty. Unable to create the condition for bug reproduction.\n" );
-    ASSERT( scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS,0) == TBBMALLOC_OK, "The cleanup request has not cleaned anithing." );
+        REMARK( "Warning: The queue of postponed coalescing requests is empty. Unable to create the condition for bug reproduction.\n" );
+    ASSERT( scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS,0) == TBBMALLOC_OK, "The cleanup request has not cleaned anything." );
     size_t memory_in_use_after = getMemSize();
 
     REMARK( "memory_in_use_before = %ld\nmemory_in_use_after = %ld\n", memory_in_use_before, memory_in_use_after );
@@ -797,6 +805,306 @@ void TestCleanAllBuffers() {
     ASSERT( memory_leak == 0, "The backend has not processed the queue of postponed coalescing requests during cleanup." );
 }
 /*---------------------------------------------------------------------------*/
+/*------------------------- Large Object Cache tests ------------------------*/
+#if _MSC_VER==1600 || _MSC_VER==1500
+  // ignore C4275: non dll-interface class 'stdext::exception' used as
+  // base for dll-interface class 'std::bad_cast'
+  #pragma warning (disable: 4275)
+#endif
+#include <vector>
+#include <list>
+
+// default constructor of CacheBin
+template<typename Props>
+rml::internal::LargeObjectCacheImpl<Props>::CacheBin::CacheBin() {}
+
+template<typename Props>
+class CacheBinModel {
+
+    typedef typename rml::internal::LargeObjectCacheImpl<Props>::CacheBin CacheBinType;
+
+    // The emulated cache bin.
+    CacheBinType cacheBinModel;
+    // The reference to real cahce bin inside the large object cache.
+    CacheBinType &cacheBin;
+
+    const size_t size;
+
+    // save only current time
+    std::list<uintptr_t> objects;
+
+    void doCleanup() {
+        if ( cacheBinModel.cachedSize > Props::TooLargeFactor*cacheBinModel.usedSize ) tooLargeLOC++;
+        else tooLargeLOC = 0;
+
+        if (tooLargeLOC>3 && cacheBinModel.ageThreshold)
+            cacheBinModel.ageThreshold = (cacheBinModel.ageThreshold + cacheBinModel.meanHitRange)/2;
+
+        uintptr_t currTime = cacheCurrTime;
+        while (!objects.empty() && (intptr_t)(currTime - objects.front()) > cacheBinModel.ageThreshold) {
+            cacheBinModel.cachedSize -= size;
+            cacheBinModel.lastCleanedAge = objects.front();
+            objects.pop_front();
+        }
+
+        cacheBinModel.oldest = objects.empty() ? 0 : objects.front();
+    }
+
+public:
+    CacheBinModel(CacheBinType &_cacheBin, size_t allocSize) : cacheBin(_cacheBin), size(allocSize) {
+        cacheBinModel.oldest = cacheBin.oldest;
+        cacheBinModel.lastCleanedAge = cacheBin.lastCleanedAge;
+        cacheBinModel.ageThreshold = cacheBin.ageThreshold;
+        cacheBinModel.usedSize = cacheBin.usedSize;
+        cacheBinModel.cachedSize = cacheBin.cachedSize;
+        cacheBinModel.meanHitRange = cacheBin.meanHitRange;
+        cacheBinModel.lastGet = cacheBin.lastGet;
+    }
+    void get() {
+        uintptr_t currTime = ++cacheCurrTime;
+
+        if ( objects.empty() ) {
+            const uintptr_t sinceLastGet = currTime - cacheBinModel.lastGet;
+            if ( ( cacheBinModel.ageThreshold && sinceLastGet > Props::LongWaitFactor*cacheBinModel.ageThreshold ) ||
+                 ( cacheBinModel.lastCleanedAge && sinceLastGet > Props::LongWaitFactor*(cacheBinModel.lastCleanedAge - cacheBinModel.lastGet) ) )
+                cacheBinModel.lastCleanedAge = cacheBinModel.ageThreshold = 0;
+
+            if (cacheBinModel.lastCleanedAge)
+                cacheBinModel.ageThreshold = Props::OnMissFactor*(currTime - cacheBinModel.lastCleanedAge);
+        } else {
+            uintptr_t obj_age = objects.back();
+            objects.pop_back();
+            if ( objects.empty() ) cacheBinModel.oldest = 0;
+
+            intptr_t hitRange = currTime - obj_age;
+            cacheBinModel.meanHitRange = cacheBinModel.meanHitRange? (cacheBinModel.meanHitRange + hitRange)/2 : hitRange;
+
+            cacheBinModel.cachedSize -= size;
+        }
+
+        cacheBinModel.usedSize += size;
+        cacheBinModel.lastGet = currTime;
+
+        if ( currTime % rml::internal::cacheCleanupFreq == 0 ) doCleanup();
+    }
+
+    void putList( int num ) {
+        uintptr_t currTime = cacheCurrTime;
+        cacheCurrTime += num;
+
+        cacheBinModel.usedSize -= num*size;
+
+        bool cleanUpNeeded = false;
+        if ( !cacheBinModel.lastCleanedAge ) {
+            cacheBinModel.lastCleanedAge = ++currTime;
+            cleanUpNeeded |= currTime % rml::internal::cacheCleanupFreq == 0;
+            num--;
+        }
+
+        for ( int i=1; i<=num; ++i ) {
+            currTime+=1;
+            cleanUpNeeded |= currTime % rml::internal::cacheCleanupFreq == 0;
+            if ( objects.empty() )
+                cacheBinModel.oldest = currTime;
+            objects.push_back(currTime);
+        }
+
+        cacheBinModel.cachedSize += num*size;
+
+        if ( cleanUpNeeded ) doCleanup();
+    }
+
+    void check() {
+        ASSERT(cacheBinModel.oldest == cacheBin.oldest, ASSERT_TEXT);
+        ASSERT(cacheBinModel.lastCleanedAge == cacheBin.lastCleanedAge, ASSERT_TEXT);
+        ASSERT(cacheBinModel.ageThreshold == cacheBin.ageThreshold, ASSERT_TEXT);
+        ASSERT(cacheBinModel.usedSize == cacheBin.usedSize, ASSERT_TEXT);
+        ASSERT(cacheBinModel.cachedSize == cacheBin.cachedSize, ASSERT_TEXT);
+        ASSERT(cacheBinModel.meanHitRange == cacheBin.meanHitRange, ASSERT_TEXT);
+        ASSERT(cacheBinModel.lastGet == cacheBin.lastGet, ASSERT_TEXT);
+    }
+
+    static uintptr_t cacheCurrTime;
+    static intptr_t tooLargeLOC;
+};
+
+template<typename Props> uintptr_t CacheBinModel<Props>::cacheCurrTime;
+template<typename Props> intptr_t CacheBinModel<Props>::tooLargeLOC;
+
+template <typename Scenarion>
+void LOCModelTester() {
+    defaultMemPool->extMemPool.loc.cleanAll();
+    defaultMemPool->extMemPool.loc.reset();
+
+    const size_t size = 16 * 1024;
+    const size_t headersSize = sizeof(rml::internal::LargeMemoryBlock)+sizeof(rml::internal::LargeObjectHdr);
+    const size_t allocationSize = LargeObjectCache::alignToBin(size+headersSize+rml::internal::largeObjectAlignment);
+    const int binIdx = defaultMemPool->extMemPool.loc.largeCache.sizeToIdx( allocationSize );
+
+    CacheBinModel<rml::internal::LargeObjectCache::LargeCacheTypeProps>::cacheCurrTime = defaultMemPool->extMemPool.loc.cacheCurrTime;
+    CacheBinModel<rml::internal::LargeObjectCache::LargeCacheTypeProps>::tooLargeLOC = defaultMemPool->extMemPool.loc.largeCache.tooLargeLOC;
+    CacheBinModel<rml::internal::LargeObjectCache::LargeCacheTypeProps> cacheBinModel(defaultMemPool->extMemPool.loc.largeCache.bin[binIdx], allocationSize);
+
+    Scenarion scen;
+    for (rml::internal::LargeMemoryBlock *lmb = scen.next(); (intptr_t)lmb != (intptr_t)-1; lmb = scen.next()) {
+        if ( lmb ) {
+            int num=1;
+            for (rml::internal::LargeMemoryBlock *curr = lmb; curr->next; curr=curr->next) num+=1;
+            defaultMemPool->extMemPool.freeLargeObject(lmb);
+            cacheBinModel.putList(num);
+        } else {
+            scen.saveLmb(defaultMemPool->extMemPool.mallocLargeObject(allocationSize));
+            cacheBinModel.get();
+        }
+
+        cacheBinModel.check();
+    }
+}
+
+class TestBootstrap {
+    bool allocating;
+    std::vector<rml::internal::LargeMemoryBlock*> lmbArray;
+public:
+    TestBootstrap() : allocating(true) {}
+
+    rml::internal::LargeMemoryBlock* next() {
+        if ( allocating )
+            return NULL;
+        if ( !lmbArray.empty() ) {
+            rml::internal::LargeMemoryBlock *ret = lmbArray.back();
+            lmbArray.pop_back();
+            return ret;
+        }
+        return (rml::internal::LargeMemoryBlock*)-1;
+    }
+
+    void saveLmb( rml::internal::LargeMemoryBlock *lmb ) {
+        lmb->next = NULL;
+        lmbArray.push_back(lmb);
+        if ( lmbArray.size() == 1000 ) allocating = false;
+    }
+};
+
+class TestRandom {
+    std::vector<rml::internal::LargeMemoryBlock*> lmbArray;
+    int numOps;
+public:
+    TestRandom() : numOps(100000) {
+        srand(1234);
+    }
+
+    rml::internal::LargeMemoryBlock* next() {
+        if ( numOps-- ) {
+            if ( lmbArray.empty() || rand() / (RAND_MAX>>1) == 0 )
+                return NULL;
+            size_t ind = rand()%lmbArray.size();
+            if ( ind != lmbArray.size()-1 ) std::swap(lmbArray[ind],lmbArray[lmbArray.size()-1]);
+            rml::internal::LargeMemoryBlock *lmb = lmbArray.back();
+            lmbArray.pop_back();
+            return lmb;
+        }
+        return (rml::internal::LargeMemoryBlock*)-1;
+    }
+
+    void saveLmb( rml::internal::LargeMemoryBlock *lmb ) {
+        lmb->next = NULL;
+        lmbArray.push_back(lmb);
+    }
+};
+
+class TestCollapsingMallocFree : public SimpleBarrier {
+public:
+    static const int NUM_ALLOCS = 100000;
+    const int num_threads;
+
+    TestCollapsingMallocFree( int _num_threads ) : num_threads(_num_threads) {
+        initBarrier( num_threads );
+    }
+
+    void operator() ( int ) const {
+        const size_t size = 16 * 1024;
+        const size_t headersSize = sizeof(rml::internal::LargeMemoryBlock)+sizeof(rml::internal::LargeObjectHdr);
+        const size_t allocationSize = LargeObjectCache::alignToBin(size+headersSize+rml::internal::largeObjectAlignment);
+
+        barrier.wait();
+        for ( int i=0; i<NUM_ALLOCS; ++i ) {
+            defaultMemPool->extMemPool.freeLargeObject(
+                    defaultMemPool->extMemPool.mallocLargeObject(allocationSize) );
+        }
+    }
+
+    void check() {
+        ASSERT( tbbmalloc_whitebox::locGetProcessed == tbbmalloc_whitebox::locPutProcessed, ASSERT_TEXT );
+        ASSERT( tbbmalloc_whitebox::locGetProcessed < num_threads*NUM_ALLOCS, "No one Malloc/Free pair was collapsed." );
+    }
+};
+
+class TestCollapsingBootstrap : public SimpleBarrier {
+    class CheckNumAllocs {
+        const int num_threads;
+    public:
+        CheckNumAllocs( int _num_threads ) : num_threads(_num_threads) {}
+        void operator()() const {
+            ASSERT( tbbmalloc_whitebox::locGetProcessed == num_threads*NUM_ALLOCS, ASSERT_TEXT );
+            ASSERT( tbbmalloc_whitebox::locPutProcessed == 0, ASSERT_TEXT );
+        }
+    };
+public:
+    static const int NUM_ALLOCS = 1000;
+    const int num_threads;
+
+    TestCollapsingBootstrap( int _num_threads ) : num_threads(_num_threads) {
+        initBarrier( num_threads );
+    }
+
+    void operator() ( int ) const {
+        const size_t size = 16 * 1024;
+        size_t headersSize = sizeof(rml::internal::LargeMemoryBlock)+sizeof(rml::internal::LargeObjectHdr);
+        size_t allocationSize = LargeObjectCache::alignToBin(size+headersSize+rml::internal::largeObjectAlignment);
+
+        barrier.wait();
+        rml::internal::LargeMemoryBlock *lmbArray[NUM_ALLOCS];
+        for ( int i=0; i<NUM_ALLOCS; ++i )
+            lmbArray[i] = defaultMemPool->extMemPool.mallocLargeObject(allocationSize);
+
+        barrier.wait(CheckNumAllocs(num_threads));
+        for ( int i=0; i<NUM_ALLOCS; ++i )
+            defaultMemPool->extMemPool.freeLargeObject( lmbArray[i] );
+    }
+
+    void check() {
+        ASSERT( tbbmalloc_whitebox::locGetProcessed == tbbmalloc_whitebox::locPutProcessed, ASSERT_TEXT );
+        ASSERT( tbbmalloc_whitebox::locGetProcessed == num_threads*NUM_ALLOCS, ASSERT_TEXT );
+    }
+};
+
+template <typename Scenario>
+void LOCCollapsingTester( int num_threads ) {
+    tbbmalloc_whitebox::locGetProcessed = 0;
+    tbbmalloc_whitebox::locPutProcessed = 0;
+    defaultMemPool->extMemPool.loc.cleanAll();
+    defaultMemPool->extMemPool.loc.reset();
+
+    Scenario scen(num_threads);
+    NativeParallelFor(num_threads, scen);
+
+    scen.check();
+}
+
+void TestLOC() {
+    LOCModelTester<TestBootstrap>();
+    LOCModelTester<TestRandom>();
+
+    const int num_threads = 16;
+    LOCCollapsingTester<TestCollapsingBootstrap>( num_threads );
+    if ( num_threads > 1 ) {
+        REMARK( "num_threads = %d\n", num_threads );
+        LOCCollapsingTester<TestCollapsingMallocFree>( num_threads );
+    } else {
+        REPORT( "Warning: concurrency is too low for TestMallocFreeCollapsing ( num_threads = %d )\n", num_threads );
+    }
+}
+/*---------------------------------------------------------------------------*/
 
 int TestMain () {
     scalable_allocation_mode(USE_HUGE_PAGES, 0);
@@ -825,5 +1133,6 @@ int TestMain () {
     TestBitMask();
     TestHeapLimit();
     TestCleanAllBuffers();
+    TestLOC();
     return Harness::Done;
 }
diff --git a/src/test/test_model_plugin.cpp b/src/test/test_model_plugin.cpp
index 2e3ba01..9ddb43b 100644
--- a/src/test/test_model_plugin.cpp
+++ b/src/test/test_model_plugin.cpp
@@ -1,35 +1,261 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 4
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
+// Need to include "tbb/tbb_config.h" to obtain the definition of __TBB_DEFINE_MIC.
 #include "tbb/tbb_config.h"
 
+#if !__TBB_TODO || __TBB_WIN8UI_SUPPORT
+#define HARNESS_NO_PARSE_COMMAND_LINE 1
+#include "harness.h"
+int TestMain() {
+    return Harness::Skipped;
+}
+#else /* __TBB_TODO */
+// TODO: There are a lot of problems with unloading DLL which uses TBB with automatic initialization
+
+#if __TBB_DEFINE_MIC
+
+#ifndef _USRDLL
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #include "harness.h"
 int TestMain() {
     return Harness::Skipped;
 }
+#endif
+
+#else /* !__MIC__ */
+
+#if _WIN32 || _WIN64
+#include "tbb/machine/windows_api.h"
+#else
+#include <dlfcn.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#if !TBB_USE_EXCEPTIONS && _MSC_VER
+    // Suppress "C++ exception handler used, but unwind semantics are not enabled" warning in STL headers
+    #pragma warning (push)
+    #pragma warning (disable: 4530)
+#endif
+
+#include <stdexcept>
+
+#if !TBB_USE_EXCEPTIONS && _MSC_VER
+    #pragma warning (pop)
+#endif
+
+#if TBB_USE_EXCEPTIONS
+    #include "harness_report.h"
+#endif
+
+#ifdef _USRDLL
+#include "tbb/task_scheduler_init.h"
+
+class CModel {
+public:
+    CModel(void) {};
+    static tbb::task_scheduler_init tbb_init;
+
+    void init_and_terminate( int );
+};
+
+tbb::task_scheduler_init CModel::tbb_init(1);
+
+//! Test that task::initialize and task::terminate work when doing nothing else.
+/** maxthread is treated as the "maximum" number of worker threads. */
+void CModel::init_and_terminate( int maxthread ) {
+    for( int i=0; i<200; ++i ) {
+        switch( i&3 ) {
+            default: {
+                tbb::task_scheduler_init init( rand() % maxthread + 1 );
+                break;
+            }
+            case 0: {
+                tbb::task_scheduler_init init;
+                break;
+            }
+            case 1: {
+                tbb::task_scheduler_init init( tbb::task_scheduler_init::automatic );
+                break;
+            }
+            case 2: {
+                tbb::task_scheduler_init init( tbb::task_scheduler_init::deferred );
+                init.initialize( rand() % maxthread + 1 );
+                init.terminate();
+                break;
+            }
+        }
+    }
+}
+
+extern "C"
+#if _WIN32 || _WIN64
+__declspec(dllexport)
+#endif
+void plugin_call(int maxthread)
+{
+    srand(2);
+    __TBB_TRY {
+        CModel model;
+        model.init_and_terminate(maxthread);
+    } __TBB_CATCH( std::runtime_error& error ) {
+#if TBB_USE_EXCEPTIONS
+        REPORT("ERROR: %s\n", error.what());
+#endif /* TBB_USE_EXCEPTIONS */
+    }
+}
+
+#else /* _USRDLL undefined */
+
+#define HARNESS_NO_ASSERT 1
+#include "harness.h"
+#include "harness_dynamic_libs.h"
+
+extern "C" void plugin_call(int);
+
+void report_error_in(const char* function_name)
+{
+#if _WIN32 || _WIN64
+    char* message;
+    int code = GetLastError();
+
+    FormatMessage(
+        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+        NULL, code,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+        (char*)&message, 0, NULL );
+#else
+    char* message = (char*)dlerror();
+    int code = 0;
+#endif
+    REPORT( "%s failed with error %d: %s\n", function_name, code, message);
+
+#if _WIN32 || _WIN64
+    LocalFree(message);
+#endif
+}
+
+int use_lot_of_tls() {
+    int count = 0;
+#if _WIN32 || _WIN64
+    DWORD last_handles[10];
+    DWORD result;
+    result = TlsAlloc();
+    while( result!=TLS_OUT_OF_INDEXES ) {
+        last_handles[++count%10] = result;
+        result = TlsAlloc();
+    }
+    for( int i=0; i<10; ++i )
+        TlsFree(last_handles[i]);
+#else
+    pthread_key_t last_handles[10];
+    pthread_key_t result;
+    int setspecific_dummy=10;
+    while( pthread_key_create(&result, NULL)==0 
+           && count < 4096 ) // Sun Solaris doesn't have any built-in limit, so we set something big enough
+    {
+        last_handles[++count%10] = result;
+        pthread_setspecific(result,&setspecific_dummy);
+    }
+    REMARK("Created %d keys\n", count);
+    for( int i=0; i<10; ++i )
+        pthread_key_delete(last_handles[i]);
+#endif
+    return count-10;
+}
+
+typedef void (*PLUGIN_CALL)(int);
+
+#if __linux__
+    #define RML_LIBRARY_NAME(base) TEST_LIBRARY_NAME(base) ".1"
+#else
+    #define RML_LIBRARY_NAME(base) TEST_LIBRARY_NAME(base)
+#endif
+
+int TestMain () {
+#if !RML_USE_WCRM
+    PLUGIN_CALL my_plugin_call;
+
+    int tls_key_count = use_lot_of_tls();
+    REMARK("%d thread local objects allocated in advance\n", tls_key_count);
+
+    Harness::LIBRARY_HANDLE hLib;
+#if _WIN32 || _WIN64
+    hLib = LoadLibrary("irml.dll");
+    if ( !hLib )
+        hLib = LoadLibrary("irml_debug.dll");
+    if ( !hLib )
+        return Harness::Skipped; // No shared RML, skip the test
+    FreeLibrary(hLib);
+#else /* !WIN */
+#if __TBB_ARENA_PER_MASTER
+    hLib = dlopen(RML_LIBRARY_NAME("libirml"), RTLD_LAZY);
+    if ( !hLib )
+        hLib = dlopen(RML_LIBRARY_NAME("libirml_debug"), RTLD_LAZY);
+    if ( !hLib )
+        return Harness::Skipped;
+    dlclose(hLib);
+#endif /* __TBB_ARENA_PER_MASTER */
+#endif /* OS */
+    for( int i=1; i<100; ++i ) {  
+        REMARK("Iteration %d, loading plugin library...\n", i);
+        hLib = Harness::OpenLibrary(TEST_LIBRARY_NAME("test_model_plugin_dll"));
+        if ( !hLib ) {
+#if !__TBB_NO_IMPLICIT_LINKAGE
+#if _WIN32 || _WIN64
+            report_error_in("LoadLibrary");
+#else
+            report_error_in("dlopen");
+#endif
+            return -1;
+#else
+            return Harness::Skipped;
+#endif
+        }
+        my_plugin_call = (PLUGIN_CALL)Harness::GetAddress(hLib, "plugin_call");
+        if (my_plugin_call==NULL) {
+#if _WIN32 || _WIN64
+            report_error_in("GetProcAddress");
+#else
+            report_error_in("dlsym");
+#endif
+            return -1;
+        }
+        REMARK("Calling plugin method...\n");
+        my_plugin_call(MaxThread);
+
+        REMARK("Unloading plugin library...\n");
+        Harness::CloseLibrary(hLib);
+    } // end for(1,100)
+
+    return Harness::Done;
+#else
+    return Harness::Skipped;
+#endif /* !RML_USE_WCRM */
+}
+
+#endif//_USRDLL
+#endif//__MIC__
+
+#endif /*__TBB_WIN8UI_SUPPORT*/
diff --git a/src/test/test_multifunction_node.cpp b/src/test/test_multifunction_node.cpp
index c3a6f48..9883d15 100644
--- a/src/test/test_multifunction_node.cpp
+++ b/src/test/test_multifunction_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
@@ -94,7 +86,7 @@ void buffered_levels( size_t concurrency, Body body ) {
                 // Do the test with varying numbers of senders
                 harness_counting_sender<InputType> *senders = NULL;
                 for (size_t num_senders = 1; num_senders <= MAX_NODES; ++num_senders ) {
-                    // Create num_senders senders, set there message limit each to N, and connect them to the exe_vec[node_idx]
+                    // Create num_senders senders, set their message limit each to N, and connect them to the exe_vec[node_idx]
                     senders = new harness_counting_sender<InputType>[num_senders];
                     for (size_t s = 0; s < num_senders; ++s ) {
                         senders[s].my_limit = N;
@@ -430,6 +422,19 @@ void run_multiport_test(int num_threads) {
     tbb::flow::make_edge(tbb::flow::output_port<0>(mo_node), q0);
     tbb::flow::make_edge(tbb::flow::output_port<1>(mo_node), q1);
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    ASSERT(mo_node.predecessor_count() == 0, NULL);
+    ASSERT(tbb::flow::output_port<0>(mo_node).successor_count() == 1, NULL);
+    typedef typename mo_node_type::output_ports_type oports_type;
+    typedef typename tbb::flow::tuple_element<0,oports_type>::type port0_type;
+    typename port0_type::successor_list_type my_0succs;
+    tbb::flow::output_port<0>(mo_node).copy_successors(my_0succs);
+    ASSERT(my_0succs.size() == 1, NULL);
+    typename mo_node_type::predecessor_list_type my_preds;
+    mo_node.copy_predecessors(my_preds);
+    ASSERT(my_preds.size() == 0, NULL);
+#endif
+
     for(InputType i = 0; i < N; ++i) {
         mo_node.try_put(i);
     }
@@ -459,6 +464,195 @@ void test_concurrency(int num_threads) {
     run_multiport_test<float, tbb::flow::tuple<int, double> >(num_threads);
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+// the integer received indicates which output ports should succeed and which should fail
+// on try_put().
+typedef tbb::flow::multifunction_node<int, tbb::flow::tuple<int, int> > mf_node;
+
+struct add_to_counter {
+    int my_invocations;
+    int *counter;
+    add_to_counter(int& var):counter(&var){ my_invocations = 0;}
+    void operator()(const int &i, mf_node::output_ports_type &outports) {
+        *counter+=1;
+        ++my_invocations;
+        if(i & 0x1) {
+            ASSERT(tbb::flow::get<0>(outports).try_put(i), "port 0 expected to succeed");
+        }
+        else {
+            ASSERT(!tbb::flow::get<0>(outports).try_put(i), "port 0 expected to fail");
+        }
+        if(i & 0x2) {
+            ASSERT(tbb::flow::get<1>(outports).try_put(i), "port 1 expected to succeed");
+        }
+        else {
+            ASSERT(!tbb::flow::get<1>(outports).try_put(i), "port 1 expected to fail");
+        }
+    }
+    int my_inner() { return my_invocations; }
+};
+
+template<tbb::flow::graph_buffer_policy FTYPE>
+void test_extract() {
+    int my_count = 0;
+    int cm;
+    tbb::flow::graph g;
+    tbb::flow::broadcast_node<int> b0(g);
+    tbb::flow::broadcast_node<int> b1(g);
+    tbb::flow::multifunction_node<int, tbb::flow::tuple<int,int>, FTYPE> mf0(g, tbb::flow::unlimited, add_to_counter(my_count));
+    tbb::flow::queue_node<int> q0(g);
+    tbb::flow::queue_node<int> q1(g);
+
+    tbb::flow::make_edge(b0, mf0);
+    tbb::flow::make_edge(b1, mf0);
+    tbb::flow::make_edge(tbb::flow::output_port<0>(mf0), q0);
+    tbb::flow::make_edge(tbb::flow::output_port<1>(mf0), q1);
+    for( int i = 0; i < 2; ++i ) {
+    
+        /* b0          */
+        /*   \   |--q0 */
+        /*    mf0+     */
+        /*   /   |--q1 */
+        /* b1          */
+
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(mf0.predecessor_count() == 2
+                && tbb::flow::output_port<0>(mf0).successor_count() == 1
+                && tbb::flow::output_port<1>(mf0).successor_count() == 1
+                , "mf0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+        ASSERT(q1.predecessor_count() == 1 && q1.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(3);
+        g.wait_for_all();
+        ASSERT(my_count == 1, "multifunction_node didn't fire");
+        ASSERT(q0.try_get(cm), "multifunction_node didn't forward to 0");
+        ASSERT(q1.try_get(cm), "multifunction_node didn't forward to 1");
+        b1.try_put(3);
+        g.wait_for_all();
+        ASSERT(my_count == 2, "multifunction_node didn't fire");
+        ASSERT(q0.try_get(cm), "multifunction_node didn't forward to 0");
+        ASSERT(q1.try_get(cm), "multifunction_node didn't forward to 1");
+    
+        b0.extract();
+    
+    
+        /* b0          */
+        /*       |--q0 */
+        /*    mf0+     */
+        /*   /   |--q1 */
+        /* b1          */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(mf0.predecessor_count() == 1
+                && tbb::flow::output_port<0>(mf0).successor_count() == 1
+                && tbb::flow::output_port<1>(mf0).successor_count() == 1
+                , "mf0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 1 && q0.successor_count() == 0, "q0 has incorrect counts");
+        ASSERT(q1.predecessor_count() == 1 && q1.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(1);
+        b0.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 2, "b0 messages being forwarded to multifunction_node even though it is disconnected");
+        b1.try_put(3);
+        g.wait_for_all();
+        ASSERT(my_count == 3, "multifunction_node didn't fire though it has only one predecessor");
+        ASSERT(q0.try_get(cm), "multifunction_node didn't forward second time");
+        ASSERT(q1.try_get(cm), "multifunction_node didn't forward second time");
+
+        q0.extract();
+    
+        /* b0          */
+        /*       |  q0 */
+        /*    mf0+     */
+        /*   /   |--q1 */
+        /* b1          */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 1, "b1 has incorrect counts");
+        ASSERT(mf0.predecessor_count() == 1
+                && tbb::flow::output_port<0>(mf0).successor_count() == 0
+                && tbb::flow::output_port<1>(mf0).successor_count() == 1
+                , "mf0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+        ASSERT(q1.predecessor_count() == 1 && q1.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(1);
+        b0.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 3, "b0 messages being forwarded to multifunction_node even though it is disconnected");
+        b1.try_put(2);
+        g.wait_for_all();
+        ASSERT(my_count == 4, "multifunction_node didn't fire though it has one predecessor");
+        ASSERT(!q0.try_get(cm), "multifunction_node forwarded");
+        ASSERT(q1.try_get(cm), "multifunction_node forwarded");
+        mf0.extract();
+    
+        if(i == 0) {
+        }
+        else {
+            g.reset(tbb::flow::rf_reset_bodies);
+        }
+    
+    
+        /* b0          */
+        /*       |  q0 */
+        /*    mf0+     */
+        /*       |  q1 */
+        /* b1          */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 0, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(mf0.predecessor_count() == 0
+                && tbb::flow::output_port<0>(mf0).successor_count() == 0
+                && tbb::flow::output_port<1>(mf0).successor_count() == 0
+                , "mf0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+        ASSERT(q1.predecessor_count() == 0 && q1.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(1);
+        b0.try_put(1);
+        g.wait_for_all();
+        ASSERT(my_count == 4, "b0 messages being forwarded to multifunction_node even though it is disconnected");
+        b1.try_put(2);
+        g.wait_for_all();
+        ASSERT(my_count == 4, "b1 messages being forwarded to multifunction_node even though it is disconnected");
+        ASSERT(!q0.try_get(cm), "multifunction_node forwarded");
+        ASSERT(!q1.try_get(cm), "multifunction_node forwarded");
+        make_edge(b0, mf0);
+    
+        /* b0          */
+        /*   \   |  q0 */
+        /*    mf0+     */
+        /*       |  q1 */
+        /* b1          */
+    
+        ASSERT(b0.predecessor_count() == 0 && b0.successor_count() == 1, "b0 has incorrect counts");
+        ASSERT(b1.predecessor_count() == 0 && b1.successor_count() == 0, "b1 has incorrect counts");
+        ASSERT(mf0.predecessor_count() == 1
+                && tbb::flow::output_port<0>(mf0).successor_count() == 0
+                && tbb::flow::output_port<1>(mf0).successor_count() == 0
+                , "mf0 has incorrect counts");
+        ASSERT(q0.predecessor_count() == 0 && q0.successor_count() == 0, "q0 has incorrect counts");
+        ASSERT(q1.predecessor_count() == 0 && q1.successor_count() == 0, "q0 has incorrect counts");
+        b0.try_put(0);
+        g.wait_for_all();
+        ASSERT(my_count == 5, "multifunction_node didn't fire though it has one predecessor");
+        b1.try_put(2);
+        g.wait_for_all();
+        ASSERT(my_count == 5, "multifunction_node fired though it has only one predecessor");
+        ASSERT(!q0.try_get(cm), "multifunction_node forwarded");
+        ASSERT(!q1.try_get(cm), "multifunction_node forwarded");
+    
+        tbb::flow::make_edge(b1, mf0);
+        tbb::flow::make_edge(tbb::flow::output_port<0>(mf0), q0);
+        tbb::flow::make_edge(tbb::flow::output_port<1>(mf0), q1);
+        ASSERT( ( i == 0 && tbb::flow::copy_body<add_to_counter>(mf0).my_inner() == 5 ) ||
+               ( i == 1 && tbb::flow::copy_body<add_to_counter>(mf0).my_inner() == 1 ) , "reset_bodies failed");
+        my_count = 0;
+    }
+}
+#endif
+
 int TestMain() { 
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -467,5 +661,10 @@ int TestMain() {
     for( int p=MinThread; p<=MaxThread; ++p ) {
        test_concurrency(p);
    }
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract<tbb::flow::rejecting>();
+    test_extract<tbb::flow::queueing>();
+#endif
    return Harness::Done;
 }
diff --git a/src/test/test_mutex.cpp b/src/test/test_mutex.cpp
index f18c438..091c116 100644
--- a/src/test/test_mutex.cpp
+++ b/src/test/test_mutex.cpp
@@ -1,35 +1,23 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-#if __TBB_CPF_BUILD && !defined(TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX)
-    #define TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX 1
-#endif
-
 //------------------------------------------------------------------------
 // Test TBB mutexes when used with parallel_for.h
 //
@@ -396,7 +384,7 @@ struct RecursiveAcquisition {
         }
 
         if( (i&1)!=0 ) {
-            // acquire lock on location RecurArray[i] using explict acquire
+            // acquire lock on location RecurArray[i] using explicit acquire
             tbb::recursive_mutex::scoped_lock r_lock;
             r_lock.acquire( RecurMutex[i] );
             int a = RecurArray[i];
@@ -557,7 +545,7 @@ void TestRecursiveMutexISO( const char * name ) {
 #include "harness_tsx.h"
 #include "tbb/task_scheduler_init.h"
 
-#if __TBB_TSX_AVAILABLE && (__INTEL_COMPILER || __GNUC__ || _MSC_VER)
+#if __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER
 
 //! Function object for use with parallel_for.h to see if a transaction is actually attempted.
 tbb::atomic<size_t> n_transactions_attempted;
@@ -580,6 +568,7 @@ struct AddOne_CheckTransaction: NoAssign {
     AddOne_CheckTransaction( C& counter_ ) : counter(counter_) {}
 };
 
+/* TestTransaction() checks if a speculative mutex actually uses transactions. */
 template<typename M>
 void TestTransaction( const char * name )
 {
@@ -605,11 +594,11 @@ void TestTransaction( const char * name )
     }
 
     if( n_transactions_attempted==0 )
-        REPORT( "ERROR: HLE transactions are never attempted\n" );
+        REPORT( "ERROR: transactions were never attempted\n" );
     else
         REMARK("%d successful transactions in %6.6f seconds\n", (int)n_transactions_attempted, (stop - start).seconds());
 }
-#endif  /* __TBB_TSX_AVAILABLE && (__INTEL_COMPILER || __GNUC__ || _MSC_VER) */
+#endif  /* __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER */
 
 int TestMain () {
     for( int p=MinThread; p<=MaxThread; ++p ) {
@@ -637,9 +626,7 @@ int TestMain () {
             Test<tbb::recursive_mutex>( "Recursive Mutex" );
             Test<tbb::queuing_rw_mutex>( "Queuing RW Mutex" );
             Test<tbb::spin_rw_mutex>( "Spin RW Mutex" );
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-            Test<tbb::speculative_spin_rw_mutex>( "Spin RW Mutex speculative" );
-#endif
+            Test<tbb::speculative_spin_rw_mutex>( "Spin RW Mutex/speculative" );
 
             TestTryAcquire_OneThread<tbb::spin_mutex>("Spin Mutex");
             TestTryAcquire_OneThread<tbb::speculative_spin_mutex>("Spin Mutex/speculative");
@@ -650,21 +637,16 @@ int TestMain () {
 #endif /* USE_PTHREAD */
             TestTryAcquire_OneThread<tbb::recursive_mutex>( "Recursive Mutex" );
             TestTryAcquire_OneThread<tbb::spin_rw_mutex>("Spin RW Mutex"); // only tests try_acquire for writers
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-            TestTryAcquire_OneThread<tbb::speculative_spin_rw_mutex>("Spin RW Mutex speculative"); // only tests try_acquire for writers
-#endif
+            TestTryAcquire_OneThread<tbb::speculative_spin_rw_mutex>("Spin RW Mutex/speculative"); // only tests try_acquire for writers
             TestTryAcquire_OneThread<tbb::queuing_rw_mutex>("Queuing RW Mutex"); // only tests try_acquire for writers
+
             TestTryAcquireReader_OneThread<tbb::spin_rw_mutex>("Spin RW Mutex");
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-            TestTryAcquireReader_OneThread<tbb::speculative_spin_rw_mutex>("Spin RW Mutex speculative");
-#endif
+            TestTryAcquireReader_OneThread<tbb::speculative_spin_rw_mutex>("Spin RW Mutex/speculative");
             TestTryAcquireReader_OneThread<tbb::queuing_rw_mutex>("Queuing RW Mutex");
 
             TestReaderWriterLock<tbb::queuing_rw_mutex>( "Queuing RW Mutex" );
             TestReaderWriterLock<tbb::spin_rw_mutex>( "Spin RW Mutex" );
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
-            TestReaderWriterLock<tbb::speculative_spin_rw_mutex>( "Spin RW Mutex speculative" );
-#endif
+            TestReaderWriterLock<tbb::speculative_spin_rw_mutex>( "Spin RW Mutex/speculative" );
 
             TestRecursiveMutex<tbb::recursive_mutex>( "Recursive Mutex" );
 
@@ -687,14 +669,12 @@ int TestMain () {
         }
     }
 
-#if __TBB_TSX_AVAILABLE && (__INTEL_COMPILER || __GNUC__ || _MSC_VER)
+#if __TBB_TSX_TESTING_ENABLED_FOR_THIS_COMPILER
     // additional test for speculative mutexes to see if we actually attempt lock elisions
     if( have_TSX() ) {
         tbb::task_scheduler_init init( MaxThread );
         TestTransaction<tbb::speculative_spin_mutex>( "Spin Mutex/speculative" );
-#if TBB_PREVIEW_SPECULATIVE_SPIN_RW_MUTEX
         TestTransaction<tbb::speculative_spin_rw_mutex>( "Spin RW Mutex/speculative" );
-#endif
     }
     else {
         REMARK("Hardware transactions not supported\n");
diff --git a/src/test/test_mutex_native_threads.cpp b/src/test/test_mutex_native_threads.cpp
index f3b28a7..3f4c467 100644
--- a/src/test/test_mutex_native_threads.cpp
+++ b/src/test/test_mutex_native_threads.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/spin_mutex.h"
diff --git a/src/test/test_openmp.cpp b/src/test/test_openmp.cpp
index c4d366f..86790de 100644
--- a/src/test/test_openmp.cpp
+++ b/src/test/test_openmp.cpp
@@ -1,35 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test mixing OpenMP and TBB
 
 /* SCR #471 
- Below is workaround to compile test within enviroment of Intel Compiler
+ Below is workaround to compile test within environment of Intel Compiler
  but by Microsoft Compiler. So, there is wrong "omp.h" file included and
  manifest section is missed from .exe file - restoring here.
 
@@ -106,6 +98,9 @@ void SerialConvolve( T c[], const T a[], int m, const T b[], int n ) {
     }
 }
 
+#define OPENMP_ASYNC_SHUTDOWN_BROKEN (__INTEL_COMPILER<=1400 && __linux__)
+#define TBB_PREVIEW_WAITING_FOR_WORKERS 1
+
 #include "tbb/blocked_range.h"
 #include "tbb/parallel_for.h"
 #include "tbb/parallel_reduce.h"
@@ -195,36 +190,33 @@ void TBB_OpenMP_Convolve( T c[], const T a[], int m, const T b[], int n ) {
 
 const int M = 17*17;
 const int N = 13*13;
+T a[M], b[N];
+T expected[M+N], actual[M+N];
+
+template <class Func>
+void RunTest( Func F, int m, int n, int p, bool wait_workers = false ) {
+    task_scheduler_init init( p, 0, wait_workers );
+    memset( actual, -1, (m+n)*sizeof(T) );
+    F( actual, a, m, b, n );
+    ASSERT( memcmp(actual, expected, (m+n-1)*sizeof(T))==0, NULL );
+}
 
 int TestMain () {
     MinThread = 1;
     for( int p=MinThread; p<=MaxThread; ++p ) {
-        T a[M];
-        T b[N];
         for( int m=1; m<=M; m*=17 ) {
-            for( int n=1; n<=M; n*=13 ) {
+            for( int n=1; n<=N; n*=13 ) {
                 for( int i=0; i<m; ++i ) a[i] = T(1+i/5);
                 for( int i=0; i<n; ++i ) b[i] = T(1+i/7);
-                T expected[M+N];
                 SerialConvolve( expected, a, m, b, n );
-                task_scheduler_init init(p);
-                T actual[M+N];
-                for( int k = 0; k<2; ++k ) {
-                    memset( actual, -1, sizeof(actual) );
-                    switch(k) {
-                        case 0: 
-                            TBB_OpenMP_Convolve( actual, a, m, b, n ); 
-                            break;
-                        case 1: 
-                            OpenMP_TBB_Convolve( actual, a, m, b, n ); 
-                            break;
-                    }
-                    for( int i=0; i<m+n-1; ++i ) {
-                        ASSERT( actual[i]==expected[i], NULL );
-                    }
-                }
+                RunTest( OpenMP_TBB_Convolve, m, n, p );
+                RunTest( TBB_OpenMP_Convolve, m, n, p
+#if OPENMP_ASYNC_SHUTDOWN_BROKEN
+                    ,true
+#endif
+                    );
             }
-        } 
+        }
     }
     return Harness::Done;
 }
diff --git a/src/test/test_or_node.cpp b/src/test/test_or_node.cpp
deleted file mode 100644
index 6949bf0..0000000
--- a/src/test/test_or_node.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
-*/
-
-#include "harness.h"
-#define TBB_PREVIEW_GRAPH_NODES 1
-#include "tbb/flow_graph.h"
-
-//
-// Tests
-//
-
-const int Count = 150;
-const int MaxPorts = 10;
-const int MaxNSources = 5; // max # of source_nodes to register for each or_node input in parallel test
-bool outputCheck[MaxPorts][Count];  // for checking output
-
-void
-check_outputCheck( int nUsed, int maxCnt) {
-    for(int i=0; i < nUsed; ++i) {
-        for( int j = 0; j < maxCnt; ++j) {
-            ASSERT(outputCheck[i][j], NULL);
-        }
-    }
-}
-
-void
-reset_outputCheck( int nUsed, int maxCnt) {
-    for(int i=0; i < nUsed; ++i) {
-        for( int j = 0; j < maxCnt; ++j) {
-            outputCheck[i][j] = false;
-        }
-    }
-}
-
-class test_class {
-    public:
-        test_class() { my_val = 0; }
-        test_class(int i) { my_val = i; }
-        operator int() { return my_val; }
-    private:
-        int my_val;
-};
-
-template<typename T>
-class name_of {
-public:
-    static const char* name() { return  "Unknown"; }
-};
-template<>
-class name_of<int> {
-public:
-    static const char* name() { return  "int"; }
-};
-template<>
-class name_of<float> {
-public:
-    static const char* name() { return  "float"; }
-};
-template<>
-class name_of<double> {
-public:
-    static const char* name() { return  "double"; }
-};
-template<>
-class name_of<long> {
-public:
-    static const char* name() { return  "long"; }
-};
-template<>
-class name_of<short> {
-public:
-    static const char* name() { return  "short"; }
-};
-template<>
-class name_of<test_class> {
-public:
-    static const char* name() { return  "test_class"; }
-};
-
-// TT must be arithmetic, and shouldn't wrap around for reasonable sizes of Count (which is now 150, and maxPorts is 10,
-// so the max number generated right now is 1500 or so.)  Source will generate a series of TT with value
-// (init_val + (i-1)*addend) * my_mult, where i is the i-th invocation of the body.  We are attaching addend
-// source nodes to a or_port, and each will generate part of the numerical series the port is expecting
-// to receive.  If there is only one source node, the series order will be maintained; if more than one,
-// this is not guaranteed.
-template<typename TT>
-class source_body {
-    const TT my_mult;
-    int my_count;
-    const int addend;
-    source_body& operator=( const source_body& other);
-public:
-    source_body(TT multiplier, int init_val, int addto) : my_mult(multiplier), my_count(init_val), addend(addto) { }
-    bool operator()( TT &v) {
-        int lc = my_count;
-        v = my_mult * (TT)my_count;
-        my_count += addend;
-        return lc < Count;
-    }
-};
-
-// allocator for or_node.
-
-template<typename OType>
-class makeOr {
-public:
-    static OType *create() {
-        OType *temp = new OType();
-        return temp;
-    }
-    static void destroy(OType *p) { delete p; }
-};
-
-template<int ELEM, typename ONT>
-struct getval_helper {
-
-    typedef typename ONT::output_type OT;
-    static int get_integer_val(OT &o) {
-        return int(tbb::flow::get<ELEM-1>(o.result));
-    }
-};
-
-// holder for source_node pointers for eventual deletion
-
-static void* all_source_nodes[MaxPorts][MaxNSources];
-
-template<int ELEM, typename ONT>
-class source_node_helper {
-public:
-    typedef ONT or_node_type;
-    typedef typename or_node_type::output_type TT;
-    typedef typename tbb::flow::tuple_element<ELEM-1,typename ONT::tuple_types>::type IT;
-    typedef typename tbb::flow::source_node<IT> my_source_node_type;
-    static void print_remark() {
-        source_node_helper<ELEM-1,ONT>::print_remark();
-        REMARK(", %s", name_of<IT>::name());
-    }
-    static void add_source_nodes(or_node_type &my_or, tbb::flow::graph &g, int nInputs) {
-        for(int i=0; i < nInputs; ++i) {
-            my_source_node_type *new_node = new my_source_node_type(g, source_body<IT>((IT)(ELEM+1), i, nInputs));
-            ASSERT(new_node->register_successor(tbb::flow::input_port<ELEM-1>(my_or)), NULL);
-            all_source_nodes[ELEM-1][i] = (void *)new_node;
-        }
-        // add the next source_node
-        source_node_helper<ELEM-1, ONT>::add_source_nodes(my_or, g, nInputs);
-    }
-    static void check_value(TT &v) {
-        if(v.indx == ELEM-1) {
-            int ival = getval_helper<ELEM,ONT>::get_integer_val(v);
-            ASSERT(!(ival%(ELEM+1)), NULL);
-            ival /= (ELEM+1);
-            ASSERT(!outputCheck[ELEM-1][ival], NULL);
-            outputCheck[ELEM-1][ival] = true;
-        }
-        else {
-            source_node_helper<ELEM-1,ONT>::check_value(v);
-        }
-    }
-
-    static void remove_source_nodes(or_node_type& my_or, int nInputs) {
-        for(int i=0; i< nInputs; ++i) {
-            my_source_node_type *dp = reinterpret_cast<my_source_node_type *>(all_source_nodes[ELEM-1][i]);
-            dp->remove_successor(tbb::flow::input_port<ELEM-1>(my_or));
-            delete dp;
-        }
-        source_node_helper<ELEM-1, ONT>::remove_source_nodes(my_or, nInputs);
-    }
-};
-
-template<typename ONT>
-class source_node_helper<1, ONT> {
-    typedef ONT or_node_type;
-    typedef typename or_node_type::output_type TT;
-    typedef typename tbb::flow::tuple_element<0, typename ONT::tuple_types>::type IT;
-    typedef typename tbb::flow::source_node<IT> my_source_node_type;
-public:
-    static void print_remark() {
-        REMARK("Parallel test of or_node< %s", name_of<IT>::name());
-    }
-    static void add_source_nodes(or_node_type &my_or, tbb::flow::graph &g, int nInputs) {
-        for(int i=0; i < nInputs; ++i) {
-            my_source_node_type *new_node = new my_source_node_type(g, source_body<IT>((IT)2, i, nInputs));
-            ASSERT(new_node->register_successor(tbb::flow::input_port<0>(my_or)), NULL);
-            all_source_nodes[0][i] = (void *)new_node;
-        }
-    }
-    static void check_value(TT &v) {
-        int ival = getval_helper<1,ONT>::get_integer_val(v);
-        ASSERT(!(ival%2), NULL);
-        ival /= 2;
-        ASSERT(!outputCheck[0][ival], NULL);
-        outputCheck[0][ival] = true;
-    }
-    static void remove_source_nodes(or_node_type& my_or, int nInputs) {
-        for(int i=0; i < nInputs; ++i) {
-            my_source_node_type *dp = reinterpret_cast<my_source_node_type *>(all_source_nodes[0][i]);
-            dp->remove_successor(tbb::flow::input_port<0>(my_or));
-            delete dp;
-        }
-    }
-};
-
-template<typename OType>
-class parallel_test {
-public:
-    typedef typename OType::output_type TType;
-    typedef typename OType::tuple_types union_types;
-    static const int SIZE = tbb::flow::tuple_size<union_types>::value;
-    static void test() {
-        TType v;
-        source_node_helper<SIZE,OType>::print_remark();
-        REMARK(" >\n");
-        for(int i=0; i < MaxPorts; ++i) {
-            for(int j=0; j < MaxNSources; ++j) {
-                all_source_nodes[i][j] = NULL;
-            }
-        }
-        for(int nInputs = 1; nInputs <= MaxNSources; ++nInputs) {
-            tbb::flow::graph g;
-            OType* my_or = new OType(g); //makeOr<OType>::create(); 
-            tbb::flow::queue_node<TType> outq1(g);
-            tbb::flow::queue_node<TType> outq2(g);
-
-            ASSERT((*my_or).register_successor(outq1), NULL);  // register outputs first, so they both get all
-            ASSERT((*my_or).register_successor(outq2), NULL);  // the results
-
-            source_node_helper<SIZE, OType>::add_source_nodes((*my_or), g, nInputs);
-
-            g.wait_for_all();
-
-            reset_outputCheck(SIZE, Count);
-            for(int i=0; i < Count*SIZE; ++i) {
-                ASSERT(outq1.try_get(v), NULL);
-                source_node_helper<SIZE, OType>::check_value(v);
-            }
-
-            check_outputCheck(SIZE, Count);
-            reset_outputCheck(SIZE, Count);
-
-            for(int i=0; i < Count*SIZE; i++) {
-                ASSERT(outq2.try_get(v), NULL);;
-                source_node_helper<SIZE, OType>::check_value(v);
-            }
-            check_outputCheck(SIZE, Count);
-
-            ASSERT(!outq1.try_get(v), NULL);
-            ASSERT(!outq2.try_get(v), NULL);
-
-            source_node_helper<SIZE, OType>::remove_source_nodes((*my_or), nInputs);
-            (*my_or).remove_successor(outq1);
-            (*my_or).remove_successor(outq2);
-            makeOr<OType>::destroy(my_or);
-        }
-    }
-};
-
-std::vector<int> last_index_seen;
-
-template<int ELEM, typename OType>
-class serial_queue_helper {
-public:
-    typedef typename OType::output_type OT;
-    typedef typename OType::tuple_types TT;
-    typedef typename tbb::flow::tuple_element<ELEM-1,TT>::type IT;
-    static void print_remark() {
-        serial_queue_helper<ELEM-1,OType>::print_remark();
-        REMARK(", %s", name_of<IT>::name());
-    }
-    static void fill_one_queue(int maxVal, OType &my_or) {
-        // fill queue to "left" of me
-        serial_queue_helper<ELEM-1,OType>::fill_one_queue(maxVal,my_or);
-        for(int i = 0; i < maxVal; ++i) {
-            ASSERT(tbb::flow::input_port<ELEM-1>(my_or).try_put((IT)(i*(ELEM+1))), NULL);
-        }
-    }
-    static void put_one_queue_val(int myVal, OType &my_or) {
-        // put this val to my "left".
-        serial_queue_helper<ELEM-1,OType>::put_one_queue_val(myVal, my_or);
-        ASSERT(tbb::flow::input_port<ELEM-1>(my_or).try_put((IT)(myVal*(ELEM+1))), NULL);
-    }
-    static void check_queue_value(OT &v) {
-        if(ELEM - 1 == v.indx) {
-            // this assumes each or node input is queueing.
-            int rval = getval_helper<ELEM,OType>::get_integer_val(v);
-            ASSERT( rval == (last_index_seen[ELEM-1]+1)*(ELEM+1), NULL);
-            last_index_seen[ELEM-1] = rval / (ELEM+1);
-        }
-        else {
-            serial_queue_helper<ELEM-1,OType>::check_queue_value(v);
-        }
-    }
-};
-
-template<typename OType>
-class serial_queue_helper<1, OType> {
-public:
-    typedef typename OType::output_type OT;
-    typedef typename OType::tuple_types TT;
-    typedef typename tbb::flow::tuple_element<0,TT>::type IT;
-    static void print_remark() {
-        REMARK("Serial test of or_node< %s", name_of<IT>::name());
-    }
-    static void fill_one_queue(int maxVal, OType &my_or) {
-        for(int i = 0; i < maxVal; ++i) {
-            ASSERT(tbb::flow::input_port<0>(my_or).try_put((IT)(i*2)), NULL);
-        }
-    }
-    static void put_one_queue_val(int myVal, OType &my_or) {
-        ASSERT(tbb::flow::input_port<0>(my_or).try_put((IT)(myVal*2)), NULL);
-    }
-    static void check_queue_value(OT &v) {
-        ASSERT(v.indx == 0, NULL);  // won't get here unless true
-        int rval = getval_helper<1,OType>::get_integer_val(v);
-        ASSERT( rval == (last_index_seen[0]+1)*2, NULL);
-        last_index_seen[0] = rval / 2;
-    }
-};
-
-template<typename OType, typename TType, int SIZE>
-void test_one_serial( OType &my_or, tbb::flow::graph &g) {
-    last_index_seen.clear();
-    for(int ii=0; ii < SIZE; ++ii) last_index_seen.push_back(-1);
-
-    typedef TType q3_input_type;
-    tbb::flow::queue_node< q3_input_type >  q3(g);
-    q3_input_type v;
-
-    ASSERT((my_or).register_successor( q3 ), NULL);
-
-    // fill each queue with its value one-at-a-time
-    for (int i = 0; i < Count; ++i ) {
-        serial_queue_helper<SIZE,OType>::put_one_queue_val(i,my_or);
-    }
-
-    g.wait_for_all();
-    for (int i = 0; i < Count * SIZE; ++i ) {
-        g.wait_for_all();
-        ASSERT(q3.try_get( v ), "Error in try_get()");
-        {
-            serial_queue_helper<SIZE,OType>::check_queue_value(v);
-        }
-    }
-    ASSERT(!q3.try_get( v ), "extra values in output queue");
-    for(int ii=0; ii < SIZE; ++ii) last_index_seen[ii] = -1;
-
-    // fill each queue completely before filling the next.
-    serial_queue_helper<SIZE, OType>::fill_one_queue(Count,my_or);
-
-    g.wait_for_all();
-    for (int i = 0; i < Count*SIZE; ++i ) {
-        g.wait_for_all();
-        ASSERT(q3.try_get( v ), "Error in try_get()");
-        {
-            serial_queue_helper<SIZE,OType>::check_queue_value(v);
-        }
-    }
-    ASSERT(!q3.try_get( v ), "extra values in output queue");
-}
-
-//
-// Single predecessor at each port, single accepting successor
-//   * put to buffer before port0, then put to buffer before port1, ...
-//   * fill buffer before port0 then fill buffer before port1, ...
-
-template<typename OType>
-class serial_test {
-    typedef typename OType::output_type TType;  // this is the union
-    typedef typename OType::tuple_types union_types;
-    static const int SIZE = tbb::flow::tuple_size<union_types>::value;
-public:
-static void test() {
-    tbb::flow::graph g;
-    static const int ELEMS = 3;
-    OType* my_or = new OType(g); //makeOr<OType>::create(g);
-
-    serial_queue_helper<SIZE, OType>::print_remark(); REMARK(" >\n");
-
-    test_one_serial<OType,TType,SIZE>(*my_or, g);
-
-    std::vector<OType> or_vector(ELEMS, *my_or);
-
-    makeOr<OType>::destroy(my_or);
-
-    for(int e = 0; e < ELEMS; ++e) {
-        test_one_serial<OType,TType,SIZE>(or_vector[e], g);
-    }
-}
-
-}; // serial_test
-
-template<
-      template<typename> class TestType,  // serial_test or parallel_test
-      typename InputTupleType>           // type of the inputs to the or_node
-class generate_test {
-public:
-    typedef tbb::flow::or_node<InputTupleType> or_node_type;
-    static void do_test() {
-        TestType<or_node_type>::test();
-    }
-};
-
-int TestMain() {
-    REMARK("Testing or_node, ");
-#if __TBB_USE_TBB_TUPLE
-    REMARK("using TBB tuple\n");
-#else
-    REMARK("using platform tuple\n");
-#endif
-
-   for (int p = 0; p < 2; ++p) {
-       generate_test<serial_test, tbb::flow::tuple<float, test_class> >::do_test();
-#if MAX_TUPLE_TEST_SIZE >= 4
-       generate_test<serial_test, tbb::flow::tuple<float, double, int, long> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 6
-       generate_test<serial_test, tbb::flow::tuple<double, double, int, long, int, short> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 8
-       generate_test<serial_test, tbb::flow::tuple<float, double, double, double, float, int, float, long> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 10
-       generate_test<serial_test, tbb::flow::tuple<float, double, int, double, double, float, long, int, float, long> >::do_test();
-#endif
-       generate_test<parallel_test, tbb::flow::tuple<float, double> >::do_test();
-#if MAX_TUPLE_TEST_SIZE >= 3
-       generate_test<parallel_test, tbb::flow::tuple<float, int, long> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 5
-       generate_test<parallel_test, tbb::flow::tuple<double, double, int, int, short> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 7
-       generate_test<parallel_test, tbb::flow::tuple<float, int, double, float, long, float, long> >::do_test();
-#endif
-#if MAX_TUPLE_TEST_SIZE >= 9
-       generate_test<parallel_test, tbb::flow::tuple<float, double, int, double, double, long, int, float, long> >::do_test();
-#endif
-   }
-   return Harness::Done;
-}
diff --git a/src/test/test_overwrite_node.cpp b/src/test/test_overwrite_node.cpp
index 6499906..647a1bb 100644
--- a/src/test/test_overwrite_node.cpp
+++ b/src/test/test_overwrite_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
@@ -32,7 +24,7 @@
 
 #define N 300
 #define T 4 
-#define M 4
+#define M 5
 
 template< typename R >
 void simple_read_write_tests() {
@@ -56,6 +48,14 @@ void simple_read_write_tests() {
            tbb::flow::make_edge( n, r[i] );
         }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+        ASSERT(n.successor_count() == M, NULL);
+        typename tbb::flow::overwrite_node<R>::successor_list_type my_succs;
+        n.copy_successors(my_succs);
+        ASSERT(my_succs.size() == M, NULL);
+        ASSERT(n.predecessor_count() == 0, NULL);
+#endif
+
         for (int i = 0; i < N; ++i ) {
             R v1(static_cast<R>(i));
             ASSERT( n.try_put( v1 ), NULL );
@@ -150,6 +150,10 @@ int TestMain() {
         parallel_read_write_tests<int>();
         parallel_read_write_tests<float>();
     }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract_on_node<tbb::flow::overwrite_node, int>();
+    test_extract_on_node<tbb::flow::overwrite_node, float>();
+#endif
     return Harness::Done;
 }
 
diff --git a/src/test/test_parallel_do.cpp b/src/test/test_parallel_do.cpp
index 8667854..3c28ee5 100644
--- a/src/test/test_parallel_do.cpp
+++ b/src/test/test_parallel_do.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/parallel_do.h"
@@ -31,6 +23,7 @@
 #include "tbb/atomic.h"
 #include "harness.h"
 #include "harness_cpu.h"
+#include <deque>
 
 #if defined(_MSC_VER) && defined(_Wp64)
     // Workaround for overzealous compiler warnings in /Wp64 mode
@@ -218,6 +211,59 @@ void Run( int nthread ) {
     }
 }
 
+const size_t elements = 10000;
+const size_t init_sum = 0;
+tbb::atomic<size_t> element_counter;
+
+template<size_t K>
+struct set_to {
+    void operator()(size_t& x) const {
+        x = K;
+        ++element_counter;
+    }
+};
+
+#include "test_range_based_for.h"
+#include <functional>
+
+void range_do_test() {
+    using namespace range_based_for_support_tests;
+    std::deque<size_t> v(elements, 0);
+
+    // iterator, const and non-const range check
+    element_counter = 0;
+    tbb::parallel_do(v.begin(), v.end(), set_to<1>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    element_counter = 0;
+    tbb::parallel_do(v, set_to<0>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum, "elements of v not all zeros");
+
+    element_counter = 0;
+    tbb::parallel_do(tbb::blocked_range<std::deque<size_t>::iterator>(v.begin(), v.end()), set_to<1>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    // same as above with context group
+    element_counter = 0;
+    tbb::task_group_context context;
+    tbb::parallel_do(v.begin(), v.end(), set_to<0>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum, "elements of v not all ones");
+
+    element_counter = 0;
+    tbb::parallel_do(v, set_to<1>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    element_counter = 0;
+    tbb::parallel_do(tbb::blocked_range<std::deque<size_t>::iterator>(v.begin(), v.end()), set_to<0>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum, "elements of v not all zeros");
+}
+
 int TestMain () {
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -227,6 +273,7 @@ int TestMain () {
     for( int p=MinThread; p<=MaxThread; ++p ) {
         tbb::task_scheduler_init init( p );
         Run(p);
+        range_do_test();
         // Test that all workers sleep when no work
         TestCPUUserTime(p);
     }
diff --git a/src/test/test_parallel_for.cpp b/src/test/test_parallel_for.cpp
index 24f91cc..958d5ca 100644
--- a/src/test/test_parallel_for.cpp
+++ b/src/test/test_parallel_for.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test for function template parallel_for.h
@@ -452,6 +444,139 @@ void TestSimplePartitionerStability(){
 #include <cstdio>
 #include "tbb/task_scheduler_init.h"
 #include "harness_cpu.h"
+#include "harness_barrier.h"
+#include "test_partitioner.h"
+
+namespace interaction_with_range_and_partitioner {
+
+// Test checks compatibility of parallel_for algorithm with various range implementations
+
+void test() {
+    using namespace test_partitioner_utils::interaction_with_range_and_partitioner;
+
+    test_partitioner_utils::SimpleBody b;
+    tbb::affinity_partitioner ap;
+
+    parallel_for(Range1(true, false), b, ap);
+    parallel_for(Range2(true, false), b, ap);
+    parallel_for(Range3(true, false), b, ap);
+    parallel_for(Range4(false, true), b, ap);
+    parallel_for(Range5(false, true), b, ap);
+    parallel_for(Range6(false, true), b, ap);
+
+    parallel_for(Range1(false, true), b, tbb::simple_partitioner());
+    parallel_for(Range2(false, true), b, tbb::simple_partitioner());
+    parallel_for(Range3(false, true), b, tbb::simple_partitioner());
+    parallel_for(Range4(false, true), b, tbb::simple_partitioner());
+    parallel_for(Range5(false, true), b, tbb::simple_partitioner());
+    parallel_for(Range6(false, true), b, tbb::simple_partitioner());
+
+    parallel_for(Range1(false, true), b, tbb::auto_partitioner());
+    parallel_for(Range2(false, true), b, tbb::auto_partitioner());
+    parallel_for(Range3(false, true), b, tbb::auto_partitioner());
+    parallel_for(Range4(false, true), b, tbb::auto_partitioner());
+    parallel_for(Range5(false, true), b, tbb::auto_partitioner());
+    parallel_for(Range6(false, true), b, tbb::auto_partitioner());
+}
+
+} // namespace interaction_with_range_and_partitioner
+
+namespace various_range_implementations {
+
+using namespace test_partitioner_utils;
+using namespace test_partitioner_utils::TestRanges;
+
+// Body ensures that initial work distribution is done uniformly through affinity mechanism and not
+// through work stealing
+class Body {
+    Harness::SpinBarrier &m_sb;
+public:
+    Body(Harness::SpinBarrier& sb) : m_sb(sb) { }
+    Body(Body& b, tbb::split) : m_sb(b.m_sb) { }
+    Body& operator =(const Body&) { return *this; }
+    template <typename Range>
+    void operator()(Range& r) const {
+        REMARK("Executing range [%lu, %lu)\n", r.begin(), r.end());
+        m_sb.timed_wait(10); // waiting for all threads
+    }
+};
+
+namespace correctness {
+
+/* Testing only correctness (that is parallel_for does not hang) */
+template <typename RangeType, bool /* feedback */, bool ensure_non_emptiness>
+void test() {
+    static const int thread_num = tbb::task_scheduler_init::default_num_threads();
+    RangeType range( 0, thread_num, NULL, false, ensure_non_emptiness );
+    tbb::affinity_partitioner ap;
+    tbb::parallel_for( range, SimpleBody(), ap );
+}
+
+} // namespace correctness
+
+namespace uniform_distribution {
+
+/* Body of parallel_for algorithm would hang if non-uniform work distribution happened  */
+template <typename RangeType, bool feedback, bool ensure_non_emptiness>
+void test() {
+    static const int thread_num = tbb::task_scheduler_init::default_num_threads();
+    Harness::SpinBarrier sb( thread_num );
+    RangeType range(0, thread_num, NULL, feedback, ensure_non_emptiness);
+    const Body sync_body( sb );
+    tbb::affinity_partitioner ap;
+    tbb::parallel_for( range, sync_body, ap );
+}
+
+} // namespace uniform_distribution
+
+void test() {
+    const bool provide_feedback = __TBB_ENABLE_RANGE_FEEDBACK;
+    const bool ensure_non_empty_range = true;
+
+    // BlockedRange does not take into account feedback and non-emptiness settings but uses the
+    // tbb::blocked_range implementation
+    uniform_distribution::test<BlockedRange, !provide_feedback, !ensure_non_empty_range>();
+
+#if __TBB_ENABLE_RANGE_FEEDBACK
+    using uniform_distribution::test; // if feedback is enabled ensure uniform work distribution
+#else
+    using correctness::test;
+#endif
+
+    {
+        test<RoundedDownRange, provide_feedback, ensure_non_empty_range>();
+        test<RoundedDownRange, provide_feedback, !ensure_non_empty_range>();
+#if __TBB_ENABLE_RANGE_FEEDBACK && !__TBB_MIC_NATIVE
+        // due to fast division algorithm on MIC
+        test<RoundedDownRange, !provide_feedback, ensure_non_empty_range>();
+        test<RoundedDownRange, !provide_feedback, !ensure_non_empty_range>();
+#endif
+    }
+
+    {
+        test<RoundedUpRange, provide_feedback, ensure_non_empty_range>();
+        test<RoundedUpRange, provide_feedback, !ensure_non_empty_range>();
+#if __TBB_ENABLE_RANGE_FEEDBACK && !__TBB_MIC_NATIVE
+        // due to fast division algorithm on MIC
+        test<RoundedUpRange, !provide_feedback, ensure_non_empty_range>();
+        test<RoundedUpRange, !provide_feedback, !ensure_non_empty_range>();
+#endif
+    }
+
+    // Testing that parallel_for algorithm works with such weird ranges
+    correctness::test<Range1_2, /* provide_feedback= */ false, !ensure_non_empty_range>();
+    correctness::test<Range1_999, /* provide_feedback= */ false, !ensure_non_empty_range>();
+    correctness::test<Range999_1, /* provide_feedback= */ false, !ensure_non_empty_range>();
+
+    // The following ranges do not comply with the proportion suggested by partitioner. Therefore
+    // they have to provide the proportion in which they were actually split back to partitioner and
+    // ensure theirs non-emptiness
+    test<Range1_2, provide_feedback, ensure_non_empty_range>();
+    test<Range1_999, provide_feedback, ensure_non_empty_range>();
+    test<Range999_1, provide_feedback, ensure_non_empty_range>();
+}
+
+} // namespace various_range_implementations
 
 int TestMain () {
     if( MinThread<1 ) {
@@ -520,6 +645,9 @@ int TestMain () {
 #if (HAVE_m128 || HAVE_m256) && __TBB_SSE_STACK_ALIGNMENT_BROKEN
     REPORT("Known issue: stack alignment for SIMD instructions not tested.\n");
 #endif
+
+    various_range_implementations::test();
+    interaction_with_range_and_partitioner::test();
     return Harness::Done;
 }
 
diff --git a/src/test/test_parallel_for_each.cpp b/src/test/test_parallel_for_each.cpp
index 0a20aa3..2ca101d 100644
--- a/src/test/test_parallel_for_each.cpp
+++ b/src/test/test_parallel_for_each.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
@@ -35,6 +27,7 @@
 #include "tbb/atomic.h"
 #include "harness.h"
 #include "harness_iterator.h"
+#include <list>
 
 // Some old compilers can't deduce template paremeter type for parallel_for_each
 // if the function name is passed without explicit cast to function pointer.
@@ -117,7 +110,7 @@ void TestExceptionsSupport()
     Iterator end(&test_vector[NUMBER_OF_ELEMENTS]);
 
     TRY();
-        tbb::parallel_for_each(begin, end, (TestFunctionType)test_function_with_exception);
+       tbb::parallel_for_each(begin, end, (TestFunctionType)test_function_with_exception);
     CATCH_AND_ASSERT();
 }
 #endif /* TBB_USE_EXCEPTIONS */
@@ -160,6 +153,59 @@ void TestCancellation()
 
 #include "harness_cpu.h"
 
+const size_t elements = 10000;
+const size_t init_sum = 0;
+tbb::atomic<size_t> element_counter;
+
+template<size_t K>
+struct set_to {
+    void operator()(size_t& x) const {
+        x = K;
+        ++element_counter;
+    }
+};
+
+#include "test_range_based_for.h"
+#include <functional>
+
+void range_for_each_test() {
+    using namespace range_based_for_support_tests;
+    std::list<size_t> v(elements, 0);
+
+    // iterator, const and non-const range check
+    element_counter = 0;
+    tbb::parallel_for_each(v.begin(), v.end(), set_to<1>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    element_counter = 0;
+    tbb::parallel_for_each(v, set_to<0>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum , "elements of v not all zeros");
+
+    element_counter = 0;
+    tbb::parallel_for_each(tbb::blocked_range<std::list<size_t>::iterator>(v.begin(), v.end()), set_to<1>());
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    // iterator, const and non-const range check with context
+    element_counter = 0;
+    tbb::task_group_context context;
+    tbb::parallel_for_each(v.begin(), v.end(), set_to<0>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum , "elements of v not all zeros");
+
+    element_counter = 0;
+    tbb::parallel_for_each(v, set_to<1>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == v.size(), "elements of v not all ones");
+
+    element_counter = 0;
+    tbb::parallel_for_each(tbb::blocked_range<std::list<size_t>::iterator>(v.begin(), v.end()), set_to<0>(), context);
+    ASSERT(element_counter == v.size() && element_counter == elements, "not all elements were set");
+    ASSERT(range_based_for_accumulate(v, std::plus<size_t>(), init_sum) == init_sum , "elements of v not all zeros");
+}
+
 int TestMain () {
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -190,6 +236,8 @@ int TestMain () {
         }
 #endif /* __TBB_TASK_GROUP_CONTEXT */
 
+        range_for_each_test();
+
         // Test that all workers sleep when no work
         TestCPUUserTime(p);
     }
diff --git a/src/test/test_parallel_for_vectorization.cpp b/src/test/test_parallel_for_vectorization.cpp
index b3ce851..e8ce9c6 100644
--- a/src/test/test_parallel_for_vectorization.cpp
+++ b/src/test/test_parallel_for_vectorization.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // The test checks if the vectorization happens when PPL-style parallel_for is
diff --git a/src/test/test_parallel_invoke.cpp b/src/test/test_parallel_invoke.cpp
index 4be49a0..a45317e 100644
--- a/src/test/test_parallel_invoke.cpp
+++ b/src/test/test_parallel_invoke.cpp
@@ -1,35 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if _MSC_VER && !defined(__INTEL_COMPILER)
 #pragma warning(disable: 4180) // "qualifier applied to function type has no meaning; ignored"
 #endif
 
+#ifndef TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE
+    #define TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE __TBB_CPF_BUILD
+#endif
+
 #include "tbb/parallel_invoke.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/atomic.h"
@@ -40,7 +36,6 @@
     #define __TBB_FUNCTION_BY_CONSTREF_IN_TEMPLATE_BROKEN 1
 #endif
 
-static const size_t MAX_NUMBER_OF_PINVOKE_ARGS = 10;
 tbb::atomic<size_t> function_counter;
 
 // Some macros to make the test easier to read
diff --git a/src/test/test_parallel_pipeline.cpp b/src/test/test_parallel_pipeline.cpp
index bd6b8f3..c846f1a 100644
--- a/src/test/test_parallel_pipeline.cpp
+++ b/src/test/test_parallel_pipeline.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Before including pipeline.h, set up the variable to count heap allocated
@@ -46,7 +38,6 @@ const unsigned n_buffers = 2*n_tokens;
 const unsigned max_counter = 16;
 static tbb::atomic<int> output_counter;
 static tbb::atomic<int> input_counter;
-static tbb::atomic<int> check_type_counter;
 static tbb::atomic<int> non_pointer_specialized_calls;
 static tbb::atomic<int> pointer_specialized_calls;
 static tbb::atomic<int> first_pointer_specialized_calls;
@@ -89,39 +80,7 @@ private:
     T *my_p;
 };
 
-template<class Counter>
-class check_type : Harness::NoAfterlife {
-    Counter id;
-    bool am_ready;
-public:
-    check_type( ) : id(0), am_ready(false) {
-        ++check_type_counter;
-    }
-
-    check_type(const check_type& other) : Harness::NoAfterlife(other) {
-        other.AssertLive();
-        AssertLive();
-        id = other.id;
-        am_ready = other.am_ready;
-        ++check_type_counter;
-    }
-
-    ~check_type() { 
-        AssertLive(); 
-        --check_type_counter;
-        ASSERT(check_type_counter >= 0, "too many destructions");
-    }
-
-    unsigned int my_id() { AssertLive(); return id; }
-    bool is_ready() { AssertLive(); return am_ready; }
-    void function() {
-        AssertLive();
-        if( id == 0 ) {
-            id = 1;
-            am_ready = true;
-        }
-    }
-};
+#include "harness_checktype.h"
 
 // methods for testing check_type< >, that return okay values for other types.
 template<typename T>
@@ -400,10 +359,6 @@ void checkCounters(final_assert_type my_t) {
         case no_pointer_counts:
             break;
     }
-    if(check_type_counter > 0) {
-        REMARK("check_type_counter == %lu\n", (unsigned long)check_type_counter);
-    }
-    ASSERT(!check_type_counter, "Error in check_type creation/destruction");
 }
 
 static const tbb::filter::mode filter_table[] = { tbb::filter::parallel, tbb::filter::serial_in_order, tbb::filter::serial_out_of_order}; 
@@ -626,6 +581,9 @@ void run_function(const char *l1, const char *l2) {
     if(check_intbuffer) REMARK(", check output of filters");
     REMARK("\n");
 
+    Check<type1> check1;  // check constructions/destructions
+    Check<type2> check2;  // for type1 or type2 === check_type<T>
+
     const size_t number_of_filters = 3;
 
     input_filter<type1> i_filter;
@@ -698,18 +656,12 @@ int TestMain() {
         run_function<size_t,double>("size_t", "double");
         run_function<size_t,bool>("size_t", "bool");
         run_function<int,int>("int","int");
-        check_type_counter = 0;
         run_function<check_type<unsigned int>,size_t>("check_type<unsigned int>", "size_t");
-        ASSERT(!check_type_counter, "Error in check_type<unsigned int> creation/destruction");
         run_function<check_type<unsigned short>,size_t>("check_type<unsigned short>", "size_t");
-        ASSERT(!check_type_counter, "Error in check_type<unsigned short> creation/destruction");
         run_function<check_type<unsigned int>, check_type<unsigned int> >("check_type<unsigned int>", "check_type<unsigned int>");
         run_function<check_type<unsigned int>, check_type<unsigned short> >("check_type<unsigned int>", "check_type<unsigned short>");
-        ASSERT(!check_type_counter, "Error in check_type<unsigned int> creation/destruction");
         run_function<check_type<unsigned short>, check_type<unsigned short> >("check_type<unsigned short>", "check_type<unsigned short>");
-        ASSERT(!check_type_counter, "Error in check_type<unsigned short> creation/destruction");
         run_function<double, check_type<unsigned short> >("double", "check_type<unsigned short>");
-        ASSERT(!check_type_counter, "Error in check_type<unsigned short> creation/destruction");
     }
     return Harness::Done;
 }
diff --git a/src/test/test_parallel_reduce.cpp b/src/test/test_parallel_reduce.cpp
index 51d2623..c708266 100644
--- a/src/test/test_parallel_reduce.cpp
+++ b/src/test/test_parallel_reduce.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/parallel_reduce.h"
@@ -268,6 +260,42 @@ public:
 
 #include "tbb/task_scheduler_init.h"
 #include "harness_cpu.h"
+#include "test_partitioner.h"
+
+namespace interaction_with_range_and_partitioner {
+
+// Test checks compatibility of parallel_reduce algorithm with various range implementations
+
+void test() {
+    using namespace test_partitioner_utils::interaction_with_range_and_partitioner;
+
+    test_partitioner_utils::SimpleReduceBody body;
+    tbb::affinity_partitioner ap;
+
+    parallel_reduce(Range1(true, false), body, ap);
+    parallel_reduce(Range2(true, false), body, ap);
+    parallel_reduce(Range3(true, false), body, ap);
+    parallel_reduce(Range4(false, true), body, ap);
+    parallel_reduce(Range5(false, true), body, ap);
+    parallel_reduce(Range6(false, true), body, ap);
+
+    parallel_reduce(Range1(false, true), body, tbb::simple_partitioner());
+    parallel_reduce(Range2(false, true), body, tbb::simple_partitioner());
+    parallel_reduce(Range3(false, true), body, tbb::simple_partitioner());
+    parallel_reduce(Range4(false, true), body, tbb::simple_partitioner());
+    parallel_reduce(Range5(false, true), body, tbb::simple_partitioner());
+    parallel_reduce(Range6(false, true), body, tbb::simple_partitioner());
+
+    parallel_reduce(Range1(false, true), body, tbb::auto_partitioner());
+    parallel_reduce(Range2(false, true), body, tbb::auto_partitioner());
+    parallel_reduce(Range3(false, true), body, tbb::auto_partitioner());
+    parallel_reduce(Range4(false, true), body, tbb::auto_partitioner());
+    parallel_reduce(Range5(false, true), body, tbb::auto_partitioner());
+    parallel_reduce(Range6(false, true), body, tbb::auto_partitioner());
+}
+
+} // interaction_with_range_and_partitioner
+
 
 int TestMain () {
     if( MinThread<0 ) {
@@ -283,5 +311,7 @@ int TestMain () {
         // Test that all workers sleep when no work
         TestCPUUserTime(p);
     }
+
+    interaction_with_range_and_partitioner::test();
     return Harness::Done;
 }
diff --git a/src/test/test_parallel_scan.cpp b/src/test/test_parallel_scan.cpp
index 9ff3c34..872a069 100644
--- a/src/test/test_parallel_scan.cpp
+++ b/src/test/test_parallel_scan.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/parallel_scan.h"
diff --git a/src/test/test_parallel_sort.cpp b/src/test/test_parallel_sort.cpp
index 590d5ea..d4c7bf1 100644
--- a/src/test/test_parallel_sort.cpp
+++ b/src/test/test_parallel_sort.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
@@ -32,6 +24,7 @@
 #include "tbb/concurrent_vector.h"
 #include "harness.h"
 #include <math.h>
+#include <vector>
 #include <exception>
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
@@ -509,6 +502,58 @@ void Flog() {
     delete [] string_array_2;
 }
 
+const int elements = 10000;
+
+void rand_vec(std::vector<int> &v) {
+    for (int i=0; i<elements; ++i) {
+        (v.push_back(rand()%elements*10));
+    }
+}
+
+void range_sort_test() {
+    std::vector<int> v;
+
+    typedef std::vector<int>::iterator itor;
+    // iterator checks
+    rand_vec(v);
+    tbb::parallel_sort(v.begin(), v.end());
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a <= *(a+1), "v not sorted");
+    v.clear();
+
+    rand_vec(v);
+    tbb::parallel_sort(v.begin(), v.end(), std::greater<int>());
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a >= *(a+1), "v not sorted");
+    v.clear();
+
+    // range checks
+    rand_vec(v);
+    tbb::parallel_sort(v);
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a <= *(a+1), "v not sorted");
+    v.clear();
+
+    rand_vec(v);
+    tbb::parallel_sort(v, std::greater<int>());
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a >= *(a+1), "v not sorted");
+    v.clear();
+
+    // const range checks
+    rand_vec(v);
+    tbb::parallel_sort(tbb::blocked_range<std::vector<int>::iterator>(v.begin(), v.end()));
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a <= *(a+1), "v not sorted");
+    v.clear();
+
+    rand_vec(v);
+    tbb::parallel_sort(tbb::blocked_range<std::vector<int>::iterator>(v.begin(), v.end()), std::greater<int>());
+    for(itor a=v.begin(); a<v.end()-1; ++a) ASSERT(*a >= *(a+1), "v not sorted");
+    v.clear();
+
+    // array tests
+    int arr[elements];
+    for(int i=0; i<elements; ++i) arr[i] = rand()%(elements*10);
+    tbb::parallel_sort(arr);
+    for(int i=0; i<elements-1; ++i) ASSERT(arr[i] <= arr[i+1], "arr not sorted");
+}
+
 #include <cstdio>
 #include "harness_cpu.h"
 
@@ -522,6 +567,7 @@ int TestMain () {
             tbb::task_scheduler_init init( p );
             current_p = p;
             Flog();
+            range_sort_test();
 
             // Test that all workers sleep when no work
             TestCPUUserTime(p);
diff --git a/src/test/test_parallel_while.cpp b/src/test/test_parallel_while.cpp
index f9be68c..0bffcbf 100644
--- a/src/test/test_parallel_while.cpp
+++ b/src/test/test_parallel_while.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/parallel_while.h"
diff --git a/src/test/test_partitioner.h b/src/test/test_partitioner.h
new file mode 100644
index 0000000..916f0e9
--- /dev/null
+++ b/src/test/test_partitioner.h
@@ -0,0 +1,594 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#if _MSC_VER==1500 && !__INTEL_COMPILER
+    // VS2008/VC9 has an issue in math.h
+    #pragma warning( push )
+    #pragma warning( disable: 4985 )
+#endif
+#include <cmath>
+#if _MSC_VER==1500 && !__INTEL_COMPILER
+    #pragma warning( pop )
+#endif
+#include "tbb/tbb_stddef.h"
+#include "harness.h"
+
+namespace test_partitioner_utils {
+
+struct RangeStatisticData {
+    // denotes the number of range objects
+    size_t m_rangeNum;
+
+    // store minimal and maximal range sizes (in terms of number of iterations)
+    size_t m_minRangeSize;
+    size_t m_maxRangeSize;
+
+    bool m_wasMinRangeSizeWritten; // shows whether relevant field was written or not
+};
+
+using tbb::internal::uint64_t;
+using tbb::split;
+using tbb::proportional_split;
+using tbb::blocked_range;
+
+// helper for calculating number of range objects created before balancing phase is started
+// and for finding maximum and minimum number of iterations among all such ranges
+// Note: class does not provide exclusive access to members
+class RangeStatisticCollector {
+public:
+    RangeStatisticCollector(RangeStatisticData *statisticData) :
+        m_statData(statisticData)
+    {
+        m_called = false;
+        if (m_statData)
+            m_statData->m_rangeNum = 1;
+    }
+
+    // constructor is called from non-proportional split constructor of derived Range
+    RangeStatisticCollector(RangeStatisticCollector& sc, size_t rangeSize) {
+        if (!sc.m_called) {
+            // this is the first time non-proportional split constructor is called
+            // it means that work distribution phase has been completed and
+            // work balancing phase has been just started
+            sc.m_called = true;
+
+            if (sc.m_statData) {
+                size_t *minRangeSize = &sc.m_statData->m_minRangeSize;
+                if (*minRangeSize > rangeSize || !sc.m_statData->m_wasMinRangeSizeWritten) { // if minimum is not an actual minimum
+                    *minRangeSize = rangeSize;
+                    sc.m_statData->m_wasMinRangeSizeWritten = true;
+                }
+                size_t *maxRangeSize = &sc.m_statData->m_maxRangeSize;
+                if (*maxRangeSize < rangeSize) { // if maximum is not an actual maximum
+                    *maxRangeSize = rangeSize;
+                }
+            }
+        }
+        *this = sc;
+        // constructor is used on work balancing phase only, so no need to increment
+        // number of range objects created
+    }
+
+    RangeStatisticCollector(RangeStatisticCollector& sc, proportional_split&) {
+        if (sc.m_statData)
+            sc.m_statData->m_rangeNum++;
+        *this = sc;
+    }
+
+private:
+    RangeStatisticData *m_statData;
+
+    // turns to 'true' when non-proportional split constructor is called first time
+    bool m_called;
+};
+
+// Base class for fake ranges used in vaious tests for parallel
+// algorithms as well as for partitioner
+template <typename DerivedRange, typename T>
+class RangeBase: public RangeStatisticCollector {
+protected:
+    size_t my_begin, my_end;
+    bool m_provide_feedback;
+    bool m_ensure_non_empty_size;
+public:
+    RangeBase(size_t _begin, size_t _end, RangeStatisticData *statData,
+              bool provide_feedback, bool ensure_non_empty_size)
+        : RangeStatisticCollector(statData)
+        , my_begin(_begin), my_end(_end)
+        , m_provide_feedback(provide_feedback)
+        , m_ensure_non_empty_size(ensure_non_empty_size)
+        { }
+    RangeBase(RangeBase& r, tbb::split) : RangeStatisticCollector(r, r.size()) {
+        *this = r;
+        size_t middle = r.my_begin + (r.my_end - r.my_begin) / 2u;
+        r.my_end = my_begin = middle;
+    }
+
+    RangeBase(RangeBase& r, proportional_split& p)
+        : RangeStatisticCollector(r, p) {
+        *this = r;
+        size_t original_size = r.size();
+        T right = self().compute_right_part(r, p);
+        size_t right_part = self().round(right);
+        if( m_ensure_non_empty_size ) {
+            right_part = (original_size == right_part) ? (original_size - 1) : right_part;
+            right_part = (right_part != 0) ? right_part : 1;
+        }
+        r.my_end = my_begin = r.my_end - right_part;
+#if __TBB_ENABLE_RANGE_FEEDBACK
+        if( m_provide_feedback )
+            p.set_proportion(original_size - right_part, right_part);
+#endif
+        if( m_ensure_non_empty_size )
+            ASSERT(r.my_end != r.my_begin && my_end != my_begin, "Incorrect range split");
+    }
+
+    size_t begin() const { return my_begin; }
+    size_t end() const { return my_end; }
+    bool is_divisible() const { return (my_end - my_begin) > 1; }
+    bool empty() const { return my_end == my_begin; }
+    size_t size() const { return my_end - my_begin; }
+
+    // helper methods (not part of the range concept)
+    DerivedRange& self() { return static_cast<DerivedRange&>(*this); }
+    size_t round(T part) { return size_t(part); }
+    T compute_right_part(RangeBase& r, proportional_split& p) {
+        return T(r.size() * T(p.right())) / T(p.left() + p.right());
+    }
+    bool is_ensure_non_emptiness() { return m_ensure_non_empty_size; }
+};
+
+namespace TestRanges {
+/*
+ * RoundedUpRange rounds result up
+ * RoundedDownRange rounds result down
+ * Range1_2 forces proportion always to be 1:2 and rounds up
+ * Range1_999 uses weird proportion 1:999 and rounds up
+ * Range1_999 uses weird proportion 999:1 and rounds up
+ * BlockedRange uses tbb::blocked_range formula for proportion calculation
+ * InvertedProportionRange inverts proportion suggested by partitioner (e.g. 1:3 --> 3:1)
+ * ExactSplitRange uses integer arithmetic for accurate splitting
+ */
+
+class RoundedDownRange: public RangeBase<RoundedDownRange, float> {
+public:
+    RoundedDownRange(size_t _begin, size_t _end, RangeStatisticData *statData,
+                     bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<RoundedDownRange, float>(_begin, _end, statData, provide_feedback,
+                                             ensure_non_empty_size) { }
+    RoundedDownRange(RoundedDownRange& r, tbb::split)
+        : RangeBase<RoundedDownRange, float>(r, tbb::split()) { }
+    RoundedDownRange(RoundedDownRange& r, proportional_split& p)
+        : RangeBase<RoundedDownRange, float>(r, p) { }
+    // uses default implementation of RangeBase::round() which rounds down
+    static const bool is_splittable_in_proportion = true;
+};
+
+class RoundedUpRange: public RangeBase<RoundedUpRange, float> {
+public:
+    RoundedUpRange(size_t _begin, size_t _end, RangeStatisticData *statData,
+                   bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<RoundedUpRange, float>(_begin, _end, statData, provide_feedback,
+                                           ensure_non_empty_size) { }
+    RoundedUpRange(RoundedUpRange& r, tbb::split)
+        : RangeBase<RoundedUpRange, float>(r, tbb::split()) { }
+    RoundedUpRange(RoundedUpRange& r, proportional_split& p)
+        : RangeBase<RoundedUpRange, float>(r, p) { }
+    size_t round(float part) { return size_t(std::ceil(part)); }
+    static const bool is_splittable_in_proportion = true;
+};
+
+class Range1_2: public RangeBase<Range1_2, float> {
+public:
+    Range1_2(size_t _begin, size_t _end, RangeStatisticData *statData,
+             bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<Range1_2, float>(_begin, _end, statData, provide_feedback,
+                                     ensure_non_empty_size) { }
+    Range1_2(Range1_2& r, tbb::split) : RangeBase<Range1_2, float>(r, tbb::split()) { }
+    Range1_2(Range1_2& r, proportional_split& p) : RangeBase<Range1_2, float>(r, p) { }
+    static const bool is_splittable_in_proportion = true;
+    float compute_right_part(RangeBase<Range1_2, float>& r, proportional_split&) {
+        return float(r.size() * 2) / 3.0f;
+    }
+    // uses default implementation of RangeBase::round() which rounds down
+};
+
+class Range1_999: public RangeBase<Range1_999, float> {
+public:
+    Range1_999(size_t _begin, size_t _end, RangeStatisticData *statData,
+               bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<Range1_999, float>(_begin, _end, statData, provide_feedback,
+                                       ensure_non_empty_size) { }
+    Range1_999(Range1_999& r, tbb::split) : RangeBase<Range1_999, float>(r, tbb::split()) { }
+    Range1_999(Range1_999& r, proportional_split& p) : RangeBase<Range1_999, float>(r, p) { }
+    static const bool is_splittable_in_proportion = true;
+    float compute_right_part(RangeBase<Range1_999, float>& r, proportional_split&) {
+        return float(r.size() * 999) / 1000.0f;
+    }
+    // uses default implementation of RangeBase::round() which rounds down
+};
+
+class Range999_1: public RangeBase<Range999_1, float> {
+public:
+    Range999_1(size_t _begin, size_t _end, RangeStatisticData *statData,
+               bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<Range999_1, float>(_begin, _end, statData, provide_feedback,
+                                       ensure_non_empty_size) { }
+    Range999_1(Range999_1& r, tbb::split) : RangeBase<Range999_1, float>(r, tbb::split()) { }
+    Range999_1(Range999_1& r, proportional_split& p) : RangeBase<Range999_1, float>(r, p) { }
+    static const bool is_splittable_in_proportion = true;
+    float compute_right_part(RangeBase<Range999_1, float>& r, proportional_split&) {
+        return float(r.size()) / 1000.0f;
+    }
+    // uses default implementation of RangeBase::round() which rounds down
+};
+
+class BlockedRange: public RangeStatisticCollector, public blocked_range<size_t>  {
+public:
+    BlockedRange(size_t _begin, size_t _end, RangeStatisticData *statData, bool, bool)
+        : RangeStatisticCollector(statData), blocked_range<size_t>(_begin, _end) { }
+    BlockedRange(BlockedRange& r, split)
+        : RangeStatisticCollector(r, r.size()), blocked_range<size_t>(r, split()) { }
+    BlockedRange(BlockedRange& r, proportional_split& p)
+        : RangeStatisticCollector(r, p), blocked_range<size_t>(r, p) { }
+    static const bool is_splittable_in_proportion = true;
+    bool is_ensure_non_emptiness() { return false; }
+};
+
+class InvertedProportionRange: public RangeBase<InvertedProportionRange, float> {
+public:
+    InvertedProportionRange(size_t _begin, size_t _end, RangeStatisticData *statData,
+                            bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<InvertedProportionRange, float>(_begin, _end, statData, provide_feedback,
+                                                    ensure_non_empty_size) { }
+    InvertedProportionRange(InvertedProportionRange& r, split)
+        : RangeBase<InvertedProportionRange, float>(r, split()) { }
+    InvertedProportionRange(InvertedProportionRange& r, proportional_split& p)
+        : RangeBase<InvertedProportionRange, float>(r, p) { }
+    float compute_right_part(RangeBase<InvertedProportionRange, float>& r,
+                             proportional_split& p) {
+        return float(r.size() * float(p.left())) / float(p.left() + p.right());
+    }
+    static const bool is_splittable_in_proportion = true;
+};
+
+class ExactSplitRange: public RangeBase<ExactSplitRange, size_t> {
+public:
+    ExactSplitRange(size_t _begin, size_t _end, RangeStatisticData *statData,
+                    bool provide_feedback, bool ensure_non_empty_size)
+        : RangeBase<ExactSplitRange, size_t>(_begin, _end, statData, provide_feedback,
+                                             ensure_non_empty_size) { }
+    ExactSplitRange(ExactSplitRange& r, split)
+        : RangeBase<ExactSplitRange, size_t>(r, split()) { }
+    ExactSplitRange(ExactSplitRange& r, proportional_split& p)
+        : RangeBase<ExactSplitRange, size_t>(r, p) { }
+    size_t compute_right_part(RangeBase<ExactSplitRange, size_t>& r, proportional_split& p) {
+        size_t parts = size_t(p.left() + p.right());
+        size_t currSize = r.size();
+        size_t int_part = currSize / parts * p.right();
+        size_t remainder = currSize % parts * p.right();
+        int_part += remainder / parts;
+        remainder %= parts;
+        size_t right_part = int_part + (remainder > parts/2 ? 1 : 0);
+        return right_part;
+    }
+    static const bool is_splittable_in_proportion = true;
+};
+
+} // namespace TestRanges
+
+struct TreeNode {
+    size_t m_affinity;
+    size_t m_range_begin, m_range_end;
+    TreeNode *m_left, *m_right;
+private:
+    TreeNode(size_t range_begin, size_t range_end, size_t affinity,
+             TreeNode* left, TreeNode* right)
+        : m_affinity(affinity), m_range_begin(range_begin), m_range_end(range_end),
+          m_left(left), m_right(right) { }
+
+    friend TreeNode* make_node(size_t range_begin, size_t range_end, size_t affinity,
+                               TreeNode *left, TreeNode *right);
+};
+
+TreeNode* make_node(size_t range_begin, size_t range_end, size_t affinity,
+                    TreeNode* left = NULL, TreeNode* right = NULL) {
+    ASSERT(range_begin <= range_end, "Incorrect range interval");
+    return new TreeNode(range_begin, range_end, affinity, left, right);
+}
+
+// Class stores nodes as a binary tree
+// (marshals TreeNode objects in accordance with values of range intervals)
+// Note: BinaryTree deletes all TreeNode objects pushed into it in a destruction phase
+class BinaryTree {
+public:
+    BinaryTree() : m_root(NULL) { }
+    ~BinaryTree() {
+        if (m_root)
+            remove_node_recursively(m_root);
+    }
+
+    // pushed node must be within subrange of the parent nodes
+    void push_node(TreeNode* node) {
+        if (!node)
+            return;
+
+        if (m_root) {
+            ASSERT(node->m_range_begin >= m_root->m_range_begin &&
+                         node->m_range_end <= m_root->m_range_end,
+                         "Cannot push node not from subrange");
+        }
+
+        push_subnode(m_root, node);
+    }
+
+    void visualize() {
+        if (!m_root) { // nothing to visualize
+            REPORT("Tree is empty\n");
+            return;
+        }
+        visualize_node(m_root);
+    }
+
+private:
+    TreeNode *m_root;
+
+    void push_subnode(TreeNode *&root_node, TreeNode *node) {
+        if (!root_node) {
+            root_node = node;
+            return;
+        } else if (are_nodes_equal(root_node, node)) {
+            // no need to push the same node
+            return;
+        }
+
+        if (!has_children(root_node)) {
+            // if current root_node does not have children passed node
+            // should has one of the interval bounds to be equal to
+            // the same bound in the root_node
+            if (is_look_like_left_sibling(root_node, node))
+                push_subnode(root_node->m_left, node);
+            else
+                push_subnode(root_node->m_right, node);
+            return;
+        }
+
+        if (has_left_child(root_node)) {
+            if (is_subnode(root_node->m_left, node)) {
+                push_subnode(root_node->m_left, node);
+                return;
+            }
+            push_subnode(root_node->m_right, node);
+            return;
+        }
+
+        ASSERT(root_node->m_right != NULL, "Right child is NULL but must be present");
+        if (is_subnode(root_node->m_right, node)) {
+            push_subnode(root_node->m_right, node);
+            return;
+        }
+        push_subnode(root_node->m_left, node);
+        return;
+    }
+
+    bool has_children(TreeNode *node) { return node->m_left || node->m_right; }
+
+    bool is_look_like_left_sibling(TreeNode *root_node, TreeNode *node) {
+        if (root_node->m_range_begin == node->m_range_begin)
+            return true;
+        ASSERT(root_node->m_range_end == node->m_range_end, NULL);
+        return false;
+    }
+
+    bool has_left_child(TreeNode *node) { return node->m_left != NULL; }
+
+    bool is_subnode(TreeNode *root_node, TreeNode *node) {
+        return root_node->m_range_begin <= node->m_range_begin &&
+            node->m_range_end <= root_node->m_range_end;
+    }
+
+    bool are_nodes_equal(TreeNode *node1, TreeNode *node2) const {
+        return node1->m_range_begin == node2->m_range_begin &&
+            node1->m_range_end == node2->m_range_end;
+    }
+
+    void remove_node_recursively(TreeNode *node) {
+        if (node->m_left)
+            remove_node_recursively(node->m_left);
+        if (node->m_right)
+            remove_node_recursively(node->m_right);
+        delete node;
+    }
+
+    static void visualize_node(const TreeNode* node, unsigned indent = 0) {
+        // respecting indent
+        const char *indentStep = "    ";
+        for (unsigned i = 0; i < indent; ++i)
+            REPORT("%s", indentStep);
+
+        size_t rangeSize = node->m_range_end - node->m_range_begin;
+        REPORT("[%llu, %llu)%%%llu@%llu\n", uint64_t(node->m_range_begin), uint64_t(node->m_range_end),
+               uint64_t(rangeSize), uint64_t(node->m_affinity));
+
+        if (node->m_left)
+            visualize_node(node->m_left, indent + 1);
+        if (node->m_right)
+            visualize_node(node->m_right, indent + 1);
+    }
+};
+
+class SimpleBody {
+public:
+    SimpleBody() { }
+    template <typename Range>
+    void operator()(Range&) const { }
+};
+
+class SimpleReduceBody {
+public:
+    SimpleReduceBody() { }
+    SimpleReduceBody(SimpleReduceBody&, tbb::split) { }
+    template <typename Range>
+    void operator()(Range&) { }
+    void join(SimpleReduceBody&) { }
+};
+
+namespace interaction_with_range_and_partitioner {
+
+class SplitConstructorAssertedRange {
+    mutable bool is_divisible_called;
+    mutable bool is_empty_called;
+    bool my_assert_in_nonproportional, my_assert_in_proportional;
+public:
+    SplitConstructorAssertedRange(bool assert_in_nonproportional, bool assert_in_proportional)
+        : is_divisible_called(false),
+          is_empty_called(false),
+          my_assert_in_nonproportional(assert_in_nonproportional),
+          my_assert_in_proportional(assert_in_proportional) { }
+    SplitConstructorAssertedRange(SplitConstructorAssertedRange& r, tbb::split) {
+        *this = r;
+        ASSERT( !my_assert_in_nonproportional, "Disproportional splitting constructor was called but should not been" );
+    }
+    SplitConstructorAssertedRange(SplitConstructorAssertedRange& r, proportional_split&) {
+        *this = r;
+        ASSERT( !my_assert_in_proportional, "Proportional splitting constructor was called but should not been" );
+    }
+    bool is_divisible() const {
+        if (!is_divisible_called) {
+            is_divisible_called = true;
+            return true;
+        }
+        return false;
+    }
+    bool empty() const {
+        if (!is_empty_called) {
+            is_empty_called = true;
+            return false;
+        }
+        return true;
+    }
+};
+
+/*
+ * Possible use cases are:
+ * -------------------------------------------------------------------------------------------------------------
+ * Range#  is_splittable_in_proportion   Range proportional ctor      Used partitioner          Result Effect
+ * -------------------------------------------------------------------------------------------------------------
+ *   1           true                       available                proportional             pMN, r(p), part(p)
+ * -------------------------------------------------------------------------------------------------------------
+ *   2           false                      available                proportional             p11, r(p), part(p)
+ * -------------------------------------------------------------------------------------------------------------
+ *   3        not defined                   available                proportional             p11, r(p), part(p)
+ * -------------------------------------------------------------------------------------------------------------
+ *   4           true                     not available              proportional             pMN, r(s), part(p)  *
+ * -------------------------------------------------------------------------------------------------------------
+ *   5           false                    not available              proportional             p11, r(s), part(p)
+ * -------------------------------------------------------------------------------------------------------------
+ *   6        not defined                 not available              proportional             p11, r(s), part(p)
+ * -------------------------------------------------------------------------------------------------------------
+ *   1           true                       available                   simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *   2           false                      available                   simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *   3        not defined                   available                   simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *   4           true                     not available                 simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *   5           false                    not available                 simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *   6        not defined                 not available                 simple                s, r(s), part(s)
+ * -------------------------------------------------------------------------------------------------------------
+ *
+ * Legend:
+ *   proportional - with proportional splits (e.g. affinity_partitioner)
+ *   simple  - without proportional splits (e.g. simple_partitioner, auto_partitioner)
+ *   pMN     - proportional_split object with proportion M to N is created. (p11 - proportion 1 to 1)
+ *   s       - split object is created
+ *   r(p)    - range's proportional split constructor is called
+ *   r(s)    - range's ordinary split constructor is called
+ *   part(p) - partitioner's proportional split constructor is called
+ *   part(s) - partitioner's ordinary split constructor is called
+ *      *    - incorrect split behavior is possible (e.g. partitioner divides at an arbitrary ratio while
+ *             range divides into halves)
+ */
+
+
+// is_splittable_in_proportion = true, proportional_split ctor
+class Range1: public SplitConstructorAssertedRange {
+public:
+    Range1(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range1( Range1& r, tbb::split ) : SplitConstructorAssertedRange(r, tbb::split()) { }
+    Range1( Range1& r, proportional_split& proportion ) : SplitConstructorAssertedRange(r, proportion) { }
+    static const bool is_splittable_in_proportion = true;
+};
+
+// is_splittable_in_proportion = false, proportional_split ctor
+class Range2: public SplitConstructorAssertedRange {
+public:
+    Range2(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range2(Range2& r, tbb::split) : SplitConstructorAssertedRange(r, tbb::split()) { }
+    Range2(Range2& r, proportional_split& p) : SplitConstructorAssertedRange(r, p) {
+        // TODO: add check that 'is_splittable_in_proportion==false' results only in 1:1 proportions
+    }
+    static const bool is_splittable_in_proportion = false;
+};
+
+// is_splittable_in_proportion is not defined, proportional_split ctor
+class Range3: public SplitConstructorAssertedRange {
+public:
+    Range3(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range3(Range3& r, tbb::split) : SplitConstructorAssertedRange(r, tbb::split()) { }
+    Range3(Range3& r, proportional_split& p) : SplitConstructorAssertedRange(r, p) {
+        // TODO: add check that absence of 'is_splittable_in_proportion' results only in 1:1 proportions
+    }
+};
+
+// is_splittable_in_proportion = true, proportional_split ctor is not defined
+class Range4: public SplitConstructorAssertedRange {
+public:
+    Range4(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range4(Range4& r, tbb::split) : SplitConstructorAssertedRange(r, tbb::split()) { }
+    static const bool is_splittable_in_proportion = true;
+};
+
+// is_splittable_in_proportion = false, proportional_split ctor is not defined
+class Range5: public SplitConstructorAssertedRange {
+public:
+    Range5(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range5(Range5& r, tbb::split) : SplitConstructorAssertedRange(r, tbb::split()) { }
+    static const bool is_splittable_in_proportion = false;
+};
+
+// is_splittable_in_proportion is not defined, proportional_split ctor is not defined
+class Range6: public SplitConstructorAssertedRange {
+public:
+    Range6(bool assert_in_nonproportional, bool assert_in_proportional)
+        : SplitConstructorAssertedRange(assert_in_nonproportional, assert_in_proportional) { }
+    Range6(Range6& r, tbb::split) : SplitConstructorAssertedRange(r, tbb::split()) { }
+};
+
+} // namespace interaction_with_range_and_partitioner
+
+} // namespace test_partitioner_utils
diff --git a/src/test/test_partitioner_whitebox.cpp b/src/test/test_partitioner_whitebox.cpp
new file mode 100644
index 0000000..e88efa6
--- /dev/null
+++ b/src/test/test_partitioner_whitebox.cpp
@@ -0,0 +1,148 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#include "harness_assert.h"
+#include "test_partitioner_whitebox.h"
+
+using uniform_iterations_distribution::ParallelTestBody;
+
+class ParallelBody: public ParallelTestBody {
+public:
+    ParallelBody(size_t parallel_group_thread_starting_index)
+        : ParallelTestBody(parallel_group_thread_starting_index) { }
+
+    void operator()(size_t relative_thread_index) const {
+        use_case_settings_t settings = {
+            m_parallel_group_thread_starting_index + relative_thread_index, // thread_num
+            0,                                                              // factors_array_len
+            0,                                                              // range_begin
+            false,                                                          // provide_feedback (disabled)
+            true,                                                           // ensure_non_empty_size
+            0,                                                              // above_threads_size_tolerance
+            0,                                                              // below_threads_size_tolerance
+            0,                                                              // between_min_max_ranges_tolerance
+            &ParallelTestBody::uniform_distribution_checker
+        };
+        g_threadNums.local() = settings.thread_num;
+        using namespace test_partitioner_utils::TestRanges;
+        {
+            size_t factors[] = { 1, 2, 3, 4, 5, 7, 9, 13, 27, 29, 30, 31, 32 };
+            settings.factors_array_len = sizeof(factors) / sizeof(factors[0]);
+
+            settings.between_min_max_ranges_tolerance = 0; // it should be equal to zero for blocked_range
+            test<BlockedRange>(settings, factors);
+
+            settings.checker = &ParallelTestBody::nonuniform_distribution_checker;
+            test<InvertedProportionRange>(settings, factors);
+            test<RoundedDownRange>(settings, factors);
+            test<RoundedUpRange>(settings, factors);
+
+            test<Range1_2>(settings, factors);
+            test<Range1_999>(settings, factors);
+            test<Range999_1>(settings, factors);
+        }
+
+        {
+            // iterations might not be distributed uniformly
+            float factors[] = { 1.2f, 2.5f, 3.7f, 4.2f, 5.1f, 8.9f, 27.8f };
+            settings.factors_array_len = sizeof(factors) / sizeof(factors[0]);
+
+            settings.between_min_max_ranges_tolerance = 1; // it should be equal to one for blocked_range
+            settings.checker = &ParallelTestBody::uniform_distribution_checker;
+            test<BlockedRange>(settings, factors);
+
+            settings.checker = &ParallelTestBody::nonuniform_distribution_checker;
+            test<InvertedProportionRange>(settings, factors);
+            test<RoundedDownRange>(settings, factors);
+            test<RoundedUpRange>(settings, factors);
+
+            test<Range1_2>(settings, factors);
+            test<Range1_999>(settings, factors);
+            test<Range999_1>(settings, factors);
+        }
+
+        {
+            // iterations might not be distributed uniformly
+            size_t factors[] = { 1, 2, 3, 4, 5, 7, 9, 11, 13, 27, 29, 30, 31, 32 };
+            settings.factors_array_len = sizeof(factors) / sizeof(factors[0]);
+
+            settings.checker = &ParallelTestBody::uniform_distribution_checker;
+            test<BlockedRange>(settings, factors, &shifted_left_range_size_generator);
+            test<BlockedRange>(settings, factors, &shifted_right_range_size_generator);
+
+            settings.checker = &ParallelTestBody::nonuniform_distribution_checker;
+            test<InvertedProportionRange>(settings, factors, &shifted_left_range_size_generator);
+            test<InvertedProportionRange>(settings, factors, &shifted_right_range_size_generator);
+
+            test<RoundedDownRange>(settings, factors, &shifted_left_range_size_generator);
+            test<RoundedDownRange>(settings, factors, &shifted_right_range_size_generator);
+
+            test<RoundedUpRange>(settings, factors, &shifted_left_range_size_generator);
+            test<RoundedUpRange>(settings, factors, &shifted_right_range_size_generator);
+
+            test<Range1_2>(settings, factors, &shifted_left_range_size_generator);
+            test<Range1_2>(settings, factors, &shifted_right_range_size_generator);
+
+            test<Range1_999>(settings, factors, &shifted_left_range_size_generator);
+            test<Range1_999>(settings, factors, &shifted_right_range_size_generator);
+
+            test<Range999_1>(settings, factors, &shifted_left_range_size_generator);
+            test<Range999_1>(settings, factors, &shifted_right_range_size_generator);
+        }
+
+        {
+            settings.factors_array_len = 1;
+            settings.between_min_max_ranges_tolerance = 1; // since range iterations are not divided without remainder
+            settings.checker = &ParallelTestBody::uniform_distribution_checker;
+            test<ExactSplitRange, size_t>(settings, NULL, &max_range_size_generator);
+            settings.range_begin = size_t(-1) - 10000;
+            test<ExactSplitRange, size_t>(settings, NULL, &max_range_size_generator);
+        }
+
+        {
+            settings.range_begin = 0;
+            settings.factors_array_len = 2 * unsigned(settings.thread_num);
+            settings.checker = &ParallelTestBody::nonuniform_distribution_checker;
+
+            test<RoundedUpRange, size_t>(settings, NULL, &simple_size_generator);
+            test<RoundedDownRange, size_t>(settings, NULL, &simple_size_generator);
+
+            test<InvertedProportionRange, size_t>(settings, NULL, &simple_size_generator);
+            test<Range1_2, size_t>(settings, NULL, &simple_size_generator);
+            test<Range1_999, size_t>(settings, NULL, &simple_size_generator);
+            test<Range999_1, size_t>(settings, NULL, &simple_size_generator);
+
+            settings.ensure_non_empty_size = false;
+            test<RoundedUpRange, size_t>(settings, NULL, &simple_size_generator);
+            test<RoundedDownRange, size_t>(settings, NULL, &simple_size_generator);
+
+            test<InvertedProportionRange, size_t>(settings, NULL, &simple_size_generator);
+            test<Range1_2, size_t>(settings, NULL, &simple_size_generator);
+            test<Range1_999, size_t>(settings, NULL, &simple_size_generator);
+            test<Range999_1, size_t>(settings, NULL, &simple_size_generator);
+
+        }
+    }
+};
+
+int TestMain() {
+    uniform_iterations_distribution::test<ParallelBody>();
+    return Harness::Done;
+}
diff --git a/src/test/test_partitioner_whitebox.h b/src/test/test_partitioner_whitebox.h
new file mode 100644
index 0000000..448fdd0
--- /dev/null
+++ b/src/test/test_partitioner_whitebox.h
@@ -0,0 +1,396 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+/* Common part for the partitioner whitebox tests */
+
+#include <typeinfo>
+
+#include "tbb/tbb_thread.h"
+#include "tbb/enumerable_thread_specific.h"
+
+#include "string.h"
+#include "harness_assert.h"
+#include "test_partitioner.h"
+
+#if TBB_USE_DEBUG
+// reducing number of simulations due to test timeout
+const size_t max_simulated_threads = 256;
+#else
+const size_t max_simulated_threads = 640;
+#endif
+
+typedef tbb::enumerable_thread_specific<size_t> ThreadNumsType;
+size_t g_threadNumInitialValue = 10;
+ThreadNumsType g_threadNums(g_threadNumInitialValue);
+
+// simulate a subset of task.h
+namespace tbb {
+namespace internal {
+typedef unsigned short affinity_id;
+}
+class fake_task {
+public:
+    typedef internal::affinity_id affinity_id;
+    void set_affinity(affinity_id a) { my_affinity = a; }
+    affinity_id affinity() const { return my_affinity; }
+    void set_parent(fake_task* p) { my_parent = p; }
+    fake_task *parent() const { return my_parent; }
+    bool is_stolen_task() const { return false; }
+    intptr_t ref_count() const { return 1; }
+    bool is_cancelled() const { return false; }
+    static void spawn(fake_task &) {} // for legacy in partitioner.h
+    virtual fake_task* execute() = 0; // enables dynamic_cast
+
+    fake_task() : my_parent(0), my_affinity(0) {}
+    virtual ~fake_task() {}
+private:
+    fake_task *my_parent;
+    affinity_id my_affinity;
+};
+}
+
+#define __TBB_task_H
+#define get_initial_auto_partitioner_divisor my_get_initial_auto_partitioner_divisor
+#define affinity_partitioner_base_v3 my_affinity_partitioner_base_v3
+#define task fake_task
+#define __TBB_STATIC_THRESHOLD 0
+#include "tbb/partitioner.h"
+#undef __TBB_STATIC_THRESHOLD
+#undef task
+#undef affinity_partitioner_base_v3
+#undef get_initial_auto_partitioner_divisor
+
+// replace library functions to simulate concurrency
+namespace tbb {
+namespace internal {
+size_t my_get_initial_auto_partitioner_divisor() {
+    const size_t X_FACTOR = 4;
+    return X_FACTOR * g_threadNums.local();
+}
+
+void* __TBB_EXPORTED_FUNC NFS_Allocate( size_t n_element, size_t element_size, void* hint );
+void __TBB_EXPORTED_FUNC NFS_Free( void* );
+
+void my_affinity_partitioner_base_v3::resize( unsigned factor ) {
+    // Check factor to avoid asking for number of workers while there might be no arena.
+    size_t new_size = factor ? factor * g_threadNums.local() : 0;
+    if (new_size != my_size) {
+        if (my_array) {
+            NFS_Free(my_array);
+            // Following two assignments must be done here for sake of exception safety.
+            my_array = NULL;
+            my_size = 0;
+        }
+        if (new_size) {
+            my_array = static_cast<affinity_id*>(NFS_Allocate(new_size, sizeof(affinity_id), NULL ));
+            memset(my_array, 0, sizeof(affinity_id) * new_size);
+            my_size = new_size;
+        }
+    }
+}
+
+} //namespace internal
+// simulate a subset of parallel_for
+namespace interface7 {
+namespace internal {
+
+// parallel_for algorithm that executes sequentially
+template<typename Range, typename Body, typename Partitioner>
+class start_for : public fake_task {
+    Range my_range;
+    Body my_body;
+    typename Partitioner::task_partition_type my_partition;
+    size_t m_executedBegin, m_executedEnd;
+    bool m_firstTimeRun;
+    size_t m_joinedBegin, m_joinedEnd;
+    test_partitioner_utils::BinaryTree* m_tree;
+public:
+    start_for( const Range& range, const Body& body, Partitioner& partitioner,
+               test_partitioner_utils::BinaryTree* tree ) :
+        my_range(range), my_body(body), my_partition(partitioner),
+        m_executedBegin(0), m_executedEnd(0), m_firstTimeRun(true),
+        m_joinedBegin(/* grows left */ range.end()), m_joinedEnd(range.end()), m_tree(tree)
+    {
+        if (m_tree) {
+            m_tree->push_node( test_partitioner_utils::make_node(my_range.begin(), my_range.end(), affinity()) );
+        }
+    }
+    //! Splitting constructor used to generate children.
+    /** parent_ becomes left child.  Newly constructed object is right child. */
+    start_for( start_for& parent_, typename Partitioner::split_type& split_obj) :
+        my_range(parent_.my_range, split_obj),
+        my_body(parent_.my_body),
+        my_partition(parent_.my_partition, split_obj),
+        m_executedBegin(0), m_executedEnd(0), m_firstTimeRun(true),
+        m_joinedBegin(/* grows left */ my_range.end()), m_joinedEnd(my_range.end()),
+        m_tree(parent_.m_tree)
+    {
+        set_parent(parent_.parent());
+        my_partition.set_affinity(*this);
+
+        if (m_tree) {
+            // collecting splitting statistics
+            m_tree->push_node( test_partitioner_utils::make_node(my_range.begin(),
+                                                                 my_range.end(),
+                                                                 affinity()) );
+            m_tree->push_node( test_partitioner_utils::make_node(parent_.my_range.begin(),
+                                                                 parent_.my_range.end(),
+                                                                 parent_.affinity()) );
+        }
+    }
+    //! Construct right child from the given range as response to the demand.
+    /** parent_ remains left child.  Newly constructed object is right child. */
+    start_for( start_for& parent_, const Range& r, depth_t d ) :
+        my_range(r),
+        my_body(parent_.my_body),
+        my_partition(parent_.my_partition, tbb::split()),
+        m_executedBegin(0), m_executedEnd(0), m_firstTimeRun(true),
+        m_joinedBegin(/* grows left */ r.end()), m_joinedEnd(r.end()),
+        m_tree(parent_.m_tree)
+    {
+        set_parent(parent_.parent());
+        my_partition.set_affinity(*this);
+        my_partition.align_depth( d );
+    }
+    fake_task* execute() {
+        my_partition.check_being_stolen( *this );
+        size_t origBegin = my_range.begin();
+        size_t origEnd = my_range.end();
+
+        my_partition.execute(*this, my_range);
+
+        ASSERT(m_executedEnd == m_joinedBegin, "Non-continuous execution");
+        m_executedEnd = m_joinedEnd;
+
+        ASSERT(origBegin == m_executedBegin && origEnd == m_executedEnd,
+               "Not all iterations were processed");
+        return NULL;
+    }
+    //! Run body for range, serves as callback for partitioner
+    void run_body( Range &r ) {
+        if( r.is_ensure_non_emptiness() )
+            ASSERT( !r.empty(), "Empty ranges are not allowed" );
+        my_body(r);
+        if (m_firstTimeRun) {
+            m_firstTimeRun = false;
+            m_executedBegin = m_executedEnd = r.begin();
+        }
+        ASSERT(m_executedBegin <= r.begin() && m_executedEnd <= r.end(),
+               "Non-continuous execution");
+        m_executedEnd = r.end();
+    }
+    //! spawn right task, serves as callback for partitioner
+    void offer_work(typename Partitioner::split_type& split_obj) {
+        start_for sibling(*this, split_obj);
+        sibling.execute();
+        join(sibling.m_executedBegin, sibling.m_executedEnd);
+    }
+    //! spawn right task, serves as callback for partitioner
+    void offer_work(const Range& r, depth_t d = 0) {
+        start_for sibling(*this, r, d);
+        sibling.execute();
+        join(sibling.m_executedBegin, sibling.m_executedEnd);
+    }
+    void join(size_t siblingExecutedBegin, size_t siblingExecutedEnd) {
+        ASSERT(siblingExecutedEnd == m_joinedBegin, "?");
+        m_joinedBegin = siblingExecutedBegin;
+    }
+};
+
+} //namespace internal
+} //namespace interface7
+} //namespace tbb
+
+namespace whitebox_simulation {
+using namespace tbb::interface7::internal;
+template<typename Range, typename Body, typename Partitioner>
+void parallel_for( const Range& range, const Body& body, Partitioner& partitioner,
+                   test_partitioner_utils::BinaryTree* tree = NULL) {
+    if (!range.empty()) {
+        flag_task parent;
+        start_for<Range, Body, Partitioner> start(range, body, partitioner, tree);
+        start.set_parent(&parent);
+        start.execute();
+    }
+}
+
+} //namespace whitebox_simulation
+
+template <typename Range, typename Body, typename Partitioner>
+void test_case(Range& range, const Body& body, Partitioner& partitioner,
+               test_partitioner_utils::BinaryTree* tree = NULL) {
+    whitebox_simulation::parallel_for(range, body, partitioner, tree);
+}
+
+// Functions generate size for range objects used in tests
+template <typename T>
+size_t default_range_size_generator(T* factor, unsigned index, size_t thread_num) {
+    return size_t(factor[index] * thread_num);
+}
+
+size_t shifted_left_range_size_generator(size_t* factor, unsigned index, size_t thread_num) {
+    return factor[index] * thread_num - 1;
+}
+
+size_t shifted_right_range_size_generator(size_t* factor, unsigned index, size_t thread_num) {
+    return factor[index] * thread_num + 1;
+}
+
+size_t max_range_size_generator(size_t*, unsigned, size_t) {
+    return size_t(-1);
+}
+
+size_t simple_size_generator(size_t*, unsigned index, size_t) {
+    return index;
+}
+
+namespace uniform_iterations_distribution {
+
+/*
+ * Test checks uniform distribution of range's iterations among all tasks just after
+ * work distribution phase has been completed and just before work balancing phase has been started
+ */
+
+using namespace test_partitioner_utils;
+
+class ParallelTestBody {
+public:
+    struct use_case_settings_t;
+
+    typedef void (*CheckerFuncType)(const char*, size_t, const use_case_settings_t*, const RangeStatisticData&);
+
+    struct use_case_settings_t {
+        size_t thread_num;                         // number of threads used during current use case
+        unsigned factors_array_len;                // size of 'factors' array
+        size_t range_begin;                        // beginning of range iterations
+        bool provide_feedback;                     // 'true' if range should give feedback
+        bool ensure_non_empty_size;                // don't allow empty size ranges
+
+        size_t above_threads_size_tolerance;       // allowed value for number of created ranges
+                                                   // when initial size of the range was greater or
+                                                   // equal to number of threads
+
+        size_t below_threads_size_tolerance;       // allowed value for number of created ranges
+                                                   // when initial size of the range was less than
+                                                   // number of threads
+
+        size_t between_min_max_ranges_tolerance;   // allowed value for difference of iterations
+                                                   // between bigger and lesser ranges
+
+        CheckerFuncType checker;                   // checker function for a particular test case
+    };
+
+    ParallelTestBody(size_t parallel_group_thread_starting_index)
+        : m_parallel_group_thread_starting_index(parallel_group_thread_starting_index) { }
+
+    void operator()(size_t) const { ASSERT( false, "Empty ParallelTestBody called" ); }
+
+    static void uniform_distribution_checker(const char* rangeName, size_t rangeSize, const use_case_settings_t* settings,
+        const RangeStatisticData& stat)
+    {
+        // Checking that all threads were given a task
+        if (rangeSize >= settings->thread_num) {
+            uint64_t disparity =
+                max(stat.m_rangeNum, settings->thread_num) - min(stat.m_rangeNum, settings->thread_num);
+            if (disparity > settings->above_threads_size_tolerance) {
+                REPORT("ERROR: '%s (f=%d|e=%d)': |#ranges-#threads|=%llu > %llu=tolerance\n",
+                    rangeName, int(settings->provide_feedback), int(settings->ensure_non_empty_size),
+                    disparity, uint64_t(settings->above_threads_size_tolerance));
+                ASSERT(disparity <= settings->above_threads_size_tolerance, "Incorrect number of range "
+                    "objects was created before work balancing phase started");
+            }
+        } else if (settings->ensure_non_empty_size && rangeSize != 0) {
+            uint64_t disparity = max(stat.m_rangeNum, rangeSize) - min(stat.m_rangeNum, rangeSize);
+            if (disparity > settings->below_threads_size_tolerance ) {
+                REPORT("ERROR: '%s (f=%d|e=%d)': |#ranges-range size|=%llu > %llu=tolerance\n",
+                    rangeName, int(settings->provide_feedback), int(settings->ensure_non_empty_size),
+                    disparity, uint64_t(settings->below_threads_size_tolerance));
+                ASSERT(disparity <= settings->below_threads_size_tolerance, "Incorrect number of range objects"
+                    " was created before work balancing phase started");
+            }
+        }
+        // Checking difference between min and max number of range iterations
+        size_t diff = stat.m_maxRangeSize - stat.m_minRangeSize;
+        if (diff > settings->between_min_max_ranges_tolerance) {
+            REPORT("ERROR: '%s (f=%d|e=%d)': range size difference=%llu > %llu=tolerance\n",
+                rangeName, int(settings->provide_feedback), int(settings->ensure_non_empty_size),
+                uint64_t(diff), uint64_t(settings->between_min_max_ranges_tolerance));
+            ASSERT(diff <= settings->between_min_max_ranges_tolerance, "Uniform iteration distribution error");
+        }
+    }
+    // Checker for test cases where ranges don't provide feedback during proportional split to
+    // partitioner and differ from tbb::blocked_range implementation in their splitting algorithm
+    static void nonuniform_distribution_checker(const char* rangeName, size_t rangeSize, const use_case_settings_t* settings,
+        const RangeStatisticData& stat)
+    {
+        if (stat.m_rangeNum > settings->thread_num) {
+            REPORT("ERROR: '%s (f=%d|e=%d)': %llu=#ranges > #threads=%llu\n",
+                rangeName, int(settings->provide_feedback), int(settings->ensure_non_empty_size),
+                uint64_t(stat.m_rangeNum), uint64_t(settings->thread_num));
+            ASSERT(stat.m_rangeNum <= settings->thread_num,
+                "Incorrect number of range objects was created before work balancing phase started");
+        }
+        // Checking difference between min and max number of range iterations
+        size_t diff = stat.m_maxRangeSize - stat.m_minRangeSize;
+        if (diff > rangeSize) {
+            REPORT("ERROR: '%s (f=%d|e=%d)': range size difference=%llu > %llu=initial range size\n",
+                rangeName, int(settings->provide_feedback), int(settings->ensure_non_empty_size),
+                uint64_t(diff), uint64_t(rangeSize));
+            ASSERT(diff <= rangeSize, "Iteration distribution error");
+        }
+    }
+
+protected:
+    size_t m_parallel_group_thread_starting_index; // starting index of thread
+
+    template <typename Range, typename T>
+    void test(use_case_settings_t& settings, T factors[], size_t (*rsgFunc)(T*, unsigned, size_t)
+        = &default_range_size_generator<T>) const
+    {
+        for (unsigned i = 0; i < settings.factors_array_len; ++i) {
+            size_t range_end = rsgFunc(factors, i, settings.thread_num);
+            RangeStatisticData stat = { /*range num=*/ 0, /*minimal size of range=*/ 0,
+                /*maximal size of range=*/ 0, /*minimal size of range was not rewritten yet=*/ false };
+            Range range = Range(settings.range_begin, range_end, &stat, settings.provide_feedback,
+                                settings.ensure_non_empty_size);
+            tbb::affinity_partitioner ap;
+            test_case(range, SimpleBody(), ap, NULL);
+            size_t range_size = range_end - settings.range_begin;
+            const char* rangeName = typeid(range).name();
+            settings.checker(rangeName, range_size, &settings, stat);
+        }
+    }
+};
+
+template <typename ParallelTestBody>
+void test() {
+    size_t hw_threads_num = tbb::tbb_thread::hardware_concurrency();
+    size_t threadsToRunOn = std::min<size_t>(max_simulated_threads, hw_threads_num);
+
+    size_t parallel_group_thread_starting_index = 1;
+    while( parallel_group_thread_starting_index <= max_simulated_threads - threadsToRunOn ) {
+        NativeParallelFor(threadsToRunOn, ParallelTestBody(parallel_group_thread_starting_index));
+        parallel_group_thread_starting_index += threadsToRunOn;
+    }
+    NativeParallelFor(max_simulated_threads - parallel_group_thread_starting_index,
+        ParallelTestBody(parallel_group_thread_starting_index));
+}
+
+} /* namespace uniform_iterations_distribution */
diff --git a/src/test/test_pipeline.cpp b/src/test/test_pipeline.cpp
index 0f3e977..7fa6e57 100644
--- a/src/test/test_pipeline.cpp
+++ b/src/test/test_pipeline.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_stddef.h"
diff --git a/src/test/test_pipeline_with_tbf.cpp b/src/test/test_pipeline_with_tbf.cpp
index 47d6307..509dcfe 100644
--- a/src/test/test_pipeline_with_tbf.cpp
+++ b/src/test/test_pipeline_with_tbf.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/pipeline.h"
@@ -67,7 +59,6 @@ public:
 };
 
 static const unsigned MaxStreamSize = 8000;
-static const unsigned MaxStreamItemsPerThread = 1000;
 //! Maximum number of filters allowed
 static const unsigned MaxFilters = 4;
 static unsigned StreamSize;
@@ -116,7 +107,15 @@ public:
         Buffer* b = get_buffer(item);
         if( b ) {
             if(!this->is_bound() && sleeptime > 0) {
-                Harness::Sleep((int)sleeptime);
+                if(this->is_serial()) {
+                    Harness::Sleep((int)sleeptime);
+                }
+                else {
+                    // early parallel tokens sleep longer...
+                    int i = (int)((5 - b->sequence_number) * sleeptime);
+                    if(i < (int)sleeptime) i = (int)sleeptime;
+                    Harness::Sleep(i);
+                }
             }
             if( this->is_ordered() ) {
                 if( b->sequence_number == Buffer::unused ) 
@@ -256,10 +255,38 @@ class PipelineTest {
     static double TestOneConfiguration( unsigned numeral, unsigned nthread, unsigned number_of_filters, tbb::internal::Token ntokens);
     static void TestTrivialPipeline( unsigned nthread, unsigned number_of_filters );
     static void TestIdleSpinning(unsigned nthread);
+
+    static void PrintConfiguration(unsigned numeral, unsigned nFilters) {
+        REMARK( "{ ");
+        for( unsigned i = 0; i < nFilters; ++i) {
+            switch( numeral % number_of_filter_types ) {
+                case 0: REMARK("s  "); break;
+                case 1: REMARK("B  "); break;
+                case 2: REMARK("o  "); break;
+                case 3: REMARK("Bo "); break;
+                case 4: REMARK("P  "); break;
+                default: REMARK(" ** ERROR** "); break;
+            }
+            numeral /= number_of_filter_types;
+        }
+        REMARK("}");
+    }
+    static bool ContainsBoundFilter(unsigned numeral) {
+        for( ;numeral != 0; numeral /= number_of_filter_types)
+            if(numeral & 0x1) return true;
+        return false;
+    }
 };
 
-const tbb::filter::mode PipelineTest::non_tb_filters_table[3] = { tbb::filter::serial_in_order, tbb::filter::serial_out_of_order, tbb::filter::parallel}; 
-const tbb::filter::mode PipelineTest::tb_filters_table[2] = { tbb::filter::serial_in_order, tbb::filter::serial_out_of_order }; 
+const tbb::filter::mode PipelineTest::non_tb_filters_table[3] = {
+    tbb::filter::serial_in_order,       // 0
+    tbb::filter::serial_out_of_order,   // 2
+    tbb::filter::parallel               // 4
+}; 
+const tbb::filter::mode PipelineTest::tb_filters_table[2] = {
+    tbb::filter::serial_in_order,       // 1
+    tbb::filter::serial_out_of_order    // 3
+}; 
 
 #include "harness_cpu.h"
 
@@ -275,6 +302,7 @@ double PipelineTest::TestOneConfiguration(unsigned numeral, unsigned nthread, un
     unsigned number_of_tb_filters = 0;
     // ordinal numbers of thread-bound-filters in the current sequence
     unsigned array_of_tb_filter_numbers[MaxFilters];
+    if(!ContainsBoundFilter(numeral)) return 0.0;
     for( unsigned i=0; i<number_of_filters; ++i, temp/=number_of_filter_types ) {
         bool is_bound = temp%number_of_filter_types&0x1;
         tbb::filter::mode filter_type;
@@ -303,6 +331,7 @@ double PipelineTest::TestOneConfiguration(unsigned numeral, unsigned nthread, un
             parallelism_limit = nthread;
         }
     }
+    ASSERT(number_of_tb_filters,NULL);
     clear_global_state();
     // Account for clipping of parallelism.
     if( parallelism_limit>nthread ) 
@@ -378,24 +407,26 @@ void PipelineTest::TestTrivialPipeline( unsigned nthread, unsigned number_of_fil
 // time are reported.
 void PipelineTest::TestIdleSpinning( unsigned nthread)  {
     unsigned sample_setups[] = {
-        // in the comments below, s == serial, B == thread bound serial, p == parallel
-        1,   // B s s s
-        5,   // s B s s
-        25,  // s s B s
-        125, // s s s B
-        6,   // B B s s
-        26,  // B s B s
-        126, // B s s B
-        30,  // s B B s
-        130, // s B s B
-        150, // s s B B
-        31,  // B B B s
-        131, // B B s B
-        155, // s B B B
-        21,  // B p s s
-        105, // s B p s
-        45,  // s p B s
-        225, // s s p B
+        // in the comments below, s == serial, o == serial out-of-order,
+        // B == thread bound, Bo == thread bound out-of-order, p == parallel
+        1,   // B  s  s  s
+        5,   // s  B  s  s
+        25,  // s  s  B  s
+        125, // s  s  s  B
+        6,   // B  B  s  s
+        26,  // B  s  B  s
+        126, // B  s  s  B
+        30,  // s  B  B  s
+        130, // s  B  s  B
+        150, // s  s  B  B
+        31,  // B  B  B  s
+        131, // B  B  s  B
+        155, // s  B  B  B
+        495, // s  p  p  Bo
+        71,  // B  p  o  s
+        355, // s  B  p  o
+        95,  // s  p  Bo s
+        475, // s  s  p  Bo
     };
     const int nsetups = sizeof(sample_setups) / sizeof(unsigned);
     const int ntests = 4;
@@ -420,6 +451,9 @@ void PipelineTest::TestIdleSpinning( unsigned nthread)  {
         int v1cnt = 0;
         double s0sum = 0.0;
         double s1sum = 0.0;
+        REMARK(" TestOneConfiguration, pipeline == ");
+        PrintConfiguration(numeral, MaxFilters);
+        REMARK(", max_tokens== %d\n", (int)max_tokens);
         for(int j = 0; j < ntests; ++j) {
             double s1a = TestOneConfiguration(numeral, nthread, MaxFilters, max_tokens);
             double s0a = TestOneConfiguration((unsigned)0, nthread, MaxFilters, max_tokens);
@@ -469,15 +503,15 @@ int TestMain () {
         exit(1);
     }
 
-    sleeptime = 0.0;  // msec : 0 == no_timing, > 0, each filter stage sleeps for sleeptime
     // Test with varying number of threads.
     for( nthread=MinThread; nthread<=MaxThread; ++nthread ) {
         // Initialize TBB task scheduler
         tbb::task_scheduler_init init(nthread);
+        sleeptime = 0.0;  // msec : 0 == no_timing, > 0, each filter stage sleeps for sleeptime
 
         // Test pipelines with 1 and maximal number of filters
         for( unsigned n=1; n<=MaxFilters; n*=MaxFilters ) {
-            // Thread-bound stages are serviced by user-created threads those 
+            // Thread-bound stages are serviced by user-created threads; those 
             // don't run the pipeline and don't service non-thread-bound stages 
             PipelineTest::TestTrivialPipeline(nthread,n);
         }
diff --git a/src/test/test_priority_queue_node.cpp b/src/test/test_priority_queue_node.cpp
index 2a0f7bc..9bd2e51 100644
--- a/src/test/test_priority_queue_node.cpp
+++ b/src/test/test_priority_queue_node.cpp
@@ -1,37 +1,33 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // TO DO: Add overlapping put / receive tests
 
+#include "harness.h"
 #include "tbb/flow_graph.h"
+#include "harness_checktype.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
-#include "harness.h"
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#include "harness_graph.h"
+#endif
 
 #include <cstdio>
 
@@ -106,48 +102,52 @@ struct parallel_put_get : NoAssign {
 template< typename T >
 int test_reservation(int) {
     tbb::flow::graph g;
-    T bogus_value(-1);
 
     // Simple tests
     tbb::flow::priority_queue_node<T> q(g);
 
-    q.try_put(T(1));
-    q.try_put(T(2));
-    q.try_put(T(3));
-    g.wait_for_all();
-
-    T v=bogus_value, w=bogus_value;
-    ASSERT( q.try_reserve(v) == true, NULL );
-    ASSERT( v == T(3), NULL ); 
-    ASSERT( q.try_release() == true, NULL );
-    v = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_reserve(v) == true, NULL );
-    ASSERT( v == T(3), NULL ); 
-    ASSERT( q.try_consume() == true, NULL );
-    v = bogus_value;
-    g.wait_for_all();
+    {
+
+        T bogus_value(-1);
+
+        q.try_put(T(1));
+        q.try_put(T(2));
+        q.try_put(T(3));
+        g.wait_for_all();
+
+        T v=bogus_value, w=bogus_value;
+        ASSERT( q.try_reserve(v) == true, NULL );
+        ASSERT( v == T(3), NULL ); 
+        ASSERT( q.try_release() == true, NULL );
+        v = bogus_value;
+        g.wait_for_all();
+        ASSERT( q.try_reserve(v) == true, NULL );
+        ASSERT( v == T(3), NULL ); 
+        ASSERT( q.try_consume() == true, NULL );
+        v = bogus_value;
+        g.wait_for_all();
  
-    ASSERT( q.try_get(v) == true, NULL );
-    ASSERT( v == T(2), NULL ); 
-    v = bogus_value;
-    g.wait_for_all();
-    
-    ASSERT( q.try_reserve(v) == true, NULL );
-    ASSERT( v == T(1), NULL ); 
-    ASSERT( q.try_reserve(w) == false, NULL );
-    ASSERT( w == bogus_value, NULL );
-    ASSERT( q.try_get(w) == false, NULL );
-    ASSERT( w == bogus_value, NULL );
-    ASSERT( q.try_release() == true, NULL );
-    v = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_reserve(v) == true, NULL );
-    ASSERT( v == T(1), NULL ); 
-    ASSERT( q.try_consume() == true, NULL );
-    v = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get(v) == false, NULL );
+        ASSERT( q.try_get(v) == true, NULL );
+        ASSERT( v == T(2), NULL ); 
+        v = bogus_value;
+        g.wait_for_all();
+
+        ASSERT( q.try_reserve(v) == true, NULL );
+        ASSERT( v == T(1), NULL ); 
+        ASSERT( q.try_reserve(w) == false, NULL );
+        ASSERT( w == bogus_value, NULL );
+        ASSERT( q.try_get(w) == false, NULL );
+        ASSERT( w == bogus_value, NULL );
+        ASSERT( q.try_release() == true, NULL );
+        v = bogus_value;
+        g.wait_for_all();
+        ASSERT( q.try_reserve(v) == true, NULL );
+        ASSERT( v == T(1), NULL ); 
+        ASSERT( q.try_consume() == true, NULL );
+        v = bogus_value;
+        g.wait_for_all();
+        ASSERT( q.try_get(v) == false, NULL );
+    }
     return 0;
 }
 
@@ -339,9 +339,16 @@ int TestMain() {
         tbb::task_scheduler_init init(p);
         test_serial<int>();
         test_reservation<int>(p);
+        test_reservation<check_type<int> >(p);
         test_parallel<int>(p);
     } 
     stop = tbb::tick_count::now();
     REMARK("Priority_Queue_Node Time=%6.6f\n", (stop-start).seconds());
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK("Testing resets\n");
+    test_resets<int,tbb::flow::priority_queue_node<int> >();
+    test_resets<float,tbb::flow::priority_queue_node<float> >();
+    test_buffer_extract<tbb::flow::priority_queue_node<int> >().run_tests();
+#endif
     return Harness::Done;
 }
diff --git a/src/test/test_queue_node.cpp b/src/test/test_queue_node.cpp
index 3b612c9..3a71594 100644
--- a/src/test/test_queue_node.cpp
+++ b/src/test/test_queue_node.cpp
@@ -1,37 +1,33 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // TO DO: Add overlapping put / receive tests
 
+#include "harness.h"
 #include "tbb/flow_graph.h"
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
-#include "harness.h"
+#include "harness_checktype.h"
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#include "harness_graph.h"
+#endif
 
 #include <cstdio>
 
@@ -132,7 +128,7 @@ struct touches {
                 printf("No touch at %d, my_num_threads = %d\n", n, my_num_threads);
             //ASSERT( all_touches[n] == true, "value not seen by any thread\n" );
         }
-        delete all_touches;
+        delete [] all_touches;
         return true;
     }
 
@@ -245,89 +241,92 @@ int test_parallel(int num_threads) {
     tbb::flow::queue_node<T> q(g);
     tbb::flow::queue_node<T> q2(g);
     tbb::flow::queue_node<T> q3(g);
-    T bogus_value(-1);
-    T j = bogus_value;
-
-    NativeParallelFor( num_threads, parallel_puts<T>(q) );
-
-    T *next_value = new T[num_threads];
-    for (int tid = 0; tid < num_threads; ++tid) next_value[tid] = T(0);
+    {
+        Check< T > my_check;
+        T bogus_value(-1);
+        T j = bogus_value;
+        NativeParallelFor( num_threads, parallel_puts<T>(q) );
+
+        T *next_value = new T[num_threads];
+        for (int tid = 0; tid < num_threads; ++tid) next_value[tid] = T(0);
+
+        for (int i = 0; i < num_threads * N; ++i ) {
+            spin_try_get( q, j );
+            check_item( next_value, j );
+            j = bogus_value;
+        }
+        for (int tid = 0; tid < num_threads; ++tid)  {
+            ASSERT( next_value[tid] == T(N), NULL );
+        }
+        delete[] next_value;
 
-    for (int i = 0; i < num_threads * N; ++i ) {
-        spin_try_get( q, j );
-        check_item( next_value, j );
         j = bogus_value;
-    }
-    for (int tid = 0; tid < num_threads; ++tid)  {
-        ASSERT( next_value[tid] == T(N), NULL );
-    }
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
 
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
+        NativeParallelFor( num_threads, parallel_puts<T>(q) );
 
-    NativeParallelFor( num_threads, parallel_puts<T>(q) );
+        {
+            touches< T > t( num_threads );
+            NativeParallelFor( num_threads, parallel_gets<T>(q, t) );
+            g.wait_for_all();
+            ASSERT( t.validate_touches(), NULL );
+        }
+        j = bogus_value;
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
 
-    {
-        touches< T > t( num_threads );
-        NativeParallelFor( num_threads, parallel_gets<T>(q, t) );
         g.wait_for_all();
-        ASSERT( t.validate_touches(), NULL );
-    }
-    j = bogus_value;
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-
-    g.wait_for_all();
-    {
-        touches< T > t2( num_threads );
-        NativeParallelFor( num_threads, parallel_put_get<T>(q, t2) );
+        {
+            touches< T > t2( num_threads );
+            NativeParallelFor( num_threads, parallel_put_get<T>(q, t2) );
+            g.wait_for_all();
+            ASSERT( t2.validate_touches(), NULL );
+        }
+        j = bogus_value;
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+
+        tbb::flow::make_edge( q, q2 );
+        tbb::flow::make_edge( q2, q3 );
+
+        NativeParallelFor( num_threads, parallel_puts<T>(q) );
+        {
+            touches< T > t3( num_threads );
+            NativeParallelFor( num_threads, parallel_gets<T>(q3, t3) );
+            g.wait_for_all();
+            ASSERT( t3.validate_touches(), NULL );
+        }
+        j = bogus_value;
         g.wait_for_all();
-        ASSERT( t2.validate_touches(), NULL );
-    }
-    j = bogus_value;
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-
-    tbb::flow::make_edge( q, q2 );
-    tbb::flow::make_edge( q2, q3 );
-
-    NativeParallelFor( num_threads, parallel_puts<T>(q) );
-    {
-        touches< T > t3( num_threads );
-        NativeParallelFor( num_threads, parallel_gets<T>(q3, t3) );
+        ASSERT( q.try_get( j ) == false, NULL );
         g.wait_for_all();
-        ASSERT( t3.validate_touches(), NULL );
-    }
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == false, NULL );
-    g.wait_for_all();
-    ASSERT( q2.try_get( j ) == false, NULL );
-    g.wait_for_all();
-    ASSERT( q3.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-
-    // test copy constructor
-    ASSERT( q.remove_successor( q2 ), NULL );
-    NativeParallelFor( num_threads, parallel_puts<T>(q) );
-    tbb::flow::queue_node<T> q_copy(q);
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q_copy.try_get( j ) == false, NULL );
-    ASSERT( q.register_successor( q_copy ) == true, NULL );
-    {
-        touches< T > t( num_threads );
-        NativeParallelFor( num_threads, parallel_gets<T>(q_copy, t) );
+        ASSERT( q2.try_get( j ) == false, NULL );
+        g.wait_for_all();
+        ASSERT( q3.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+
+        // test copy constructor
+        ASSERT( q.remove_successor( q2 ), NULL );
+        NativeParallelFor( num_threads, parallel_puts<T>(q) );
+        tbb::flow::queue_node<T> q_copy(q);
+        j = bogus_value;
         g.wait_for_all();
-        ASSERT( t.validate_touches(), NULL );
+        ASSERT( q_copy.try_get( j ) == false, NULL );
+        ASSERT( q.register_successor( q_copy ) == true, NULL );
+        {
+            touches< T > t( num_threads );
+            NativeParallelFor( num_threads, parallel_gets<T>(q_copy, t) );
+            g.wait_for_all();
+            ASSERT( t.validate_touches(), NULL );
+        }
+        j = bogus_value;
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+        ASSERT( q_copy.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
     }
-    j = bogus_value;
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-    ASSERT( q_copy.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
 
     return 0;
 }
@@ -344,104 +343,107 @@ int test_parallel(int num_threads) {
 template< typename T >
 int test_serial() {
     tbb::flow::graph g;
-    T bogus_value(-1);
-
     tbb::flow::queue_node<T> q(g);
     tbb::flow::queue_node<T> q2(g);
-    T j = bogus_value;
-
-    //
-    // Rejects attempts to add / remove predecessor
-    // Rejects request from empty Q
-    //
-    ASSERT( q.register_predecessor( q2 ) == false, NULL );
-    ASSERT( q.remove_predecessor( q2 ) == false, NULL );
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-
-    //
-    // Simple puts and gets
-    //
-
-    for (int i = 0; i < N; ++i) {
-        bool msg = q.try_put( T(i) );
-        ASSERT( msg == true, NULL );
-    }
+    {   // destroy the graph after manipulating it, and see if all the items in the buffers
+        // have been destroyed before the graph
+        Check<T> my_check;  // if check_type< U > count constructions and destructions
+        T bogus_value(-1);
+        T j = bogus_value;
+
+        //
+        // Rejects attempts to add / remove predecessor
+        // Rejects request from empty Q
+        //
+        ASSERT( q.register_predecessor( q2 ) == false, NULL );
+        ASSERT( q.remove_predecessor( q2 ) == false, NULL );
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+
+        //
+        // Simple puts and gets
+        //
+
+        for (int i = 0; i < N; ++i) {
+            bool msg = q.try_put( T(i) );
+            ASSERT( msg == true, NULL );
+        }
 
 
-    for (int i = 0; i < N; ++i) {
+        for (int i = 0; i < N; ++i) {
+            j = bogus_value;
+            spin_try_get( q, j );
+            ASSERT( i == j, NULL );
+        }
         j = bogus_value;
-        spin_try_get( q, j );
-        ASSERT( i == j, NULL );
-    }
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
 
-    tbb::flow::make_edge( q, q2 );
+        tbb::flow::make_edge( q, q2 );
 
-    for (int i = 0; i < N; ++i) {
-        bool msg = q.try_put( T(i) );
-        ASSERT( msg == true, NULL );
-    }
+        for (int i = 0; i < N; ++i) {
+            bool msg = q.try_put( T(i) );
+            ASSERT( msg == true, NULL );
+        }
 
 
-    for (int i = 0; i < N; ++i) {
+        for (int i = 0; i < N; ++i) {
+            j = bogus_value;
+            spin_try_get( q2, j );
+            ASSERT( i == j, NULL );
+        }
         j = bogus_value;
-        spin_try_get( q2, j );
-        ASSERT( i == j, NULL );
-    }
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == false, NULL );
-    g.wait_for_all();
-    ASSERT( q2.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == false, NULL );
+        g.wait_for_all();
+        ASSERT( q2.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
 
-    tbb::flow::remove_edge( q, q2 );
-    ASSERT( q.try_put( 1 ) == true, NULL );
-    g.wait_for_all();
-    ASSERT( q2.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == true, NULL );
-    ASSERT( j == 1, NULL );
+        tbb::flow::remove_edge( q, q2 );
+        ASSERT( q.try_put( 1 ) == true, NULL );
+        g.wait_for_all();
+        ASSERT( q2.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == true, NULL );
+        ASSERT( j == 1, NULL );
 
-    tbb::flow::queue_node<T> q3(g);
-    tbb::flow::make_edge( q, q2 );
-    tbb::flow::make_edge( q2, q3 );
+        tbb::flow::queue_node<T> q3(g);
+        tbb::flow::make_edge( q, q2 );
+        tbb::flow::make_edge( q2, q3 );
 
-    for (int i = 0; i < N; ++i) {
-        bool msg = q.try_put( T(i) );
-        ASSERT( msg == true, NULL );
-    }
+        for (int i = 0; i < N; ++i) {
+            bool msg = q.try_put( T(i) );
+            ASSERT( msg == true, NULL );
+        }
 
-    for (int i = 0; i < N; ++i) {
+        for (int i = 0; i < N; ++i) {
+            j = bogus_value;
+            spin_try_get( q3, j );
+            ASSERT( i == j, NULL );
+        }
         j = bogus_value;
-        spin_try_get( q3, j );
-        ASSERT( i == j, NULL );
-    }
-    j = bogus_value;
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == false, NULL );
-    g.wait_for_all();
-    ASSERT( q2.try_get( j ) == false, NULL );
-    g.wait_for_all();
-    ASSERT( q3.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == false, NULL );
+        g.wait_for_all();
+        ASSERT( q2.try_get( j ) == false, NULL );
+        g.wait_for_all();
+        ASSERT( q3.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
 
-    tbb::flow::remove_edge( q,  q2 );
-    ASSERT( q.try_put( 1 ) == true, NULL );
-    g.wait_for_all();
-    ASSERT( q2.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-    g.wait_for_all();
-    ASSERT( q3.try_get( j ) == false, NULL );
-    ASSERT( j == bogus_value, NULL );
-    g.wait_for_all();
-    ASSERT( q.try_get( j ) == true, NULL );
-    ASSERT( j == 1, NULL );
+        tbb::flow::remove_edge( q,  q2 );
+        ASSERT( q.try_put( 1 ) == true, NULL );
+        g.wait_for_all();
+        ASSERT( q2.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q3.try_get( j ) == false, NULL );
+        ASSERT( j == bogus_value, NULL );
+        g.wait_for_all();
+        ASSERT( q.try_get( j ) == true, NULL );
+        ASSERT( j == 1, NULL );
+    }
 
     return 0;
 }
@@ -451,9 +453,17 @@ int TestMain() {
     for (int p = 2; p <= 4; ++p) {
         tbb::task_scheduler_init init(p);
         test_serial<int>();
+        test_serial<check_type<int> >();
         test_parallel<int>(p);
+        test_parallel<check_type<int> >(p);
     } 
     stop = tbb::tick_count::now();
     REMARK("Queue_Node Time=%6.6f\n", (stop-start).seconds());
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    REMARK("Testing resets\n");
+    test_resets<int, tbb::flow::queue_node<int> >();
+    test_resets<float, tbb::flow::queue_node<float> >();
+    test_buffer_extract<tbb::flow::queue_node<int> >().run_tests();
+#endif
     return Harness::Done;
 }
diff --git a/src/test/test_range_based_for.h b/src/test/test_range_based_for.h
index 4beca96..d668e0e 100644
--- a/src/test/test_range_based_for.h
+++ b/src/test/test_range_based_for.h
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #ifndef __TBB_test_range_based_for_H
@@ -36,9 +28,15 @@ namespace range_based_for_support_tests{
     inline init_value_type range_based_for_accumulate(container const& c, binary_op_type accumulator, init_value_type init )
     {
         init_value_type range_for_accumulated = init;
+        #if __TBB_RANGE_BASED_FOR_PRESENT
         for (value_type  x : c) {
             range_for_accumulated = accumulator(range_for_accumulated, x);
         }
+        #else
+        for (typename container::const_iterator x =c.begin(); x != c.end(); ++x) {
+            range_for_accumulated = accumulator(range_for_accumulated, *x);
+        }
+        #endif
         return range_for_accumulated;
     }
 
diff --git a/src/test/test_reader_writer_lock.cpp b/src/test/test_reader_writer_lock.cpp
index 7c07c4f..3beb16e 100644
--- a/src/test/test_reader_writer_lock.cpp
+++ b/src/test/test_reader_writer_lock.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // test reader_writer_lock
diff --git a/src/test/test_runtime_loader.cpp b/src/test/test_runtime_loader.cpp
index a993061..1c862e5 100644
--- a/src/test/test_runtime_loader.cpp
+++ b/src/test/test_runtime_loader.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
@@ -140,7 +132,7 @@ int TestMain() {
         }
 
         {
-            SAY( "Create a proxy object and call load() with good arguments but not availabe version." );
+            SAY( "Create a proxy object and call load() with good arguments but not available version." );
             char const * path[] = { ".", NULL };
             tbb::runtime_loader rtl( tbb::runtime_loader::em_status );
             SAY( "Min version too big." );
@@ -244,6 +236,7 @@ int TestMain() {
                 CHECK_EXCEPTION( eid_improper_lock,               tbb::improper_lock               );
                 CHECK_EXCEPTION( eid_possible_deadlock,           std::runtime_error               );
                 CHECK_EXCEPTION( eid_reservation_length_error,    std::length_error                );
+                CHECK_EXCEPTION( eid_user_abort,                  tbb::user_abort                  );
                 #undef CHECK_EXCEPTION
                 {
                     bool ex_caught = false;
diff --git a/src/test/test_rwm_upgrade_downgrade.cpp b/src/test/test_rwm_upgrade_downgrade.cpp
index c383457..cde95d6 100644
--- a/src/test/test_rwm_upgrade_downgrade.cpp
+++ b/src/test/test_rwm_upgrade_downgrade.cpp
@@ -1,31 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#define HARNESS_DEFAULT_MIN_THREADS 4
+#define HARNESS_DEFAULT_MAX_THREADS 4
+
 #include "tbb/queuing_rw_mutex.h"
 #include "tbb/spin_rw_mutex.h"
 #include "harness.h"
diff --git a/src/test/test_semaphore.cpp b/src/test/test_semaphore.cpp
index cfef178..0a57d39 100644
--- a/src/test/test_semaphore.cpp
+++ b/src/test/test_semaphore.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 //
diff --git a/src/test/test_sequencer_node.cpp b/src/test/test_sequencer_node.cpp
index 7482edb..692fedf 100644
--- a/src/test/test_sequencer_node.cpp
+++ b/src/test/test_sequencer_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
@@ -31,6 +23,9 @@
 #include "tbb/task_scheduler_init.h"
 #include "tbb/tick_count.h"
 #include "tbb/atomic.h"
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+#include "harness_graph.h"
+#endif
 
 #include <cstdio>
 
@@ -128,7 +123,7 @@ struct touches {
                 printf("No touch at %d, my_num_threads = %d\n", n, my_num_threads);
             //ASSERT( all_touches[n] == true, "value not seen by any thread\n" );
         }
-        delete all_touches;
+        delete [] all_touches;
         return true;
     }
 
@@ -284,6 +279,7 @@ int test_serial() {
     for (int i = 0; i < N; ++i) {
         bool msg = s.try_put( T(i) );
         ASSERT( msg == true, NULL );
+        ASSERT(!s.try_put( T(i) ), NULL);  // second attempt to put should reject
     }
 
 
@@ -291,6 +287,7 @@ int test_serial() {
         j = bogus_value;
         ASSERT(wait_try_get( g, s, j ) == true, NULL);
         ASSERT( i == j, NULL );
+        ASSERT(!s.try_put( T(i) ),NULL );  // after retrieving value, subsequent put should fail
     }
     j = bogus_value;
     g.wait_for_all();
@@ -398,6 +395,9 @@ int TestMain() {
         test_serial<int>();
         test_parallel<int>(p);
     } 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_buffer_extract<tbb::flow::sequencer_node<int> >().run_tests();
+#endif
     stop = tbb::tick_count::now();
     REMARK("Sequencer_Node Time=%6.6f\n", (stop-start).seconds());
     return Harness::Done;
diff --git a/src/test/test_source_node.cpp b/src/test/test_source_node.cpp
index 8a75d55..3f1ec07 100644
--- a/src/test/test_source_node.cpp
+++ b/src/test/test_source_node.cpp
@@ -1,32 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+// have to expose the reset_node method to be able to reset a function_body
 #include "harness.h"
+#include "harness_graph.h"
 #include "tbb/flow_graph.h"
 #include "tbb/task.h"
 #include "tbb/task_scheduler_init.h"
@@ -50,26 +44,48 @@ public:
        return v;
     }
 
+    typedef tbb::flow::sender<T> predecessor_type;
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    typedef typename tbb::flow::receiver<T>::built_predecessors_type built_predecessors_type;
+    typedef typename tbb::flow::receiver<T>::predecessor_list_type predecessor_list_type;
+    built_predecessors_type bpt;
+    built_predecessors_type &built_predecessors() { return bpt; }
+    void internal_add_built_predecessor( predecessor_type & ) { }
+    void internal_delete_built_predecessor( predecessor_type & ) { }
+    void copy_predecessors( predecessor_list_type & ) { }
+    size_t predecessor_count() { return 0; }
+#endif
+
     tbb::task *try_put_task( const T &v ) {
        int i = (int)v;
        ++my_counters[i];
        return const_cast<tbb::task *>(tbb::flow::interface7::SUCCESSFULLY_ENQUEUED);
     }
 
+
+
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    /*override*/void reset_receiver(tbb::flow::reset_flags /*f*/) {}
+#else
     /*override*/void reset_receiver() {}
+#endif
 };
 
 template< typename T >
 class source_body {
 
    tbb::atomic<int> my_count;
+   int *ninvocations;
  
 public:
 
-   source_body() { my_count = 0; }
+   source_body() : ninvocations(NULL) { my_count = 0; }
+   source_body(int &_inv) : ninvocations(&_inv)  { my_count = 0; }
 
    bool operator()( T &v ) {
       v = (T)my_count.fetch_and_increment();
+      if(ninvocations) ++(*ninvocations);
       if ( (int)v < N )
          return true;
       else
@@ -128,6 +144,12 @@ void test_single_dest() {
    function_body<T> b2( counters2 );
    tbb::flow::function_node<T,bool> dest2(g, tbb::flow::serial, b2 );
    tbb::flow::make_edge( src2, dest2 );
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+   ASSERT(src2.successor_count() == 1, NULL);
+   typename tbb::flow::source_node<T>::successor_list_type my_succs;
+   src2.copy_successors(my_succs);
+   ASSERT(my_succs.size() == 1, NULL);
+#endif
    g.wait_for_all();
    for (int i = 0; i < N; ++i ) {
        int v = counters2[i];
@@ -144,6 +166,152 @@ void test_single_dest() {
    }
 }
 
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+void test_extract() {
+    int counts = 0;
+    tbb::flow::tuple<int,int> dont_care;
+    tbb::flow::graph g;
+    typedef tbb::flow::source_node<int> snode_type;
+    typedef snode_type::successor_list_type successor_list_type;
+    snode_type s0(g, source_body<int>(counts), /*is_active*/false ); 
+    tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::reserving > j0(g);
+    tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::reserving > j1(g);
+    tbb::flow::join_node< tbb::flow::tuple<int,int>, tbb::flow::reserving > j2(g);
+    tbb::flow::queue_node<int> q0(g);
+    tbb::flow::queue_node<tbb::flow::tuple<int,int> > q1(g);
+    tbb::flow::make_edge(s0, tbb::flow::get<0>(j0.input_ports()));
+    /*  s0 ----+    */
+    /*         | j0 */
+    /*         +    */
+    ASSERT(!counts, "source_node activated too soon");
+    s0.activate();
+    g.wait_for_all();  // should produce one value, buffer it.
+    ASSERT(counts == 1, "source_node did not react to activation");
+
+    g.reset(tbb::flow::rf_reset_bodies);
+    counts = 0;
+    s0.extract();
+    /*  s0     +    */
+    /*         | j0 */
+    /*         +    */
+    s0.activate();
+    g.wait_for_all();  // no successors, so the body will not execute
+    ASSERT(counts == 0, "source_node shouldn't forward (no successors)");
+    g.reset(tbb::flow::rf_reset_bodies);
+
+    tbb::flow::make_edge(s0, tbb::flow::get<0>(j0.input_ports()));
+    tbb::flow::make_edge(s0, tbb::flow::get<0>(j1.input_ports()));
+    tbb::flow::make_edge(s0, tbb::flow::get<0>(j2.input_ports()));
+
+    /*        /+    */
+    /*       / | j0 */
+    /*      /  +    */
+    /*     /        */
+    /*    / /--+    */
+    /*  s0-/   | j1 */
+    /*    \    +    */
+    /*     \        */
+    /*      \--+    */
+    /*         | j2 */
+    /*         +    */
+
+    // do all joins appear in successor list?
+    successor_list_type jv1;
+    jv1.push_back(&(tbb::flow::get<0>(j0.input_ports())));
+    jv1.push_back(&(tbb::flow::get<0>(j1.input_ports())));
+    jv1.push_back(&(tbb::flow::get<0>(j2.input_ports())));
+    snode_type::successor_list_type sv;
+    s0.copy_successors(sv);
+    ASSERT(lists_match(sv, jv1), "mismatch in successor list");
+
+    tbb::flow::make_edge(q0, tbb::flow::get<1>(j2.input_ports()));
+    tbb::flow::make_edge(j2, q1);
+    s0.activate();
+
+    /*        /+           */
+    /*       / | j0        */
+    /*      /  +           */
+    /*     /               */
+    /*    / /--+           */
+    /*  s0-/   | j1        */
+    /*    \    +           */
+    /*     \               */
+    /*      \--+           */
+    /*         | j2----q1  */
+    /*  q0-----+           */
+
+    q0.try_put(1);
+    g.wait_for_all();
+    ASSERT(q1.try_get(dont_care), "join did not emit result");
+    j2.extract();
+    tbb::flow::make_edge(q0, tbb::flow::get<1>(j2.input_ports()));
+    tbb::flow::make_edge(j2, q1);
+
+    /*        /+           */
+    /*       / | j0        */
+    /*      /  +           */
+    /*     /               */
+    /*    / /--+           */
+    /*  s0-/   | j1        */
+    /*         +           */
+    /*                     */
+    /*         +           */
+    /*         | j2----q1  */
+    /*  q0-----+           */
+
+    jv1.clear();
+    jv1.push_back(&(tbb::flow::get<0>(j0.input_ports())));
+    jv1.push_back(&(tbb::flow::get<0>(j1.input_ports())));
+    s0.copy_successors(sv);
+    ASSERT(lists_match(sv, jv1), "mismatch in successor list");
+
+    q0.try_put(1);
+    g.wait_for_all();
+    ASSERT(!q1.try_get(dont_care), "extract of successor did not remove pred link");
+
+    s0.extract();
+
+    /*         +           */
+    /*         | j0        */
+    /*         +           */
+    /*                     */
+    /*         +           */
+    /*  s0     | j1        */
+    /*         +           */
+    /*                     */
+    /*         +           */
+    /*         | j2----q1  */
+    /*  q0-----+           */
+
+    ASSERT(s0.successor_count() == 0, "successor list not cleared");
+    s0.copy_successors(sv);
+    ASSERT(sv.size() == 0, "non-empty successor list");
+
+    tbb::flow::make_edge(s0, tbb::flow::get<0>(j2.input_ports()));
+
+    /*         +           */
+    /*         | j0        */
+    /*         +           */
+    /*                     */
+    /*         +           */
+    /*  s0     | j1        */
+    /*    \    +           */
+    /*     \               */
+    /*      \--+           */
+    /*         | j2----q1  */
+    /*  q0-----+           */
+
+    jv1.clear();
+    jv1.push_back(&(tbb::flow::get<0>(j2.input_ports())));
+    s0.copy_successors(sv);
+    ASSERT(lists_match(sv, jv1), "mismatch in successor list");
+
+    q0.try_put(1);
+    g.wait_for_all();
+    ASSERT(!q1.try_get(dont_care), "extract of successor did not remove pred link");
+}
+#endif  /* TBB_PREVIEW_FLOW_GRAPH_FEATURES */
+
 int TestMain() { 
     if( MinThread<1 ) {
         REPORT("number of threads must be positive\n");
@@ -154,6 +322,9 @@ int TestMain() {
         test_single_dest<int>();
         test_single_dest<float>();
     }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract();
+#endif
     return Harness::Done;
 }
 
diff --git a/src/test/test_split_node.cpp b/src/test/test_split_node.cpp
index 22f174a..7710f6d 100644
--- a/src/test/test_split_node.cpp
+++ b/src/test/test_split_node.cpp
@@ -1,36 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness.h"
-#define TBB_PREVIEW_GRAPH_NODES 1
 #include "tbb/flow_graph.h"
 #include "tbb/task_scheduler_init.h"
 
+#if defined(_MSC_VER) && _MSC_VER < 1600
+    #pragma warning (disable : 4503) //disabling the "decorated name length exceeded" warning for VS2008 and earlier
+#endif
+
 //
 // Tests
 //
@@ -103,10 +98,10 @@ class source_body {
     typedef TupleType TT;
     static const int N = tbb::flow::tuple_size<TT>::value;
     int my_count;
-    const int addend;
-    source_body& operator=( const source_body& other);
+    int addend;
 public:
     source_body(int init_val, int addto) : my_count(init_val), addend(addto) { }
+    void operator=( const source_body& other) { my_count = other.my_count; addend = other.addend; }
     bool operator()( TT &v) {
         if(my_count >= Count) return false;
         tuple_helper<N>::set_element(v, my_count);
diff --git a/src/test/test_static_assert.cpp b/src/test/test_static_assert.cpp
index b844223..d659ebf 100644
--- a/src/test/test_static_assert.cpp
+++ b/src/test/test_static_assert.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_stddef.h"
@@ -71,6 +63,7 @@ void TestTwiceInsideTemplateClass(){
     using namespace TestTwiceInsideClassTemplateHelper;
     typedef template_struct<int> template_struct_int_typedef;
     typedef template_struct<char> template_struct_char_typedef;
+    tbb::internal::suppress_unused_warning(template_struct_int_typedef(), template_struct_char_typedef());
 }
 
 template<typename T>
diff --git a/src/test/test_std_thread.cpp b/src/test/test_std_thread.cpp
index f17556b..2ab4103 100644
--- a/src/test/test_std_thread.cpp
+++ b/src/test/test_std_thread.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define TBB_IMPLEMENT_CPP0X 1
diff --git a/src/test/test_tagged_msg.cpp b/src/test/test_tagged_msg.cpp
new file mode 100644
index 0000000..b951312
--- /dev/null
+++ b/src/test/test_tagged_msg.cpp
@@ -0,0 +1,262 @@
+/*
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
+*/
+
+#define _VARIADIC_MAX 10   // Visual Studio 2012
+#include "harness.h"
+#include "tbb/atomic.h"
+#include "harness_checktype.h"
+
+#include "tbb/flow_graph.h"
+#include <cstdio>
+#include <stdexcept>
+#include <vector>
+
+#if __TBB_GCC_STRICT_ALIASING_BROKEN
+    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif
+
+// given a tuple, return the type of the element that has the maximum alignment requirement.
+// Given a tuple and that type, return the number of elements of the object with the max
+// alignment requirement that is at least as big as the largest object in the tuple.
+
+using tbb::flow::tuple_element;
+using tbb::flow::tuple_size;
+using tbb::flow::cast_to;
+using tbb::flow::is_a;
+
+typedef int *int_ptr;
+typedef char odd_array_type[15];
+typedef char odder_array[17];
+typedef check_type<int> counted_array_type[12];
+typedef std::vector<double> d_vector;
+typedef std::vector<int> i_vector;
+typedef i_vector i_vector_array[2];
+typedef tbb::flow::tagged_msg<size_t, int, char, double, odd_array_type, odder_array, d_vector, check_type<int>, counted_array_type, i_vector_array> tagged_msg_type;
+
+// test base of tagged_msg
+void TestWrapper() {
+    tbb::flow::interface7::internal::Wrapper<int> wi(42);
+    const tbb::flow::interface7::internal::Wrapper<int> wic(23);
+
+    REMARK("Value of wic is %d\n", wic.value());
+
+    // pointer-type creation
+    int point_to_me = 23;
+    tbb::flow::interface7::internal::Wrapper<int_ptr> wip(&point_to_me);
+    ASSERT(*(wip.value()) == 23, "Error in wip value");
+
+    odd_array_type ww;
+    for(int ii = 0; ii < 15; ++ii) { ww[ii] = char('0' + ii); } ww[14] = 0;
+
+    tbb::flow::interface7::internal::Wrapper<odd_array_type> ci(ww);
+    ASSERT(!strncmp(ci.value(), ww, 14), "odd_array_type ci not properly-constructed" );
+
+    tbb::flow::interface7::internal::Wrapper<odd_array_type> ci2(ci);
+
+    ASSERT(!strncmp(ci2.value(), ww, 14), "odd_array_type ci2 not properly-constructed" );
+
+    d_vector di;
+    di.clear();
+    di.push_back(2.0);
+    tbb::flow::interface7::internal::Wrapper<d_vector> dvec(di);
+    ASSERT(dvec.value()[0] == 2.0, "incorrect value in vector");
+
+    // test array of non-PODs.
+    i_vector_array oia;
+    oia[0].clear();
+    oia[1].clear();
+    oia[0].push_back(3);
+    oia[1].push_back(2);
+    tbb::flow::interface7::internal::Wrapper<i_vector_array> ia(oia);
+    ASSERT((ia.value()[1])[0] == 2, "integer vector array element[1] misbehaved");
+    ASSERT((ia.value()[0])[0] == 3, "integer vector array element[0] misbehaved");
+    tbb::flow::interface7::internal::Wrapper<i_vector_array> iac(ia);
+    ASSERT((iac.value()[1])[0] == 2, "integer vector array element[1] misbehaved");
+    ASSERT((iac.value()[0])[0] == 3, "integer vector array element[0] misbehaved");
+
+    // counted_array
+    counted_array_type cat_orig;
+    for(int i = 0; i < 12; ++i) cat_orig[i] = i + 1;
+    tbb::flow::interface7::internal::Wrapper<counted_array_type> cat(cat_orig);
+    for(int j = 0; j < 12; ++j)
+        ASSERT(1 + j == cat.value()[j], "Error in cat array");
+
+    int i = wi.value();
+    ASSERT(i == 42, "Assignment to i failed");
+    ASSERT(wi.value() == 42, "Assignment to wi failed");
+    double d = wi.value();
+    ASSERT(d == 42, "Implicit cast in assign to double failed");
+    int_ptr ip = wip.value();
+    ASSERT(ip == &(point_to_me), "Error in assignment of pointer");
+}
+
+void RunTests() {
+    tagged_msg_type def;
+    tagged_msg_type i(1,3);
+    check_type<int>::check_type_counter = 0;
+    int z;
+    #if TBB_USE_EXCEPTIONS
+    try {
+        z = cast_to<int>(def); // disallowed (non-array returning int)
+        ASSERT(false, "should not allow cast to int of non-array");
+    }
+    catch(...) {
+        REMARK("cast of non-array to int disallowed (okay)\n");
+    }
+    #endif
+    z = cast_to<int>(i);
+    ASSERT(is_a<int>(i), "wrong type for i ( == int)");
+    ASSERT(!(is_a<double>(i)), "Wrong type for i ( != double)");
+    z = 5;
+    z = cast_to<int>(i);
+
+    const int &ref_i(cast_to<int>(i));
+    ASSERT(ref_i == 3, "ref_i got wrong value");
+    tagged_msg_type j(2,4);
+    i = j;
+    ASSERT(ref_i == 4, "assign to i did not affect ref_i");
+
+    ASSERT( z == 3, "Error retrieving value from i");
+    
+    //updating and retrieving tags
+    ASSERT(j.tag() == 2, "Error retrieving tag for j");
+    j.set_tag(10);
+    ASSERT(j.tag() == 10, "Error updating tag for j");
+
+    tbb::flow::tagged_msg<char, int, char, double> k('a', 4);
+    k.set_tag('b');
+    ASSERT(k.tag() == 'b', "Error updating char tag");
+
+    tagged_msg_type double_tagged_msg(3, 8.0);  
+    ASSERT(is_a<double>(double_tagged_msg), "Wrong type for double_tagged_msg (== double)");
+    ASSERT(!is_a<char>(double_tagged_msg), "Wrong type for double_tagged_msg (!= char)");
+    ASSERT(!is_a<int>(double_tagged_msg), "Wrong type for double_tagged_msg (!= int)");
+    tagged_msg_type copytype(double_tagged_msg);
+    ASSERT(is_a<double>(copytype), "Wrong type for double_tagged_msg (== double)");
+    ASSERT(!is_a<char>(copytype), "Wrong type for double_tagged_msg (!= char)");
+    ASSERT(!is_a<int>(copytype), "Wrong type for double_tagged_msg (!= int)");
+    tagged_msg_type default_tagged_msg;   
+    ASSERT(!(is_a<double>(default_tagged_msg)), "wrong type for default ( != double)");
+    ASSERT(!(is_a<int>(default_tagged_msg)), "wrong type for default ( != int)");
+    ASSERT(!(is_a<bool>(default_tagged_msg)), "wrong type for default ( != bool)");
+    check_type<int> c;
+    ASSERT(check_type<int>::check_type_counter == 1, "Incorrect number of check_type<int>s created");
+    tagged_msg_type cnt_type(4, c);
+    ASSERT(check_type<int>::check_type_counter == 2, "Incorrect number of check_type<int>s created");
+    ASSERT(is_a<check_type<int> >(cnt_type), "Incorrect type for cnt_type");
+    cnt_type = default_tagged_msg;
+    ASSERT(check_type<int>::check_type_counter == 1, "Incorrect number of check_type<int>s after reassignment");
+    ASSERT(cnt_type.is_default_constructed(), "Assigned check_type<int>s is not default-constructed");
+    // having problem with init on gcc 3.4.6 (fxeolin16)  constructor for elements of array not called
+    // for this version.
+    // counted_array_type counted_array;
+    check_type<int> counted_array[12];  // this is okay
+    ASSERT(check_type<int>::check_type_counter == 13, "Incorrect number of check_type<int>s after counted_array construction");
+    tagged_msg_type counted_array_tagged_msg(5, counted_array);
+    // the is_a<>() should return exact type matches.
+    ASSERT(!is_a<check_type<int> *>(counted_array_tagged_msg), "Test of is_a for counted_array_tagged_msg fails");
+    #if TBB_USE_EXCEPTIONS
+    try {
+        int *iip = cast_to<int *>(counted_array_tagged_msg);
+        ASSERT(false, "did not throw on invalid cast");
+        *iip = 2;  // avoids "ipp set but not used" warning
+    }
+    catch(std::runtime_error &re) {
+        REMARK("attempt to cast to invalid type caught %s\n", re.what());
+    }
+    ASSERT(is_a<counted_array_type>(counted_array_tagged_msg), "testing");
+    const check_type<int> *ctip = cast_to<counted_array_type>(counted_array_tagged_msg);
+
+    ASSERT((int)(*ctip) == 0, "ctip incorrect");
+
+    ASSERT(check_type<int>::check_type_counter == 25, "Incorrect number of check_type<int>s after counted_array_tagged_msg construction");
+    counted_array_tagged_msg = default_tagged_msg;
+    ASSERT(check_type<int>::check_type_counter == 13, "Incorrect number of check_type<int>s after counted_array_tagged_msg destruction");
+    ASSERT(counted_array_tagged_msg.is_default_constructed(), "Assigned counted_array_type is not default-constructed");
+
+    default_tagged_msg = double_tagged_msg;
+    const double my_dval = cast_to<double>(default_tagged_msg);
+    ASSERT(my_dval == 8.0, "did not retrieve correct value from assigned default_tagged_msg");
+
+    {
+        odd_array_type my_b;
+        for(size_t ii=0; ii < 14;++ii) {
+            my_b[ii] = (char)('0' + ii);
+        }
+        my_b[14] = 0;
+        {
+            tagged_msg_type odd_array_tagged_msg(6, my_b);
+            const char *my_copy = cast_to<odd_array_type>(odd_array_tagged_msg);
+            ASSERT(!strncmp(my_b, my_copy, 14), "copied char array not correct value");
+            default_tagged_msg = odd_array_tagged_msg;
+            try {
+                const char *my_copy2 = cast_to<odd_array_type>(default_tagged_msg);
+                ASSERT(!strncmp(my_b, my_copy2, 14), "char array from default tagged_msg assign not correct value");
+            }
+            catch(...) {
+                ASSERT(false, "Bad cast");
+            }
+        }
+    }
+
+    ASSERT(!is_a<double>(i), "bad type for i");
+    try {
+        double y = cast_to<double>(i);
+        // use '&' to force eval of RHS (fixes "initialized but not referenced" vs2012 warnings)
+        ASSERT(false & (0 != y), "Error: cast to type in tuple did not get exception");
+    }
+    catch(std::runtime_error &bc) {
+        ASSERT(0 == strcmp(bc.what(), "Illegal tagged_msg cast"), "Incorrect std:runtime_error");
+    }
+    catch(...) {
+        ASSERT(false & cast_to<int>(i), "Error: improper exception thrown");
+    }
+
+    try {
+        int *ip = cast_to<int *>(i);
+        ASSERT(false & (NULL!=ip), "Error: non-array cast to pointer type.");
+    }
+    catch(std::runtime_error &bc) {
+        ASSERT(0 == strcmp(bc.what(), "Illegal tagged_msg cast"), "Incorrect std:runtime_error");
+    }
+    catch(...) {
+        ASSERT(false, "did not get runtime_error exception in casting non-array to pointer");
+    }
+
+    try {
+        bool b = cast_to<bool>(i);
+        ASSERT(false & b, "Error: cast against type did not get exception");
+    }
+    catch(std::runtime_error &bc) {
+        ASSERT(0 == strcmp(bc.what(), "Illegal tagged_msg cast"), "Incorrect std:runtime_error");
+    }
+    catch(...) {
+        ASSERT(false, "did not get runtime_error exception casting to disparate types");
+    }
+    #endif //TBB_USE_EXCEPTIONS
+}
+
+int TestMain() {
+    TestWrapper();
+    ASSERT(check_type<int>::check_type_counter == 0, "After TestWrapper return not all check_type<int>s were destroyed");
+    RunTests();
+    ASSERT(check_type<int>::check_type_counter == 0, "After RunTests return not all check_type<int>s were destroyed");
+    return Harness::Done;
+}
diff --git a/src/test/test_task.cpp b/src/test/test_task.cpp
index 7086c3e..ddb380f 100644
--- a/src/test/test_task.cpp
+++ b/src/test/test_task.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_task.h"
@@ -475,7 +467,7 @@ public:
         }
         if( DagTask* t = successor_to_below ) {
             t->sum_from_above = sum;
-            if( t->decrement_ref_count()==0 )
+            if( t->add_ref_count(-1)==0 )
                 // Test using bypass to evaluate DAG
                 return t;
         }
@@ -783,6 +775,26 @@ void TestMastersIsolation ( int p ) {
     }
 }
 
+struct waitable_task : tbb::task {
+    tbb::task* execute() {
+        recycle_as_safe_continuation(); // do not destroy the task after execution
+        set_parent(this);               // decrement its own ref_count after completion
+        __TBB_Yield();
+        return NULL;
+    }
+};
+void TestWaitableTask() {
+    waitable_task &wt = *new( tbb::task::allocate_root() ) waitable_task;
+    for( int i = 0; i < 100000; i++ ) {
+        wt.set_ref_count(2);            // prepare for waiting on it
+        wt.spawn(wt);
+        if( i&1 ) __TBB_Yield();
+        wt.wait_for_all();
+    }
+    wt.set_parent(NULL);                // prevents assertions and atomics in task::destroy
+    tbb::task::destroy(wt);
+}
+
 int TestMain () {
 #if TBB_USE_EXCEPTIONS
     TestUnconstructibleTask<1>();
@@ -805,5 +817,6 @@ int TestMain () {
         TestRelaxedOwnership( p );
         TestMastersIsolation( p );
     }
+    TestWaitableTask();
     return Harness::Done;
 }
diff --git a/src/test/test_task_arena.cpp b/src/test/test_task_arena.cpp
index ee157af..0c9400b 100644
--- a/src/test/test_task_arena.cpp
+++ b/src/test/test_task_arena.cpp
@@ -1,35 +1,26 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // undefine __TBB_CPF_BUILD to simulate user's setup
 #undef __TBB_CPF_BUILD
 
-#define TBB_PREVIEW_TASK_ARENA 1
 #define TBB_PREVIEW_LOCAL_OBSERVER 1
 #define __TBB_EXTRA_DEBUG 1
 
@@ -48,6 +39,8 @@
 #include <cstdlib>
 #include <cstdio>
 
+#include "harness_fp.h"
+
 #include "tbb/task_arena.h"
 #include "tbb/task_scheduler_observer.h"
 #include "tbb/task_scheduler_init.h"
@@ -58,7 +51,6 @@
 #include "harness_assert.h"
 #include "harness.h"
 #include "harness_barrier.h"
-#include "harness_concurrency_tracker.h"
 
 #if _MSC_VER
 // plays around __TBB_NO_IMPLICIT_LINKAGE. __TBB_LIB_NAME should be defined (in makefiles)
@@ -131,46 +123,41 @@ void ResetTLS() {
 class ConcurrencyTrackingBody {
 public:
     void operator() ( const Range& ) const {
-        ASSERT(slot_id.local() == tbb::task_arena::current_slot(), NULL);
-        Harness::ConcurrencyTracker ct;
-        for ( volatile int i = 0; i < 100000; ++i )
+        ASSERT(slot_id.local() == tbb::task_arena::current_thread_index(), NULL);
+        for ( volatile int i = 0; i < 50000; ++i )
             ;
     }
 };
 
 class ArenaObserver : public tbb::task_scheduler_observer {
     int myId;
-    tbb::atomic<int> myTrappedSlot;
     /*override*/
     void on_scheduler_entry( bool is_worker ) {
-        REMARK("a %s #%p is entering arena %d from %d\n", is_worker?"worker":"master", &local_id.local(), myId, local_id.local());
+        REMARK("a %s #%p is entering arena %d from %d on slot %d\n", is_worker?"worker":"master",
+                &local_id.local(), myId, local_id.local(),
+                tbb::task_arena::current_thread_index());
         ASSERT(!old_id.local(), "double-call to on_scheduler_entry");
         old_id.local() = local_id.local();
         ASSERT(old_id.local() != myId, "double-entry to the same arena");
         local_id.local() = myId;
-        slot_id.local() = tbb::task_arena::current_slot();
-        if(is_worker) ASSERT(tbb::task_arena::current_slot()>0, NULL);
-        else ASSERT(tbb::task_arena::current_slot()==0, NULL);
+        slot_id.local() = tbb::task_arena::current_thread_index();
+        if(is_worker) ASSERT(tbb::task_arena::current_thread_index()>0, NULL);
+        else ASSERT(tbb::task_arena::current_thread_index()==0, NULL);
     }
     /*override*/
     void on_scheduler_exit( bool is_worker ) {
-        REMARK("a %s #%p is leaving arena %d to %d\n", is_worker?"worker":"master", &local_id.local(), myId, old_id.local());
+        REMARK("a %s #%p is leaving arena %d to %d\n", is_worker?"worker":"master",
+                &local_id.local(), myId, old_id.local());
         ASSERT(local_id.local() == myId, "nesting of arenas is broken");
-        ASSERT(slot_id.local() == tbb::task_arena::current_slot(), NULL);
+        ASSERT(slot_id.local() == tbb::task_arena::current_thread_index(), NULL);
         slot_id.local() = -1;
         local_id.local() = old_id.local();
         old_id.local() = 0;
     }
-    /*override*/
-    bool on_scheduler_leaving() {
-        ASSERT(slot_id.local() == tbb::task_arena::current_slot(), NULL);
-        return tbb::task_arena::current_slot() >= myTrappedSlot;
-    }
 public:
-    ArenaObserver(tbb::task_arena &a, int id, int trap = 0) : tbb::task_scheduler_observer(a) {
+    ArenaObserver(tbb::task_arena &a, int id) : tbb::task_scheduler_observer(a) {
         ASSERT(id, NULL);
         myId = id;
-        myTrappedSlot = trap;
         observe(true);
     }
     ~ArenaObserver () {
@@ -185,7 +172,7 @@ struct AsynchronousWork : NoAssign {
     : my_barrier(a_barrier), my_is_blocking(blocking) {}
     void operator()() const {
         ASSERT(local_id.local() != 0, "not in explicit arena");
-        tbb::parallel_for(Range(0,500), ConcurrencyTrackingBody(), tbb::simple_partitioner());
+        tbb::parallel_for(Range(0,500), ConcurrencyTrackingBody(), tbb::simple_partitioner(), *tbb::task::self().group());
         if(my_is_blocking) my_barrier.timed_wait(10); // must be asynchronous to master thread
         else my_barrier.signal_nowait();
     }
@@ -259,6 +246,7 @@ public:
         : my_a(a), my_b(b) {}
     void operator()(int idx) const {
         tbb::empty_task* root_task = new(tbb::task::allocate_root()) tbb::empty_task;
+        my_b.timed_wait(10); // increases chances for task_arena initialization contention
         for( int i=0; i<100; ++i) {
             root_task->set_ref_count(2);
             my_a.enqueue(Runner(root_task));
@@ -270,6 +258,66 @@ public:
     }
 };
 
+class MultipleMastersPart4 : NoAssign {
+    tbb::task_arena &my_a;
+    Harness::SpinBarrier &my_b;
+    tbb::task_group_context *my_ag;
+
+    struct Getter : NoAssign {
+        tbb::task_group_context *& my_g;
+        Getter(tbb::task_group_context *&a_g) : my_g(a_g) {}
+        void operator()() const {
+            my_g = tbb::task::self().group();
+        }
+    };
+    struct Checker : NoAssign {
+        tbb::task_group_context *my_g;
+        Checker(tbb::task_group_context *a_g) : my_g(a_g) {}
+        void operator()() const {
+            ASSERT(my_g == tbb::task::self().group(), NULL);
+            tbb::task *t = new( tbb::task::allocate_root() ) tbb::empty_task;
+            ASSERT(my_g == t->group(), NULL);
+            tbb::task::destroy(*t);
+        }
+    };
+    struct NestedChecker : NoAssign {
+        const MultipleMastersPart4 &my_body;
+        NestedChecker(const MultipleMastersPart4 &b) : my_body(b) {}
+        void operator()() const {
+            tbb::task_group_context *nested_g = tbb::task::self().group();
+            ASSERT(my_body.my_ag != nested_g, NULL);
+            tbb::task *t = new( tbb::task::allocate_root() ) tbb::empty_task;
+            ASSERT(nested_g == t->group(), NULL);
+            tbb::task::destroy(*t);
+            my_body.my_a.enqueue(Checker(my_body.my_ag));
+        }
+    };
+public:
+    MultipleMastersPart4( tbb::task_arena &a, Harness::SpinBarrier &b) : my_a(a), my_b(b) {
+        my_a.execute(Getter(my_ag));
+    }
+    // NativeParallelFor's functor
+    void operator()(int) const {
+        my_a.execute(*this);
+    }
+    // Arena's functor
+    void operator()() const {
+        Checker check(my_ag);
+        check();
+        tbb::task_arena nested(1,1);
+        nested.execute(NestedChecker(*this)); // change arena
+        tbb::parallel_for(tbb::blocked_range<int>(0,1),*this); // change group context only
+        my_b.timed_wait(10);
+        my_a.execute(check);
+        check();
+    }
+    // parallel_for's functor
+    void operator()(const tbb::blocked_range<int> &) const {
+        NestedChecker(*this)();
+        my_a.execute(Checker(my_ag)); // restore arena context
+    }
+};
+
 void TestMultipleMasters(int p) {
     {
         REMARK("multiple masters, part 1\n");
@@ -297,9 +345,130 @@ void TestMultipleMasters(int p) {
         // "Oversubscribe" the arena by 1 master thread
         NativeParallelFor( p+1, MultipleMastersPart3(a, barrier) );
         a.debug_wait_until_empty();
+    } {
+        int c = p%3? (p%2? p : 2) : 3;
+        REMARK("multiple masters, part 4: contexts, arena(%d)\n", c);
+        tbb::task_arena a(c, 1);
+        ArenaObserver o(a, c);
+        Harness::SpinBarrier barrier(c);
+        MultipleMastersPart4 test(a, barrier);
+        NativeParallelFor(p, test);
+        a.debug_wait_until_empty();
     }
 }
 
+#include <sstream>
+#if TBB_USE_EXCEPTIONS
+#include <stdexcept>
+#include "tbb/tbb_exception.h"
+#endif
+
+struct TestArenaEntryBody : FPModeContext {
+    tbb::atomic<int> &my_stage; // each execute increases it
+    std::stringstream my_id;
+    bool is_caught, is_expected;
+    enum { arenaFPMode = 1 };
+
+    TestArenaEntryBody(tbb::atomic<int> &s, int idx, int i)  // init thread-specific instance
+    :   FPModeContext(idx+i)
+    ,   my_stage(s)
+    ,   is_caught(false)
+    ,   is_expected( (idx&(1<<i)) != 0 && (TBB_USE_EXCEPTIONS) != 0 )
+    {
+        my_id << idx << ':' << i << '@';
+    }
+    void operator()() { // inside task_arena::execute()
+        // synchronize with other stages
+        int stage = my_stage++;
+        int slot = tbb::task_arena::current_thread_index();
+        ASSERT(slot >= 0 && slot <= 1, "master or the only worker");
+        // wait until the third stage is delegated and then starts on slot 0
+        while(my_stage < 2+slot) __TBB_Yield();
+        // deduct its entry type and put it into id, it helps to find source of a problem
+        my_id << (stage < 3 ? (tbb::task_arena::current_thread_index()?
+                              "delegated_to_worker" : stage < 2? "direct" : "delegated_to_master")
+                            : stage == 3? "nested_same_ctx" : "nested_alien_ctx");
+        REMARK("running %s\n", my_id.str().c_str());
+        AssertFPMode(arenaFPMode);
+        if(is_expected)
+            __TBB_THROW(std::logic_error(my_id.str()));
+        // no code can be put here since exceptions can be thrown
+    }
+    void on_exception(const char *e) { // outside arena, in catch block
+        is_caught = true;
+        REMARK("caught %s\n", e);
+        ASSERT(my_id.str() == e, NULL);
+        assertFPMode();
+    }
+    void after_execute() { // outside arena and catch block
+        REMARK("completing %s\n", my_id.str().c_str() );
+        ASSERT(is_caught == is_expected, NULL);
+        assertFPMode();
+    }
+};
+
+class ForEachArenaEntryBody : NoAssign {
+    tbb::task_arena &my_a; // expected task_arena(2,1)
+    tbb::atomic<int> &my_stage; // each execute increases it
+    int my_idx;
+
+public:
+    ForEachArenaEntryBody(tbb::task_arena &a, tbb::atomic<int> &c)
+    : my_a(a), my_stage(c), my_idx(0) {}
+
+    void test(int idx) {
+        my_idx = idx;
+        my_stage = 0;
+        NativeParallelFor(3, *this); // test cross-arena calls
+        ASSERT(my_stage == 3, NULL);
+        my_a.execute(*this); // test nested calls
+        ASSERT(my_stage == 5, NULL);
+    }
+
+    // task_arena functor for nested tests
+    void operator()() const {
+        test_arena_entry(3); // in current task group context
+        tbb::parallel_for(4, 5, *this); // in different context
+    }
+
+    // NativeParallelFor & parallel_for functor
+    void operator()(int i) const {
+        test_arena_entry(i);
+    }
+
+private:
+    void test_arena_entry(int i) const {
+        TestArenaEntryBody scoped_functor(my_stage, my_idx, i);
+        __TBB_TRY {
+            my_a.execute(scoped_functor);
+        }
+#if TBB_USE_EXCEPTIONS
+        catch(tbb::captured_exception &e) {
+            scoped_functor.on_exception(e.what());
+            ASSERT_WARNING(TBB_USE_CAPTURED_EXCEPTION, "Caught captured_exception while expecting exact one");
+        } catch(std::logic_error &e) {
+            scoped_functor.on_exception(e.what());
+            ASSERT(!TBB_USE_CAPTURED_EXCEPTION, "Caught exception of wrong type");
+        } catch(...) { ASSERT(false, "Unexpected exception type"); }
+#endif //TBB_USE_EXCEPTIONS
+        scoped_functor.after_execute();
+    }
+};
+
+void TestArenaEntryConsistency() {
+    REMARK("test arena entry consistency\n" );
+
+    tbb::task_arena a(2,1);
+    tbb::atomic<int> c;
+    ForEachArenaEntryBody body(a, c);
+
+    FPModeContext fp_scope(TestArenaEntryBody::arenaFPMode);
+    a.initialize(); // capture FP settings to arena
+    fp_scope.setNextFPMode();
+
+    for(int i = 0; i < 100; i++) // not less than 32 = 2^5 of entry types
+        body.test(i);
+}
 
 int TestMain () {
     // TODO: a workaround for temporary p-1 issue in market
@@ -312,5 +481,6 @@ int TestMain () {
         TestMultipleMasters( p );
         ResetTLS();
     }
+    TestArenaEntryConsistency();
     return Harness::Done;
 }
diff --git a/src/test/test_task_assertions.cpp b/src/test/test_task_assertions.cpp
index bb23274..b139fef 100644
--- a/src/test/test_task_assertions.cpp
+++ b/src/test/test_task_assertions.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test correctness of forceful TBB initialization before any dynamic initialization
diff --git a/src/test/test_task_auto_init.cpp b/src/test/test_task_auto_init.cpp
index ed2f89e..b8e36f9 100644
--- a/src/test/test_task_auto_init.cpp
+++ b/src/test/test_task_auto_init.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Testing automatic initialization of TBB task scheduler, so do not use task_scheduler_init anywhere.
diff --git a/src/test/test_task_enqueue.cpp b/src/test/test_task_enqueue.cpp
index d8d8293..4273ef1 100644
--- a/src/test/test_task_enqueue.cpp
+++ b/src/test/test_task_enqueue.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_task.h"
@@ -128,8 +120,9 @@ public:
             }
             else if ( overall_progress > 2 ) {
                 ++uneven_progress_count;
-                // The threshold of 16 is twice bigger than what was observed on a 8-core machine with oversubscription.
-                ASSERT(uneven_progress_count < 16, "some enqueued tasks seem stalling; no simultaneous progress, or the machine is oversubscribed?");
+                // The threshold of 32 is 4x bigger than what was observed on a 8-core machine with oversubscription.
+                ASSERT_WARNING(uneven_progress_count < 32,
+                    "some enqueued tasks seem stalling; no simultaneous progress, or the machine is oversubscribed? Investigate if repeated");
             }
         } while( !completed );
     }
@@ -141,7 +134,7 @@ void TestEnqueue( int p ) {
         tbb::task_scheduler_init init(p);
         EnqueuedTask::nCompletedPairs = EnqueuedTask::nOrderedPairs = 0;
         for(int i=0; i<nTracks; ++i) {
-            TaskTracks[i] = -1; // to accomodate for the starting call
+            TaskTracks[i] = -1; // to accommodate for the starting call
             EnqueuedTask::FireTwoTasks(TaskTracks+i);
         }
         ProgressMonitor pm;
@@ -217,6 +210,7 @@ public:
     void Execute() {
         while ( !CanStart )
             __TBB_Yield();
+        Harness::Sleep(10); // increases probability of the bug
         tbb::task::enqueue( *new( tbb::task::allocate_root() ) CarrierTask(m_taskToSpawn) );
     }
 };
@@ -254,10 +248,10 @@ void TestCascadedEnqueue () {
             }
             for ( j = 0; j < numThreads; ++j )
                 Finished[j] = false;
-            REMARK("%02d threads; Iteration %03d\r", numThreads, i);
+            REMARK("\r%02d threads; Iteration %03d", numThreads, i);
         }
     }
-    REMARK( "                                 \r" );
+    REMARK( "\r                                 \r" );
 }
 
 class DummyTask : public tbb::task {
@@ -325,6 +319,7 @@ void TestDequeueByMaster () {
 
 static const int NUM_TASKS    = 4;
 static const size_t NUM_REPEATS = TBB_USE_DEBUG ? 50000 : 100000;
+static tbb::task_group_context persistent_context(tbb::task_group_context::isolated);
 
 struct Functor : NoAssign
 {
@@ -333,7 +328,9 @@ struct Functor : NoAssign
     void operator()(const tbb::blocked_range<int>& r) const 
     {
         ASSERT(r.size() == 1, NULL);
-        tbb::task *t = new(tbb::task::allocate_root()) tbb::empty_task();
+        // allocate_root() uses current context of parallel_for which is destroyed when it finishes.
+        // But enqueued tasks can outlive parallel_for execution. Thus, use a persistent context.
+        tbb::task *t = new(tbb::task::allocate_root(persistent_context)) tbb::empty_task();
         tbb::task::enqueue(*t); // ensure no missing wake-ups
         my_barrier.timed_wait(10, "Attention: poorly reproducible event, if seen stress testing required" );
     }
@@ -344,6 +341,8 @@ void TestWakeups()
     tbb::task_scheduler_init my(tbb::task_scheduler_init::deferred);
     if( tbb::task_scheduler_init::default_num_threads() <= NUM_TASKS )
         my.initialize(NUM_TASKS*2);
+    else // workaround issue #1996 for TestCascadedEnqueue
+        my.initialize(tbb::task_scheduler_init::default_num_threads()+1);
     Harness::SpinBarrier barrier(NUM_TASKS);
     REMARK("Missing wake-up: affinity_partitioner\n");
     tbb::affinity_partitioner aff;
@@ -358,9 +357,9 @@ void TestWakeups()
 }
 
 int TestMain () {
-    TestWakeups();
-    TestDequeueByMaster();
-    TestCascadedEnqueue();
+    TestWakeups();         // 1st because requests oversubscription
+    TestCascadedEnqueue(); // needs oversubscription
+    TestDequeueByMaster(); // no oversubscription needed
     for( int p=MinThread; p<=MaxThread; ++p ) {
         TestEnqueue(p);
         TestSharedRoot(p);
diff --git a/src/test/test_task_group.cpp b/src/test/test_task_group.cpp
index 5674b98..87b59e2 100644
--- a/src/test/test_task_group.cpp
+++ b/src/test/test_task_group.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_defs.h"
@@ -71,6 +63,9 @@
 
     typedef unsigned int uint_t;
 
+    // Bug in this ConcRT version results in task_group::wait() rethrowing
+    // internal cancellation exception propagated by the scheduler from the nesting
+    // task group.
     #define __TBB_SILENT_CANCELLATION_BROKEN  (_MSC_VER == 1600)
 
 #endif /* !TBBTEST_USE_TBB */
@@ -79,6 +74,7 @@
 
 #include "tbb/atomic.h"
 #include "tbb/aligned_space.h"
+#include "harness.h"
 #include "harness_concurrency_tracker.h"
 
 unsigned g_MaxConcurrency = 0;
@@ -430,7 +426,7 @@ void TestTaskHandle2 () {
     FIB_TEST_PROLOGUE();
     g_Sum = 0;
     task_group_type rg;
-    typedef tbb::aligned_space<handle_type,1> handle_space_t;
+    typedef tbb::aligned_space<handle_type> handle_space_t;
     handle_space_t *handles = new handle_space_t[numRepeats];
     handle_type *h = NULL;
 #if __TBB_ipf && __TBB_GCC_VERSION==40601
@@ -849,15 +845,10 @@ int TestMain () {
         TestEh2();
         TestStructuredWait();
         TestStructuredCancellation2<true>();
-        //TODO: recheck the condition with newer versions of clang/libc++
-#if (__clang__ && (__cplusplus >= 201103L || _LIBCPP_VERSION ))
-        //TODO:it seems that clang in C++11 mode does not expect exception
-        //coming from destructor in the following test as it does not generate correct code for stack unwinding.
-        //TODO:it seems that libc++ implementation of std::uncaught_exception return incorrect value clang and
-        //icc14 in the following test
-        REPORT("Known issue: TestStructuredCancellation2<false> test is skipped.\n");
-#else
+#if !__TBB_THROW_FROM_DTOR_BROKEN
         TestStructuredCancellation2<false>();
+#else
+        REPORT("Known issue: TestStructuredCancellation2<false>() is skipped.\n");
 #endif
 #endif /* TBB_USE_EXCEPTIONS && !__TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN */
 #if !TBBTEST_USE_TBB
diff --git a/src/test/test_task_leaks.cpp b/src/test/test_task_leaks.cpp
index e997431..5e75736 100644
--- a/src/test/test_task_leaks.cpp
+++ b/src/test/test_task_leaks.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /*  The test uses "single produces multiple consumers" (SPMC )pattern to check 
diff --git a/src/test/test_task_priority.cpp b/src/test/test_task_priority.cpp
index 3b376fd..033ad4c 100644
--- a/src/test/test_task_priority.cpp
+++ b/src/test/test_task_priority.cpp
@@ -1,33 +1,30 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "tbb/tbb_config.h"
 #include "harness.h"
 
+#if __TBB_GCC_STRICT_ALIASING_BROKEN
+    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif
+
 #if __TBB_TASK_GROUP_CONTEXT
 
 #include "tbb/task.h"
@@ -46,6 +43,8 @@ int MinBaseDepth = 8;
 int MaxBaseDepth = 10;
 int BaseDepth = 0;
 
+const int DesiredNumThreads = 12;
+
 const int NumTests = 8;
 const int TestRepeats = 4;
 
@@ -295,6 +294,10 @@ void RunPrioritySwitchBetweenTwoMasters ( int idx, uintptr_t opts ) {
 }
 
 void TestPrioritySwitchBetweenTwoMasters () {
+    if ( P > DesiredNumThreads ) {
+        REPORT_ONCE( "Known issue: TestPrioritySwitchBetweenTwoMasters is skipped for big number of threads\n" );
+        return;
+    }
     REMARK( "Stress tests: %s / %s \n", Low == tbb::priority_low ? "Low" : "Normal", High == tbb::priority_normal ? "Normal" : "High" );
     PrepareGlobals( 2 );
     for ( int i = 0; i < TestRepeats; ++i ) {
@@ -318,7 +321,7 @@ void TestPrioritySwitchBetweenTwoMasters () {
             REMARK( "Test %d: %d failures in %d runs\n", i, g_TestFailures[i], NumRuns );
         if ( g_TestFailures[i] * 100 / NumRuns > 50 ) {
             if ( i == 1 )
-                REPORT( "Known issue: priority effect is limited in case of blocking-style nesting\n" );
+                REPORT_ONCE( "Known issue: priority effect is limited in case of blocking-style nesting\n" );
             else
                 REPORT( "Warning: test %d misbehaved too often (%d out of %d)\n", i, g_TestFailures[i], NumRuns );
         }
@@ -543,7 +546,7 @@ void TestSetPriority() {
 
 int TestMain () {
 #if !__TBB_TEST_SKIP_AFFINITY
-    Harness::LimitNumberOfThreads( 16 );
+    Harness::LimitNumberOfThreads( DesiredNumThreads );
 #endif
 #if !__TBB_TASK_PRIORITY
     REMARK( "Priorities disabled: Running as just yet another task scheduler test\n" );
diff --git a/src/test/test_task_scheduler_init.cpp b/src/test/test_task_scheduler_init.cpp
index c4ff637..13b1aef 100644
--- a/src/test/test_task_scheduler_init.cpp
+++ b/src/test/test_task_scheduler_init.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/task_scheduler_init.h"
@@ -44,38 +36,65 @@
     #pragma warning (pop)
 #endif
 
+#include "harness_concurrency_tracker.h"
+#include "harness_concurrency_checker.h"
+#include "harness_task.h"
 #include "harness.h"
 
+const int DefaultThreads = tbb::task_scheduler_init::default_num_threads();
+
+namespace tbb { namespace internal {
+size_t __TBB_EXPORTED_FUNC get_initial_auto_partitioner_divisor();
+}}
+
+int ArenaConcurrency() {
+    return tbb::internal::get_initial_auto_partitioner_divisor()/4; // TODO: expose through task_arena interface?
+}
+
+// Generally, TBB does not guarantee mandatory parallelism. This test uses some whitebox knowledge about when all the threads can be available
+bool test_mandatory_parallelism = true;
+
 //! Test that task::initialize and task::terminate work when doing nothing else.
 /** maxthread is treated as the "maximum" number of worker threads. */
 void InitializeAndTerminate( int maxthread ) {
     __TBB_TRY {
-        for( int i=0; i<200; ++i ) {
+        for( int i=0; i<256; ++i ) {
+            int threads = (std::rand() % maxthread) + 1;
             switch( i&3 ) {
                 default: {
-                    tbb::task_scheduler_init init( std::rand() % maxthread + 1 );
+                    tbb::task_scheduler_init init( threads );
                     ASSERT(init.is_active(), NULL);
+                    ASSERT(ArenaConcurrency()==threads, NULL);
+                    ASSERT(!test_mandatory_parallelism || Harness::CanReachConcurrencyLevel(threads), NULL);
+                    if(i&0x20) tbb::task::enqueue( (*new( tbb::task::allocate_root() ) TaskGenerator(2,6)) ); // a work deferred to workers
                     break;
                 }
-                case 0: {   
+                case 0: {
                     tbb::task_scheduler_init init;
                     ASSERT(init.is_active(), NULL);
+                    ASSERT(ArenaConcurrency()==init.default_num_threads(), NULL);
+                    ASSERT(!test_mandatory_parallelism || Harness::CanReachConcurrencyLevel(init.default_num_threads()), NULL);
+                    if(i&0x40) tbb::task::enqueue( (*new( tbb::task::allocate_root() ) TaskGenerator(3,5)) ); // a work deferred to workers
                     break;
                 }
                 case 1: {
-                    tbb::task_scheduler_init init( tbb::task_scheduler_init::automatic );
-                    ASSERT(init.is_active(), NULL);
-                    break;
-                }
-                case 2: {
                     tbb::task_scheduler_init init( tbb::task_scheduler_init::deferred );
                     ASSERT(!init.is_active(), "init should not be active; initialization was deferred");
-                    init.initialize( std::rand() % maxthread + 1 );
+                    init.initialize( threads );
                     ASSERT(init.is_active(), NULL);
+                    ASSERT(ArenaConcurrency()==threads, NULL);
+                    ASSERT(!test_mandatory_parallelism || Harness::CanReachConcurrencyLevel(threads), NULL);
                     init.terminate();
                     ASSERT(!init.is_active(), "init should not be active; it was terminated");
                     break;
                 }
+                case 2: {
+                    tbb::task_scheduler_init init( tbb::task_scheduler_init::automatic );
+                    ASSERT(init.is_active(), NULL);
+                    ASSERT(ArenaConcurrency()==init.default_num_threads(), NULL);
+                    ASSERT(!test_mandatory_parallelism || Harness::CanReachConcurrencyLevel(init.default_num_threads()), NULL);
+                    break;
+                }
             }
         }
     } __TBB_CATCH( std::runtime_error& error ) {
@@ -102,7 +121,6 @@ struct ThreadedInit {
 #include <tchar.h>
 #endif /* _MSC_VER */
 
-#include "harness_concurrency_tracker.h"
 #include "tbb/parallel_for.h"
 #include "tbb/blocked_range.h"
 
@@ -141,9 +159,32 @@ int TestMain () {
     #endif
 #endif /* _MSC_VER && !__TBB_NO_IMPLICIT_LINKAGE && !__TBB_LIB_NAME */
     std::srand(2);
-    InitializeAndTerminate(MaxThread);
+    REMARK("testing master thread\n");
+    int override = DefaultThreads*2;
+    {   // work-around shared RML
+        tbb::task_scheduler_init init( override );
+        if( !Harness::CanReachConcurrencyLevel( override, 3. ) ) {
+            override = DefaultThreads;
+            if( MaxThread > DefaultThreads )
+                MaxThread = DefaultThreads;
+#if RML_USE_WCRM
+            REPORT("Known issue: shared RML for ConcRT does not support oversubscription\n");
+            test_mandatory_parallelism = false; // we cannot rely on ConcRT to provide all the requested threads
+#else
+            REPORT("Known issue: machine is heavy loaded or shared RML which does not support oversubscription is loaded\n");
+#endif
+        }
+    }
+    InitializeAndTerminate( override ); // test initialization of more than default number of threads
     for( int p=MinThread; p<=MaxThread; ++p ) {
         REMARK("testing with %d threads\n", p );
+        // protect market with excess threads from default initializations
+        // TODO IDEA: enhance task_scheduler_init to serve as global_control setting so that
+        // number of threads > default concurrency will be requested from market.
+        // Such settings must be aggregated via 'max' function and 'max_allowed_parallelism' control
+        // (which has 'min' aggregation) will have precedence over it.
+        tbb::task_scheduler_init init( tbb::task_scheduler_init::deferred );
+        if( MaxThread > DefaultThreads ) init.initialize( MaxThread );
         NativeParallelFor( p, ThreadedInit() );
     }
     AssertExplicitInitIsNotSupplanted();
diff --git a/src/test/test_task_scheduler_observer.cpp b/src/test/test_task_scheduler_observer.cpp
index 361525c..93ceec2 100644
--- a/src/test/test_task_scheduler_observer.cpp
+++ b/src/test/test_task_scheduler_observer.cpp
@@ -1,33 +1,31 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#if __TBB_CPF_BUILD
+#define TEST_SLEEP_PERMISSION 1
+#define TBB_USE_PREVIEW_BINARY 1
+#endif
+// undefine __TBB_CPF_BUILD to simulate user's setup
+#undef __TBB_CPF_BUILD
+
 #define TBB_PREVIEW_LOCAL_OBSERVER 1
-#define TBB_PREVIEW_TASK_ARENA 1
 
 #include "tbb/tbb_config.h"
 #include "harness.h"
@@ -37,6 +35,7 @@
 #include "tbb/task_scheduler_init.h"
 #include "tbb/atomic.h"
 #include "tbb/task.h"
+#include "tbb/enumerable_thread_specific.h"
 #include "../tbb/tls.h"
 #include "tbb/tick_count.h"
 #include "harness_barrier.h"
@@ -52,16 +51,18 @@ struct ObserverStats {
     tbb::atomic<int> m_entries;
     tbb::atomic<int> m_exits;
     tbb::atomic<int> m_workerEntries;
+    tbb::atomic<int> m_workerSleeps;
     tbb::atomic<int> m_workerExits;
 
     void Reset () {
-        m_entries = m_exits = m_workerEntries = m_workerExits = 0;
+        m_entries = m_exits = m_workerEntries = m_workerSleeps = m_workerExits = 0;
     }
 
     void operator += ( const ObserverStats& s ) {
         m_entries += s.m_entries;
         m_exits += s.m_exits;
         m_workerEntries += s.m_workerEntries;
+        m_workerSleeps += s.m_workerSleeps;
         m_workerExits += s.m_workerExits;
     }
 };
@@ -69,11 +70,30 @@ struct ObserverStats {
 struct ThreadState {
     uintptr_t m_flags;
     tbb::task_scheduler_observer *m_dyingObserver;
+    uintptr_t m_maySleepCalls;
+    bool m_canSleep;
     bool m_isMaster;
-    ThreadState() : m_flags(0), m_dyingObserver(NULL), m_isMaster(false) {}
+    ThreadState() { reset(); }
+    void reset() {
+        m_maySleepCalls = m_flags = 0;
+        m_dyingObserver = NULL;
+        m_canSleep = m_isMaster = false;
+    }
+    static ThreadState &get();
 };
 
-tbb::internal::tls<ThreadState*> theLocalState;
+tbb::enumerable_thread_specific<ThreadState> theLocalState;
+tbb::internal::tls<intptr_t> theThreadPrivate;
+
+ThreadState &ThreadState::get() {
+    bool exists;
+    ThreadState& state = theLocalState.local(exists);
+    // ETS will not detect that a thread was allocated with the same id as a destroyed thread
+    if( exists && theThreadPrivate.get() == 0 ) state.reset();
+    theThreadPrivate = 1; // mark thread constructed
+    return state;
+}
+
 static ObserverStats theStats;
 static tbb::atomic<int> theNumObservers;
 
@@ -86,7 +106,7 @@ enum TestMode {
     tmLocalObservation = 2,
     //! Observer causes autoinitialization of the scheduler
     tmAutoinitialization = 4,
-    //! test on_scheduler_leaving
+    //! test may_sleep
     tmLeavingControl = 8
 };
 
@@ -95,13 +115,15 @@ uintptr_t theTestMode,
 
 class MyObserver : public tbb::task_scheduler_observer, public ObserverStats {
     uintptr_t m_flag;
-    bool m_dying;
     tbb::atomic<int> m_leave_ticket;
+    tbb::atomic<bool> m_dying;
 
     /*override*/
     void on_scheduler_entry( bool is_worker ) {
-        ThreadState& state = *theLocalState;
+        ThreadState& state = ThreadState::get();
         ASSERT( is_worker==!state.m_isMaster, NULL );
+        if ( theTestMode & tmLeavingControl )
+            ASSERT( m_leave_ticket, NULL );
         if ( thePrevMode & tmSynchronized ) {
             ASSERT( !(state.m_flags & m_flag), "Observer repeatedly invoked for the same thread" );
             if ( theTestMode & tmLocalObservation )
@@ -130,7 +152,7 @@ class MyObserver : public tbb::task_scheduler_observer, public ObserverStats {
     }
     /*override*/
     void on_scheduler_exit( bool is_worker ) {
-        ThreadState& state = *theLocalState;
+        ThreadState& state = ThreadState::get();
         ASSERT( is_worker==!state.m_isMaster, NULL );
         if ( m_dying && state.m_dyingObserver ) {
             ASSERT( state.m_dyingObserver == this, "Exit without entry (for a dying observer)" );
@@ -138,39 +160,83 @@ class MyObserver : public tbb::task_scheduler_observer, public ObserverStats {
             return;
         }
         ASSERT( state.m_flags & m_flag, "Exit without entry" );
-        // TODO: if(!is_leaving_test()) // workers are not supposed to return back for leaving test
         state.m_flags &= ~m_flag;
         ++m_exits;
         if ( is_worker )
             ++m_workerExits;
     }
     /*override*/
-    bool on_scheduler_leaving() {
-        if( m_leave_ticket == 0 ) return true;
-        return m_leave_ticket.fetch_and_store(-1) > 0;
+    bool may_sleep() {
+        ThreadState& state = ThreadState::get();
+        ++state.m_maySleepCalls;
+        Harness::Sleep(10);     // helps to reproduce the issues
+        ASSERT( !state.m_isMaster, NULL );
+        if( m_dying ) {         // check the anti-starvation logic
+            return keep_awake;  // thread should exit despite the return value
+        }
+        if( state.m_canSleep ) {// the permission for sleep was previously received
+            // though, it is an important check for the test, we still do not guarantee this condition
+            ASSERT_WARNING( !(theTestMode & tmLeavingControl), "may_sleep() called again after leaving permission was granted once, check if repeated");
+            return allow_sleep;
+        }
+        // note, may_sleep can be called before on_entry()
+        if( !(theTestMode & tmLeavingControl) || m_leave_ticket.fetch_and_store(-1) > 0 ) {
+            state.m_canSleep = true;
+            ++m_workerSleeps;
+            return allow_sleep;
+        }
+        return keep_awake;
     }
 public:
-    void test_leaving() { m_leave_ticket.store<tbb::relaxed>(-1); }
-    void dismiss_one() { m_leave_ticket = 1; }
-    bool is_leaving_test() { return m_leave_ticket.load<tbb::relaxed>() != 0; }
+    // the method is called before the work in new arena starts enabling the leaving test mode
+    // in this mode may_sleep() does not allow a thread to fall asleep unless permitted below
+    void enable_leaving_test() {
+        ASSERT(theTestMode & tmLeavingControl, NULL);
+        m_leave_ticket.store<tbb::relaxed>(-1);
+        ASSERT(!is_observing(), NULL);
+        observe(true);
+    }
+
+    // the work is just done in the only arena, assume workers start entering may_sleep
+    void test_leaving() {
+#if TEST_SLEEP_PERMISSION
+        if( !(theTestMode & tmLeavingControl) )
+            return; // second call to the test TODO: extend the test for the second round as well
+        REMARK( "Testing may_sleep()\n");
+        ASSERT( !m_workerSleeps, "permission for sleep was given before the test starts?");
+        ASSERT( (theTestMode & tmSynchronized) && m_workerEntries >= P-1, "test_leaving assumes full subscription of the only arena");
+        for ( int j = 0; j < m_workerEntries; j++ ) {
+            REMARK( "Round %d: entries %d, sleeps %d\n", j, (int)m_workerEntries, (int)m_workerSleeps );
+            ASSERT( m_leave_ticket == -1, "unexpected mode, signal was not consumed by a worker?" );
+            m_leave_ticket = 1; // dismiss one
+            double n_seconds = 10;
+            (Harness::TimedWaitWhileEq(n_seconds))(m_workerSleeps, j);
+            ASSERT( n_seconds >= 0, "Time out while waiting for a worker to call may_sleep for the first time");
+            __TBB_Yield();
+        }
+        // the first time this method is called the work will be executed again,
+        // the next time time, the scheduler will start shutting down
+        theTestMode &= ~tmLeavingControl;
+        m_leave_ticket = m_workerSleeps = 0; // reset for the next round
+#endif
+    }
 
     MyObserver( uintptr_t flag )
         : tbb::task_scheduler_observer(theTestMode & tmLocalObservation ? true : false)
         , m_flag(flag)
-        , m_dying(false)
     {
         m_leave_ticket.store<tbb::relaxed>(0);
         ++theNumObservers;
         Reset();
+        m_dying = false;
         // Local observer causes automatic scheduler initialization
         // in the current thread, so here, we must postpone the activation.
-        if ( !(theTestMode & tmLocalObservation) )
+        if ( !(theTestMode & tmLocalObservation) && !(theTestMode & tmLeavingControl) )
             observe(true);
     }
 
     ~MyObserver () {
         m_dying = true;
-        --theNumObservers;
         ASSERT( m_exits <= m_entries, NULL );
         if ( theTestMode & tmSynchronized ) {
             tbb::tick_count t0 = tbb::tick_count::now();
@@ -180,6 +246,7 @@ public:
                 REPORT( "Warning: Entry/exit count mismatch (%d, %d). Observer is broken or machine is overloaded.\n", (int)m_entries, (int)m_exits );
         }
         theStats += *this;
+        --theNumObservers;
         // it is recommended to disable observation before destructor of the base class starts,
         // otherwise it can lead to concurrent notification callback on partly destroyed object,
         // which in turn can harm (in addition) if derived class has new virtual methods.
@@ -199,11 +266,12 @@ public:
     FibTask( int n, uintptr_t flags, MyObserver &obs ) : N(n), m_flag(flags), m_observer(obs) {}
 
     /*override*/ tbb::task* execute() {
-        ASSERT( !(~theLocalState->m_flags & m_flag), NULL );
+        ThreadState& s = ThreadState::get();
+        ASSERT( !(~s.m_flags & m_flag), NULL );
         if( N < 2 )
             return NULL;
         bool globalBarrierActive = false;
-        if ( theLocalState->m_isMaster ) {
+        if ( s.m_isMaster ) {
             if ( theGlobalBarrierActive ) {
                 // This is the root task. Its N is equal to the number of threads.
                 // Spawn a task for each worker.
@@ -253,7 +321,9 @@ public:
     TestBody( int numThreads ) : m_numThreads(numThreads) {}
 
     void operator()( int i ) const {
-        theLocalState->m_isMaster = true;
+        ThreadState &state = ThreadState::get();
+        ASSERT( !state.m_isMaster, "should be newly initialized thread");
+        state.m_isMaster = true;
         uintptr_t f = i <= MaxFlagIndex ? 1<<i : 0;
         MyObserver o(f);
         if ( theTestMode & tmSynchronized )
@@ -261,9 +331,9 @@ public:
         // when mode is local observation but not synchronized and when num threads == default
         if ( theTestMode & tmAutoinitialization )
             o.observe(true); // test autoinitialization can be done by observer
-        // when mode is local synchronized observation and when num threads == default
+        // when mode is synchronized observation and when num threads == default
         if ( theTestMode & tmLeavingControl )
-            o.test_leaving();
+            o.enable_leaving_test();
         // Observer in enabled state must outlive the scheduler to ensure that
         // all exit notifications are called.
         tbb::task_scheduler_init init(m_numThreads);
@@ -273,47 +343,15 @@ public:
         for ( int j = 0; j < 2; ++j ) {
             tbb::task &t = *new( tbb::task::allocate_root() ) FibTask(m_numThreads, f, o);
             tbb::task::spawn_root_and_wait(t);
+            if ( theTestMode & tmLeavingControl )
+                o.test_leaving();
             thePrevMode = theTestMode;
         }
-        if( o.is_leaving_test() ) {
-            REMARK( "Testing on_scheduler_leaving()\n");
-            ASSERT(o.m_workerEntries > 0, "Unbelievable");
-            // TODO: start from 0?
-            for ( int j = o.m_workerExits; j < o.m_workerEntries; j++ ) {
-                REMARK( "Round %d: entries %d, exits %d\n", j, (int)o.m_workerEntries, (int)o.m_workerExits );
-                ASSERT_WARNING(o.m_workerExits == j, "Workers unexpectedly leaved arena");
-                o.dismiss_one();
-                double n_seconds = 5;
-                (Harness::TimedWaitWhileEq(n_seconds))(o.m_workerExits, j);
-                ASSERT( n_seconds >= 0, "Time out while waiting for a worker to leave arena");
-                __TBB_Yield();
-            }
-        }
     }
 }; // class TestBody
 
-Harness::SpinBarrier theWorkersBarrier;
-
-class CleanerTask : public tbb::task {
-public:
-    tbb::task* execute () {
-        theLocalState->m_flags = 0;
-        theWorkersBarrier.wait();
-        return NULL;
-    }
-};
-
-void CleanLocalState () {
-    tbb::task_scheduler_init init;
-    tbb::task &r = *new( tbb::task::allocate_root() ) tbb::empty_task;
-    r.set_ref_count(P + 1);
-    for ( int i = 1; i < P; ++i )
-        tbb::task::spawn( *new(r.allocate_child()) CleanerTask );
-    r.spawn_and_wait_for_all( *new(r.allocate_child()) CleanerTask );
-    tbb::task::destroy( r );
-}
-
 void TestObserver( int M, int T, uintptr_t testMode ) {
+    theLocalState.clear();
     theStats.Reset();
     theGlobalBarrierActive = true;
     theTestMode = testMode;
@@ -352,13 +390,12 @@ int TestMain () {
     if ( P < 2 )
         return Harness::Skipped;
     theNumObservers = 0;
-    theWorkersBarrier.initialize(P);
     // Fully- and under-utilized mode
     for ( int M = 1; M < P; M <<= 1 ) {
         if ( M > P/2 ) {
             ASSERT( P & (P-1), "Can get here only in case of non power of two cores" );
             M = P/2;
-            if ( M & (M-1) )
+            if ( M==1 || (M & (M-1)) )
                 break; // Already tested this configuration
         }
         int T = P / M;
@@ -367,17 +404,13 @@ int TestMain () {
         theMasterBarrier.initialize(M);
         theGlobalBarrier.initialize(M * T);
         TestObserver(M, T, 0);
+        TestObserver(M, T, tmSynchronized | tmLocalObservation );
+        TestObserver(M, T, tmSynchronized | ( T==P? tmLeavingControl : 0));
+        // keep tmAutoInitialization the last, as it does not release worker threads
         TestObserver(M, T, tmLocalObservation | ( T==P? tmAutoinitialization : 0) );
-        CleanLocalState();
-        TestObserver(M, T, tmSynchronized);
-        TestObserver(M, T, tmSynchronized | tmLocalObservation
-#if __TBB_CPF_BUILD
-                     | ( T==P? tmLeavingControl : 0)
-#endif
-                     );
     }
     // Oversubscribed mode
-    for ( int i = 0; i < 5; ++i ) {
+    for ( int i = 0; i < 4; ++i ) {
         REMARK( "Masters: %d; Arena size: %d\n", P-1, P );
         TestObserver(P-1, P, 0);
         TestObserver(P-1, P, tmLocalObservation);
diff --git a/src/test/test_task_steal_limit.cpp b/src/test/test_task_steal_limit.cpp
index 182cc21..d41fb4a 100644
--- a/src/test/test_task_steal_limit.cpp
+++ b/src/test/test_task_steal_limit.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/task.h"
diff --git a/src/test/test_tbb_condition_variable.cpp b/src/test/test_tbb_condition_variable.cpp
index 2876438..696a2e0 100644
--- a/src/test/test_tbb_condition_variable.cpp
+++ b/src/test/test_tbb_condition_variable.cpp
@@ -1,40 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_config.h"
 
-#if !TBB_IMPLEMENT_CPP0X
-#include "harness.h"
-
-int TestMain() {
-    return Harness::Skipped;
-}
-#else
 #include "test_condition_variable.h"
 
 int TestMain() {
@@ -42,4 +27,3 @@ int TestMain() {
     DoCondVarTest<tbb::mutex,tbb::recursive_mutex>();
     return Harness::Done;
 }
-#endif
diff --git a/src/test/test_tbb_fork.cpp b/src/test/test_tbb_fork.cpp
index bbd00db..823c51f 100644
--- a/src/test/test_tbb_fork.cpp
+++ b/src/test/test_tbb_fork.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #define TBB_PREVIEW_WAITING_FOR_WORKERS 1
@@ -32,7 +24,12 @@
 #include "tbb/cache_aligned_allocator.h"
 #include "tbb/parallel_for.h"
 
-#define HARNESS_NO_PARSE_COMMAND_LINE 1
+#define HARNESS_DEFAULT_MIN_THREADS (tbb::task_scheduler_init::default_num_threads())
+#define HARNESS_DEFAULT_MAX_THREADS (4*tbb::task_scheduler_init::default_num_threads())
+#if __bg__
+// CNK does not support fork()
+#define HARNESS_SKIP_TEST 1
+#endif
 #include "harness.h"
 
 #if _WIN32||_WIN64
@@ -101,14 +98,38 @@ public:
     AllocTask() {}
 };
 
+/* Regression test against data race between termination of workers
+   and setting blocking terination mode in main thread. */
+class RunWorkersBody : NoAssign {
+    bool wait_workers;
+public:
+    RunWorkersBody(bool waitWorkers) : wait_workers(waitWorkers) {}
+    void operator()(const int /*threadID*/) const {
+        tbb::task_scheduler_init sch(MaxThread, 0, wait_workers);
+            tbb::parallel_for(tbb::blocked_range<int>(0, 10000, 1), AllocTask(),
+                              tbb::simple_partitioner());
+    }
+};
+
+void TestBlockNonblock()
+{
+    for (int i=0; i<100; i++) {
+        REMARK("\rIteration %d ", i);
+        NativeParallelFor(4, RunWorkersBody(/*wait_workers=*/false));
+        RunWorkersBody(/*wait_workers=*/true)(0);
+    }
+}
+
 int TestMain()
 {
     using namespace Harness;
 
+    TestBlockNonblock();
+
+    bool child = false;
 #if _WIN32||_WIN64
     DWORD masterTid = GetCurrentThreadId();
 #else
-    bool child = false;
     struct sigaction sa;
     sigset_t sig_set;
 
@@ -126,8 +147,10 @@ int TestMain()
     if (pthread_sigmask(SIG_BLOCK, &sig_set, NULL))
         ASSERT(0, "pthread_sigmask failed");
 #endif
-    for (int threads = 16; threads<=64; threads+=16) {
+    for (int threads=MinThread; threads<=MaxThread; threads+=MinThread) {
         for (int i=0; i<20; i++) {
+            if (!child)
+                REMARK("\rThreads %d %d ", threads, i);
             {
                 tbb::task_scheduler_init sch(threads, 0, /*wait_workers=*/true);
             }
@@ -188,7 +211,9 @@ int TestMain()
 #endif // _WIN32||_WIN64
         }
     }
+    REMARK("\n");
 #if TBB_USE_EXCEPTIONS
+    REMARK("Testing exceptions\n");
     try {
         {
             tbb::task_scheduler_init schBlock(2, 0, /*wait_workers=*/true);
diff --git a/src/test/test_tbb_header.cpp b/src/test/test_tbb_header.cpp
index 3b1ddb5..088b4e6 100644
--- a/src/test/test_tbb_header.cpp
+++ b/src/test/test_tbb_header.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 /**
@@ -32,6 +24,14 @@
 
     Most of the checks happen at the compilation or link phases.
 **/
+#if __TBB_CPF_BUILD
+// Add testing of preview features
+#define TBB_PREVIEW_AGGREGATOR 1
+#define TBB_PREVIEW_CONCURRENT_LRU_CACHE 1
+#define TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE 1
+#define TBB_PREVIEW_FLOW_GRAPH_NODES 1 
+#endif
+
 #include "harness_defs.h"
 #if !(__TBB_TEST_SECONDARY && __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN)
 
@@ -45,7 +45,6 @@
 #endif
 
 #include "tbb/tbb.h"
-#include "tbb/flow_graph.h"
 
 static volatile size_t g_sink;
 
@@ -87,7 +86,6 @@ struct Body3 {
 
 // Test if all the necessary symbols are exported for the exceptions thrown by TBB.
 // Missing exports result either in link error or in runtime assertion failure.
-#include "tbb/tbb_exception.h"
 #include <stdexcept>
 
 #if !TBB_USE_EXCEPTIONS && _MSC_VER
@@ -131,9 +129,34 @@ void TestExceptionClassesExports () {
     TestExceptionClassExports( tbb::missing_wait(), tbb::internal::eid_missing_wait );
     TestExceptionClassExports( tbb::invalid_multiple_scheduling(), tbb::internal::eid_invalid_multiple_scheduling );
     TestExceptionClassExports( tbb::improper_lock(), tbb::internal::eid_improper_lock );
+    TestExceptionClassExports( std::runtime_error("test"), tbb::internal::eid_possible_deadlock );
+    TestExceptionClassExports( std::runtime_error("test"), tbb::internal::eid_operation_not_permitted );
+    TestExceptionClassExports( std::runtime_error("test"), tbb::internal::eid_condvar_wait_failed );
+    TestExceptionClassExports( std::out_of_range("test"), tbb::internal::eid_invalid_load_factor );
+    TestExceptionClassExports( std::invalid_argument("test"), tbb::internal::eid_invalid_swap );
+    TestExceptionClassExports( std::length_error("test"), tbb::internal::eid_reservation_length_error );
+    TestExceptionClassExports( std::out_of_range("test"), tbb::internal::eid_invalid_key );
+    TestExceptionClassExports( tbb::user_abort(), tbb::internal::eid_user_abort );
+    TestExceptionClassExports( std::runtime_error("test"), tbb::internal::eid_bad_tagged_msg_cast );
 }
 #endif /* !__TBB_TEST_SECONDARY */
 
+#if __TBB_CPF_BUILD
+// These names are only tested in "preview" configuration
+// When a feature becomes fully supported, its names should be moved to the main test
+struct Handler {
+    void operator()( tbb::aggregator_operation* ) {}
+};
+static void TestPreviewNames() {
+    TestTypeDefinitionPresence( aggregator );
+    TestTypeDefinitionPresence( aggregator_ext<Handler> );
+    TestTypeDefinitionPresence2(concurrent_lru_cache<int, int> );
+    #if __TBB_PREVIEW_COMPOSITE_NODE
+    TestTypeDefinitionPresence2( composite_node<tbb::flow::tuple<int>, tbb::flow::tuple<int> > );
+    #endif
+}
+#endif
+
 #if __TBB_TEST_SECONDARY
 /* This mode is used to produce a secondary object file that is linked with 
    the main one in order to detect "multiple definition" linker error.
@@ -146,23 +169,29 @@ int TestMain ()
     #if __TBB_CPP11_STD_PLACEHOLDERS_LINKAGE_BROKEN
         REPORT("Known issue: \"multiple definition\" linker error detection test skipped.\n");
     #endif
-    TestTypeDefinitionPresence2(aligned_space<int, 1> );
+    TestTypeDefinitionPresence( aligned_space<int> );
     TestTypeDefinitionPresence( atomic<int> );
     TestTypeDefinitionPresence( cache_aligned_allocator<int> );
     TestTypeDefinitionPresence( tbb_hash_compare<int> );
     TestTypeDefinitionPresence2(concurrent_hash_map<int, int> );
     TestTypeDefinitionPresence2(concurrent_unordered_map<int, int> );
+    TestTypeDefinitionPresence2(concurrent_unordered_multimap<int, int> );
+    TestTypeDefinitionPresence( concurrent_unordered_set<int> );
+    TestTypeDefinitionPresence( concurrent_unordered_multiset<int> );
     TestTypeDefinitionPresence( concurrent_bounded_queue<int> );
-    TestTypeDefinitionPresence( deprecated::concurrent_queue<int> );
+    TestTypeDefinitionPresence( concurrent_queue<int> );
     TestTypeDefinitionPresence( strict_ppl::concurrent_queue<int> );
+    TestTypeDefinitionPresence( concurrent_priority_queue<int> );
     TestTypeDefinitionPresence( combinable<int> );
     TestTypeDefinitionPresence( concurrent_vector<int> );
     TestTypeDefinitionPresence( enumerable_thread_specific<int> );
+    /* Flow graph names */
     TestTypeDefinitionPresence( flow::graph );
+    // TODO: add a check for make_edge and maybe other functions in tbb::flow
     TestTypeDefinitionPresence( flow::source_node<int> );
-    TestTypeDefinitionPresence2( flow::function_node<int, int> );
+    TestTypeDefinitionPresence2(flow::function_node<int, int> );
     typedef tbb::flow::tuple<int, int> intpair;
-    TestTypeDefinitionPresence2( flow::multifunction_node<int, intpair> );
+    TestTypeDefinitionPresence2(flow::multifunction_node<int, intpair> );
     TestTypeDefinitionPresence( flow::split_node<intpair> );
     TestTypeDefinitionPresence( flow::continue_node<int> );
     TestTypeDefinitionPresence( flow::overwrite_node<int> );
@@ -173,8 +202,10 @@ int TestMain ()
     TestTypeDefinitionPresence( flow::sequencer_node<int> );
     TestTypeDefinitionPresence( flow::priority_queue_node<int> );
     TestTypeDefinitionPresence( flow::limiter_node<int> );
+    TestTypeDefinitionPresence2(flow::indexer_node<int, int> );
     using tbb::flow::queueing;
     TestTypeDefinitionPresence2( flow::join_node< intpair, queueing > );
+    /* Mutex names */
     TestTypeDefinitionPresence( mutex );
     TestTypeDefinitionPresence( null_mutex );
     TestTypeDefinitionPresence( null_rw_mutex );
@@ -183,6 +214,8 @@ int TestMain ()
     TestTypeDefinitionPresence( recursive_mutex );
     TestTypeDefinitionPresence( spin_mutex );
     TestTypeDefinitionPresence( spin_rw_mutex );
+    TestTypeDefinitionPresence( speculative_spin_mutex );
+    TestTypeDefinitionPresence( speculative_spin_rw_mutex );
     TestTypeDefinitionPresence( critical_section );
     TestTypeDefinitionPresence( reader_writer_lock );
 #if __TBB_TASK_GROUP_CONTEXT
@@ -194,6 +227,7 @@ int TestMain ()
 #endif /* !TBB_USE_CAPTURED_EXCEPTION */
     TestTypeDefinitionPresence( task_group_context );
     TestTypeDefinitionPresence( task_group );
+    TestTypeDefinitionPresence( structured_task_group );
     TestTypeDefinitionPresence( task_handle<Body> );
 #endif /* __TBB_TASK_GROUP_CONTEXT */
     TestTypeDefinitionPresence( blocked_range3d<int> );
@@ -204,6 +238,8 @@ int TestMain ()
     TestFuncDefinitionPresence( parallel_for, (const tbb::blocked_range<int>&, const Body2&, const tbb::simple_partitioner&), void );
     TestFuncDefinitionPresence( parallel_reduce, (const tbb::blocked_range<int>&, const int&, const Body1a&, const Body1b&, const tbb::auto_partitioner&), int );
     TestFuncDefinitionPresence( parallel_reduce, (const tbb::blocked_range<int>&, Body2&, tbb::affinity_partitioner&), void );
+    TestFuncDefinitionPresence( parallel_deterministic_reduce, (const tbb::blocked_range<int>&, const int&, const Body1a&, const Body1b&), int );
+    TestFuncDefinitionPresence( parallel_deterministic_reduce, (const tbb::blocked_range<int>&, Body2&), void );
     TestFuncDefinitionPresence( parallel_scan, (const tbb::blocked_range2d<int>&, Body3&, const tbb::auto_partitioner&), void );
     TestFuncDefinitionPresence( parallel_sort, (int*, int*), void );
     TestTypeDefinitionPresence( pipeline );
@@ -211,12 +247,17 @@ int TestMain ()
     TestTypeDefinitionPresence( task );
     TestTypeDefinitionPresence( empty_task );
     TestTypeDefinitionPresence( task_list );
+    TestTypeDefinitionPresence( task_arena );
     TestTypeDefinitionPresence( task_scheduler_init );
     TestTypeDefinitionPresence( task_scheduler_observer );
     TestTypeDefinitionPresence( tbb_thread );
     TestTypeDefinitionPresence( tbb_allocator<int> );
     TestTypeDefinitionPresence( zero_allocator<int> );
     TestTypeDefinitionPresence( tick_count );
+
+#if __TBB_CPF_BUILD
+    TestPreviewNames();
+#endif
 #if !__TBB_TEST_SECONDARY
     TestExceptionClassesExports();
     return Harness::Done;
diff --git a/src/test/test_tbb_thread.cpp b/src/test/test_tbb_thread.cpp
index 85d34e0..b7f82d4 100644
--- a/src/test/test_tbb_thread.cpp
+++ b/src/test/test_tbb_thread.cpp
@@ -1,31 +1,24 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
+#include "tbb/tbb_thread.h"
 #define THREAD tbb::tbb_thread
 #define THIS_THREAD tbb::this_tbb_thread
 #define THIS_THREAD_SLEEP THIS_THREAD::sleep
diff --git a/src/test/test_tbb_version.cpp b/src/test/test_tbb_version.cpp
index 4c4daab..0d7ccd3 100644
--- a/src/test/test_tbb_version.cpp
+++ b/src/test/test_tbb_version.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tbb_stddef.h"
@@ -245,8 +237,8 @@ int main(int argc, char *argv[] ) {
 // Fill dictionary with version strings for platforms 
 void initialize_strings_vector(std::vector <string_pair>* vector)
 {
-    vector->push_back(string_pair("TBB: VERSION\t\t4.2", required));          // check TBB_VERSION
-    vector->push_back(string_pair("TBB: INTERFACE VERSION\t7003", required)); // check TBB_INTERFACE_VERSION
+    vector->push_back(string_pair("TBB: VERSION\t\t4.3", required));          // check TBB_VERSION
+    vector->push_back(string_pair("TBB: INTERFACE VERSION\t8006", required)); // check TBB_INTERFACE_VERSION
     vector->push_back(string_pair("TBB: BUILD_DATE", required));
     vector->push_back(string_pair("TBB: BUILD_HOST", required));
     vector->push_back(string_pair("TBB: BUILD_OS", required));
@@ -257,19 +249,17 @@ void initialize_strings_vector(std::vector <string_pair>* vector)
     vector->push_back(string_pair("TBB: BUILD_COMPILER", required));
 #elif __APPLE__
     vector->push_back(string_pair("TBB: BUILD_KERNEL", required));
-    vector->push_back(string_pair("TBB: BUILD_GCC", required));
+    vector->push_back(string_pair("TBB: BUILD_CLANG", required));
+    vector->push_back(string_pair("TBB: BUILD_XCODE", optional));
     vector->push_back(string_pair("TBB: BUILD_COMPILER", optional)); //if( getenv("COMPILER_VERSION") )
 #elif __sun
     vector->push_back(string_pair("TBB: BUILD_KERNEL", required));
     vector->push_back(string_pair("TBB: BUILD_SUNCC", required));
     vector->push_back(string_pair("TBB: BUILD_COMPILER", optional)); //if( getenv("COMPILER_VERSION") )
 #else // We use version_info_linux.sh for unsupported OSes
-#if __ANDROID__
-    vector->push_back(string_pair("TBB: BUILD_TARGET_OS", required));
-    vector->push_back(string_pair("TBB: BUILD_TARGET_KERNEL", required));
-#else
+#if !__ANDROID__
     vector->push_back(string_pair("TBB: BUILD_KERNEL", required));
-#endif // !__ANDROID__
+#endif
     vector->push_back(string_pair("TBB: BUILD_GCC", required));
     vector->push_back(string_pair("TBB: BUILD_COMPILER", optional)); //if( getenv("COMPILER_VERSION") )
 #if __ANDROID__
diff --git a/src/test/test_thread.h b/src/test/test_thread.h
index decdcf4..be9a1ad 100644
--- a/src/test/test_thread.h
+++ b/src/test/test_thread.h
@@ -1,33 +1,27 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
-#include "tbb/tbb_thread.h"
 #include "tbb/atomic.h"
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#include <utility> // std::move
+#endif
 
 #define HARNESS_NO_PARSE_COMMAND_LINE 1
 #include "harness_report.h"
@@ -65,7 +59,6 @@ public:
     int value;
 };
 
-
 #include "harness_barrier.h"
 
 class ThreadFunc: Base {
@@ -173,13 +166,7 @@ void CheckExceptionSafety() {
                     ASSERT( !exception_caught||(i&((1<<(j+1))-1))!=0, NULL );
                 }
             }
-// Intel Compiler sometimes fails to destroy all implicitly generated copies 
-// of an object when a copy constructor throws an exception.
-// Problem was reported as Quad issue 482935.
-// This #if should be removed or tightened when the bug is fixed.
-#if !((_WIN32 || _WIN64) && defined(__INTEL_COMPILER))
             ASSERT( BaseCount==original_count, "object leak detected" );
-#endif
         }
     }
 }
@@ -187,11 +174,18 @@ void CheckExceptionSafety() {
 
 #include <cstdio>
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+
+tbb::tbb_thread returnThread() {
+    return tbb::tbb_thread();
+}
+#endif
+
 void RunTests() {
 
     ThreadFunc t;
     Data<0> d100(100), d1(1), d0(0);
-    THREAD::id id;
+    const THREAD::id id_zero;
     THREAD::id id0, uniq_ids[THRDS];
     
     THREAD thrs[THRDS];
@@ -200,10 +194,10 @@ void RunTests() {
     THREAD thr1(t, 2);
     THREAD thr2(t, 1, d100);
     
-    ASSERT( thr0.get_id() != id, NULL );
+    ASSERT( thr0.get_id() != id_zero, NULL );
     id0 = thr0.get_id();
     tbb::move(thrs[0], thr0);
-    ASSERT( thr0.get_id() == id, NULL );
+    ASSERT( thr0.get_id() == id_zero, NULL );
     ASSERT( thrs[0].get_id() == id0, NULL );
 
     THREAD::native_handle_type h1 = thr1.native_handle();
@@ -215,6 +209,15 @@ void RunTests() {
     ASSERT( thr2.native_handle() == h1, NULL );
     ASSERT( thr1.get_id() == id2, NULL );
     ASSERT( thr2.get_id() == id1, NULL );
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    {
+        THREAD tmp_thr(std::move(thr1));
+        ASSERT( tmp_thr.native_handle() == h2 && tmp_thr.get_id() == id2, NULL );
+        thr1 = std::move(tmp_thr);
+        ASSERT( thr1.native_handle() == h2 && thr1.get_id() == id2, NULL );
+    }
+#endif
+
     thr1.swap(thr2);
     ASSERT( thr1.native_handle() == h1, NULL );
     ASSERT( thr2.native_handle() == h2, NULL );
@@ -223,10 +226,14 @@ void RunTests() {
     thr1.swap(thr2);
 
     tbb::move(thrs[1], thr1);
-    ASSERT( thr1.get_id() == id, NULL );
+    ASSERT( thr1.get_id() == id_zero, NULL );
 
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+    thrs[2] = returnThread();
+    ASSERT( thrs[2].get_id() == id_zero, NULL );
+#endif
     tbb::move(thrs[2], thr2);
-    ASSERT( thr2.get_id() == id, NULL );
+    ASSERT( thr2.get_id() == id_zero, NULL );
 
     for (int i=0; i<THRDS; i++)
         uniq_ids[i] = thrs[i].get_id();
@@ -261,12 +268,12 @@ void RunTests() {
     THREAD thr_detach_0(t, d0);
     real_ids[THRDS] = thr_detach_0.get_id();
     thr_detach_0.detach();
-    ASSERT( thr_detach_0.get_id() == id, NULL );
+    ASSERT( thr_detach_0.get_id() == id_zero, NULL );
 
     THREAD thr_detach_1(t, d1);
     real_ids[THRDS+1] = thr_detach_1.get_id();
     thr_detach_1.detach();
-    ASSERT( thr_detach_1.get_id() == id, NULL );
+    ASSERT( thr_detach_1.get_id() == id_zero, NULL );
 
     CheckRelations(real_ids, THRDS+THRDS_DETACH, true);
 
@@ -276,8 +283,12 @@ void RunTests() {
         AnotherThreadFunc empty_func;
         THREAD thr_to(empty_func), thr_from(empty_func);
         THREAD::id from_id = thr_from.get_id();
-        if (i) thr_to.join(); 
+        if (i) thr_to.join();
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+        thr_to = std::move(thr_from);
+#else
         thr_to = thr_from;
+#endif
         ASSERT( thr_from.get_id() == THREAD::id(), NULL );
         ASSERT( thr_to.get_id() == from_id, NULL );
     }
diff --git a/src/test/test_tick_count.cpp b/src/test/test_tick_count.cpp
index c889c27..5143dd1 100644
--- a/src/test/test_tick_count.cpp
+++ b/src/test/test_tick_count.cpp
@@ -1,34 +1,25 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "tbb/tick_count.h"
-#include "harness.h"
-#include <cstdio>
+#include "harness_assert.h"
 
 //! Assert that two times in seconds are very close.
 void AssertNear( double x, double y ) {
@@ -59,7 +50,7 @@ void TestArithmetic( const tbb::tick_count& t0, const tbb::tick_count& t1, const
 }
 
 //------------------------------------------------------------------------
-// Test for overhead in calls to tick_count 
+// Test for overhead in calls to tick_count
 //------------------------------------------------------------------------
 
 //! Wait for given duration.
@@ -70,6 +61,8 @@ static void WaitForDuration( double duration ) {
         continue;
 }
 
+#include "harness.h"
+
 //! Test that average timer overhead is within acceptable limit.
 /** The 'tolerance' value inside the test specifies the limit. */
 void TestSimpleDelay( int ntrial, double duration, double tolerance ) {
@@ -80,7 +73,7 @@ void TestSimpleDelay( int ntrial, double duration, double tolerance ) {
         if( duration ) WaitForDuration(duration);
         tbb::tick_count t1 = tbb::tick_count::now();
         if( trial>=0 ) {
-            total_worktime += (t1-t0).seconds(); 
+            total_worktime += (t1-t0).seconds();
         }
     }
     // Compute average worktime and average delta
@@ -89,8 +82,8 @@ void TestSimpleDelay( int ntrial, double duration, double tolerance ) {
     REMARK("worktime=%g delta=%g tolerance=%g\n", worktime, delta, tolerance);
 
     // Check that delta is acceptable
-    if( delta<0 ) 
-        REPORT("ERROR: delta=%g < 0\n",delta); 
+    if( delta<0 )
+        REPORT("ERROR: delta=%g < 0\n",delta);
     if( delta>tolerance )
         REPORT("%s: delta=%g > %g=tolerance where duration=%g\n",delta>3*tolerance?"ERROR":"Warning",delta,tolerance,duration);
 }
@@ -100,37 +93,71 @@ void TestSimpleDelay( int ntrial, double duration, double tolerance ) {
 //------------------------------------------------------------------------
 
 #include "tbb/atomic.h"
-const int MAX_NTHREAD = 1000;
-static tbb::atomic<int> Counter;
-static volatile bool Flag;
-static tbb::tick_count tick_count_array[MAX_NTHREAD];
+static tbb::atomic<int> Counter1, Counter2;
+static tbb::atomic<bool> Flag1, Flag2;
+static tbb::tick_count *tick_count_array;
+static double barrier_time;
 
 struct TickCountDifferenceBody {
+    TickCountDifferenceBody( int num_threads ) {
+        Counter1 = Counter2 = num_threads;
+        Flag1 = Flag2 = false;
+    }
     void operator()( int id ) const {
-        if( --Counter==0 ) Flag = true;
-        while( !Flag ) continue;
+        bool last = false;
+        // The first barrier.
+        if ( --Counter1 == 0 ) last = true;
+        while ( !last && !Flag1.load<tbb::acquire>() ) __TBB_Pause( 1 );
+        // Save a time stamp of the first barrier releasing.
         tick_count_array[id] = tbb::tick_count::now();
+
+        // The second barrier.
+        if ( --Counter2 == 0 ) Flag2.store<tbb::release>(true);
+        // The last thread should release threads from the first barrier after it reaches the second
+        // barrier to avoid a deadlock.
+        if ( last ) Flag1.store<tbb::release>(true);
+        // After the last thread releases threads from the first barrier it waits for a signal from
+        // the second barrier.
+        while ( !Flag2.load<tbb::acquire>() ) __TBB_Pause( 1 );
+
+        if ( last )
+            // We suppose that the barrier time is a time interval between the moment when the last
+            // thread reaches the first barrier and the moment when the same thread is released from
+            // the second barrier. This time is not accurate time of two barriers but it is
+            // guaranteed that it does not exceed it.
+            barrier_time = (tbb::tick_count::now() - tick_count_array[id]).seconds() / 2;
+    }
+    ~TickCountDifferenceBody() {
+        ASSERT( Counter1 == 0 && Counter2 == 0, NULL );
     }
 };
 
 //! Test that two tick_count values recorded on different threads can be meaningfully subtracted.
 void TestTickCountDifference( int n ) {
-    double tolerance = 3E-4;
-    for( int trial=0; trial<10; ++trial ) {
-        Counter = n;
-        Flag = false;
-        NativeParallelFor( n, TickCountDifferenceBody() ); 
-        ASSERT( Counter==0, NULL ); 
-        for( int i=0; i<n; ++i )
-            for( int j=0; j<i; ++j ) {
-                double diff = (tick_count_array[i]-tick_count_array[j]).seconds();
-                if( diff<0 ) diff = -diff;
-                if( diff>tolerance ) {
-                    REPORT("%s: cross-thread tick_count difference = %g > %g = tolerance\n",
-                           diff>3*tolerance?"ERROR":"Warning",diff,tolerance);
-                }
+    const double tolerance = 3E-4;
+    tick_count_array = new tbb::tick_count[n];
+
+    int num_trials = 0;
+    tbb::tick_count start_time = tbb::tick_count::now();
+    do {
+        NativeParallelFor( n, TickCountDifferenceBody( n ) );
+        if ( barrier_time > tolerance )
+            // The machine seems to be oversubscibed so skip the test.
+            continue;
+        for ( int i = 0; i < n; ++i ) {
+            for ( int j = 0; j < i; ++j ) {
+                double diff = (tick_count_array[i] - tick_count_array[j]).seconds();
+                if ( diff < 0 ) diff = -diff;
+                if ( diff > tolerance )
+                    REPORT( "Warning: cross-thread tick_count difference = %g > %g = tolerance\n", diff, tolerance );
+                ASSERT( diff < 3 * tolerance, "Too big difference." );
             }
-    }
+        }
+        // During 5 seconds we are trying to get 10 successful trials.
+    } while ( ++num_trials < 10 && (tbb::tick_count::now() - start_time).seconds() < 5 );
+    REMARK( "Difference test time: %g sec\n", (tbb::tick_count::now() - start_time).seconds() );
+    ASSERT( num_trials == 10, "The machine seems to be heavily oversubscibed, difference test was skipped." );
+    delete[] tick_count_array;
 }
 
 void TestResolution() {
@@ -153,18 +180,26 @@ void TestResolution() {
     REMARK("avg_diff = %g ticks, max_diff = %g ticks\n", avg_diff, max_diff);
 }
 
+#include <tbb/compat/thread>
+
 int TestMain () {
     tbb::tick_count t0 = tbb::tick_count::now();
     TestSimpleDelay(/*ntrial=*/1000000,/*duration=*/0,    /*tolerance=*/2E-6);
     tbb::tick_count t1 = tbb::tick_count::now();
-    TestSimpleDelay(/*ntrial=*/10,     /*duration=*/0.125,/*tolerance=*/5E-6);
+    TestSimpleDelay(/*ntrial=*/1000,   /*duration=*/0.001,/*tolerance=*/5E-6);
     tbb::tick_count t2 = tbb::tick_count::now();
     TestArithmetic(t0,t1,t2);
 
     TestResolution();
 
-    for( int n=MinThread; n<=MaxThread; ++n ) {
-        TestTickCountDifference(n);
+    int num_threads = tbb::tbb_thread::hardware_concurrency();
+    ASSERT( num_threads > 0, "tbb::thread::hardware_concurrency() has returned an incorrect value" );
+    if ( num_threads > 1 ) {
+        REMARK( "num_threads = %d\n", num_threads );
+        TestTickCountDifference( num_threads );
+    } else {
+        REPORT( "Warning: concurrency is too low for TestTickCountDifference ( num_threads = %d )\n", num_threads );
     }
+
     return Harness::Done;
 }
diff --git a/src/test/test_tuple.cpp b/src/test/test_tuple.cpp
index 38d7f9d..1813175 100644
--- a/src/test/test_tuple.cpp
+++ b/src/test/test_tuple.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // tbb::flow::tuple (implementation used in tbb::flow)
diff --git a/src/test/test_write_once_node.cpp b/src/test/test_write_once_node.cpp
index b0ffc33..cb21a60 100644
--- a/src/test/test_write_once_node.cpp
+++ b/src/test/test_write_once_node.cpp
@@ -1,29 +1,21 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
-
-    This file is part of Threading Building Blocks.
-
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
+
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
+
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 #include "harness_graph.h"
@@ -168,6 +160,9 @@ int TestMain() {
         parallel_read_write_tests<int>();
         parallel_read_write_tests<float>();
     }
+#if TBB_PREVIEW_FLOW_GRAPH_FEATURES
+    test_extract_on_node<tbb::flow::write_once_node, int>();
+#endif
     return Harness::Done;
 }
 
diff --git a/src/test/test_yield.cpp b/src/test/test_yield.cpp
index c46e693..4c95c90 100644
--- a/src/test/test_yield.cpp
+++ b/src/test/test_yield.cpp
@@ -1,34 +1,29 @@
 /*
-    Copyright 2005-2014 Intel Corporation.  All Rights Reserved.
+    Copyright 2005-2015 Intel Corporation.  All Rights Reserved.
 
-    This file is part of Threading Building Blocks.
+    This file is part of Threading Building Blocks. Threading Building Blocks is free software;
+    you can redistribute it and/or modify it under the terms of the GNU General Public License
+    version 2  as  published  by  the  Free Software Foundation.  Threading Building Blocks is
+    distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
+    implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+    See  the GNU General Public License for more details.   You should have received a copy of
+    the  GNU General Public License along with Threading Building Blocks; if not, write to the
+    Free Software Foundation, Inc.,  51 Franklin St,  Fifth Floor,  Boston,  MA 02110-1301 USA
 
-    Threading Building Blocks is free software; you can redistribute it
-    and/or modify it under the terms of the GNU General Public License
-    version 2 as published by the Free Software Foundation.
-
-    Threading Building Blocks is distributed in the hope that it will be
-    useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-    of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Threading Building Blocks; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-    As a special exception, you may use this file as part of a free software
-    library without restriction.  Specifically, if other files instantiate
-    templates or use macros or inline functions from this file, or you compile
-    this file and link it with other files to produce an executable, this
-    file does not by itself cause the resulting executable to be covered by
-    the GNU General Public License.  This exception does not however
-    invalidate any other reasons why the executable file might be covered by
-    the GNU General Public License.
+    As a special exception,  you may use this file  as part of a free software library without
+    restriction.  Specifically,  if other files instantiate templates  or use macros or inline
+    functions from this file, or you compile this file and link it with other files to produce
+    an executable,  this file does not by itself cause the resulting executable to be covered
+    by the GNU General Public License. This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU General Public License.
 */
 
 // Test that __TBB_Yield works.
 // On Red Hat EL4 U1, it does not work, because sched_yield is broken.
 
+#define HARNESS_DEFAULT_MIN_THREADS 4
+#define HARNESS_DEFAULT_MAX_THREADS 8
+
 #include "tbb/tbb_machine.h"
 #include "tbb/tick_count.h"
 #include "harness.h"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/tbb.git



More information about the debian-science-commits mailing list